use of org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.ConnectionException in project sts4 by spring-projects.
the class RouteValueParser method dynamicValidation.
private Object dynamicValidation(String str, Matcher matcher) throws Exception {
if (domains == null) {
// If domains is unknown we can't do the dynamic checks, so bail out.
return str;
}
try {
Collection<String> cloudDomains = Collections.emptyList();
try {
cloudDomains = domains.call();
} catch (ValueParseException e) {
/*
* If domains hint provider throws exception it is
* ValueParserException not NoTargetsException. This means no
* communication with CF -> abort dyncamic validation
*/
return matcher;
}
if (cloudDomains == null) {
// If domains is unknown we can't do the dynamic checks, so bail out.
return str;
}
CFRoute route = CFRoute.builder().from(str, cloudDomains).build();
if (route.getDomain() == null || route.getDomain().isEmpty()) {
throw new ValueParseException("Domain is missing.");
}
if ((route.getPath() != null && !route.getPath().isEmpty()) && (route.getPort() != CFRoute.NO_PORT)) {
throw new ValueParseException("Unable to determine type of route. HTTP port may have a path but no port. TCP route may have port but no path.");
}
if (route.getPort() > MAX_PORT_NUMBER) {
String portAndColumn = matcher.group(2);
int start = str.indexOf(portAndColumn) + 1;
int end = start + portAndColumn.length() - 1;
throw new ValueParseException("Invalid port number. Port range must be between 1 and " + MAX_PORT_NUMBER, start, end);
}
if (!cloudDomains.contains(route.getDomain())) {
String hostDomain = matcher.group(1);
throw new ReconcileException("Unknown 'Domain'. Valid domains are: " + cloudDomains, ManifestYamlSchemaProblemsTypes.UNKNOWN_DOMAIN_PROBLEM, hostDomain.lastIndexOf(route.getDomain()), hostDomain.length());
}
return str;
} catch (ConnectionException | NoTargetsException e) {
// No connection to CF? Abort dynamic validation
return str;
}
}
use of org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.ConnectionException in project sts4 by spring-projects.
the class AbstractCFHintsProvider method getHints.
/**
* @return non-null list of hints. Return empty if no hints available
*/
protected Collection<YValueHint> getHints(List<CFTarget> targets) throws Exception {
if (targets == null || targets.isEmpty()) {
// this "don't know" value will suppress bogus warnings in the reconciler.
return null;
}
List<YValueHint> hints = new ArrayList<>();
boolean validTargetsPresent = false;
for (CFTarget cfTarget : targets) {
try {
// TODO: check if duplicate proposals can be the list of all hints. Duplicates don't seem to cause duplicate proposals. Verify this!
getHints(cfTarget).stream().filter(hint -> !hints.contains(hint)).forEach(hint -> hints.add(hint));
validTargetsPresent = true;
} catch (Exception e) {
// Drop individual target error
}
}
if (validTargetsPresent) {
return hints;
} else {
throw new ConnectionException(targetCache.getCfClientConfig().getClientParamsProvider().getMessages().noNetworkConnection());
}
}
Aggregations