protected final Connector basicConnector(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) { final Swagger swagger = parseSpecification(connectorSettings, APIValidationContext.NONE).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(); }
protected final Connector configureConnector(final ConnectorTemplate connectorTemplate, final Connector connector, final ConnectorSettings connectorSettings) { final Connector.Builder builder = new Connector.Builder().createFrom(connector);
.createFrom(sqlConnector) .configuredProperties(properties) .name(connectorNewName)
.createFrom(sqlConnector) .configuredProperties(properties) .name(connectorNewName)
.createFrom(sqlConnector) .configuredProperties(properties) .name(connectorNewName)
protected final Connector configureConnector(final ConnectorTemplate connectorTemplate, final Connector connector, final ConnectorSettings connectorSettings) { final Connector.Builder builder = new Connector.Builder().createFrom(connector);
@Test public void shouldOmitHiddenProperties() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("theHiddenOne", new ConfigurationProperty.Builder().type("hidden").addTag(Credentials.AUTHENTICATION_URL_TAG).build()) .build(); final OAuthApp oauthApp = OAuthApp.fromConnector(withHiddenProperty); final OAuthApp expected = new OAuthApp.Builder()// .id("connector-id")// .name("Connector")// .icon("svg-icon")// .putProperty("clientId", CLIENT_ID_PROPERTY)// .putProperty("clientSecret", CLIENT_SECRET_PROPERTY)// .putConfiguredProperty("clientId", "client-id")// .putConfiguredProperty("clientSecret", "client-secret")// .build(); assertThat(oauthApp).isEqualTo(expected); }
/** * Creates an immutable copy of a {@link Connector} value. * Uses accessors to get values to initialize the new immutable instance. * If an instance is already immutable, it is returned as is. * @param instance The instance to copy * @return A copied immutable Connector instance */ public static Connector copyOf(Connector instance) { if (instance instanceof ImmutableConnector) { return (ImmutableConnector) instance; } return new Connector.Builder() .createFrom(instance) .build(); }
@Test public void shouldUpdateConnectorRemovingValues() { final OAuthApp app = new OAuthApp.Builder().createFrom(OAuthApp.fromConnector(connector))// .configuredProperties(Collections.emptyMap())// .putConfiguredProperty("clientSecret", "client-secret")// .build(); final Connector updated = app.update(connector); final Connector expected = new Connector.Builder().createFrom(connector)// .configuredProperties(Collections.emptyMap())// .putConfiguredProperty("clientSecret", "client-secret")// .build(); assertThat(updated).isEqualTo(expected); } }
default Builder builder() { return new Builder().createFrom(this); }
private static Connector usedConnector(final Connector connector, final int usage) { return new Connector.Builder().createFrom(connector).uses(usage).build(); }
@Override default Connector withVersion(int version) { return new Builder().createFrom(this).version(version).build(); }
@Test public void shouldUpdateConnectorModifyingValues() { final OAuthApp app = new OAuthApp.Builder().createFrom(OAuthApp.fromConnector(connector))// .putConfiguredProperty("clientId", "new-client-id")// .build(); final Connector updated = app.update(connector); final Connector expected = new Connector.Builder().createFrom(connector)// .putConfiguredProperty("clientId", "new-client-id")// .build(); assertThat(updated).isEqualTo(expected); }
@Test public void shouldKeepConnectorConfiguredPropertiesIfNoneGiven() { final Connector withConfiguredProperty = new Connector.Builder().createFrom(connector) .putProperty("configured", new ConfigurationProperty.Builder().type("hidden").addTag(Credentials.AUTHENTICATION_URL_TAG).build()) .putConfiguredProperty("configured", "initial").build(); final Connector updated = OAuthApp.fromConnector(withConfiguredProperty).update(withConfiguredProperty); assertThat(updated.getConfiguredProperties()).containsEntry("configured", "initial"); }
@Test public void shouldSetConfiguredPropertyIfGivenEvenIfConfiguredPropertyOrDefaultExists() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("prop", new ConfigurationProperty.Builder().type("hidden") .addTag(Credentials.AUTHENTICATION_URL_TAG).defaultValue("I'm a default").build()) .putConfiguredProperty("prop", "initial").build(); final Connector updated = OAuthApp.fromConnector(withHiddenProperty).update( new Connector.Builder().createFrom(withHiddenProperty).putConfiguredProperty("prop", "new-value").build()); assertThat(updated.getConfiguredProperties()).containsEntry("prop", "new-value"); }
@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(); }
@Test public void shouldUpdateConnectorWithDefaultValuesIfNoneGiven() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("defaulted", new ConfigurationProperty.Builder().type("hidden") .addTag(Credentials.AUTHENTICATION_URL_TAG).defaultValue("I'm a default").build()) .build(); final Connector updated = OAuthApp.fromConnector(withHiddenProperty).update(withHiddenProperty); assertThat(updated.getConfiguredProperties()).containsEntry("defaulted", "I'm a default"); }