.ifPresent(bodySchema -> unifiedProperties.set("body", bodySchema)); final ConnectorDescriptor.Builder actionDescriptor = new ConnectorDescriptor.Builder(); actionDescriptor.inputDataShape(new DataShape.Builder()// .kind("none")// .build()); actionDescriptor.inputDataShape(new DataShape.Builder()// .kind("json-schema")// final DataShape outputDataShape = maybeResponse.map(response -> DataShapeHelper.createShapeFromResponse(specification, response)) .orElse(DATA_SHAPE_NONE); actionDescriptor.outputDataShape(outputDataShape); actionDescriptor.putConfiguredProperty("operationId", operation.getOperationId());
.camelConnectorGAV(connectorGav)// .camelConnectorPrefix(connectorScheme)// .connectorId(connectorId)// .build();
.target(String.format("http://%s/api/v1/connectors/%s/actions/%s", config.getService(), connectorId, id)); final ConnectorDescriptor.Builder enriched = new ConnectorDescriptor.Builder().createFrom(defaultDescriptor); final DynamicActionMetadata dynamicActionMetadata = target.request(MediaType.APPLICATION_JSON) .post(Entity.entity(parameters, MediaType.APPLICATION_JSON), DynamicActionMetadata.class); actionPropertySuggestions.forEach((k, vals) -> enriched.replaceConfigurationProperty(k, b -> b.addAllEnum(vals.stream().map(s -> ConfigurationProperty.PropertyValue.Builder.from(s))::iterator))); if (suggestions.getValue().size() == 1) { for (DynamicActionMetadata.ActionPropertySuggestion suggestion : suggestions.getValue()) { enriched.replaceConfigurationProperty(suggestion.displayValue(), v -> v.defaultValue(suggestion.value())); enriched.inputDataShape(input); enriched.outputDataShape(output); return enriched.build();
public ConnectionActionHandlerTest() { createOrUpdateSalesforceObjectDescriptor = new ConnectorDescriptor.Builder() .withActionDefinitionStep("Select Salesforce object", "Select Salesforce object type to create", b -> b.putProperty("sObjectName", new ConfigurationProperty.Builder()// .description("Salesforce object type to create")// .build())) .withActionDefinitionStep("Select Identifier property", "Select Salesforce property that will hold the uniquely identifying value of this object", b -> b.putProperty("sObjectIdName", .description("Unique field to hold the identifier value")// .build())) .build(); .descriptor(createOrUpdateSalesforceObjectDescriptor) .build()) .addAction(new ConnectorAction.Builder() .id(SALESFORCE_LIMITS) .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .build();
.camelConnectorGAV(connectorGav)// .camelConnectorPrefix(connectorScheme)// .connectorId(connectorId)// .build();
public ConnectionActionHandlerTest() { createOrUpdateSalesforceObjectDescriptor = new ConnectorDescriptor.Builder() .withActionDefinitionStep("Select Salesforce object", "Select Salesforce object type to create", b -> b.putProperty("sObjectName", new ConfigurationProperty.Builder()// .description("Salesforce object type to create")// .build())) .withActionDefinitionStep("Select Identifier property", "Select Salesforce property that will hold the uniquely identifying value of this object", b -> b.putProperty("sObjectIdName", .description("Unique field to hold the identifier value")// .build())) .build(); .descriptor(createOrUpdateSalesforceObjectDescriptor) .build()) .addAction(new ConnectorAction.Builder() .id(SALESFORCE_LIMITS) .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .build();
when(invocationBuilder.post(entity.capture(), eq(DynamicActionMetadata.class))).thenReturn(suggestions); final ConnectorDescriptor enrichedDefinitioin = new ConnectorDescriptor.Builder() .createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("ID", "Contact ID"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Email", "Email"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum( ConfigurationProperty.PropertyValue.Builder.of("TwitterScreenName__c", "Twitter Screen Name"))) .build();
when(invocationBuilder.post(entity.capture(), eq(DynamicActionMetadata.class))).thenReturn(suggestions); final ConnectorDescriptor enrichedDefinitioin = new ConnectorDescriptor.Builder() .createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("ID", "Contact ID"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Email", "Email"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum( ConfigurationProperty.PropertyValue.Builder.of("TwitterScreenName__c", "Twitter Screen Name"))) .build();
@Test public void shouldProvideActionDefinition() { @SuppressWarnings({"unchecked", "rawtypes"}) final Class<Entity<Map<String, Object>>> entityType = (Class) Entity.class; final ArgumentCaptor<Entity<Map<String, Object>>> entity = ArgumentCaptor.forClass(entityType); final DynamicActionMetadata suggestions = new DynamicActionMetadata.Builder().putProperty("sObjectName", Arrays.asList(DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Account", "Account"), DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Contact", "Contact"))) .build(); when(invocationBuilder.post(entity.capture(), eq(DynamicActionMetadata.class))).thenReturn(suggestions); final ConnectorDescriptor definition = handler.enrichWithMetadata(SALESFORCE_CREATE_OR_UPDATE, Collections.emptyMap()); final ConnectorDescriptor enrichedDefinitioin = new ConnectorDescriptor.Builder() .createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Account", "Account"), ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .build(); assertThat(definition).isEqualTo(enrichedDefinitioin); } }
@Test public void shouldProvideActionDefinition() { @SuppressWarnings({"unchecked", "rawtypes"}) final Class<Entity<Map<String, Object>>> entityType = (Class) Entity.class; final ArgumentCaptor<Entity<Map<String, Object>>> entity = ArgumentCaptor.forClass(entityType); final DynamicActionMetadata suggestions = new DynamicActionMetadata.Builder().putProperty("sObjectName", Arrays.asList(DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Account", "Account"), DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Contact", "Contact"))) .build(); when(invocationBuilder.post(entity.capture(), eq(DynamicActionMetadata.class))).thenReturn(suggestions); final ConnectorDescriptor definition = handler.enrichWithMetadata(SALESFORCE_CREATE_OR_UPDATE, Collections.emptyMap()); final ConnectorDescriptor enrichedDefinitioin = new ConnectorDescriptor.Builder() .createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Account", "Account"), ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .build(); assertThat(definition).isEqualTo(enrichedDefinitioin); } }
@Override ConnectorDescriptor.Builder createDescriptor(final String specification, final Swagger swagger, final Operation operation) { return new ConnectorDescriptor.Builder(); } };
@Test public void shouldNotContactVerifierForNonDynamicActions() { final ConnectorDescriptor defaultDefinition = new ConnectorDescriptor.Builder().build(); assertThat(handler.enrichWithMetadata(SALESFORCE_LIMITS, null)).isEqualTo(defaultDefinition); }
protected final Step newSimpleEndpointStep(String scheme, Consumer<ConnectorDescriptor.Builder> consumer) { ConnectorDescriptor.Builder builder = new ConnectorDescriptor.Builder().componentScheme(scheme); consumer.accept(builder); return new Step.Builder() .stepKind(StepKind.endpoint) .action(new ConnectorAction.Builder() .descriptor(builder.build()) .build()) .build(); }
private static ConnectorAction newActionBy(final Connector connector) { return new ConnectorAction.Builder()// .descriptor(// new ConnectorDescriptor.Builder()// .connectorId(connector.getId().get())// .build())// .build(); }
@Override ConnectorDescriptor.Builder createDescriptor(final String specification, final Swagger swagger, final Operation operation) { final ConnectorDescriptor.Builder actionDescriptor = new ConnectorDescriptor.Builder(); final DataShape inputDataShape = dataShapeGenerator.createShapeFromRequest(specification, swagger, operation); actionDescriptor.inputDataShape(inputDataShape); final DataShape outputDataShape = dataShapeGenerator.createShapeFromResponse(specification, swagger, operation); actionDescriptor.outputDataShape(outputDataShape); actionDescriptor.putConfiguredProperty("operationId", operation.getOperationId()); return actionDescriptor; }
@Test public void shouldNotContactVerifierForNonDynamicActions() { final ConnectorDescriptor defaultDefinition = new ConnectorDescriptor.Builder().build(); assertThat(handler.enrichWithMetadata(SALESFORCE_LIMITS, null)).isEqualTo(defaultDefinition); }
private static ConnectorAction newActionBy(final Connector connector) { return new ConnectorAction.Builder()// .descriptor(// new ConnectorDescriptor.Builder()// .connectorId(connector.getId().get())// .build())// .build(); }