From b587bcac431d667c0835dd4ab312b83edb24f608 Mon Sep 17 00:00:00 2001 From: Jakub Toth Date: Thu, 23 Nov 2017 15:46:06 +0100 Subject: [PATCH] Fix harcoded port in location of streams Change-Id: I449772b7233186f29df97a3968f65b19204f79ca Signed-off-by: Jakub Toth --- .../rests/utils/SubscribeToStreamUtil.java | 22 +++++++---------- .../listeners/AbstractNotificationsData.java | 2 +- ...onfStreamsSubscriptionServiceImplTest.java | 24 +++++++++++++++++-- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/SubscribeToStreamUtil.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/SubscribeToStreamUtil.java index b90dd4b145..b7430c674a 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/SubscribeToStreamUtil.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/SubscribeToStreamUtil.java @@ -306,13 +306,11 @@ public final class SubscribeToStreamUtil { } static URI prepareUriByStreamName(final UriInfo uriInfo, final String streamName) { - final int port = SubscribeToStreamUtil.prepareNotificationPort(); + final UriBuilder uriBuilder = uriInfo.getBaseUriBuilder(); - final UriBuilder uriBuilder = uriInfo.getAbsolutePathBuilder(); - final UriBuilder uriToWebSocketServer = - uriBuilder.port(port).scheme(RestconfStreamsConstants.SCHEMA_SUBSCIBRE_URI); - final URI uri = uriToWebSocketServer.replacePath(streamName).build(); - return uri; + prepareNotificationPort(uriInfo.getBaseUri().getPort()); + uriBuilder.scheme(RestconfStreamsConstants.SCHEMA_SUBSCIBRE_URI); + return uriBuilder.replacePath(streamName).build(); } /** @@ -345,17 +343,15 @@ public final class SubscribeToStreamUtil { /** * Get port from web socket server. If doesn't exit, create it. * - * @return port + * @param port + * - port */ - private static int prepareNotificationPort() { - int port = RestconfStreamsConstants.NOTIFICATION_PORT; + private static void prepareNotificationPort(final int port) { try { - final WebSocketServer webSocketServer = WebSocketServer.getInstance(); - port = webSocketServer.getPort(); + WebSocketServer.getInstance(); } catch (final NullPointerException e) { - WebSocketServer.createInstance(RestconfStreamsConstants.NOTIFICATION_PORT); + WebSocketServer.createInstance(port); } - return port; } static boolean checkExist(final SchemaContext schemaContext, diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractNotificationsData.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractNotificationsData.java index 78f6dd17c7..768309fb17 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractNotificationsData.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractNotificationsData.java @@ -50,7 +50,7 @@ import org.w3c.dom.Element; abstract class AbstractNotificationsData { private static final Logger LOG = LoggerFactory.getLogger(AbstractNotificationsData.class); private static final TransformerFactory TF = TransformerFactory.newInstance(); - private static final XMLOutputFactory OF = XMLOutputFactory.newFactory(); + private static final XMLOutputFactory OF = XMLOutputFactory.newInstance(); private TransactionChainHandler transactionChainHandler; protected SchemaContextHandler schemaHandler; diff --git a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfStreamsSubscriptionServiceImplTest.java b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfStreamsSubscriptionServiceImplTest.java index 764ea29c9e..9f40febe48 100644 --- a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfStreamsSubscriptionServiceImplTest.java +++ b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfStreamsSubscriptionServiceImplTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.mock; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import java.lang.reflect.Field; +import java.net.URI; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -42,6 +43,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; import org.opendaylight.restconf.common.context.NormalizedNodeContext; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; +import org.opendaylight.restconf.common.util.SimpleUriInfo; import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils; import org.opendaylight.restconf.nb.rfc8040.handlers.DOMDataBrokerHandler; import org.opendaylight.restconf.nb.rfc8040.handlers.NotificationServiceHandler; @@ -54,6 +56,7 @@ import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev14070 import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; +@SuppressWarnings("deprecation") public class RestconfStreamsSubscriptionServiceImplTest { private static final String URI = "/restconf/18/data/ietf-restconf-monitoring:restconf-state/streams/stream/" @@ -71,6 +74,7 @@ public class RestconfStreamsSubscriptionServiceImplTest { private SchemaContextHandler schemaHandler; + @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); @@ -101,10 +105,25 @@ public class RestconfStreamsSubscriptionServiceImplTest { final Set>> set = new HashSet<>(); Mockito.when(map.entrySet()).thenReturn(set); Mockito.when(this.uriInfo.getQueryParameters()).thenReturn(map); + final UriBuilder baseUriBuilder = new LocalUriInfo().getBaseUriBuilder(); + Mockito.when(uriInfo.getBaseUri()).thenReturn(baseUriBuilder.build()); + Mockito.when(uriInfo.getBaseUriBuilder()).thenReturn(baseUriBuilder); this.schemaHandler.onGlobalContextUpdated( YangParserTestUtils.parseYangSources(TestRestconfUtils.loadFiles("/notifications"))); } + private static class LocalUriInfo extends SimpleUriInfo { + + LocalUriInfo() { + super("/"); + } + + @Override + public URI getBaseUri() { + return UriBuilder.fromUri("http://localhost:8181").build(); + } + } + @BeforeClass public static void setUpBeforeTest() throws Exception { final Map listenersByStreamNameSetter = new HashMap<>(); @@ -128,7 +147,7 @@ public class RestconfStreamsSubscriptionServiceImplTest { @Test public void testSubscribeToStream() throws Exception { final UriBuilder uriBuilder = UriBuilder.fromUri(URI); - final ListenerAdapter createListener = Notificator.createListener( + Notificator.createListener( IdentifierCodec.deserialize("toaster:toaster/toasterStatus", this.schemaHandler.get()), "data-change-event-subscription/toaster:toaster/toasterStatus/datastore=OPERATIONAL/scope=ONE", NotificationOutputType.XML); @@ -141,7 +160,8 @@ public class RestconfStreamsSubscriptionServiceImplTest { "data-change-event-subscription/toaster:toaster/toasterStatus/datastore=OPERATIONAL/scope=ONE", this.uriInfo); assertEquals( - "ws://:8181/data-change-event-subscription/toaster:toaster/toasterStatus/datastore=OPERATIONAL/scope=ONE", + "ws://localhost:8181/data-change-event-subscription" + + "/toaster:toaster/toasterStatus/datastore=OPERATIONAL/scope=ONE", response.getNewHeaders().get("Location").toString()); } -- 2.36.6