use of io.syndesis.common.model.Dependency in project syndesis by syndesisio.
the class GenerateMapperInspectionsMojo method process.
private void process(final Set<File> generated, final Connector connector, final ConnectorAction action, final Optional<DataShape> maybeShape) throws MojoFailureException, MojoExecutionException {
if (!maybeShape.isPresent()) {
return;
}
if (!connector.getId().isPresent()) {
return;
}
if (!DataShapeKinds.JAVA.equals(maybeShape.get().getKind())) {
return;
}
final DataShape shape = maybeShape.get();
getLog().info("Generating for connector: " + connector.getId().get() + ", and type: " + shape.getType());
final File outputFile = new File(outputDir, resourceDir + "/" + connector.getId().get() + "/" + shape.getType() + ".json");
if (generated.contains(outputFile)) {
return;
}
if (outputFile.getParentFile().mkdirs()) {
getLog().debug("Created dir: " + outputFile.getParentFile());
}
List<String> artifacts = Stream.of(connector, action).map(WithDependencies.class::cast).map(WithDependencies::getDependencies).flatMap(Collection::stream).filter(Dependency::isMaven).map(Dependency::getId).collect(Collectors.toList());
final GenerateInspectionsMojo generateInspectionsMojo = new GenerateInspectionsMojo();
generateInspectionsMojo.setLog(getLog());
generateInspectionsMojo.setPluginContext(getPluginContext());
generateInspectionsMojo.setSystem(system);
generateInspectionsMojo.setRemoteRepos(remoteRepos);
generateInspectionsMojo.setRepoSession(repoSession);
generateInspectionsMojo.setArtifacts(artifacts);
generateInspectionsMojo.setClassName(shape.getType());
generateInspectionsMojo.setArtifacts(artifacts);
generateInspectionsMojo.setOutputFile(outputFile);
generateInspectionsMojo.execute();
generated.add(outputFile);
}
use of io.syndesis.common.model.Dependency in project syndesis by syndesisio.
the class IntegrationSupportHandler method export.
@GET
@Path("/export.zip")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public StreamingOutput export(@NotNull @QueryParam("id") @ApiParam(required = true) List<String> requestedIds) throws IOException {
List<String> ids = requestedIds;
if (ids == null || ids.isEmpty()) {
throw new ClientErrorException("No 'integration' query parameter specified.", Response.Status.BAD_REQUEST);
}
LinkedHashSet<String> extensions = new LinkedHashSet<>();
CloseableJsonDB memJsonDB = MemorySqlJsonDB.create(jsonDB.getIndexes());
if (ids.contains("all")) {
ids = new ArrayList<>();
for (Integration integration : dataManager.fetchAll(Integration.class)) {
ids.add(integration.getId().get());
}
}
for (String id : ids) {
Integration integration = integrationHandler.getIntegration(id);
addToExport(memJsonDB, integration);
resourceManager.collectDependencies(integration.getSteps(), true).stream().filter(Dependency::isExtension).map(Dependency::getId).forEach(extensions::add);
}
LOG.debug("Extensions: {}", extensions);
return out -> {
try (ZipOutputStream tos = new ZipOutputStream(out)) {
ModelExport exportObject = ModelExport.of(Schema.VERSION);
addEntry(tos, EXPORT_MODEL_INFO_FILE_NAME, Json.writer().writeValueAsBytes(exportObject));
addEntry(tos, EXPORT_MODEL_FILE_NAME, memJsonDB.getAsByteArray("/"));
memJsonDB.close();
for (String extensionId : extensions) {
addEntry(tos, "extensions/" + Names.sanitize(extensionId) + ".jar", IOUtils.toByteArray(extensionDataManager.getExtensionBinaryFile(extensionId)));
}
}
};
}
use of io.syndesis.common.model.Dependency in project syndesis by syndesisio.
the class ConnectorIconHandler method get.
@GET
@SuppressWarnings("PMD.CyclomaticComplexity")
public Response get() {
String connectorIcon = connector.getIcon();
if (connectorIcon == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
if (connectorIcon.startsWith("db:")) {
String connectorIconId = connectorIcon.substring(3);
Icon icon = getDataManager().fetch(Icon.class, connectorIconId);
if (icon == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
final StreamingOutput streamingOutput = (out) -> {
try (BufferedSink sink = Okio.buffer(Okio.sink(out));
Source source = Okio.source(iconDao.read(connectorIconId))) {
sink.writeAll(source);
}
};
return Response.ok(streamingOutput, icon.getMediaType()).build();
} else if (connectorIcon.startsWith("extension:")) {
String iconFile = connectorIcon.substring(10);
Optional<InputStream> extensionIcon = connector.getDependencies().stream().filter(Dependency::isExtension).map(Dependency::getId).findFirst().flatMap(extensionId -> extensionDataManager.getExtensionIcon(extensionId, iconFile));
if (extensionIcon.isPresent()) {
final StreamingOutput streamingOutput = (out) -> {
final BufferedSink sink = Okio.buffer(Okio.sink(out));
sink.writeAll(Okio.source(extensionIcon.get()));
sink.close();
};
return Response.ok(streamingOutput, extensionDataManager.getExtensionIconMediaType(iconFile)).build();
} else {
return Response.status(Response.Status.NOT_FOUND).build();
}
}
// font awesome class name), return 404
if (connectorIcon.startsWith("data:") || !connectorIcon.contains("/")) {
return Response.status(Response.Status.NOT_FOUND).build();
}
final OkHttpClient httpClient = new OkHttpClient();
try {
final okhttp3.Response externalResponse = httpClient.newCall(new Request.Builder().get().url(connectorIcon).build()).execute();
final String contentType = externalResponse.header(CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM);
final String contentLength = externalResponse.header(CONTENT_LENGTH);
final StreamingOutput streamingOutput = (out) -> {
final BufferedSink sink = Okio.buffer(Okio.sink(out));
sink.writeAll(externalResponse.body().source());
sink.close();
};
final Response.ResponseBuilder actualResponse = Response.ok(streamingOutput, contentType);
if (!StringUtils.isEmpty(contentLength)) {
actualResponse.header(CONTENT_LENGTH, contentLength);
}
return actualResponse.build();
} catch (final IOException e) {
throw new SyndesisServerException(e);
}
}
use of io.syndesis.common.model.Dependency in project syndesis by syndesisio.
the class IntegrationResourceManager method collectDependencies.
/**
* Collect dependencies.
*/
default Collection<Dependency> collectDependencies(Collection<? extends Step> steps, boolean resolveExtensionTags) {
final List<Dependency> dependencies = new ArrayList<>();
for (Step step : steps) {
step.getAction().filter(WithDependencies.class::isInstance).map(WithDependencies.class::cast).map(WithDependencies::getDependencies).ifPresent(dependencies::addAll);
List<Dependency> connectorDependencies = step.getConnection().flatMap(Connection::getConnector).map(WithDependencies::getDependencies).orElse(Collections.emptyList());
dependencies.addAll(connectorDependencies);
List<Dependency> lookedUpConnectorDependecies = step.getConnection().filter(c -> !c.getConnector().isPresent()).map(Connection::getConnectorId).flatMap(this::loadConnector).map(WithDependencies::getDependencies).orElse(Collections.emptyList());
dependencies.addAll(lookedUpConnectorDependecies);
// Connector extension
Stream.concat(connectorDependencies.stream(), lookedUpConnectorDependecies.stream()).filter(Dependency::isExtension).map(Dependency::getId).map(this::loadExtension).filter(Optional::isPresent).map(Optional::get).map(Extension::getDependencies).forEach(dependencies::addAll);
// Step extension
step.getExtension().map(WithDependencies::getDependencies).ifPresent(dependencies::addAll);
step.getExtension().map(Extension::getExtensionId).map(Dependency::extension).ifPresent(dependencies::add);
}
if (resolveExtensionTags) {
return dependencies.stream().flatMap(dep -> {
if (dep.isExtensionTag()) {
List<Extension> extensions = this.loadExtensionsByTag(dep.getId());
Stream<Dependency> extensionDependency = extensions.stream().map(ext -> Dependency.extension(ext.getExtensionId()));
Stream<Dependency> transitive = extensions.stream().map(Extension::getDependencies).flatMap(Collection::stream);
return Stream.concat(extensionDependency, transitive);
} else {
return Stream.of(dep);
}
}).collect(Collectors.toCollection(ArrayList::new));
} else {
return dependencies;
}
}
Aggregations