You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2011/03/15 20:55:02 UTC
svn commit: r1081918 [1/2] - in /juddi/trunk:
juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/
juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/
juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/
juddi-core-...
Author: kstam
Date: Tue Mar 15 19:55:01 2011
New Revision: 1081918
URL: http://svn.apache.org/viewvc?rev=1081918&view=rev
Log:
JUDDI-243 add support for RMI notification
Added:
juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/
juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/NotifierTest.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/RMIRegistration.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/HTTPNotifier.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/JNDI_RMINotifier.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/Notifier.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/NotifierFactory.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/RMINotifier.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListenerRMI.java
juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/UDDISubscriptionListenerImpl.java
- copied, changed from r1080729, juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/TCK_UDDISubscriptionListenerImpl.java
juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerService.xml
juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerServiceRMI.xml
juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1RMI.xml
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_091_RMISubscriptionListenerIntegrationTest.java
Removed:
juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/businessService.xml
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/TCK_UDDISubscriptionListenerImpl.java
Modified:
juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/SubscriptionNotifierTest.java
juddi/trunk/juddi-core-openjpa/src/test/resources/juddiv3.properties
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/Registry.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/query/EntityQuery.java
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
juddi/trunk/juddiv3-war/src/main/webapp/WEB-INF/classes/juddiv3.properties
juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusinessService.java
juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListener.java
juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1.xml
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_010_PublisherIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_100_ClientSubscriptionInfoTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_020_TmodelIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_030_BusinessEntityIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_040_BusinessServiceIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_060_PublisherAssertionIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_070_FindEntityIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_080_SubscriptionIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_SubscriptionListenerIntegrationTest.java
juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_110_FindServicesIntegrationTest.java
Added: juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java (added)
+++ juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,130 @@
+package org.apache.juddi.api.impl;
+
+/*
+ * Copyright 2001-2009 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.
+ */
+import javax.xml.ws.Endpoint;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.Registry;
+import org.apache.juddi.v3.tck.TckBusiness;
+import org.apache.juddi.v3.tck.TckBusinessService;
+import org.apache.juddi.v3.tck.TckPublisher;
+import org.apache.juddi.v3.tck.TckSecurity;
+import org.apache.juddi.v3.tck.TckSubscriptionListener;
+import org.apache.juddi.v3.tck.TckTModel;
+import org.apache.juddi.v3.tck.UDDISubscriptionListenerImpl;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
+ */
+public class API_090_SubscriptionListenerIntegrationTest
+{
+ private static Log logger = LogFactory.getLog(API_090_SubscriptionListenerIntegrationTest.class);
+ private static API_010_PublisherTest api010 = new API_010_PublisherTest();
+ private static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckSubscriptionListener tckSubscriptionListener = new TckSubscriptionListener(new UDDISubscriptionImpl(), new UDDIPublicationImpl());
+ private static Endpoint endPoint;
+ private static String authInfoJoe = null;
+
+
+ @AfterClass
+ public static void stopManager() throws ConfigurationException {
+ //manager.stop();
+ //shutting down the TCK SubscriptionListener
+ endPoint.stop();
+
+ Registry.stop();
+ }
+
+ @BeforeClass
+ public static void startManager() throws ConfigurationException {
+ Registry.start();
+ try {
+ //bring up the TCK SubscriptionListener
+ endPoint = Endpoint.publish("http://localhost:12345/tcksubscriptionlistener", new UDDISubscriptionListenerImpl());
+
+ //manager = new UDDIClerkManager();
+ //manager.start();
+
+ logger.debug("Getting auth tokens..");
+
+
+ api010.saveJoePublisher();
+ UDDISecurityPortType security = new UDDISecurityImpl();
+ authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
+ Assert.assertNotNull(authInfoJoe);
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ Assert.fail("Could not obtain authInfo token.");
+ }
+ }
+
+ @Test
+ public void joePublisher() {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+ //Saving the Listener Service
+ tckSubscriptionListener.saveService(authInfoJoe);
+ //Saving the Subscription
+ tckSubscriptionListener.saveNotifierSubscription(authInfoJoe);
+ //Changing the service we subscribed to "JoePublisherService"
+ logger.info("Updating Service ********** ");
+ tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
+ //tckSubscriptionListener.changeSubscribedObject(authInfoJoe);
+
+ //waiting up to 100 seconds for the listener to notice the change.
+ String test="";
+ for (int i=0; i<200; i++) {
+ Thread.sleep(500);
+ System.out.print(".");
+ if (UDDISubscriptionListenerImpl.notificationCount > 0) {
+ break;
+ } else {
+ System.out.print(test);
+ }
+ }
+ if (UDDISubscriptionListenerImpl.notificationCount == 0) {
+ Assert.fail("No Notification was sent");
+ }
+ if (!UDDISubscriptionListenerImpl.notifcationMap.get(0).contains("<name xml:lang=\"en\">Service One</name>")) {
+ Assert.fail("Notification does not contain the correct service");
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ Assert.fail();
+ } finally {
+
+ tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe);
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
+
+}
Added: juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java (added)
+++ juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,153 @@
+package org.apache.juddi.api.impl;
+
+/*
+ * Copyright 2001-2009 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.
+ */
+import java.net.URI;
+import java.rmi.AccessException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.v3.tck.TckBusiness;
+import org.apache.juddi.v3.tck.TckBusinessService;
+import org.apache.juddi.v3.tck.TckPublisher;
+import org.apache.juddi.v3.tck.TckSecurity;
+import org.apache.juddi.v3.tck.TckSubscriptionListenerRMI;
+import org.apache.juddi.v3.tck.TckTModel;
+import org.apache.juddi.v3.tck.UDDISubscriptionListenerImpl;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
+ */
+public class API_091_RMISubscriptionListenerIntegrationTest
+{
+
+ private static Log logger = LogFactory.getLog(API_090_SubscriptionListenerIntegrationTest.class);
+ private static API_010_PublisherTest api010 = new API_010_PublisherTest();
+ private static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+ private static TckSubscriptionListenerRMI tckSubscriptionListenerRMI = new TckSubscriptionListenerRMI(new UDDISubscriptionImpl(), new UDDIPublicationImpl());
+
+ private static String authInfoJoe = null;
+ //private static UDDIClerkManager manager;
+ private static UDDISubscriptionListenerImpl rmiSubscriptionListenerService = null;
+ private static Registry registry;
+ private static String path = null;
+
+ @AfterClass
+ public static void stopManager() throws ConfigurationException, AccessException, RemoteException, NotBoundException {
+ //manager.stop();
+ //shutting down the TCK SubscriptionListener
+ registry.unbind(path);
+ org.apache.juddi.Registry.stop();
+ }
+
+ @BeforeClass
+ public static void startManager() throws ConfigurationException {
+ org.apache.juddi.Registry.start();
+ try {
+ //bring up the RMISubscriptionListener
+ URI rmiEndPoint = new URI("rmi://localhost:9876/tck/rmisubscriptionlistener");
+ registry = LocateRegistry.createRegistry(rmiEndPoint.getPort());
+ path = rmiEndPoint.getPath();
+
+ //starting the service
+ rmiSubscriptionListenerService = new UDDISubscriptionListenerImpl(0);
+ //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());
+
+
+ } catch (Exception e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ Assert.fail();
+ }
+
+ //manager = new UDDIClerkManager();
+ //manager.start();
+
+ logger.debug("Getting auth tokens..");
+ try {
+
+ api010.saveJoePublisher();
+ UDDISecurityPortType security = new UDDISecurityImpl();
+ authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
+ Assert.assertNotNull(authInfoJoe);
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ Assert.fail("Could not obtain authInfo token.");
+ }
+ }
+
+ @Test
+ public void joePublisher() {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+ //Saving the Listener Service
+ tckSubscriptionListenerRMI.saveService(authInfoJoe);
+ //Saving the Subscription
+ tckSubscriptionListenerRMI.saveNotifierSubscription(authInfoJoe);
+ //Changing the service we subscribed to "JoePublisherService"
+ tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
+
+ //waiting up to 100 seconds for the listener to notice the change.
+ String test="";
+ for (int i=0; i<200; i++) {
+ Thread.sleep(500);
+ System.out.print(".");
+ if (UDDISubscriptionListenerImpl.notificationCount > 0) {
+ break;
+ } else {
+ System.out.print(test);
+ }
+ }
+ if (UDDISubscriptionListenerImpl.notificationCount == 0) {
+ Assert.fail("No Notification was sent");
+ }
+ if (!UDDISubscriptionListenerImpl.notifcationMap.get(0).contains("<name xml:lang=\"en\">Service One</name>")) {
+ Assert.fail("Notification does not contain the correct service");
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ Assert.fail();
+ } finally {
+
+ tckSubscriptionListenerRMI.deleteNotifierSubscription(authInfoJoe);
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
+
+}
Modified: juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/SubscriptionNotifierTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/SubscriptionNotifierTest.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/SubscriptionNotifierTest.java (original)
+++ juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/SubscriptionNotifierTest.java Tue Mar 15 19:55:01 2011
@@ -70,7 +70,7 @@ public class SubscriptionNotifierTest
tckTModel.saveJoePublisherTmodel(authInfoJoe);
tckBusiness.saveJoePublisherBusiness(authInfoJoe);
tckBusinessService.saveJoePublisherService(authInfoJoe);
- tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
+ //tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
tckSubscription.saveJoePublisherSubscription(authInfoJoe);
//tckSubscription.getJoePublisherSubscriptionResults(authInfoJoe);
} catch (RemoteException e) {
@@ -87,11 +87,14 @@ public class SubscriptionNotifierTest
Collection<Subscription> subscriptions = notifier.getAllAsyncSubscriptions();
Assert.assertEquals(1, subscriptions.size());
Subscription subscription = subscriptions.iterator().next();
- GetSubscriptionResults getSubscriptionResults = notifier.buildGetSubscriptionResults(subscription, new Date());
+ GetSubscriptionResults getSubscriptionResults = notifier.buildGetSubscriptionResults(subscription, new Date(new Date().getTime() + 60000l));
getSubscriptionResults.setSubscriptionKey(subscription.getSubscriptionKey());
UddiEntityPublisher publisher = new UddiEntityPublisher();
publisher.setAuthorizedName(subscription.getAuthorizedName());
SubscriptionResultsList resultList = notifier.getSubscriptionImpl().getSubscriptionResults(getSubscriptionResults, publisher);
+ Assert.assertNull(resultList.getServiceList());
+ tckBusinessService.updateJoePublisherService(authInfoJoe, "updated description");
+ resultList = notifier.getSubscriptionImpl().getSubscriptionResults(getSubscriptionResults, publisher);
//We're expecting a changed service (since it was added in the
Assert.assertNotNull(resultList.getServiceList());
//We should detect these changes.
@@ -105,7 +108,7 @@ public class SubscriptionNotifierTest
@AfterClass
public static void teardown() {
tckSubscription.deleteJoePublisherSubscription(authInfoJoe);
- tckBindingTemplate.deleteJoePublisherBinding(authInfoJoe);
+ //tckBindingTemplate.deleteJoePublisherBinding(authInfoJoe);
tckBusinessService.deleteJoePublisherService(authInfoJoe);
tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
tckTModel.deleteJoePublisherTmodel(authInfoJoe);
Added: juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/NotifierTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/NotifierTest.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/NotifierTest.java (added)
+++ juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/subscription/notify/NotifierTest.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,94 @@
+/*
+cd .. * Copyright 2001-2009 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.subscription.notify;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URISyntaxException;
+
+import junit.framework.Assert;
+
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.model.BindingTemplate;
+import org.apache.juddi.model.TmodelInstanceInfo;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+public class NotifierTest
+{
+ @Test
+ public void testHTTPNotifier() throws IllegalArgumentException, SecurityException, URISyntaxException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+ BindingTemplate bindingTemplate = new BindingTemplate();
+ bindingTemplate.setEntityKey("uddi:uddi.joepublisher.com:bindingnotifier");
+ bindingTemplate.setAccessPointType(AccessPointType.END_POINT.toString());
+ bindingTemplate.setAccessPointUrl("http://localhost:12345/tcksubscriptionlistener");
+ TmodelInstanceInfo instanceInfo = new TmodelInstanceInfo();
+ instanceInfo.setTmodelKey("uddi:uddi.org:transport:http");
+ bindingTemplate.getTmodelInstanceInfos().add(instanceInfo);
+
+ Notifier notifier = new NotifierFactory().getNotifier(bindingTemplate);
+
+ Assert.assertEquals(HTTPNotifier.class, notifier.getClass());
+ }
+ //Expected error because we don't have a javax.mail implementation on the classpath
+ @Test(expected=java.lang.ClassFormatError.class)
+ public void testSMTPNotifier() throws IllegalArgumentException, SecurityException, URISyntaxException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+ BindingTemplate bindingTemplate = new BindingTemplate();
+ bindingTemplate.setEntityKey("uddi:uddi.joepublisher.com:bindingnotifier");
+ bindingTemplate.setAccessPointType(AccessPointType.END_POINT.toString());
+ bindingTemplate.setAccessPointUrl("mailto:order@islandtrading.example");
+ TmodelInstanceInfo instanceInfo = new TmodelInstanceInfo();
+ instanceInfo.setTmodelKey("uddi:uddi.org:transport:smtp");
+ bindingTemplate.getTmodelInstanceInfos().add(instanceInfo);
+
+ Notifier notifier = new NotifierFactory().getNotifier(bindingTemplate);
+
+ Assert.assertEquals(SMTPNotifier.class, notifier.getClass());
+ }
+ //Expected error because we can't connect to the registry on localhost:11099
+ @Test(expected=java.lang.reflect.InvocationTargetException.class)
+ public void testRMINotifier() throws IllegalArgumentException, SecurityException, URISyntaxException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+ BindingTemplate bindingTemplate = new BindingTemplate();
+ bindingTemplate.setEntityKey("uddi:uddi.joepublisher.com:bindingnotifier");
+ bindingTemplate.setAccessPointType(AccessPointType.END_POINT.toString());
+ bindingTemplate.setAccessPointUrl("rmi://localhost:11099/tcksubscriptionlistener");
+ TmodelInstanceInfo instanceInfo = new TmodelInstanceInfo();
+ instanceInfo.setTmodelKey("uddi:uddi.org:transport:rmi");
+ bindingTemplate.getTmodelInstanceInfos().add(instanceInfo);
+
+ Notifier notifier = new NotifierFactory().getNotifier(bindingTemplate);
+
+ Assert.assertEquals(RMINotifier.class, notifier.getClass());
+ }
+ //Expected error because we did not specify a correct InitialContext
+ @Test(expected=java.lang.reflect.InvocationTargetException.class)
+ public void testJNDIRMINotifier() throws IllegalArgumentException, SecurityException, URISyntaxException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+ BindingTemplate bindingTemplate = new BindingTemplate();
+ bindingTemplate.setEntityKey("uddi:uddi.joepublisher.com:bindingnotifier");
+ bindingTemplate.setAccessPointType(AccessPointType.END_POINT.toString());
+ bindingTemplate.setAccessPointUrl("jndi-rmi://localhost:11099/tcksubscriptionlistener");
+ TmodelInstanceInfo instanceInfo = new TmodelInstanceInfo();
+ instanceInfo.setTmodelKey("uddi:uddi.org:transport:jndi-rmi");
+ bindingTemplate.getTmodelInstanceInfos().add(instanceInfo);
+
+ Notifier notifier = new NotifierFactory().getNotifier(bindingTemplate);
+
+ Assert.assertEquals(JNDI_RMINotifier.class, notifier.getClass());
+ }
+
+
+
+}
Modified: juddi/trunk/juddi-core-openjpa/src/test/resources/juddiv3.properties
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core-openjpa/src/test/resources/juddiv3.properties?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core-openjpa/src/test/resources/juddiv3.properties (original)
+++ juddi/trunk/juddi-core-openjpa/src/test/resources/juddiv3.properties Tue Mar 15 19:55:01 2011
@@ -72,8 +72,8 @@ juddi.keygenerator=org.apache.juddi.keyg
juddi.authenticate.Inquiry=false
#
# Specifies the interval at which the notification timer triggers
-juddi.notification.interval=3000000
+juddi.notification.interval=5000
# Specifies the amount of time to wait before the notification timer initially fires
-juddi.notification.start.buffer=20000
+juddi.notification.start.buffer=0
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/Registry.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/Registry.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/Registry.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/Registry.java Tue Mar 15 19:55:01 2011
@@ -8,6 +8,7 @@ import org.apache.commons.logging.LogFac
import org.apache.juddi.config.AppConfig;
import org.apache.juddi.config.Property;
import org.apache.juddi.rmi.JNDIRegistration;
+import org.apache.juddi.rmi.RMIRegistration;
import org.apache.juddi.subscription.SubscriptionNotifier;
public class Registry {
@@ -64,6 +65,16 @@ public class Registry {
log.error("Unable to Register jUDDI services with JNDI. " + e.getMessage(), e);
}
}
+ if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_RMI_REGISTRATION, false)) {
+ try {
+ int rmiport = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_REGISTRY_PORT,1099);
+ int port = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_PORT,0);
+ RMIRegistration.getInstance(rmiport).register(port);
+ } catch (Exception e) {
+ log.error("Unable to Register jUDDI services with RMI Registry. " + e.getMessage(), e);
+ }
+ }
+
log.info("jUDDI registry started succesfully.");
}
}
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java Tue Mar 15 19:55:01 2011
@@ -150,6 +150,7 @@ public class UDDISubscriptionImpl extend
logger.error("JAXB Exception while unmarshalling subscription filter", e);
throw new FatalErrorException(new ErrorMessage("errors.Unspecified"));
}
+ if (logger.isDebugEnabled()) logger.debug("filter=" + modelSubscription.getSubscriptionFilter());
SubscriptionResultsList result = new SubscriptionResultsList();
result.setCoveragePeriod(body.getCoveragePeriod());
@@ -186,7 +187,6 @@ public class UDDISubscriptionImpl extend
if (subscriptionFilter.getFindBinding() != null) {
//Get the current matching keys
List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
-
// See if there's any missing keys by comparing against the previous matches. If so, they missing keys are added to the KeyBag and
// then added to the result
List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
@@ -290,7 +290,7 @@ public class UDDISubscriptionImpl extend
if (subscriptionFilter.getFindService() != null) {
//Get the current matching keys
List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
-
+ logger.info("current matching keys=" + currentMatchingKeys);
List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
if (missingKeys != null && missingKeys.size() > 0) {
KeyBag missingKeyBag = new KeyBag();
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java Tue Mar 15 19:55:01 2011
@@ -32,8 +32,17 @@ public interface Property
public final static String JUDDI_NOTIFICATION_ACCEPTABLE_LAGTIME ="juddi.notification.acceptable.lagtime";
public final static String JUDDI_SUBSCRIPTION_CHUNKEXPIRATION_MINUTES="juddi.subscription.chunkexpiration.minutes";
public final static String JUDDI_JNDI_REGISTRATION ="juddi.jndi.registration";
- public final static String JUDDI_SUBSCRIPTION_NOTIFICATION ="juddi.subscription.notification";
public final static String JUDDI_RMI_PORT ="juddi.rmi.port";
+ public final static String JUDDI_RMI_REGISTRATION ="juddi.rmi.registration";
+ public final static String JUDDI_RMI_REGISTRY_PORT ="juddi.rmi.registry.port";
+ public final static String JUDDI_SUBSCRIPTION_NOTIFICATION ="juddi.subscription.notification";
+ public final static String JUDDI_EMAIL_HOST ="juddi.email.host";
+ public final static String JUDDI_EMAIL_PORT ="juddi.email.port";
+ public final static String JUDDI_EMAIL_AUTH ="juddi.email.auth";
+ public final static String JUDDI_EMAIL_USER ="juddi.email.user";
+ public final static String JUDDI_EMAIL_PASSWORD ="juddi.email.password";
+ public final static String JUDDI_EMAIL_TRANSPORT ="juddi.email.transport";
+ public final static String JUDDI_EMAIL_FROM ="juddi.email.from";
public final static String DEFAULT_CRYPTOR ="org.apache.juddi.cryptor.DefaultCryptor";
public final static String DEFAULT_USERSFILE ="juddi-users.properties";
@@ -43,4 +52,5 @@ public interface Property
public final static boolean DEFAULT_LOAD_INSTALL_DATA =true;
public final static String DEFAULT_BASE_URL ="http://localhost:8080/juddiv3";
+
}
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/query/EntityQuery.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/query/EntityQuery.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/query/EntityQuery.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/query/EntityQuery.java Tue Mar 15 19:55:01 2011
@@ -123,7 +123,7 @@ public abstract class EntityQuery {
// If keysIn is null, then no IN list is applied to the query - we simply need to run the query. Otherwise, the IN list is chunked based on
// the application property.
if (keysIn == null) {
- log.debug(dynamicQry);
+ if (log.isDebugEnabled()) log.debug(dynamicQry);
Query qry = dynamicQry.buildJPAQuery(em);
result = qry.getResultList();
}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/RMIRegistration.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/RMIRegistration.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/RMIRegistration.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/RMIRegistration.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2001-2009 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.rmi;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+import javax.naming.NamingException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author Kurt Stam (kstam@apache.org)
+ */
+public class RMIRegistration
+{
+ public static String JUDDI = "/juddiv3";
+ public static String UDDI_SECURITY_SERVICE = JUDDI + "/UDDISecurityService";
+ public static String UDDI_PUBLICATION_SERVICE = JUDDI + "/UDDIPublicationService";
+ public static String UDDI_INQUIRY_SERVICE = JUDDI + "/UDDIInquiryService";
+ public static String UDDI_SUBSCRIPTION_SERVICE = JUDDI + "/UDDISubscriptionService";
+ public static String UDDI_SUBSCRIPTION_LISTENER_SERVICE = JUDDI + "/UDDISubscriptionListenerService";
+ public static String UDDI_CUSTODY_TRANSFER_SERVICE = JUDDI + "/UDDICustodyTransferService";
+ public static String JUDDI_PUBLISHER_SERVICE = JUDDI + "/JUDDIApiService";
+
+ private UDDISecurityService securityService = null;
+ private UDDIPublicationService publicationService = null;
+ private UDDIInquiryService inquiryService = null;
+ private UDDISubscriptionService subscriptionService = null;
+ private UDDISubscriptionListenerService subscriptionListenerService = null;
+ private UDDICustodyTransferService custodyTransferService = null;
+ private JUDDIApiService publisherService = null;
+
+ private Log log = LogFactory.getLog(this.getClass());
+ Registry registry = null;
+ private static RMIRegistration registration = null;
+
+ public static RMIRegistration getInstance(int port) throws NamingException, RemoteException {
+ if (registration==null) {
+ registration = new RMIRegistration(port);
+ }
+ return registration;
+ }
+
+ private RMIRegistration(int port) throws NamingException, RemoteException{
+ super();
+ registry = LocateRegistry.createRegistry(port);
+ }
+ /**
+ * Registers the Publish and Inquiry Services to JNDI and instantiates a
+ * instance of each so we can remotely attach to it later.
+ */
+ public void register(int port) {
+ try {
+ securityService = new UDDISecurityService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_SECURITY_SERVICE + ", " + securityService.getClass());
+ registry.bind(UDDI_SECURITY_SERVICE, securityService);
+
+ publicationService = new UDDIPublicationService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_PUBLICATION_SERVICE + ", " + publicationService.getClass());
+ registry.bind(UDDI_PUBLICATION_SERVICE, publicationService);
+
+ inquiryService = new UDDIInquiryService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_INQUIRY_SERVICE + ", " + inquiryService.getClass());
+ registry.bind(UDDI_INQUIRY_SERVICE, inquiryService);
+
+ subscriptionService = new UDDISubscriptionService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_SUBSCRIPTION_SERVICE + ", " + subscriptionService.getClass());
+ registry.bind(UDDI_SUBSCRIPTION_SERVICE, subscriptionService);
+
+ subscriptionListenerService = new UDDISubscriptionListenerService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_SUBSCRIPTION_LISTENER_SERVICE + ", " + subscriptionListenerService.getClass());
+ registry.bind(UDDI_SUBSCRIPTION_LISTENER_SERVICE, subscriptionListenerService);
+
+ custodyTransferService = new UDDICustodyTransferService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + UDDI_CUSTODY_TRANSFER_SERVICE + ", " + custodyTransferService.getClass());
+ registry.bind(UDDI_CUSTODY_TRANSFER_SERVICE, custodyTransferService);
+
+ publisherService = new JUDDIApiService(port);
+ if (log.isDebugEnabled()) log.debug("Setting " + JUDDI_PUBLISHER_SERVICE + ", " + publisherService.getClass());
+ registry.bind(JUDDI_PUBLISHER_SERVICE, publisherService);
+
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ }
+
+ public void unregister() {
+
+ try {
+ registry.unbind(UDDI_SECURITY_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ securityService = null;
+ try {
+ registry.unbind(UDDI_PUBLICATION_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ publicationService = null;
+ try {
+ registry.unbind(UDDI_INQUIRY_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ inquiryService = null;
+ try {
+ registry.unbind(UDDI_SUBSCRIPTION_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ subscriptionService = null;
+ try {
+ registry.unbind(UDDI_SUBSCRIPTION_LISTENER_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ subscriptionListenerService = null;
+ try {
+ registry.unbind(UDDI_CUSTODY_TRANSFER_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ custodyTransferService = null;
+ try {
+ registry.unbind(JUDDI_PUBLISHER_SERVICE);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ publisherService = null;
+
+ }
+}
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java Tue Mar 15 19:55:01 2011
@@ -17,7 +17,6 @@
package org.apache.juddi.subscription;
import java.net.MalformedURLException;
-import java.net.URL;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -43,14 +42,13 @@ import org.apache.juddi.config.Persisten
import org.apache.juddi.config.Property;
import org.apache.juddi.model.Subscription;
import org.apache.juddi.model.UddiEntityPublisher;
-import org.apache.juddi.v3.client.UDDIService;
-import org.apache.juddi.v3.client.UDDIServiceWSDL;
+import org.apache.juddi.subscription.notify.Notifier;
+import org.apache.juddi.subscription.notify.NotifierFactory;
import org.uddi.sub_v3.CoveragePeriod;
import org.uddi.sub_v3.GetSubscriptionResults;
import org.uddi.sub_v3.SubscriptionResultsList;
import org.uddi.subr_v3.NotifySubscriptionListener;
import org.uddi.v3_service.DispositionReportFaultMessage;
-import org.uddi.v3_service.UDDISubscriptionListenerPortType;
/**
*
@@ -65,6 +63,8 @@ public class SubscriptionNotifier extend
private long interval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_INTERVAL, 300000l); //5 min default
private long acceptableLagTime = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_ACCEPTABLE_LAGTIME, 500l); //500 milliseconds
private UDDISubscriptionImpl subscriptionImpl = new UDDISubscriptionImpl();
+ private Boolean registryHasChanges = true;
+ private Boolean alwaysNotify = false;
public SubscriptionNotifier() throws ConfigurationException {
super();
@@ -74,12 +74,13 @@ public class SubscriptionNotifier extend
public void run()
{
- if (firedOnTime(scheduledExecutionTime())) {
+ if (alwaysNotify || (registryHasChanges && firedOnTime(scheduledExecutionTime()))) {
long startTime = System.currentTimeMillis();
log.debug("Start Notification background task; checking if subscription notifications need to be send out..");
Collection<Subscription> subscriptions = getAllAsyncSubscriptions();
for (Subscription subscription : subscriptions) {
+ //expireCache after subscription.getExpiresAfter().getTime()
if (subscription.getExpiresAfter()==null || subscription.getExpiresAfter().getTime() > startTime) {
try {
GetSubscriptionResults getSubscriptionResults = buildGetSubscriptionResults(subscription, new Date(scheduledExecutionTime()));
@@ -96,8 +97,7 @@ public class SubscriptionNotifier extend
} catch (Exception e) {
log.error("Could not obtain subscriptionResult for subscriptionKey "
+ subscription.getSubscriptionKey() + ". " + e.getMessage(),e);
- }
-
+ }
}
}
long endTime = System.currentTimeMillis();
@@ -137,22 +137,22 @@ public class SubscriptionNotifier extend
throws DispositionReportFaultMessage, DatatypeConfigurationException {
GetSubscriptionResults getSubscriptionResults = null;
- Date startPoint = subscription.getLastNotified();
- if (startPoint==null) startPoint = new Date(0);
-
Duration duration = TypeConvertor.convertStringToDuration(subscription.getNotificationInterval());
- Date nextDesiredNotificationDate = new Date(startPoint.getTime());
+ Date startPoint = subscription.getLastNotified();
+ Date nextDesiredNotificationDate = null;
+ if (startPoint==null) startPoint = subscription.getCreateDate();
+ nextDesiredNotificationDate = new Date(startPoint.getTime());
duration.addTo(nextDesiredNotificationDate);
if (subscription.getLastNotified()==null || nextDesiredNotificationDate.after(startPoint) && nextDesiredNotificationDate.before(endPoint)) {
getSubscriptionResults = new GetSubscriptionResults();
-
CoveragePeriod period = new CoveragePeriod();
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTimeInMillis(startPoint.getTime());
period.setStartPoint(DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar));
calendar.setTimeInMillis(endPoint.getTime());
period.setEndPoint(DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar));
+ log.info("Period " + period.getStartPoint() + " " + period.getEndPoint());
getSubscriptionResults.setCoveragePeriod(period);
}
return getSubscriptionResults;
@@ -235,13 +235,12 @@ public class SubscriptionNotifier extend
}
if (bindingTemplate!=null) {
- if (AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ if (AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType()) ||
+ AccessPointType.WSDL_DEPLOYMENT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
try {
- URL tmpWSDLFile = new UDDIServiceWSDL().getWSDLFilePath(UDDIServiceWSDL.WSDLEndPointType.SUBSCRIPTION_LISTENER, bindingTemplate.getAccessPointUrl());
- UDDIService service = new UDDIService(tmpWSDLFile);
- UDDISubscriptionListenerPortType subscriptionListenerPort = service.getUDDISubscriptionListenerPort();
+ Notifier notifier = new NotifierFactory().getNotifier(bindingTemplate);
log.info("Sending out notification to " + bindingTemplate.getAccessPointUrl());
- subscriptionListenerPort.notifySubscriptionListener(body);
+ notifier.notifySubscriptionListener(body);
//there maybe more chunks we have to send
String chunkToken=body.getSubscriptionResultsList().getChunkToken();
while(chunkToken!=null) {
@@ -251,7 +250,7 @@ public class SubscriptionNotifier extend
getSubscriptionResults.setChunkToken(chunkToken);
resultList = subscriptionImpl.getSubscriptionResults(getSubscriptionResults, publisher);
body.setSubscriptionResultsList(resultList);
- subscriptionListenerPort.notifySubscriptionListener(body);
+ notifier.notifySubscriptionListener(body);
chunkToken=body.getSubscriptionResultsList().getChunkToken();
}
//now log to the db that we completed sending the notification.
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/HTTPNotifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/HTTPNotifier.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/HTTPNotifier.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/HTTPNotifier.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,53 @@
+package org.apache.juddi.subscription.notify;
+
+import java.io.IOException;
+import java.net.URL;
+import java.rmi.RemoteException;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.model.BindingTemplate;
+import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.client.UDDIServiceWSDL;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+
+public class HTTPNotifier implements Notifier {
+
+ private static String SUBR_V3_NAMESPACE = "urn:uddi-org:v3_service";
+ private static String SUBSCRIPTION_LISTENER_SERVICE = "UDDI_SubscriptionListener_Port";
+
+ Log log = LogFactory.getLog(this.getClass());
+ UDDISubscriptionListenerPortType subscriptionListenerPort = null;
+
+ public HTTPNotifier(BindingTemplate bindingTemplate) throws IOException {
+ super();
+ String accessPointUrl = bindingTemplate.getAccessPointUrl().toLowerCase();
+ if (!accessPointUrl.startsWith("http")) {
+ log.warn("http accessPointUrl for bindingTemplate " + bindingTemplate.getEntityKey() +
+ " should start with 'http' or 'https'");
+ }
+ if (AccessPointType.WSDL_DEPLOYMENT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ //WSDL deployment types
+ //TODO, let user override the SUBSCRIPTION_LISTENER_SERVICE setting
+ QName qName = new QName(SUBR_V3_NAMESPACE, SUBSCRIPTION_LISTENER_SERVICE);
+ Service service = Service.create(new URL(bindingTemplate.getAccessPointUrl()), qName);
+ subscriptionListenerPort = (UDDISubscriptionListenerPortType) service.getPort(UDDISubscriptionListenerPortType.class);
+ } else if (AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ //endpoint deployment type
+ URL tmpWSDLFile = new UDDIServiceWSDL().getWSDLFilePath(UDDIServiceWSDL.WSDLEndPointType.SUBSCRIPTION_LISTENER, accessPointUrl);
+ UDDIService uddiService = new UDDIService(tmpWSDLFile);
+ subscriptionListenerPort = uddiService.getUDDISubscriptionListenerPort();
+ }
+ }
+
+ public DispositionReport notifySubscriptionListener(NotifySubscriptionListener body) throws DispositionReportFaultMessage, RemoteException {
+ return subscriptionListenerPort.notifySubscriptionListener(body);
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/JNDI_RMINotifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/JNDI_RMINotifier.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/JNDI_RMINotifier.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/JNDI_RMINotifier.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,75 @@
+package org.apache.juddi.subscription.notify;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.util.Properties;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.xml.bind.JAXBException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.InitialContextInfo;
+import org.apache.juddi.Property;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.jaxb.JAXBMarshaller;
+import org.apache.juddi.model.BindingTemplate;
+import org.apache.juddi.model.TmodelInstanceInfo;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+
+public class JNDI_RMINotifier implements Notifier {
+
+ Log log = LogFactory.getLog(this.getClass());
+ UDDISubscriptionListenerPortType subscriptionListenerPort = null;
+ public static String JNDI_RMI_TRANSPORT_KEY = "uddi:uddi.org:transport:jndi-rmi";
+
+ public JNDI_RMINotifier(BindingTemplate bindingTemplate) throws IOException,
+ URISyntaxException, NotBoundException, NamingException, JAXBException {
+ super();
+ if (!AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ log.error("jndi-rmi enpoints only support AccessPointType " + AccessPointType.END_POINT);
+ }
+ String accessPointUrl = bindingTemplate.getAccessPointUrl().toLowerCase();
+ if (!accessPointUrl.startsWith("jndi-rmi")) {
+ log.warn("jndi-rmi accessPointUrl for bindingTemplate " + bindingTemplate.getEntityKey() +
+ " should start with 'jndi-rmi'");
+ }
+ InitialContext context = new InitialContext();
+ for (TmodelInstanceInfo tModelInstanceInfo : bindingTemplate.getTmodelInstanceInfos()) {
+ if (tModelInstanceInfo.getTmodelKey().equals(JNDI_RMI_TRANSPORT_KEY)) {
+ if (log.isDebugEnabled()) log.debug("Found transport tModelKey " + tModelInstanceInfo.getTmodelKey());
+ String instanceParmsStr = tModelInstanceInfo.getInstanceParms();
+ if (instanceParmsStr!=null) {
+ if (log.isDebugEnabled()) log.debug("Found instanceParms with value: " + instanceParmsStr);
+ InitialContextInfo icInfo = (InitialContextInfo) JAXBMarshaller.unmarshallFromString(instanceParmsStr, JAXBMarshaller.PACKAGE_JUDDI);
+ Properties properties = new Properties();
+ for (Property property: icInfo.getContextProperty()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Initial Context Property from instanceParms " +
+ property.getName() + ":" + property.getValue());
+ }
+ properties.put(property.getName(), property.getValue());
+ }
+ context = new InitialContext(properties);
+ break;
+ }
+ }
+ }
+ URI accessPointURI = new URI(accessPointUrl);
+ String path = accessPointURI.getPath();
+
+ subscriptionListenerPort = (UDDISubscriptionListenerPortType) context.lookup(path);
+ log.info("Successfully located " + path);
+ }
+
+ public DispositionReport notifySubscriptionListener(NotifySubscriptionListener body) throws DispositionReportFaultMessage, RemoteException {
+ return subscriptionListenerPort.notifySubscriptionListener(body);
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/Notifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/Notifier.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/Notifier.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/Notifier.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,14 @@
+package org.apache.juddi.subscription.notify;
+
+import java.rmi.RemoteException;
+
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+public interface Notifier {
+
+ public DispositionReport notifySubscriptionListener(NotifySubscriptionListener body)
+ throws DispositionReportFaultMessage, RemoteException;
+
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/NotifierFactory.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/NotifierFactory.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/NotifierFactory.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/NotifierFactory.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,49 @@
+package org.apache.juddi.subscription.notify;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URISyntaxException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.ClassUtil;
+import org.apache.juddi.model.BindingTemplate;
+import org.apache.juddi.model.TmodelInstanceInfo;
+/**
+ * The factory figures out which Notifier class to instantiate.
+ *
+ * @author kstam
+ *
+ */
+public class NotifierFactory {
+
+ Log log = LogFactory.getLog(this.getClass());
+ public static String UDDI_TRANSPORT_KEY = "uddi:uddi.org:transport:";
+
+ public Notifier getNotifier(BindingTemplate bindingTemplate)
+ throws URISyntaxException, IllegalArgumentException, SecurityException,
+ InstantiationException, IllegalAccessException, InvocationTargetException,
+ NoSuchMethodException, ClassNotFoundException
+ {
+ String notifierClassName = null;
+ for (TmodelInstanceInfo tModelInstanceInfo : bindingTemplate.getTmodelInstanceInfos()) {
+ if (tModelInstanceInfo.getTmodelKey().startsWith(UDDI_TRANSPORT_KEY)) {
+ log.debug("Found transport tModelKey " + tModelInstanceInfo.getTmodelKey());
+ String transport = tModelInstanceInfo.getTmodelKey().substring(UDDI_TRANSPORT_KEY.length(),tModelInstanceInfo.getTmodelKey().length());
+ transport = transport.replaceAll("-", "_");
+ notifierClassName = "org.apache.juddi.subscription.notify." + transport.toUpperCase() + "Notifier";
+ break;
+ }
+ }
+ if (notifierClassName == null) {
+ log.error("The bindingTemplate " + bindingTemplate.getEntityKey() + " does not contain a tModel to define its type of transport." +
+ " Therefore no notification can be sent out. The user needs to fix the subscription data.");
+ } else {
+ if (log.isDebugEnabled()) log.debug("Going find and instantiate notifier class: " + notifierClassName);
+ }
+ @SuppressWarnings("unchecked")
+ Class<Notifier> notifierClass = (Class<Notifier>) ClassUtil.forName(notifierClassName,this.getClass());
+ Notifier notifier = notifierClass.getConstructor(BindingTemplate.class).newInstance(bindingTemplate);
+ return notifier;
+ }
+
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/RMINotifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/RMINotifier.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/RMINotifier.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/RMINotifier.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,47 @@
+package org.apache.juddi.subscription.notify;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.model.BindingTemplate;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+
+public class RMINotifier implements Notifier {
+
+ Log log = LogFactory.getLog(this.getClass());
+ UDDISubscriptionListenerPortType subscriptionListenerPort = null;
+
+ public RMINotifier(BindingTemplate bindingTemplate) throws IOException, URISyntaxException, NotBoundException {
+ super();
+ if (!AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ log.error("rmi enpoints only support AccessPointType " + AccessPointType.END_POINT);
+ }
+ String accessPointUrl = bindingTemplate.getAccessPointUrl().toLowerCase();
+ if (!accessPointUrl.startsWith("rmi")) {
+ log.warn("rmi accessPointUrl for bindingTemplate " + bindingTemplate.getEntityKey() +
+ " should start with 'rmi'");
+ }
+ URI accessPointURI = new URI(accessPointUrl);
+ String host = accessPointURI.getHost();
+ int port = accessPointURI.getPort();
+ String path = accessPointURI.getPath();
+ log.debug("Connecting to " + host + ":" + port);
+ Registry registry = LocateRegistry.getRegistry(host, port);
+ subscriptionListenerPort = (UDDISubscriptionListenerPortType) registry.lookup(path);
+ }
+
+ public DispositionReport notifySubscriptionListener(NotifySubscriptionListener body) throws DispositionReportFaultMessage, RemoteException {
+ return subscriptionListenerPort.notifySubscriptionListener(body);
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,88 @@
+package org.apache.juddi.subscription.notify;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.rmi.RemoteException;
+import java.util.Properties;
+
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.config.Property;
+import org.apache.juddi.jaxb.JAXBMarshaller;
+import org.apache.juddi.model.BindingTemplate;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.Result;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+public class SMTPNotifier implements Notifier {
+
+ Log log = LogFactory.getLog(this.getClass());
+ String notificationEmailAddress = null;
+ String from = null;
+ Session session = null;
+ String transport = null;
+
+ public SMTPNotifier(BindingTemplate bindingTemplate) throws URISyntaxException, ConfigurationException {
+ super();
+ if (!AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType())) {
+ log.error("smtp enpoints only support AccessPointType " + AccessPointType.END_POINT);
+ }
+ String accessPointUrl = bindingTemplate.getAccessPointUrl().toLowerCase();
+ if (!accessPointUrl.startsWith("mailto")) {
+ log.warn("smtp accessPointUrl for bindingTemplate " + bindingTemplate.getEntityKey() +
+ " should start with 'mailto'");
+ }
+ URI accessPointURI = new URI(accessPointUrl);
+ notificationEmailAddress = accessPointURI.getUserInfo() + "@" + accessPointURI.getHost();
+
+ Properties properties = new Properties();
+ String host = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_HOST,"localhost");
+ properties.put("mail.smtp.host", host);
+ String port = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_PORT,"25");
+ properties.put("mail.smtp.port", port);
+
+ boolean isAuth = AppConfig.getConfiguration().getBoolean(Property.JUDDI_EMAIL_AUTH,false);
+ if (isAuth) {
+ String user = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_USER,"juddi");
+ properties.put("mail.smtp.user", user);
+ String password = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_PASSWORD,"juddi");
+ properties.put("mail.smtp.user", password);
+ }
+ session = Session.getDefaultInstance(properties);
+ from = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_FROM,"juddi");
+ transport = AppConfig.getConfiguration().getString(Property.JUDDI_EMAIL_TRANSPORT,"smtp");
+ }
+
+ public DispositionReport notifySubscriptionListener(NotifySubscriptionListener body) throws DispositionReportFaultMessage, RemoteException {
+
+ log.info("Sending notification email to " + notificationEmailAddress);
+ try {
+ MimeMessage message = new MimeMessage(session);
+ message.setFrom(new InternetAddress(from));
+ //maybe nice to use a template rather then sending raw xml.
+ String subscriptionResultXML = JAXBMarshaller.marshallToString(body, JAXBMarshaller.PACKAGE_UDDIAPI);
+ message.setText(subscriptionResultXML);
+ message.setSubject("UDDI Subscription Notification for subscription "
+ + body.getSubscriptionResultsList().getSubscription().getSubscriptionKey());
+ Transport.send(message);
+
+ } catch (Exception e) {
+ throw new DispositionReportFaultMessage(e.getMessage(), null);
+ }
+
+ DispositionReport dr = new DispositionReport();
+ Result res = new Result();
+ dr.getResult().add(res);
+
+ return dr;
+ }
+}
Modified: juddi/trunk/juddiv3-war/src/main/webapp/WEB-INF/classes/juddiv3.properties
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/WEB-INF/classes/juddiv3.properties?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/WEB-INF/classes/juddiv3.properties (original)
+++ juddi/trunk/juddiv3-war/src/main/webapp/WEB-INF/classes/juddiv3.properties Tue Mar 15 19:55:01 2011
@@ -75,7 +75,7 @@ juddi.authenticate.Inquiry=false
# Specifies the interval at which the notification timer triggers
juddi.notification.interval=5000
# Specifies the amount of time to wait before the notification timer initially fires
-juddi.notification.start.buffer=20000
+juddi.notification.start.buffer=2000
# Register the jUDDI RMIServices to JNDI (true, false), false by default since the JNDI
# implementation in tomcat is readonly. You can use the web.xml instead.
Modified: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusinessService.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusinessService.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusinessService.java (original)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusinessService.java Tue Mar 15 19:55:01 2011
@@ -24,9 +24,13 @@ import org.apache.juddi.jaxb.EntityCreat
import org.junit.Assert;
import org.uddi.api_v3.BusinessService;
import org.uddi.api_v3.DeleteService;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.FindService;
import org.uddi.api_v3.GetServiceDetail;
+import org.uddi.api_v3.Name;
import org.uddi.api_v3.SaveService;
import org.uddi.api_v3.ServiceDetail;
+import org.uddi.api_v3.ServiceList;
import org.uddi.v3_service.UDDIInquiryPortType;
import org.uddi.v3_service.UDDIPublicationPortType;
/**
@@ -61,6 +65,10 @@ public class TckBusinessService
saveService(authInfoJoe, JOE_SERVICE_XML, JOE_SERVICE_KEY);
}
+ public void updateJoePublisherService(String authInfoJoe, String description) {
+ saveService(authInfoJoe, JOE_SERVICE_XML, JOE_SERVICE_KEY, description);
+ }
+
public void saveJoePublisherService2(String authInfoJoe) {
saveService2(authInfoJoe, JOE_SERVICE_KEY, JOE_SERVICE_XML_2, JOE_SERVICE_KEY_2);
}
@@ -130,15 +138,20 @@ public class TckBusinessService
}
}
-
public void saveService(String authInfo, String serviceXML, String serviceKey) {
+ saveService(authInfo, serviceXML, serviceKey, null);
+ }
+
+ public void saveService(String authInfo, String serviceXML, String serviceKey, String description) {
try {
// First save the entity
SaveService ss = new SaveService();
ss.setAuthInfo(authInfo);
org.uddi.api_v3.BusinessService bsIn = (org.uddi.api_v3.BusinessService)EntityCreator.buildFromDoc(serviceXML, "org.uddi.api_v3");
- ss.getBusinessService().add(bsIn);
+
+ if (description!=null) bsIn.getDescription().get(0).setValue("updated description");
+ ss.getBusinessService().add(bsIn);
publication.saveService(ss);
// Now get the entity and check the values
@@ -154,6 +167,7 @@ public class TckBusinessService
TckValidator.checkDescriptions(bsIn.getDescription(), bsOut.getDescription());
TckValidator.checkBindingTemplates(bsIn.getBindingTemplates(), bsOut.getBindingTemplates());
TckValidator.checkCategories(bsIn.getCategoryBag(), bsOut.getCategoryBag());
+
}
catch(Exception e) {
logger.error(e.getMessage(), e);
Modified: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListener.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListener.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListener.java (original)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListener.java Tue Mar 15 19:55:01 2011
@@ -40,21 +40,12 @@ import org.uddi.v3_service.UDDISubscript
*/
public class TckSubscriptionListener
{
- public final static String SUBSCRIBED_SERVICE_XML = "uddi_data/subscriptionnotifier/businessService.xml";
- public final static String SUBSCRIBED_SERVICE_KEY = "uddi:uddi.joepublisher.com:notifierone";
+ public String LISTENER_SERVICE_XML = "uddi_data/subscriptionnotifier/listenerService.xml";
+ public String LISTENER_SERVICE_KEY = "uddi:uddi.joepublisher.com:listenerone";
- final static String JOE_SERVICE_XML = "uddi_data/joepublisher/businessService.xml";
- final static String JOE_SERVICE_KEY = "uddi:uddi.joepublisher.com:serviceone";
- final static String SAM_SERVICE_XML = "uddi_data/samsyndicator/businessService.xml";
- final static String SAM_SERVICE_KEY = "uddi:www.samco.com:listingservice";
-
- final static String JOE_SUBSCRIPTION_XML = "uddi_data/subscription/subscription1.xml";
- final static String JOE_SUBSCRIPTION_KEY = "uddi:uddi.joepublisher.com:subscriptionone";
- final static String JOE_SUBSCRIPTIONRESULTS_XML = "uddi_data/subscription/subscriptionresults1.xml";
-
/** note that the subscription1.xml contains the binding template for the UDDI server to call back into */
- public final static String SUBSCRIPTION_XML = "uddi_data/subscriptionnotifier/subscription1.xml";
- public final static String SUBSCRIPTION_KEY = "uddi:uddi.joepublisher.com:subscriptionone";
+ public String SUBSCRIPTION_XML = "uddi_data/subscriptionnotifier/subscription1.xml";
+ public String SUBSCRIPTION_KEY = "uddi:uddi.joepublisher.com:subscriptionone";
private Log logger = LogFactory.getLog(this.getClass());
private UDDIPublicationPortType publication = null;
@@ -105,7 +96,7 @@ public class TckSubscriptionListener
ss = new SaveService();
ss.setAuthInfo(authInfo);
- org.uddi.api_v3.BusinessService bsIn = (org.uddi.api_v3.BusinessService)EntityCreator.buildFromDoc(SUBSCRIBED_SERVICE_XML, "org.uddi.api_v3");
+ org.uddi.api_v3.BusinessService bsIn = (org.uddi.api_v3.BusinessService)EntityCreator.buildFromDoc(LISTENER_SERVICE_XML, "org.uddi.api_v3");
ss.getBusinessService().add(bsIn);
publication.saveService(ss);
@@ -115,18 +106,6 @@ public class TckSubscriptionListener
Assert.fail("No exception should be thrown.");
}
}
-
- public void changeSubscribedObject(String authInfo) {
- try {
- ss.getBusinessService().get(0).getDescription().get(0).setValue("foo");
- publication.saveService(ss);
- } catch(Exception e) {
- e.printStackTrace();
- logger.error(e.getMessage(), e);
- Assert.fail("No exception should be thrown. " + e.getMessage());
- }
-
- }
public void saveNotifierSubscription(String authInfo) {
saveSubscription(authInfo, SUBSCRIPTION_XML, SUBSCRIPTION_KEY);
Added: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListenerRMI.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListenerRMI.java?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListenerRMI.java (added)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSubscriptionListenerRMI.java Tue Mar 15 19:55:01 2011
@@ -0,0 +1,62 @@
+package org.apache.juddi.v3.tck;
+
+/*
+ * Copyright 2001-2009 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.
+ */
+import static junit.framework.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.ws.Holder;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.jaxb.EntityCreator;
+import org.junit.Assert;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.DeleteBinding;
+import org.uddi.api_v3.SaveBinding;
+import org.uddi.api_v3.SaveService;
+import org.uddi.sub_v3.DeleteSubscription;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+
+/**
+ * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
+ */
+public class TckSubscriptionListenerRMI extends TckSubscriptionListener
+{
+ public final String LISTENER_SERVICE_XML_RMI = "uddi_data/subscriptionnotifier/listenerServiceRMI.xml";
+ public final String LISTENER_SERVICE_KEY_RMI = "uddi:uddi.joepublisher.com:listeneronermi";
+
+ /** note that the subscription1.xml contains the binding template for the UDDI server to call back into */
+ public final static String SUBSCRIPTION_XML_RMI = "uddi_data/subscriptionnotifier/subscription1RMI.xml";
+ public final static String SUBSCRIPTION_KEY_RMI = "uddi:uddi.joepublisher.com:subscriptiononermi";
+
+ public TckSubscriptionListenerRMI(
+ UDDISubscriptionPortType subscription,
+ UDDIPublicationPortType publication) {
+
+ super(subscription, publication);
+ this.LISTENER_SERVICE_KEY = LISTENER_SERVICE_KEY_RMI;
+ this.LISTENER_SERVICE_XML = LISTENER_SERVICE_XML_RMI;
+ this.SUBSCRIPTION_KEY = SUBSCRIPTION_KEY_RMI;
+ this.SUBSCRIPTION_XML = SUBSCRIPTION_XML_RMI;
+
+ }
+
+}
\ No newline at end of file
Copied: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/UDDISubscriptionListenerImpl.java (from r1080729, juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/TCK_UDDISubscriptionListenerImpl.java)
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/UDDISubscriptionListenerImpl.java?p2=juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/UDDISubscriptionListenerImpl.java&p1=juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/TCK_UDDISubscriptionListenerImpl.java&r1=1080729&r2=1081918&rev=1081918&view=diff
==============================================================================
--- juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/TCK_UDDISubscriptionListenerImpl.java (original)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/UDDISubscriptionListenerImpl.java Tue Mar 15 19:55:01 2011
@@ -18,6 +18,8 @@
package org.apache.juddi.v3.tck;
import java.io.StringWriter;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
import java.util.HashMap;
import java.util.Map;
@@ -44,13 +46,22 @@ import org.uddi.v3_service.UDDISubscript
@WebService(serviceName="UDDISubscriptionListenerService",
endpointInterface="org.uddi.v3_service.UDDISubscriptionListenerPortType",
targetNamespace = "urn:uddi-org:v3_service")
-public class TCK_UDDISubscriptionListenerImpl implements
+public class UDDISubscriptionListenerImpl extends UnicastRemoteObject implements
UDDISubscriptionListenerPortType {
- private static Log logger = LogFactory.getLog(TCK_UDDISubscriptionListenerImpl.class);
+ private static final long serialVersionUID = -4621713293140278731L;
+ private static Log logger = LogFactory.getLog(UDDISubscriptionListenerImpl.class);
public static Integer notificationCount = 0;
public static Map<Integer,String> notifcationMap = new HashMap<Integer,String>();
+ public UDDISubscriptionListenerImpl() throws RemoteException {
+ super();
+ }
+
+ public UDDISubscriptionListenerImpl(int port) throws RemoteException {
+ super(port);
+ }
+
public DispositionReport notifySubscriptionListener(
NotifySubscriptionListener body)
throws DispositionReportFaultMessage
Added: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerService.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerService.xml?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerService.xml (added)
+++ juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerService.xml Tue Mar 15 19:55:01 2011
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright 2001-2009 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.
+ *
+ */ -->
+<businessService xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ businessKey="uddi:uddi.joepublisher.com:businessone" serviceKey="uddi:uddi.joepublisher.com:listenerone">
+ <name xml:lang="en">Listener One</name>
+ <name xml:lang="es">Listener Uno</name>
+ <description xml:lang="en">This is the description of listener one.</description>
+ <description xml:lang="es">Ãsta es la descripción del listener uno.</description>
+ <bindingTemplates>
+ <bindingTemplate xmlns="urn:uddi-org:api_v3" bindingKey="uddi:uddi.joepublisher.com:bindinglistener">
+ <description xml:lang="en">This is the endpoint for the subscription listener</description>
+ <accessPoint useType="endPoint">http://localhost:12345/tcksubscriptionlistener</accessPoint>
+ <tModelInstanceDetails>
+ <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+ </tModelInstanceDetails>
+ <categoryBag>
+ <keyedReference tModelKey="uddi:tmodelkey:categories:bindings" keyName="category" keyValue="secure" />
+ </categoryBag>
+ </bindingTemplate>
+ </bindingTemplates>
+ <categoryBag>
+ <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="peaches" />
+ <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="plums" />
+ <keyedReferenceGroup tModelKey="uddi:tmodelkey:group">
+ <keyedReference tModelKey="uddi:tmodelkey:blank" keyName="blank" keyValue="blank" />
+ </keyedReferenceGroup>
+ </categoryBag>
+</businessService>
Added: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerServiceRMI.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerServiceRMI.xml?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerServiceRMI.xml (added)
+++ juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/listenerServiceRMI.xml Tue Mar 15 19:55:01 2011
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright 2001-2009 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.
+ *
+ */ -->
+<businessService xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ businessKey="uddi:uddi.joepublisher.com:businessone" serviceKey="uddi:uddi.joepublisher.com:listeneronermi">
+ <name xml:lang="en">Listener One RMI</name>
+ <name xml:lang="es">Listener Uno RMI </name>
+ <description xml:lang="en">This is the description of listener one rmi.</description>
+ <description xml:lang="es">Ãsta es la descripción del listener uno rmi.</description>
+ <bindingTemplates>
+ <bindingTemplate xmlns="urn:uddi-org:api_v3" bindingKey="uddi:uddi.joepublisher.com:bindinglistenerrmi">
+ <description xml:lang="en">This is the endpoint for the RMI subscription listener</description>
+ <accessPoint useType="endPoint">rmi://localhost:9876/tck/rmisubscriptionlistener</accessPoint>
+ <tModelInstanceDetails>
+ <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:rmi" />
+ </tModelInstanceDetails>
+ <categoryBag>
+ <keyedReference tModelKey="uddi:tmodelkey:categories:bindings" keyName="category" keyValue="secure" />
+ </categoryBag>
+ </bindingTemplate>
+ </bindingTemplates>
+ <categoryBag>
+ <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="peaches" />
+ <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="plums" />
+ <keyedReferenceGroup tModelKey="uddi:tmodelkey:group">
+ <keyedReference tModelKey="uddi:tmodelkey:blank" keyName="blank" keyValue="blank" />
+ </keyedReferenceGroup>
+ </categoryBag>
+</businessService>
Modified: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1.xml?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1.xml (original)
+++ juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1.xml Tue Mar 15 19:55:01 2011
@@ -23,17 +23,10 @@
<findQualifiers>
<findQualifier>exactMatch</findQualifier>
</findQualifiers>
- <name xml:lang="en">Notifier One</name>
- <categoryBag>
- <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="peaches" />
- <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="plums" />
- <keyedReferenceGroup tModelKey="uddi:tmodelkey:group">
- <keyedReference tModelKey="uddi:tmodelkey:blank" keyName="blank" keyValue="blank" />
- </keyedReferenceGroup>
- </categoryBag>
+ <name xml:lang="en">Service One</name>
</find_service>
</subscriptionFilter>
- <bindingKey xmlns="urn:uddi-org:api_v3">uddi:uddi.joepublisher.com:bindingnotifier</bindingKey>
+ <bindingKey xmlns="urn:uddi-org:api_v3">uddi:uddi.joepublisher.com:bindinglistener</bindingKey>
<notificationInterval>P5D</notificationInterval>
<maxEntities>1000</maxEntities>
</subscription>
Added: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1RMI.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1RMI.xml?rev=1081918&view=auto
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1RMI.xml (added)
+++ juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/subscriptionnotifier/subscription1RMI.xml Tue Mar 15 19:55:01 2011
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright 2001-2009 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.
+ *
+ */
+-->
+<subscription xmlns="urn:uddi-org:sub_v3">
+ <subscriptionKey>uddi:uddi.joepublisher.com:subscriptiononermi</subscriptionKey>
+ <subscriptionFilter>
+ <find_service xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <findQualifiers>
+ <findQualifier>exactMatch</findQualifier>
+ </findQualifiers>
+ <name xml:lang="en">Service One</name>
+ </find_service>
+ </subscriptionFilter>
+ <bindingKey xmlns="urn:uddi-org:api_v3">uddi:uddi.joepublisher.com:bindinglistenerrmi</bindingKey>
+ <notificationInterval>P5D</notificationInterval>
+ <maxEntities>1000</maxEntities>
+</subscription>
Modified: juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_010_PublisherIntegrationTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_010_PublisherIntegrationTest.java?rev=1081918&r1=1081917&r2=1081918&view=diff
==============================================================================
--- juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_010_PublisherIntegrationTest.java (original)
+++ juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_010_PublisherIntegrationTest.java Tue Mar 15 19:55:01 2011
@@ -22,6 +22,8 @@ import java.util.List;
import javax.xml.ws.soap.SOAPFaultException;
import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.juddi.api_v3.DeletePublisher;
import org.apache.juddi.api_v3.GetAllPublisherDetail;
import org.apache.juddi.api_v3.GetPublisherDetail;
@@ -32,7 +34,6 @@ import org.apache.juddi.jaxb.EntityCreat
import org.apache.juddi.v3.client.config.UDDIClerkManager;
import org.apache.juddi.v3.client.transport.Transport;
import org.apache.juddi.v3_service.JUDDIApiPortType;
-import org.apache.log4j.Logger;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -47,7 +48,7 @@ import org.uddi.v3_service.UDDISecurityP
*/
public class JUDDI_010_PublisherIntegrationTest {
- private static Logger logger = Logger.getLogger(JUDDI_010_PublisherIntegrationTest.class);
+ private static Log logger = LogFactory.getLog(JUDDI_010_PublisherIntegrationTest.class);
private static UDDIClerkManager manager;
private static UDDISecurityPortType security =null;
private static JUDDIApiPortType publisher = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org