This is an automated email from the ASF dual-hosted git repository. amichai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/aries-rsa.git
commit 1ebd82183a4a8875a247dc70b16f7f53e86302fd Author: Amichai Rothman <[email protected]> AuthorDate: Thu Oct 5 16:02:18 2023 +0300 ARIES-2122 - Make endpoint id unique and configurable --- .../apache/aries/rsa/examples/echotcp/service/EchoServiceImpl.java | 3 ++- .../felix/discovery/config/TestConfigDiscoveryRoundTrip.java | 2 +- .../apache/aries/rsa/provider/tcp/EndpointPropertiesParser.java | 7 +++++++ .../main/java/org/apache/aries/rsa/provider/tcp/TcpEndpoint.java | 2 +- .../java/org/apache/aries/rsa/provider/tcp/TcpEndpointTest.java | 3 ++- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/examples/echotcp/service/src/main/java/org/apache/aries/rsa/examples/echotcp/service/EchoServiceImpl.java b/examples/echotcp/service/src/main/java/org/apache/aries/rsa/examples/echotcp/service/EchoServiceImpl.java index 14fc47e1..b1b2bc86 100644 --- a/examples/echotcp/service/src/main/java/org/apache/aries/rsa/examples/echotcp/service/EchoServiceImpl.java +++ b/examples/echotcp/service/src/main/java/org/apache/aries/rsa/examples/echotcp/service/EchoServiceImpl.java @@ -24,7 +24,8 @@ import org.osgi.service.component.annotations.Component; @Component(// property = { "service.exported.interfaces=*", // - "aries.rsa.port=8201" + "aries.rsa.port=8201", // + "aries.rsa.id=echo" }) public class EchoServiceImpl implements EchoService { diff --git a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/discovery/config/TestConfigDiscoveryRoundTrip.java b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/discovery/config/TestConfigDiscoveryRoundTrip.java index 9c160006..1733a84e 100644 --- a/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/discovery/config/TestConfigDiscoveryRoundTrip.java +++ b/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/discovery/config/TestConfigDiscoveryRoundTrip.java @@ -64,7 +64,7 @@ public class TestConfigDiscoveryRoundTrip extends RsaTestBase { .put("service.imported", "true") .put("service.imported.configs", "aries.tcp") .put("objectClass", "org.apache.aries.rsa.examples.echotcp.api.EchoService") - .put("endpoint.id", "tcp://localhost:8201") + .put("endpoint.id", "tcp://localhost:8201/echo") .put("aries.tcp.hostname", "localhost") .put("aries.tcp.port", "8201") .asOption(); diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/EndpointPropertiesParser.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/EndpointPropertiesParser.java index 238034e7..942ebee0 100644 --- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/EndpointPropertiesParser.java +++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/EndpointPropertiesParser.java @@ -19,12 +19,14 @@ package org.apache.aries.rsa.provider.tcp; import java.util.Map; +import java.util.UUID; import org.osgi.service.remoteserviceadmin.EndpointDescription; public class EndpointPropertiesParser { static final String PORT_KEY = "aries.rsa.port"; static final String HOSTNAME_KEY = "aries.rsa.hostname"; + static final String ID_KEY = "aries.rsa.id"; static final String THREADS_KEY = "aries.rsa.numThreads"; static final String TIMEOUT_KEY = "osgi.basic.timeout"; @@ -33,6 +35,7 @@ public class EndpointPropertiesParser { static final int DEFAULT_NUM_THREADS = 10; private Map<String, Object> ep; + private String uuid = UUID.randomUUID().toString(); // fallback id public EndpointPropertiesParser(EndpointDescription ep) { this.ep = ep.getProperties(); @@ -68,6 +71,10 @@ public class EndpointPropertiesParser { return hostName; } + public String getId() { + return getString(ID_KEY, uuid); + } + public int getNumThreads() { return getInt(THREADS_KEY, DEFAULT_NUM_THREADS); } diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpEndpoint.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpEndpoint.java index 34ba1984..f6d4f7a9 100644 --- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpEndpoint.java +++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpEndpoint.java @@ -42,7 +42,7 @@ public class TcpEndpoint implements Endpoint { String hostName = parser.getHostname(); int numThreads = parser.getNumThreads(); tcpServer = new TCPServer(service, hostName, port, numThreads); - String endpointId = String.format("tcp://%s:%s", hostName, tcpServer.getPort()); + String endpointId = String.format("tcp://%s:%s/%s", hostName, tcpServer.getPort(), parser.getId()); effectiveProperties.put(RemoteConstants.ENDPOINT_ID, endpointId); effectiveProperties.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS, ""); effectiveProperties.put(RemoteConstants.SERVICE_INTENTS, Arrays.asList("osgi.basic", "osgi.async")); diff --git a/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpEndpointTest.java b/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpEndpointTest.java index 12909d5d..5bf1b374 100644 --- a/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpEndpointTest.java +++ b/provider/tcp/src/test/java/org/apache/aries/rsa/provider/tcp/TcpEndpointTest.java @@ -50,9 +50,10 @@ public class TcpEndpointTest { public void testEndpointProperties() throws IOException { props.put("aries.rsa.port", PORT); props.put("aries.rsa.hostname", HOSTNAME); + props.put("aries.rsa.id", "testme"); TcpEndpoint tcpEndpoint = new TcpEndpoint(service, props); EndpointDescription epd = tcpEndpoint.description(); - Assert.assertEquals("tcp://" + HOSTNAME + ":" + PORT, epd.getId()); + Assert.assertEquals("tcp://" + HOSTNAME + ":" + PORT + "/testme", epd.getId()); tcpEndpoint.close(); }
