@PUT @Path(value = "/{id}") @Consumes("application/json") public void update(@NotNull @PathParam("id") String id, @NotNull @Valid OAuthApp app) { final Connector connector = dataMgr.fetch(Connector.class, id); if (connector == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); } final Connector updated = new Connector.Builder().createFrom(connector) .putOrRemoveConfiguredPropertyTaggedWith(Credentials.CLIENT_ID_TAG, app.clientId) .putOrRemoveConfiguredPropertyTaggedWith(Credentials.CLIENT_SECRET_TAG, app.clientSecret) .build(); dataMgr.update(updated); }
private Connector migrateOldConnectorData(Connector existingConnector, Connector newConnector) { Map<String, String> propValues = new TreeMap<>(existingConnector.getConfiguredProperties()); propValues.keySet().retainAll(newConnector.getProperties().keySet()); if (!propValues.isEmpty()) { return new Connector.Builder() .createFrom(newConnector) .putAllConfiguredProperties(propValues) .build(); } return newConnector; }
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(); }
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);
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);
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(); }
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(); }
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(); }
@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"); }
@Test public void shouldCreateBaseConnectorsWithGivenNameAndDescription() { final ConnectorSettings settings = new ConnectorSettings.Builder().name("given-name").description("given-description") .putConfiguredProperty("property2", "value2").build(); final Connector connector = generator.baseConnectorFrom(template, settings); assertThat(connector).isEqualToIgnoringGivenFields(// new Connector.Builder()// .name("given-name")// .description("given-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 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(); }
private static Connector usedConnector(final Connector connector, final int usage) { return new Connector.Builder().createFrom(connector).uses(usage).build(); }
private static Connector usedConnector(final Connector connector, final int usage) { return new Connector.Builder().createFrom(connector).uses(usage).build(); }
@Test public void createShouldCreateWithSpecifiedId() { final Connector connector = new Connector.Builder().id("custom-id").build(); final Connector got = dataManager.create(connector); assertThat(got).isSameAs(connector); assertThat(cacheManager.getCache(Kind.Connector.modelName).get("custom-id")).isSameAs(connector); }
@Test public void byDefaultDerivedShouldBeFalse() { Connection connection = new Connection.Builder() .connector(new Connector.Builder() .id(KeyGenerator.createKey()) .build()) .build(); assertThat(connection.isDerived()).isFalse(); }
@Test public void createShouldCreateWithUnspecifiedIds() { final Connector given = new Connector.Builder().icon("my-icon").build(); final Connector got = dataManager.create(given); assertThat(got).isEqualToIgnoringGivenFields(given, "id"); assertThat(got.getId()).isPresent(); assertThat(cacheManager.getCache(Kind.Connector.modelName).get(got.getId().get())).isSameAs(got); }
@Override public Connector generate(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { return new Connector.Builder().createFrom(baseConnectorFrom(connectorTemplate, connectorSettings)) .putAllProperties(connectorProperties).putConfiguredProperty("prop1", "value1").addAction(action).build(); }
@Override public Connector generate(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { return new Connector.Builder().createFrom(baseConnectorFrom(connectorTemplate, connectorSettings)) .putAllProperties(connectorProperties).putConfiguredProperty("prop1", "value1").addAction(action).build(); }