protected final Connector configureConnector(final ConnectorTemplate connectorTemplate, final Connector connector, final ConnectorSettings connectorSettings) { final Connector.Builder builder = new Connector.Builder().createFrom(connector); builder.addAllActions(actions); builder.putConfiguredProperty("specification", SwaggerHelper.serialize(swagger)); return builder.build();
protected final Connector baseConnectorFrom(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { final Set<String> properties = connectorTemplate.getProperties().keySet(); final Map<String, String> configuredProperties = connectorSettings.getConfiguredProperties()// .entrySet().stream()// .filter(e -> properties.contains(e.getKey()))// .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); final String name = Optional.ofNullable(connectorSettings.getName()) .orElseGet(() -> determineConnectorName(connectorTemplate, connectorSettings)); final String description = Optional.ofNullable(connectorSettings.getDescription()) .orElseGet(() -> determineConnectorDescription(connectorTemplate, connectorSettings)); final Optional<ConnectorGroup> connectorGroup = connectorTemplate.getConnectorGroup(); final String icon; if (connectorSettings.getIcon() != null) { icon = connectorSettings.getIcon(); } else { icon = IconGenerator.generate(connectorTemplate.getId().get(), name); } return new Connector.Builder()// .id(KeyGenerator.createKey())// .name(name)// .description(description)// .icon(icon)// .configuredProperties(configuredProperties)// .connectorGroup(connectorGroup)// .connectorGroupId(connectorGroup.map(ConnectorGroup::getId).orElse(Optional.empty()))// .build(); }
.build(); final Connector connector = new Connector.Builder().id("salesforce") .addAction(new ConnectorAction.Builder() .id(SALESFORCE_CREATE_OR_UPDATE) .addTag("dynamic") .descriptor(createOrUpdateSalesforceObjectDescriptor) .build()) .addAction(new ConnectorAction.Builder() .id(SALESFORCE_LIMITS) .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .build();
Connector updatedConnector = new Connector.Builder().createFrom(connector).icon("db:" + icon.getId().get()).build(); getDataManager().update(updatedConnector); return updatedConnector;
.build(); final Connector connector = new Connector.Builder().id("salesforce") .addAction(new ConnectorAction.Builder() .id(SALESFORCE_CREATE_OR_UPDATE) .addTag("dynamic") .descriptor(createOrUpdateSalesforceObjectDescriptor) .build()) .addAction(new ConnectorAction.Builder() .id(SALESFORCE_LIMITS) .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .build();
.build()); final Connector expected = new Connector.Builder()// .id(created.getId())// .name("new connector")// .description("new connector description")// .icon("new connector icon")// .connectorGroup(group)// .properties(connectorProperties)// .putConfiguredProperty("prop1", "value1")// .addAction(action)// .build();
iconDao.write(icon.getId().get(), iconStream); generatedConnector = new Connector.Builder().createFrom(generatedConnector).icon("db:" + icon.getId().get()).build(); } catch (IOException e) { throw new IllegalArgumentException("Error while reading multipart request", e);
protected final Connector configureConnector(final ConnectorTemplate connectorTemplate, final Connector connector, final ConnectorSettings connectorSettings) { final Connector.Builder builder = new Connector.Builder().createFrom(connector); builder.addAllActions(actions); builder.putConfiguredProperty("specification", SwaggerHelper.serialize(swagger)); return builder.build();
final Connector connector = new Connector.Builder().id("connector-id").icon(mockWebServer.url("/u/23079786").toString()) .build(); when(dataManager.fetch(Connector.class, "connector-id")).thenReturn(connector); when(dataManager.fetchAll(IntegrationDeployment.class)).thenReturn(ListResult.of(Collections.emptyList()));
.build()); final Connector expected = new Connector.Builder()// .id(created.getId())// .name("new connector")// .description("new connector description")// .icon("new connector icon")// .connectorGroup(group)// .properties(connectorProperties)// .putConfiguredProperty("prop1", "value1")// .addAction(action)// .build();
final Connector connector = new Connector.Builder().id("connector-id").icon(mockWebServer.url("/u/23079786").toString()) .build(); when(dataManager.fetch(Connector.class, "connector-id")).thenReturn(connector); when(dataManager.fetchAll(Integration.class)).thenReturn(ListResult.of(Collections.emptyList()));
@PUT @Path(value = "/{id}") @Consumes(MediaType.MULTIPART_FORM_DATA) public void update(@NotNull @PathParam("id") @ApiParam(required = true) String id, @MultipartForm ConnectorFormData connectorFormData) { if (connectorFormData.getConnector() == null) { throw new IllegalArgumentException("Missing connector parameter"); } Connector connectorToUpdate = connectorFormData.getConnector(); if (connectorFormData.getIconInputStream() != null) { try(BufferedInputStream iconStream = new BufferedInputStream(connectorFormData.getIconInputStream())) { // URLConnection.guessContentTypeFromStream resets the stream after inspecting the media type so // can continue to be used, rather than being consumed. String guessedMediaType = URLConnection.guessContentTypeFromStream(iconStream); if (!guessedMediaType.startsWith("image/")) { throw new IllegalArgumentException("Invalid file contents for an image"); } MediaType mediaType = MediaType.valueOf(guessedMediaType); Icon.Builder iconBuilder = new Icon.Builder().mediaType(mediaType.toString()); Icon icon = getDataManager().create(iconBuilder.build()); iconDao.write(icon.getId().get(), iconStream); connectorToUpdate = connectorToUpdate.builder().icon("db:" + icon.getId().get()).build(); } catch (IOException e) { throw new IllegalArgumentException("Error while reading multipart request", e); } } getDataManager().update(connectorToUpdate); }
protected final Connector basicConnector(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { final Swagger swagger = parseSpecification(connectorSettings, false).getModel(); // could be either JSON of the Swagger specification or a URL to one final String specification = requiredSpecification(connectorSettings); if (specification.startsWith("http")) { swagger.vendorExtension(URL_EXTENSION, URI.create(specification)); } final Connector baseConnector = baseConnectorFrom(connectorTemplate, connectorSettings); final Connector.Builder builder = new Connector.Builder().createFrom(baseConnector); final Map<String, String> alreadyConfiguredProperties = builder.build().getConfiguredProperties(); connectorTemplate.getConnectorProperties().forEach((propertyName, template) -> { final Optional<ConfigurationProperty> maybeProperty = PropertyGenerators.createProperty(propertyName, swagger, template); maybeProperty.ifPresent(property -> { builder.putProperty(propertyName, property); if (!alreadyConfiguredProperties.containsKey(propertyName)) { final String defaultValue = property.getDefaultValue(); if (defaultValue != null) { builder.putConfiguredProperty(propertyName, defaultValue); } } }); }); return builder.build(); }
protected final Connector baseConnectorFrom(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { final Set<String> properties = connectorTemplate.getProperties().keySet(); final Map<String, String> configuredProperties = connectorSettings.getConfiguredProperties()// .entrySet().stream()// .filter(e -> properties.contains(e.getKey()))// .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); final String name = Optional.ofNullable(connectorSettings.getName()) .orElseGet(() -> determineConnectorName(connectorTemplate, connectorSettings)); final String description = Optional.ofNullable(connectorSettings.getDescription()) .orElseGet(() -> determineConnectorDescription(connectorTemplate, connectorSettings)); final Optional<ConnectorGroup> connectorGroup = connectorTemplate.getConnectorGroup(); final String icon; if (connectorSettings.getIcon() != null) { icon = connectorSettings.getIcon(); } else { icon = IconGenerator.generate(connectorTemplate.getId().get(), name); } return new Connector.Builder()// .id(KeyGenerator.createKey())// .name(name)// .description(description)// .icon(icon)// .configuredProperties(configuredProperties)// .connectorGroup(connectorGroup)// .connectorGroupId(connectorGroup.map(ConnectorGroup::getId).orElse(Optional.empty()))// .build(); }
protected final Connector basicConnector(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { final Swagger swagger = parseSpecification(connectorSettings, false).getModel(); // could be either JSON of the Swagger specification or a URL to one final String specification = requiredSpecification(connectorSettings); if (specification.startsWith("http")) { swagger.vendorExtension(URL_EXTENSION, URI.create(specification)); } final Connector baseConnector = baseConnectorFrom(connectorTemplate, connectorSettings); final Connector.Builder builder = new Connector.Builder().createFrom(baseConnector); final Map<String, String> alreadyConfiguredProperties = builder.build().getConfiguredProperties(); connectorTemplate.getConnectorProperties().forEach((propertyName, template) -> { final Optional<ConfigurationProperty> maybeProperty = PropertyGenerators.createProperty(propertyName, swagger, template); maybeProperty.ifPresent(property -> { builder.putProperty(propertyName, property); if (!alreadyConfiguredProperties.containsKey(propertyName)) { final String defaultValue = property.getDefaultValue(); if (defaultValue != null) { builder.putConfiguredProperty(propertyName, defaultValue); } } }); }); return builder.build(); }
@Test public void testConnectorSummary() { ConnectorSummary summary = new ConnectorSummary.Builder().createFrom( new Connector.Builder().addAction( new ConnectorAction.Builder().addTag("1", "2", "3").build(), new ConnectorAction.Builder().addTag("2", "3", "4").build(), new ConnectorAction.Builder().addTag("2").build(), new ConnectorAction.Builder().build() ).build() ).build(); Assertions.assertThat(summary.getActionsSummary().getTotalActions()).isEqualTo(4); Map<String, Integer> actionCountByTags = summary.getActionsSummary().getActionCountByTags(); Assertions.assertThat(actionCountByTags).containsEntry("1", 1); Assertions.assertThat(actionCountByTags).containsEntry("2", 3); Assertions.assertThat(actionCountByTags).containsEntry("3", 2); Assertions.assertThat(actionCountByTags).containsEntry("4", 1); }
@Test public void shouldCreateBaseConnectors() { final ConnectorSettings settings = new ConnectorSettings.Builder().putConfiguredProperty("property2", "value2").build(); final Connector connector = generator.baseConnectorFrom(template, settings); assertThat(connector).isEqualToIgnoringGivenFields(// new Connector.Builder()// .name("test-name")// .description("test-description")// .connectorGroup(template.getConnectorGroup())// .connectorGroupId("template-group")// .properties(template.getConnectorProperties())// .putConfiguredProperty("property2", "value2")// .build(), "id", "icon"); assertThat(connector.getIcon()).isEqualTo("data:image/svg+xml,dummy"); }
private Connector toConnector(Extension extension) { List<ConnectorAction> connectorActions = extension.getActions(ConnectorAction.class); return new Connector.Builder() .createFrom((WithName) extension) .createFrom((WithConfigurationProperties) extension) .createFrom((WithConfiguredProperties) extension) .kind(Kind.Connector) .actions(connectorActions) .description(extension.getDescription()) .icon(extension.getIcon()) .addDependency(new Dependency.Builder() .id(extension.getExtensionId()) .type(Dependency.Type.EXTENSION) .build()) .id(getConnectorIdForExtension(extension)) .build(); }
private static Connector newConnector(final String id) { return new Connector.Builder().id(id).build(); }
private static Connector newConnector(final String id) { return new Connector.Builder().id(id).build(); }