use of io.syndesis.common.model.action.ActionsSummary in project syndesis by syndesisio.
the class BaseSwaggerConnectorGenerator method info.
@Override
public final ConnectorSummary info(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) {
final SwaggerModelInfo swaggerInfo = parseSpecification(connectorSettings, true);
try {
// No matter if the validation fails, try to process the swagger
final Connector connector = basicConnector(connectorTemplate, connectorSettings);
final Map<String, Path> paths = swaggerInfo.getModel().getPaths();
final AtomicInteger total = new AtomicInteger(0);
final Map<String, Integer> tagCounts = //
paths.entrySet().stream().flatMap(//
p -> p.getValue().getOperations().stream()).peek(//
o -> total.incrementAndGet()).flatMap(//
o -> o.getTags().stream().distinct()).collect(//
Collectors.groupingBy(//
Function.identity(), //
Collectors.reducing(0, (e) -> 1, Integer::sum)));
final ActionsSummary actionsSummary = //
new ActionsSummary.Builder().totalActions(//
total.intValue()).actionCountByTags(//
tagCounts).build();
return new ConnectorSummary.Builder().createFrom(connector).actionsSummary(actionsSummary).errors(swaggerInfo.getErrors()).warnings(swaggerInfo.getWarnings()).build();
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") final Exception ex) {
if (!swaggerInfo.getErrors().isEmpty()) {
// Just log and return the validation errors if any
LOG.error("An error occurred while trying to create a swagger connector", ex);
return new ConnectorSummary.Builder().errors(swaggerInfo.getErrors()).warnings(swaggerInfo.getWarnings()).build();
}
throw SyndesisServerException.launderThrowable("An error occurred while trying to create a swagger connector", ex);
}
}
use of io.syndesis.common.model.action.ActionsSummary in project syndesis by syndesisio.
the class BaseSwaggerConnectorGeneratorTest method shouldProvideInfoFromPetstoreSwagger.
@Test
public void shouldProvideInfoFromPetstoreSwagger() throws IOException {
final String specification = resource("/swagger/petstore.swagger.json");
final ConnectorSettings connectorSettings = //
new ConnectorSettings.Builder().putConfiguredProperty("specification", //
specification).build();
final ConnectorSummary summary = generator.info(SWAGGER_TEMPLATE, connectorSettings);
final ActionsSummary actionsSummary = new ActionsSummary.Builder().totalActions(20).putActionCountByTag("store", 4).putActionCountByTag("user", 8).putActionCountByTag("pet", 8).build();
final ConnectorSummary expected = //
new ConnectorSummary.Builder().name(//
"Swagger Petstore").actionsSummary(//
actionsSummary).build();
assertThat(summary).isEqualToIgnoringGivenFields(expected, "icon", "description", "properties", "warnings");
assertThat(summary.getIcon()).startsWith("data:image");
assertThat(summary.getDescription()).startsWith("This is a sample server Petstore server");
assertThat(summary.getProperties().keySet()).contains("host", "basePath", "authenticationType", "clientId", "clientSecret", "accessToken", "authorizationEndpoint", "specification");
}
Aggregations