This is an automated email from the ASF dual-hosted git repository. nfilotto pushed a commit to branch CAMEL-17792/doc-message-headers in repository https://gitbox.apache.org/repos/asf/camel.git
commit 25de40e0917e0db1ce9d3909ac90050fec657671 Author: Nicolas Filotto <[email protected]> AuthorDate: Thu Mar 31 14:40:52 2022 +0200 CAMEL-17792: Add doc about the message headers of camel-milo --- .../camel/component/milo/browse/milo-browse.json | 3 ++ .../camel/component/milo/client/milo-client.json | 4 +++ .../src/main/docs/milo-browse-component.adoc | 4 ++- .../src/main/docs/milo-client-component.adoc | 4 ++- .../apache/camel/component/milo/MiloConstants.java | 37 ++++++++++++++++++++++ .../org/apache/camel/component/milo/NodeIds.java | 2 -- .../component/milo/browse/MiloBrowseEndpoint.java | 7 ++-- .../component/milo/browse/MiloBrowseProducer.java | 2 +- .../component/milo/client/MiloClientEndpoint.java | 7 ++-- .../component/milo/client/MiloClientProducer.java | 5 +-- .../component/milo/server/MiloServerEndpoint.java | 4 ++- .../component/milo/browse/BrowseServerTest.java | 16 ++++++---- 12 files changed, 76 insertions(+), 19 deletions(-) diff --git a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/browse/milo-browse.json b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/browse/milo-browse.json index d3100dc..9abfd0f 100644 --- a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/browse/milo-browse.json +++ b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/browse/milo-browse.json @@ -47,6 +47,9 @@ "sessionName": { "kind": "property", "displayName": "Session Name", "group": "client", "label": "client", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "Session name" }, "sessionTimeout": { "kind": "property", "displayName": "Session Timeout", "group": "client", "label": "client", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "Session timeout in milliseconds" } }, + "headers": { + "CamelMiloNodeIds": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The node ids." } + }, "properties": { "endpointUri": { "kind": "path", "displayName": "Endpoint Uri", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The OPC UA server endpoint" }, "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "A virtual client id to force the creation of a new connection instance" }, diff --git a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json index 5b5fe01..e6a1813 100644 --- a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json +++ b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json @@ -48,6 +48,10 @@ "sessionName": { "kind": "property", "displayName": "Session Name", "group": "client", "label": "client", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "Session name" }, "sessionTimeout": { "kind": "property", "displayName": "Session Timeout", "group": "client", "label": "client", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "Session timeout in milliseconds" } }, + "headers": { + "CamelMiloNodeIds": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The node ids." }, + "await": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The \"await\" setting for writes." } + }, "properties": { "endpointUri": { "kind": "path", "displayName": "Endpoint Uri", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The OPC UA server endpoint" }, "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.milo.client.MiloClientConfiguration", "configurationField": "configuration", "description": "A virtual client id to force the creation of a new connection instance" }, diff --git a/components/camel-milo/src/main/docs/milo-browse-component.adoc b/components/camel-milo/src/main/docs/milo-browse-component.adoc index e259f0e..c5ac894 100644 --- a/components/camel-milo/src/main/docs/milo-browse-component.adoc +++ b/components/camel-milo/src/main/docs/milo-browse-component.adoc @@ -54,7 +54,9 @@ include::partial$component-endpoint-options.adoc[] // endpoint options: START // endpoint options: END - +// component headers: START +include::partial$component-endpoint-headers.adoc[] +// component headers: END === Client diff --git a/components/camel-milo/src/main/docs/milo-client-component.adoc b/components/camel-milo/src/main/docs/milo-client-component.adoc index 25ce4b7..0efb881 100644 --- a/components/camel-milo/src/main/docs/milo-client-component.adoc +++ b/components/camel-milo/src/main/docs/milo-client-component.adoc @@ -69,7 +69,9 @@ include::partial$component-endpoint-options.adoc[] // endpoint options: START // endpoint options: END - +// component headers: START +include::partial$component-endpoint-headers.adoc[] +// component headers: END === Discovery diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/MiloConstants.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/MiloConstants.java new file mode 100644 index 0000000..96ac561 --- /dev/null +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/MiloConstants.java @@ -0,0 +1,37 @@ +/* + * 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.camel.component.milo; + +import org.apache.camel.spi.Metadata; + +public final class MiloConstants { + + // The schemes + public static final String SCHEME_BROWSE = "milo-browse"; + public static final String SCHEME_CLIENT = "milo-client"; + public static final String SCHEME_SERVER = "milo-server"; + + @Metadata(label = "producer", description = "The node ids.", javaType = "List") + public static final String HEADER_NODE_IDS = "CamelMiloNodeIds"; + @Metadata(label = "producer", description = "The \"await\" setting for writes.", javaType = "Boolean", + applicableFor = SCHEME_CLIENT) + public static final String HEADER_AWAIT = "await"; + + private MiloConstants() { + + } +} diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/NodeIds.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/NodeIds.java index f964cbd..315135e 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/NodeIds.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/NodeIds.java @@ -34,8 +34,6 @@ import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned. */ public final class NodeIds { - public static final String HEADER_NODE_IDS = "CamelMiloNodeIds"; - private NodeIds() { } diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseEndpoint.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseEndpoint.java index 6a3c95a..b8faeeb 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseEndpoint.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseEndpoint.java @@ -22,6 +22,7 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.component.milo.MiloConstants; import org.apache.camel.component.milo.client.MiloClientConfiguration; import org.apache.camel.component.milo.client.MiloClientConnection; import org.apache.camel.component.milo.client.MiloClientConnectionManager; @@ -37,11 +38,13 @@ import org.eclipse.milo.opcua.stack.core.types.enumerated.NodeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.camel.component.milo.MiloConstants.SCHEME_BROWSE; + /** * Connect to OPC UA servers using the binary protocol for browsing the node tree. */ -@UriEndpoint(firstVersion = "3.15.0", scheme = "milo-browse", syntax = "milo-browse:endpointUri", title = "OPC UA Browser", - category = { Category.IOT }, producerOnly = true) +@UriEndpoint(firstVersion = "3.15.0", scheme = SCHEME_BROWSE, syntax = "milo-browse:endpointUri", title = "OPC UA Browser", + category = { Category.IOT }, producerOnly = true, headersClass = MiloConstants.class) public class MiloBrowseEndpoint extends DefaultEndpoint { private static final Logger LOG = LoggerFactory.getLogger(MiloBrowseEndpoint.class); diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseProducer.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseProducer.java index bfbbf4d..ea4c0d8 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseProducer.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseProducer.java @@ -36,7 +36,7 @@ import org.eclipse.milo.opcua.stack.core.types.structured.ReferenceDescription; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.camel.component.milo.NodeIds.HEADER_NODE_IDS; +import static org.apache.camel.component.milo.MiloConstants.HEADER_NODE_IDS; public class MiloBrowseProducer extends DefaultAsyncProducer { diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java index 286a451..a1b25db 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java @@ -22,6 +22,7 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.component.milo.MiloConstants; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -29,11 +30,13 @@ import org.apache.camel.spi.UriPath; import org.apache.camel.support.DefaultEndpoint; import org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId; +import static org.apache.camel.component.milo.MiloConstants.SCHEME_CLIENT; + /** * Connect to OPC UA servers using the binary protocol for acquiring telemetry data. */ -@UriEndpoint(firstVersion = "2.19.0", scheme = "milo-client", syntax = "milo-client:endpointUri", title = "OPC UA Client", - category = { Category.IOT }) +@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_CLIENT, syntax = "milo-client:endpointUri", title = "OPC UA Client", + category = { Category.IOT }, headersClass = MiloConstants.class) public class MiloClientEndpoint extends DefaultEndpoint { private final MiloClientConnectionManager connectionManager; diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientProducer.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientProducer.java index 2b2e82c..e7e4bb9 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientProducer.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientProducer.java @@ -23,11 +23,12 @@ import java.util.stream.Collectors; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Message; +import org.apache.camel.component.milo.MiloConstants; import org.apache.camel.support.DefaultAsyncProducer; import org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId; import static java.lang.Boolean.TRUE; -import static org.apache.camel.component.milo.NodeIds.HEADER_NODE_IDS; +import static org.apache.camel.component.milo.MiloConstants.HEADER_NODE_IDS; public class MiloClientProducer extends DefaultAsyncProducer { @@ -87,7 +88,7 @@ public class MiloClientProducer extends DefaultAsyncProducer { future = this.connection.call(this.nodeId, this.methodId, value); } - final Boolean await = msg.getHeader("await", this.defaultAwaitWrites, Boolean.class); + final Boolean await = msg.getHeader(MiloConstants.HEADER_AWAIT, this.defaultAwaitWrites, Boolean.class); if (TRUE.equals(await)) { future.whenComplete((v, ex) -> async.done(false)); diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerEndpoint.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerEndpoint.java index 027eb58..5a37426 100644 --- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerEndpoint.java +++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/server/MiloServerEndpoint.java @@ -27,10 +27,12 @@ import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriPath; import org.apache.camel.support.DefaultEndpoint; +import static org.apache.camel.component.milo.MiloConstants.SCHEME_SERVER; + /** * Make telemetry data available as an OPC UA server. */ -@UriEndpoint(firstVersion = "2.19.0", scheme = "milo-server", syntax = "milo-server:itemId", title = "OPC UA Server", +@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_SERVER, syntax = "milo-server:itemId", title = "OPC UA Server", category = { Category.IOT }) public class MiloServerEndpoint extends DefaultEndpoint { diff --git a/components/camel-milo/src/test/java/org/apache/camel/component/milo/browse/BrowseServerTest.java b/components/camel-milo/src/test/java/org/apache/camel/component/milo/browse/BrowseServerTest.java index f4ea89e..d047def 100644 --- a/components/camel-milo/src/test/java/org/apache/camel/component/milo/browse/BrowseServerTest.java +++ b/components/camel-milo/src/test/java/org/apache/camel/component/milo/browse/BrowseServerTest.java @@ -32,7 +32,7 @@ import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.ExchangeBuilder; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.milo.AbstractMiloServerTest; -import org.apache.camel.component.milo.NodeIds; +import org.apache.camel.component.milo.MiloConstants; import org.apache.camel.component.mock.MockEndpoint; import org.eclipse.milo.opcua.stack.core.Identifiers; import org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId; @@ -220,7 +220,7 @@ public class BrowseServerTest extends AbstractMiloServerTest { final Map<ExpandedNodeId, BrowseResult> browseResults = (Map<ExpandedNodeId, BrowseResult>) message.getBody(Map.class); assertNotNull(browseResults); - final List<?> nodes = message.getHeader(NodeIds.HEADER_NODE_IDS, List.class); + final List<?> nodes = message.getHeader(MiloConstants.HEADER_NODE_IDS, List.class); assertNotNull(nodes); assertEquals(expectedNumberOfResults, browseResults.keySet().size()); @@ -269,7 +269,8 @@ public class BrowseServerTest extends AbstractMiloServerTest { mock1.expectedMessagesMatches(assertPredicate(e -> assertBrowseResult(e.getMessage(), "ObjectTypes", "VariableTypes", "DataTypes", "ReferenceTypes", "EventTypes"))); producer1.send(ExchangeBuilder.anExchange(context) - .withHeader(NodeIds.HEADER_NODE_IDS, Collections.singletonList(Identifiers.TypesFolder.toParseableString())) + .withHeader(MiloConstants.HEADER_NODE_IDS, + Collections.singletonList(Identifiers.TypesFolder.toParseableString())) .build()); assertIsSatisfied(5, TimeUnit.SECONDS, mock1); } @@ -338,7 +339,8 @@ public class BrowseServerTest extends AbstractMiloServerTest { mock5.setExpectedCount(1); mock5.expectedMessagesMatches(assertPredicate(e -> assertBrowseResult(e.getMessage(), "Root"))); producer5.send(ExchangeBuilder.anExchange(context) - .withHeader(NodeIds.HEADER_NODE_IDS, Collections.singletonList(Identifiers.TypesFolder.toParseableString())) + .withHeader(MiloConstants.HEADER_NODE_IDS, + Collections.singletonList(Identifiers.TypesFolder.toParseableString())) .build()); assertIsSatisfied(5, TimeUnit.SECONDS, mock5); } @@ -349,7 +351,7 @@ public class BrowseServerTest extends AbstractMiloServerTest { mock1.reset(); mock1.setExpectedCount(0); final Exchange exchange = producer1.send(ExchangeBuilder.anExchange(context) - .withHeader(NodeIds.HEADER_NODE_IDS, Collections.singletonList("invalidNodeId")) + .withHeader(MiloConstants.HEADER_NODE_IDS, Collections.singletonList("invalidNodeId")) .build()); assertIsSatisfied(5, TimeUnit.SECONDS, mock1); assertNotNull(exchange.getException()); @@ -362,7 +364,7 @@ public class BrowseServerTest extends AbstractMiloServerTest { mock6.setExpectedCount(1); mock6.expectedMessagesMatches(assertPredicate(e -> assertBrowseResults(e.getMessage(), 9, 9))); producer6.send(ExchangeBuilder.anExchange(context) - .withHeader(NodeIds.HEADER_NODE_IDS, Collections.singletonList(Identifiers.String.toParseableString())) + .withHeader(MiloConstants.HEADER_NODE_IDS, Collections.singletonList(Identifiers.String.toParseableString())) .build()); assertIsSatisfied(5, TimeUnit.SECONDS, mock6); } @@ -374,7 +376,7 @@ public class BrowseServerTest extends AbstractMiloServerTest { mock7.setExpectedCount(1); mock7.expectedMessagesMatches(assertPredicate(e -> assertBrowseResults(e.getMessage(), 1, 0))); producer7.send(ExchangeBuilder.anExchange(context) - .withHeader(NodeIds.HEADER_NODE_IDS, Collections.singletonList(Identifiers.String.toParseableString())) + .withHeader(MiloConstants.HEADER_NODE_IDS, Collections.singletonList(Identifiers.String.toParseableString())) .build()); assertIsSatisfied(5, TimeUnit.SECONDS, mock7); }
