diff --git a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java index a1be4db1d0..dafe5f2799 100644 --- a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java +++ b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java @@ -50,15 +50,25 @@ public class LabelGenerator { private T desc; - public LabelGenerator(T desc) { + private boolean replaceTitles; + + public LabelGenerator(T desc, boolean replaceTitles) { this.desc = desc; + this.replaceTitles = replaceTitles; + } + + public LabelGenerator(T desc) { + this(desc, true); } public T generateLabels() throws IOException { if (existsLocalesFile()) { Properties props = laodResourceAndMakeProperties(); - desc.setName(getTitle(props, desc.getAppId())); - desc.setDescription(getDescription(props, desc.getAppId())); + + if (replaceTitles) { + desc.setName(getTitle(props, desc.getAppId())); + desc.setDescription(getDescription(props, desc.getAppId())); + } if (isAdapter()) { ((AdapterDescription) desc).getConfig() diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml b/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml index f2917f08b7..6abe50afd5 100644 --- a/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml +++ b/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml @@ -106,6 +106,11 @@ junit test + + org.mockito + mockito-core + test + diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/IIoTAdaptersExtensionModuleExport.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/IIoTAdaptersExtensionModuleExport.java index 9714149241..49ff96c34f 100644 --- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/IIoTAdaptersExtensionModuleExport.java +++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/IIoTAdaptersExtensionModuleExport.java @@ -19,6 +19,7 @@ package org.apache.streampipes.connect.iiot; import org.apache.streampipes.connect.iiot.adapters.iolink.IfmAlMqttAdapter; +import org.apache.streampipes.connect.iiot.adapters.migrations.RosBridgeAdapterMigrationV1; import org.apache.streampipes.connect.iiot.adapters.ros.RosBridgeAdapter; import org.apache.streampipes.connect.iiot.adapters.simulator.machine.MachineDataSimulatorAdapter; import org.apache.streampipes.connect.iiot.protocol.stream.FileReplayAdapter; @@ -52,6 +53,8 @@ public List> pipelineElements() { @Override public List> migrators() { - return Collections.emptyList(); + return List.of( + new RosBridgeAdapterMigrationV1() + ); } } diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/migrations/RosBridgeAdapterMigrationV1.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/migrations/RosBridgeAdapterMigrationV1.java new file mode 100644 index 0000000000..3d41e7fbf5 --- /dev/null +++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/migrations/RosBridgeAdapterMigrationV1.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.streampipes.connect.iiot.adapters.migrations; + +import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor; +import org.apache.streampipes.extensions.api.migration.IAdapterMigrator; +import org.apache.streampipes.model.connect.adapter.AdapterDescription; +import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceTagPrefix; +import org.apache.streampipes.model.migration.MigrationResult; +import org.apache.streampipes.model.migration.ModelMigratorConfig; +import org.apache.streampipes.model.staticproperty.FreeTextStaticProperty; +import org.apache.streampipes.model.staticproperty.StaticProperty; +import org.apache.streampipes.vocabulary.XSD; + +import static org.apache.streampipes.connect.iiot.adapters.ros.RosBridgeAdapter.ROS_PORT_KEY; + +public class RosBridgeAdapterMigrationV1 implements IAdapterMigrator { + + @Override + public ModelMigratorConfig config() { + return new ModelMigratorConfig( + "org.apache.streampipes.connect.iiot.adapters.ros", + SpServiceTagPrefix.ADAPTER, + 0, + 1); + } + + @Override + public MigrationResult migrate(AdapterDescription element, + IStaticPropertyExtractor extractor) throws RuntimeException { + + var portProperty = extractPortProperty(element); + portProperty.setRequiredDatatype(XSD.INTEGER); + + return MigrationResult.success(element); + } + + protected FreeTextStaticProperty extractPortProperty(AdapterDescription adapterDescription) { + return (FreeTextStaticProperty) adapterDescription.getConfig().stream() + .filter(this::isPortConfig) + .findFirst() + .orElseThrow(); + } + + private boolean isPortConfig(StaticProperty config) { + return config.getInternalName().equals(ROS_PORT_KEY); + } +} \ No newline at end of file diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/ros/RosBridgeAdapter.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/ros/RosBridgeAdapter.java index 675461ecbe..9ff1d9ecb2 100644 --- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/ros/RosBridgeAdapter.java +++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/ros/RosBridgeAdapter.java @@ -60,9 +60,9 @@ public class RosBridgeAdapter implements StreamPipesAdapter, ResolvesContainerPr public static final String ID = "org.apache.streampipes.connect.iiot.adapters.ros"; - private static final String ROS_HOST_KEY = "ROS_HOST_KEY"; - private static final String ROS_PORT_KEY = "ROS_PORT_KEY"; - private static final String TOPIC_KEY = "TOPIC_KEY"; + public static final String ROS_HOST_KEY = "ROS_HOST_KEY"; + public static final String ROS_PORT_KEY = "ROS_PORT_KEY"; + public static final String TOPIC_KEY = "TOPIC_KEY"; private String topic; private String host; @@ -92,12 +92,12 @@ public List