Java tutorial
/* * Copyright 2014 The Apache Software Foundation. * * Licensed 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.juddi.v3.tck; import java.net.InetAddress; import java.net.URI; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.util.Iterator; import java.util.Random; import org.apache.commons.configuration.ConfigurationException; import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBase.logger; import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBase.startManager; import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBase.stopManager; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; /** * * @author Alex O'Ree */ public class UDDI_090_RMIIntegrationTest extends UDDI_090_SubscriptionListenerIntegrationBase { private static UDDISubscriptionListenerImpl rmiSubscriptionListenerService = null; private static TckSubscriptionListenerRMI rmiSubscriptionListener = null; private static Registry registry; private static Integer randomPort = null; private static String hostname = null; @AfterClass public static void stop() throws ConfigurationException { if (!TckPublisher.isEnabled()) { return; } stopManager(); } @BeforeClass public static void startup() throws Exception { if (!TckPublisher.isEnabled()) { return; } startManager(); int count = 0; rmiSubscriptionListenerService = new UDDISubscriptionListenerImpl(0); UDDISubscriptionListenerImpl.notifcationMap.clear(); UDDISubscriptionListenerImpl.notificationCount = 0; while (true && count < 5) { try { count++; randomPort = 19800 + new Random().nextInt(99); System.out.println("RMI Random port=" + randomPort); //bring up the RMISubscriptionListener URI rmiEndPoint = new URI("rmi://localhost:" + randomPort + "/tck/rmisubscriptionlistener"); registry = LocateRegistry.createRegistry(rmiEndPoint.getPort()); String path = rmiEndPoint.getPath(); hostname = InetAddress.getLocalHost().getHostName(); //starting the service //binding to the RMI Registry registry.bind(path, rmiSubscriptionListenerService); //double check that the service is bound in the local Registry Registry registry2 = LocateRegistry.getRegistry(rmiEndPoint.getHost(), rmiEndPoint.getPort()); registry2.lookup(rmiEndPoint.getPath()); break; } catch (Exception ex) { logger.warn("trouble starting rmi endpoint " + ex.getMessage()); } } Assert.assertNotNull(registry); Assert.assertNotNull(hostname); } @Override public boolean verifyDelivery(String findMe) { for (int i = 0; i < TckPublisher.getSubscriptionTimeout(); i++) { try { Thread.sleep(1000); } catch (InterruptedException ex) { } System.out.println("."); //if (UDDISubscriptionListenerImpl.notificationCount > 0) { } } logger.info("RX " + UDDISubscriptionListenerImpl.notificationCount + " notifications"); Iterator<String> it = UDDISubscriptionListenerImpl.notifcationMap.values().iterator(); boolean found = false; while (it.hasNext()) { String test = it.next(); if (TckCommon.isDebug()) { logger.info("Notification: " + test); } if (test.toLowerCase().contains(findMe.toLowerCase())) { found = true; } } if (!found) { it = UDDISubscriptionListenerImpl.notifcationMap.values().iterator(); Thread.dumpStack(); while (it.hasNext()) { logger.info("Notification: " + it.next()); } } return found; } @Override public void reset() { UDDISubscriptionListenerImpl.notifcationMap.clear(); UDDISubscriptionListenerImpl.notificationCount = 0; } @Override public String getXMLLocationOfServiceForDelivery() { return TckSubscriptionListener.LISTENER_RMI_SERVICE_XML; } @Override public String getTransport() { return "RMI"; } @Override public int getPort() { return randomPort; } @Override public String getHostame() { return hostname; } @Override public String getSubscription1XML() { return TckSubscriptionListenerRMI.SUBSCRIPTION_XML_RMI; } @Override public String getSubscription2XML() { return TckSubscriptionListenerRMI.SUBSCRIPTION_XML2_RMI; } @Override public String getSubscription3XML() { return TckSubscriptionListenerRMI.SUBSCRIPTION_XML3_RMI; } @Override public String getSubscriptionKey1() { return TckSubscriptionListenerRMI.SUBSCRIPTION_KEY_RMI; } @Override public String getSubscriptionKey2() { return TckSubscriptionListenerRMI.SUBSCRIPTION_KEY_RMI; } @Override public String getSubscriptionKey3() { return TckSubscriptionListenerRMI.SUBSCRIPTION_KEY_RMI; } @Override public boolean IsEnabled() { return TckPublisher.isRMI(); } }