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();
     }
 

Reply via email to