This is an automated email from the ASF dual-hosted git repository. bossenti pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/incubator-streampipes-extensions.git
commit 6632618308cdafebee15b4bcf1d74875bbb8a1c7 Author: bossenti <[email protected]> AuthorDate: Thu Feb 25 13:32:16 2021 +0100 [STREAMPIPES-301] introduce helper class OpcUaConnect & refactoring --- .../streampipes/connect/adapters/opcua/OpcUa.java | 35 +++++++------- .../connect/adapters/opcua/OpcUaAdapter.java | 54 +++++++++------------- .../connect/adapters/opcua/utils/OpcUaConnect.java | 30 ++++++++++++ 3 files changed, 68 insertions(+), 51 deletions(-) diff --git a/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUa.java b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUa.java index 303ef3e..0e5c6a3 100644 --- a/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUa.java +++ b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUa.java @@ -24,6 +24,7 @@ import static org.eclipse.milo.opcua.stack.core.util.ConversionUtil.toList; import org.apache.streampipes.connect.adapter.exception.AdapterException; import org.apache.streampipes.connect.adapters.opcua.utils.OpcUaConnect; +import org.apache.streampipes.connect.adapters.opcua.utils.OpcUaConnect.OpcUaLabels; import org.apache.streampipes.connect.adapters.opcua.utils.OpcUaNodeVariants; import org.apache.streampipes.connect.adapters.opcua.utils.OpcUaTypes; import org.apache.streampipes.model.connect.adapter.AdapterDescription; @@ -114,44 +115,44 @@ public class OpcUa { public static OpcUa from(StaticPropertyExtractor extractor) { - String selectedAlternativeConnection = extractor.selectedAlternativeInternalId(OpcUaConnect.getOpcHostOrUrl()); - String selectedAlternativeAuthentication = extractor.selectedAlternativeInternalId(OpcUaConnect.getAccessMode()); + String selectedAlternativeConnection = extractor.selectedAlternativeInternalId(OpcUaLabels.OPC_HOST_OR_URL.name()); + String selectedAlternativeAuthentication = extractor.selectedAlternativeInternalId(OpcUaLabels.ACCESS_MODE.name()); - int namespaceIndex = extractor.singleValueParameter(OpcUaConnect.getNamespaceIndex(), int.class); - String nodeId = extractor.singleValueParameter(OpcUaConnect.getNodeId(), String.class); + int namespaceIndex = extractor.singleValueParameter(OpcUaLabels.NAMESPACE_INDEX.name(), int.class); + String nodeId = extractor.singleValueParameter(OpcUaLabels.NODE_ID.name(), String.class); - boolean useURL = selectedAlternativeConnection.equals(OpcUaConnect.getOpcUrl()); - boolean unauthenticated = selectedAlternativeAuthentication.equals(OpcUaConnect.getUnauthenticated()); + boolean useURL = selectedAlternativeConnection.equals(OpcUaLabels.OPC_URL.name()); + boolean unauthenticated = selectedAlternativeAuthentication.equals(OpcUaLabels.UNAUTHENTICATED.name()); - List<String> selectedNodeNames = extractor.selectedMultiValues(OpcUaConnect.getAvailableNodes(), String.class); + List<String> selectedNodeNames = extractor.selectedMultiValues(OpcUaLabels.AVAILABLE_NODES.name(), String.class); if (useURL && unauthenticated){ - String serverAddress = extractor.singleValueParameter(OpcUaConnect.getOpcServerUrl(), String.class); + String serverAddress = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_URL.name(), String.class); serverAddress = OpcUaConnect.formatServerAddress(serverAddress); return new OpcUa(serverAddress, namespaceIndex, nodeId, selectedNodeNames); } else if(!useURL && unauthenticated){ - String serverAddress = extractor.singleValueParameter(OpcUaConnect.getOpcServerHost(), String.class); + String serverAddress = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_HOST.name(), String.class); serverAddress = OpcUaConnect.formatServerAddress(serverAddress); - int port = extractor.singleValueParameter(OpcUaConnect.getOpcServerPort(), int.class); + int port = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_PORT.name(), int.class); return new OpcUa(serverAddress, port, namespaceIndex, nodeId, selectedNodeNames); } else { - String username = extractor.singleValueParameter(OpcUaConnect.getUsername(), String.class); - String password = extractor.secretValue(OpcUaConnect.getPassword()); + String username = extractor.singleValueParameter(OpcUaLabels.USERNAME.name(), String.class); + String password = extractor.secretValue(OpcUaLabels.PASSWORD.name()); if (useURL) { - String serverAddress = extractor.singleValueParameter(OpcUaConnect.getOpcServerUrl(), String.class); + String serverAddress = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_URL.name(), String.class); serverAddress = OpcUaConnect.formatServerAddress(serverAddress); return new OpcUa(serverAddress, namespaceIndex, nodeId, username, password, selectedNodeNames); } else { - String serverAddress = extractor.singleValueParameter(OpcUaConnect.getOpcServerHost(), String.class); + String serverAddress = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_HOST.name(), String.class); serverAddress = OpcUaConnect.formatServerAddress(serverAddress); - int port = extractor.singleValueParameter(OpcUaConnect.getOpcServerPort(), int.class); + int port = extractor.singleValueParameter(OpcUaLabels.OPC_SERVER_PORT.name(), int.class); return new OpcUa(serverAddress, port, namespaceIndex, nodeId, username, password, selectedNodeNames); } @@ -456,9 +457,7 @@ public class OpcUa { public static boolean isInteger(String s) { try { Integer.parseInt(s); - } catch(NumberFormatException e) { - return false; - } catch(NullPointerException e) { + } catch(NumberFormatException | NullPointerException e) { return false; } // only got here if we didn't return false diff --git a/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUaAdapter.java b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUaAdapter.java index cae6778..c79ddf7 100644 --- a/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUaAdapter.java +++ b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/OpcUaAdapter.java @@ -22,6 +22,7 @@ import org.apache.streampipes.connect.adapter.Adapter; import org.apache.streampipes.connect.adapter.exception.AdapterException; import org.apache.streampipes.connect.adapter.exception.ParseException; import org.apache.streampipes.connect.adapter.model.specific.SpecificDataStreamAdapter; +import org.apache.streampipes.connect.adapters.opcua.utils.OpcUaConnect.OpcUaLabels; import org.apache.streampipes.container.api.ResolvesContainerProvidedOptions; import org.apache.streampipes.model.AdapterType; import org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription; @@ -46,22 +47,6 @@ public class OpcUaAdapter extends SpecificDataStreamAdapter implements ResolvesC public static final String ID = "org.apache.streampipes.connect.adapters.opcua"; - private static final String OPC_HOST_OR_URL = "OPC_HOST_OR_URL"; - private static final String OPC_URL = "OPC_URL"; - private static final String OPC_HOST = "OPC_HOST"; - private static final String OPC_SERVER_URL = "OPC_SERVER_URL"; - private static final String OPC_SERVER_HOST = "OPC_SERVER_HOST"; - private static final String OPC_SERVER_PORT = "OPC_SERVER_PORT"; - private static final String NAMESPACE_INDEX = "NAMESPACE_INDEX"; - private static final String NODE_ID = "NODE_ID"; - private static final String ACCESS_MODE = "ACCESS_MODE"; - private static final String USERNAME_GROUP = "USERNAME_GROUP"; - private static final String USERNAME = "USERNAME"; - private static final String PASSWORD = "PASSWORD"; - private static final String UNAUTHENTICATED = "UNAUTHENTICATED"; - private static final String AVAILABLE_NODES = "AVAILABLE_NODES"; - - private Map<String, Object> event; private List<OpcNode> allNodes; private OpcUa opcUa; @@ -89,23 +74,26 @@ public class OpcUaAdapter extends SpecificDataStreamAdapter implements ResolvesC .withAssets(Assets.DOCUMENTATION, Assets.ICON) .withLocales(Locales.EN) .category(AdapterType.Generic, AdapterType.Manufacturing) - .requiredAlternatives(Labels.withId(ACCESS_MODE), - Alternatives.from(Labels.withId(UNAUTHENTICATED)), - Alternatives.from(Labels.withId(USERNAME_GROUP), - StaticProperties.group(Labels.withId(USERNAME_GROUP), - StaticProperties.stringFreeTextProperty(Labels.withId(USERNAME)), - StaticProperties.secretValue(Labels.withId(PASSWORD))))) - .requiredAlternatives(Labels.withId(OPC_HOST_OR_URL), - Alternatives.from(Labels.withId(OPC_URL), - StaticProperties.stringFreeTextProperty(Labels.withId(OPC_SERVER_URL)) + .requiredAlternatives(Labels.withId(OpcUaLabels.ACCESS_MODE.name()), + Alternatives.from(Labels.withId(OpcUaLabels.UNAUTHENTICATED.name())), + Alternatives.from(Labels.withId(OpcUaLabels.USERNAME_GROUP.name()), + StaticProperties.group(Labels.withId(OpcUaLabels.USERNAME_GROUP.name()), + StaticProperties.stringFreeTextProperty(Labels.withId(OpcUaLabels.USERNAME.name())), + StaticProperties.secretValue(Labels.withId(OpcUaLabels.PASSWORD.name()))))) + .requiredAlternatives(Labels.withId(OpcUaLabels.OPC_HOST_OR_URL.name()), + Alternatives.from(Labels.withId(OpcUaLabels.OPC_URL.name()), + StaticProperties.stringFreeTextProperty(Labels.withId(OpcUaLabels.OPC_SERVER_URL.name())) ), - Alternatives.from(Labels.withId(OPC_HOST), + Alternatives.from(Labels.withId(OpcUaLabels.OPC_HOST.name()), StaticProperties.group(Labels.withId("host-port"), - StaticProperties.stringFreeTextProperty(Labels.withId(OPC_SERVER_HOST)), - StaticProperties.stringFreeTextProperty(Labels.withId(OPC_SERVER_PORT))))) - .requiredTextParameter(Labels.withId(NAMESPACE_INDEX)) - .requiredTextParameter(Labels.withId(NODE_ID)) - .requiredMultiValueSelectionFromContainer(Labels.withId(AVAILABLE_NODES), Arrays.asList(NAMESPACE_INDEX, NODE_ID)) + StaticProperties.stringFreeTextProperty(Labels.withId(OpcUaLabels.OPC_SERVER_HOST.name())), + StaticProperties.stringFreeTextProperty(Labels.withId(OpcUaLabels.OPC_SERVER_PORT.name()))))) + .requiredTextParameter(Labels.withId(OpcUaLabels.NAMESPACE_INDEX.name())) + .requiredTextParameter(Labels.withId(OpcUaLabels.NODE_ID.name())) + .requiredMultiValueSelectionFromContainer( + Labels.withId(OpcUaLabels.AVAILABLE_NODES.name()), + Arrays.asList(OpcUaLabels.NAMESPACE_INDEX.name(), OpcUaLabels.NODE_ID.name()) + ) .build(); description.setAppId(ID); @@ -222,8 +210,8 @@ public class OpcUaAdapter extends SpecificDataStreamAdapter implements ResolvesC public List<Option> resolveOptions(String requestId, StaticPropertyExtractor parameterExtractor) { try { - parameterExtractor.selectedAlternativeInternalId(OPC_HOST_OR_URL); - parameterExtractor.selectedAlternativeInternalId(ACCESS_MODE); + parameterExtractor.selectedAlternativeInternalId(OpcUaLabels.OPC_HOST_OR_URL.name()); + parameterExtractor.selectedAlternativeInternalId(OpcUaLabels.ACCESS_MODE.name()); } catch (NullPointerException npe){ return new ArrayList<>(); } diff --git a/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/utils/OpcUaConnect.java b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/utils/OpcUaConnect.java new file mode 100644 index 0000000..d56bcbf --- /dev/null +++ b/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/opcua/utils/OpcUaConnect.java @@ -0,0 +1,30 @@ +package org.apache.streampipes.connect.adapters.opcua.utils; + +public class OpcUaConnect { + + public static String formatServerAddress(String serverAddress) { + + if (!serverAddress.startsWith("opc.tcp://")) { + serverAddress = "opc.tcp://" + serverAddress; + } + + return serverAddress; + } + + public enum OpcUaLabels { + OPC_HOST_OR_URL, + OPC_URL, + OPC_HOST, + OPC_SERVER_URL, + OPC_SERVER_HOST, + OPC_SERVER_PORT, + NAMESPACE_INDEX, + NODE_ID, + ACCESS_MODE, + USERNAME_GROUP, + USERNAME, + PASSWORD, + UNAUTHENTICATED, + AVAILABLE_NODES; + } +}
