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 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(); }
@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); }
Connector updatedConnector = new Connector.Builder().createFrom(connector).icon("db:" + icon.getId().get()).build(); getDataManager().update(updatedConnector); return updatedConnector;
.icon("new connector icon")//
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);
.icon("new connector icon")//
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);
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 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); }