Repository: juddi
Updated Branches:
  refs/heads/master d7854c235 -> bacfa9353


JUDDI-873 fixed
JUDDI-242 stubbing out remaining replication items


Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/bacfa935
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/bacfa935
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/bacfa935

Branch: refs/heads/master
Commit: bacfa9353a1c6bd29093c4c4652044cb4fae3f64
Parents: d7854c2
Author: Alex <[email protected]>
Authored: Fri Dec 12 18:36:22 2014 -0500
Committer: Alex <[email protected]>
Committed: Fri Dec 12 18:36:22 2014 -0500

----------------------------------------------------------------------
 .../juddi/api/impl/UDDIReplicationImpl.java     |  33 +-
 .../juddi/api/impl/UDDISubscriptionImpl.java    |  32 +-
 .../juddi/replication/ReplicationNotifier.java  |  13 +-
 .../subscription/SubscriptionNotifier.java      |   3 +-
 ...090_SubscriptionListenerIntegrationTest.java | 536 ++++++++++++-------
 ..._RMISubscriptionListenerIntegrationTest.java |  20 +-
 .../org/apache/juddi/samples/UddiSubscribe.java |  56 +-
 .../samples/UddiSubscribeAssertionStatus.java   |   3 +-
 8 files changed, 482 insertions(+), 214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
index 80e4082..c7d1192 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
@@ -51,6 +51,8 @@ import org.apache.juddi.model.BindingTemplate;
 import org.apache.juddi.model.BusinessEntity;
 import org.apache.juddi.model.BusinessService;
 import org.apache.juddi.model.Operator;
+import org.apache.juddi.model.PublisherAssertion;
+import org.apache.juddi.model.PublisherAssertionId;
 import org.apache.juddi.model.Tmodel;
 import static org.apache.juddi.replication.ReplicationNotifier.FetchEdges;
 import org.apache.juddi.v3.client.UDDIService;
@@ -229,7 +231,7 @@ public class UDDIReplicationImpl extends 
AuthenticatedService implements UDDIRep
                                                         //get the high water 
marks for this node
                                                         //ok now get all the 
changes
 
-                                                        //done TODO replace 
with last known record from the given node
+                                                        //done  replace with 
last known record from the given node
                                                         //for (int xx = 0; xx 
< poll.getChangesAvailable().getHighWaterMark().size(); xx++) {
                                                         //        
logger.info("Node " + 
poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID()
                                                         //                + " 
USN " + 
poll.getChangesAvailable().getHighWaterMark().get(xx).getOriginatingUSN());
@@ -451,10 +453,37 @@ public class UDDIReplicationImpl extends 
AuthenticatedService implements UDDIRep
 
                                 //<editor-fold defaultstate="collapsed" 
desc="changeRecordPublisherAssertion">
                                 if (rec.getChangeRecordPublisherAssertion() != 
null) {
-//TODO implement
+
+                                        //TODO are publisher assertions owned 
by a given node?
+                                        PublisherAssertionId paid = new 
PublisherAssertionId(rec.getChangeRecordPublisherAssertion().getPublisherAssertion().getFromKey(),
 rec.getChangeRecordPublisherAssertion().getPublisherAssertion().getToKey());
+                                        
org.apache.juddi.model.PublisherAssertion model = 
em.find(org.apache.juddi.model.PublisherAssertion.class, paid);
+                                        if (model != null) {
+                                                //permission check?
+                                        }
+                                        model = new PublisherAssertion();
+
+                                        
MappingApiToModel.mapPublisherAssertion(rec.getChangeRecordPublisherAssertion().getPublisherAssertion(),
 model);
+                                        
model.setModified(rec.getChangeRecordPublisherAssertion().getModified().toGregorianCalendar().getTime());
+                                        em.persist(model);
+
                                 }
 //</editor-fold>
+                                if (rec.getChangeRecordNewDataConditional() != 
null) {
+                                        //TODO
+
+                                }
+                                if (rec.getChangeRecordNull() != null) {
+                                        //TODO
 
+                                }
+                                if (rec.getChangeRecordCorrection() != null) {
+                                        //TODO
+
+                                }
+                                if (rec.getChangeRecordConditionFailed() != 
null) {
+                                        //TODO
+
+                                }
                                 tx.commit();
 
                         } catch (Exception drfm) {

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
index ac5d19e..5012ce5 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
@@ -42,9 +42,11 @@ import org.apache.juddi.config.Property;
 import org.apache.juddi.jaxb.JAXBMarshaller;
 import org.apache.juddi.mapping.MappingApiToModel;
 import org.apache.juddi.mapping.MappingModelToApi;
+import org.apache.juddi.model.PublisherAssertion;
 import org.apache.juddi.model.SubscriptionChunkToken;
 import org.apache.juddi.model.SubscriptionMatch;
 import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.query.FindBusinessByPublisherQuery;
 import org.apache.juddi.query.FindSubscriptionByPublisherQuery;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
@@ -725,12 +727,30 @@ public class UDDISubscriptionImpl extends 
AuthenticatedService implements UDDISu
                                // The coverage period doesn't apply here 
(basically because publisher assertions don't keep operational info).
                                // TODO, JUDDI-873 edit they do now, rewrite 
this query
                                GetAssertionStatusReport 
getAssertionStatusReport = subscriptionFilter.getGetAssertionStatusReport();
-                               
-                               List<AssertionStatusItem> assertionList = 
PublicationHelper.getAssertionStatusItemList(publisher, 
getAssertionStatusReport.getCompletionStatus(), em);
-       
-                               AssertionStatusReport assertionStatusReport  = 
new AssertionStatusReport();
-                               for(AssertionStatusItem asi : assertionList)
-                                       
assertionStatusReport.getAssertionStatusItem().add(asi);
+                                List<?> businessKeysFound = null;
+                                businessKeysFound = 
FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+               
+                                AssertionStatusReport assertionStatusReport  = 
new AssertionStatusReport();
+                                
+                               List<org.apache.juddi.model.PublisherAssertion> 
pubAssertionList = 
org.apache.juddi.query.FindPublisherAssertionByBusinessQuery.select(em, 
businessKeysFound, getAssertionStatusReport.getCompletionStatus());
+                                //if (pubAssertionList==null)
+                                //    return result;
+                                for (org.apache.juddi.model.PublisherAssertion 
modelPubAssertion : pubAssertionList) {
+
+                                        if 
(startPointDate.after(modelPubAssertion.getModified())) {
+                                                continue;
+                                        }
+
+                                        if 
(endPointDate.before(modelPubAssertion.getModified())) {
+                                                continue;
+                                        }
+                                        org.uddi.api_v3.AssertionStatusItem 
apiAssertionStatusItem = new org.uddi.api_v3.AssertionStatusItem();
+
+                                        
MappingModelToApi.mapAssertionStatusItem(modelPubAssertion, 
apiAssertionStatusItem, businessKeysFound);
+
+                                        
assertionStatusReport.getAssertionStatusItem().add(apiAssertionStatusItem);
+                                }
+
                                
                                
result.setAssertionStatusReport(assertionStatusReport);
                        }

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
 
b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
index d71f2bd..b724ae5 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
@@ -120,7 +120,7 @@ public class ReplicationNotifier extends TimerTask {
                         em.close();
                 }
 
-                log.info("ChangeRecord: " + j.getId() + "," + j.getEntityKey() 
+ "," + j.getNodeID() + "," + j.getOriginatingUSN() + "," + 
j.getRecordType().toString());
+                log.debug("ChangeRecord: " + j.getId() + "," + 
j.getEntityKey() + "," + j.getNodeID() + "," + j.getOriginatingUSN() + "," + 
j.getRecordType().toString());
                 org.uddi.repl_v3.ReplicationConfiguration repcfg = 
FetchEdges();
 
                 //TODO figure out what this statement means 7.5.3
@@ -131,7 +131,7 @@ public class ReplicationNotifier extends TimerTask {
                  * of the registry.
                  */
                 if (repcfg == null) {
-                        log.info("No replication configuration is defined!");
+                        log.debug("No replication configuration is defined!");
                         return;
 
                 }
@@ -184,7 +184,7 @@ public class ReplicationNotifier extends TimerTask {
 
                         try {
                                 x.notifyChangeRecordsAvailable(req);
-                                log.info("Successfully sent change record 
available message to " + s);
+                                log.debug("Successfully sent change record 
available message to " + s);
                         } catch (Exception ex) {
                                 log.warn("Unable to send change notification 
to " + s, ex);
                         }
@@ -196,11 +196,14 @@ public class ReplicationNotifier extends TimerTask {
                 if (queue == null) {
                         queue = new ConcurrentLinkedQueue();
                 }
+                //TODO revisie this
+                if (!queue.isEmpty())
+                        log.info("Replication, Notifying nodes of new change 
records. " + queue.size() + " queued");
+
                 //TODO check for replication config changes
                 while (!queue.isEmpty()) {
                         //for each change at this node
-                        log.info("Replication, Notifying nodes of new change 
records. " + queue.size() + " remaining");
-
+                        
                         ChangeRecord j = queue.poll();
                         ProcessChangeRecord(j);
 

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
 
b/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
index 3dc0771..cdfd79d 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
@@ -280,7 +280,8 @@ public class SubscriptionNotifier extends TimerTask {
                 if (resultList.getBindingDetail() != null || 
resultList.getBusinessDetail() != null
                         || resultList.getBusinessList() != null || 
resultList.getServiceDetail() != null
                         || resultList.getServiceList() != null || 
resultList.getTModelDetail() != null
-                        || resultList.getTModelList() != null || 
resultList.getRelatedBusinessesList() != null) {
+                        || resultList.getTModelList() != null || 
resultList.getRelatedBusinessesList() != null
+                        || resultList.getAssertionStatusReport() !=null) {
                         return true;
                 }
                 //When the response is 'brief', or when there are deleted only 
keyBags are used.

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
index 4409e27..fa5c3ab 100644
--- 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
+++ 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_090_SubscriptionListenerIntegrationTest.java
@@ -39,200 +39,352 @@ import org.uddi.v3_service.UDDISecurityPortType;
 
 import com.dumbster.smtp.SimpleSmtpServer;
 import com.dumbster.smtp.SmtpMessage;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.ws.Holder;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.tck.TckCommon;
+import org.junit.Assume;
+import org.junit.Ignore;
+import org.uddi.api_v3.AddPublisherAssertions;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.CompletionStatus;
+import org.uddi.api_v3.DeletePublisherAssertions;
+import org.uddi.api_v3.GetAssertionStatusReport;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.PublisherAssertion;
+import org.uddi.sub_v3.DeleteSubscription;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.sub_v3.SubscriptionFilter;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
 
 /**
  * @author <a href="mailto:[email protected]";>Tom Cunningham</a>
  */
-public class API_090_SubscriptionListenerIntegrationTest
-{
-       private static final 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;
-       private static SimpleSmtpServer mailServer;
-       private static Integer smtpPort = 25;
-       private static Integer httpPort = 80;
-
-       @AfterClass
-       public static void stopManager() throws ConfigurationException {
-               //manager.stop();
-               //shutting down the TCK SubscriptionListener
-               endPoint.stop();
-               Registry.stop();
-               mailServer.stop();
-       }
-       
-       @BeforeClass
-       public static void startManager() throws ConfigurationException {
-               Registry.start();
-               try {
-                       smtpPort = 9700 + new Random().nextInt(99);
-                       httpPort = 9600 + new Random().nextInt(99);
-                       System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.host", "localhost");
-                       System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.port", String.valueOf(smtpPort));
-                       System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.from", "[email protected]");
-                       mailServer = SimpleSmtpServer.start(smtpPort);
-                       //bring up the TCK HTTP SubscriptionListener
-                       String httpEndpoint = "http://localhost:"; + httpPort + 
"/tcksubscriptionlistener";
-                       System.out.println("Bringing up SubscriptionListener 
endpoint at " + httpEndpoint);
-                       endPoint = Endpoint.publish(httpEndpoint, new 
UDDISubscriptionListenerImpl());
-                       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(e.getMessage());
-            } 
-       }
-       
-       @Test
-       public void joePublisherUpdateService_HTTP() {
-               try {
-                       tckTModel.saveJoePublisherTmodel(authInfoJoe);
-                       tckBusiness.saveJoePublisherBusiness(authInfoJoe);
-                       //Saving the binding template that will be called by 
the server for a subscription event
-                       tckBusinessService.saveJoePublisherService(authInfoJoe);
-                       //Saving the HTTP Listener Service
-                       tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, "localhost");
-                       //Saving the HTTP Subscription
-                       
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_XML);
-            //Changing the service we subscribed to "JoePublisherService"
-                       Thread.sleep(1000);
-                       logger.info("Updating Service ********** ");
-                       
tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
-                       
-            //waiting up to 100 seconds for the listener to notice the change.
-                       for (int i=0; i<200; i++) {
-                               Thread.sleep(500);
-                               System.out.print(".");
-                               if 
(UDDISubscriptionListenerImpl.notificationCount > 0) {
-                                       logger.info("Received HTTP 
Notification");
-                                       break;
-                               }
-                       }
-                       if (UDDISubscriptionListenerImpl.notificationCount == 
0) {
-                               Assert.fail("No HttpNotification 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) {
-                       logger.error("No exceptions please.");
-                       e.printStackTrace();
-
-                       Assert.fail();
-               } finally {
-                               
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_KEY);
-                               
tckBusinessService.deleteJoePublisherService(authInfoJoe);
-                               
tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
-                               tckTModel.deleteJoePublisherTmodel(authInfoJoe);
-               }
-       }
-       
-       @Test
-       public void joePublisherUpdateService_SMTP() {
-               try {
-                       tckTModel.saveJoePublisherTmodel(authInfoJoe);
-                       tckBusiness.saveJoePublisherBusiness(authInfoJoe);
-                       //Saving the binding template that will be called by 
the server for a subscription event
-                       tckBusinessService.saveJoePublisherService(authInfoJoe);
-                       //Saving the SMTP Listener Service
-                       tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_SMTP_SERVICE_XML, 0, "localhost");
-                       //Saving the SMTP Subscription
-                       
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_SMTP_XML);
-            //Changing the service we subscribed to "JoePublisherService"
-                       Thread.sleep(1000);
-                       logger.info("Updating Service ********** ");
-                       
tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
-                       
-            //waiting up to 100 seconds for the listener to notice the change.
-                       for (int i=0; i<200; i++) {
-                               Thread.sleep(500);
-                               System.out.print(".");
-                               if (mailServer.getReceivedEmailSize() > 0) {
-                                       logger.info("Received Email 
Notification");
-                                       break;
-                               }
-                       }
-                       if (mailServer.getReceivedEmailSize() == 0) {
-                               Assert.fail("No SmtpNotification was sent");
-                       }
-                       @SuppressWarnings("rawtypes")
-                       Iterator emailIter = mailServer.getReceivedEmail();
-                       SmtpMessage email = (SmtpMessage)emailIter.next();
-                       System.out.println("Subject:" + 
email.getHeaderValue("Subject"));
-                       System.out.println("Body:" + email.getBody());
-                       
-                       if (!email.getBody().contains("Service One")) {
-                               Assert.fail("Notification does not contain the 
correct service");
-                       }
-                       
-               } catch (Exception e) {
-                       logger.error("No exceptions please.");
-                       e.printStackTrace();
-
-                       Assert.fail();
-               } finally {
-                               
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_SMTP_KEY);
-                               
tckBusinessService.deleteJoePublisherService(authInfoJoe);
-                               
tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
-                               tckTModel.deleteJoePublisherTmodel(authInfoJoe);
-               }
-       }
-       
-       
-       @Test
-       public void joePublisherUpdateBusiness_HTTP() {
-               try {
-                       tckTModel.saveJoePublisherTmodel(authInfoJoe);
-                       tckBusiness.saveJoePublisherBusiness(authInfoJoe);
-                       tckBusinessService.saveJoePublisherService(authInfoJoe);
-                       //Saving the Listener Service
-                       tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, "localhost");
-                       //Saving the Subscription
-                       
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_XML);
-            //Changing the service we subscribed to "JoePublisherService"
-                       Thread.sleep(1000);
-                       logger.info("Deleting Business ********** ");
-                       tckBusiness.updateJoePublisherBusiness(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) {
-                                       logger.info("Received Notification");
-                                       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) {
-                       logger.error("No exceptions please.");
-                       e.printStackTrace();
-
-                       Assert.fail();
-               } finally {
-                               
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_KEY);
-                               tckTModel.deleteJoePublisherTmodel(authInfoJoe);
-               }
-       }       
-    
+public class API_090_SubscriptionListenerIntegrationTest {
+
+        private static final 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());
+        static UDDIPublicationPortType publication = new UDDIPublicationImpl();
+        static UDDISubscriptionPortType subscription = new 
UDDISubscriptionImpl();
+        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;
+        private static String authInfoMary = null;
+        private static SimpleSmtpServer mailServer;
+
+        private static Integer smtpPort = 25;
+        private static Integer httpPort = 80;
+
+        @AfterClass
+        public static void stopManager() throws ConfigurationException {
+                //manager.stop();
+                //shutting down the TCK SubscriptionListener
+                endPoint.stop();
+                Registry.stop();
+                mailServer.stop();
+        }
+        static String httpEndpoint = null;
+
+        @BeforeClass
+        public static void startManager() throws ConfigurationException {
+                Registry.start();
+                try {
+                        smtpPort = 9700 + new Random().nextInt(99);
+                        httpPort = 9600 + new Random().nextInt(99);
+                        System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.host", "localhost");
+                        System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.port", String.valueOf(smtpPort));
+                        System.setProperty(Property.DEFAULT_JUDDI_EMAIL_PREFIX 
+ "mail.smtp.from", "[email protected]");
+                        mailServer = SimpleSmtpServer.start(smtpPort);
+                        //bring up the TCK HTTP SubscriptionListener
+                        httpEndpoint = "http://localhost:"; + httpPort + 
"/tcksubscriptionlistener";
+                        System.out.println("Bringing up SubscriptionListener 
endpoint at " + httpEndpoint);
+                        endPoint = Endpoint.publish(httpEndpoint, new 
UDDISubscriptionListenerImpl());
+                        logger.debug("Getting auth tokens..");
+
+                        api010.saveJoePublisher();
+                        api010.saveMaryPublisher();
+                        UDDISecurityPortType security = new UDDISecurityImpl();
+                        authInfoJoe = TckSecurity.getAuthToken(security, 
TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
+                        Assert.assertNotNull(authInfoJoe);
+
+                        authInfoMary = TckSecurity.getAuthToken(security, 
TckPublisher.getMaryPublisherId(), TckPublisher.getMaryPassword());
+                        Assert.assertNotNull(authInfoMary);
+
+                } catch (Exception e) {
+                        logger.error(e.getMessage(), e);
+                        Assert.fail(e.getMessage());
+                }
+        }
+
+        @Test
+        public void joePublisherUpdateService_HTTP() {
+                try {
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        //Saving the binding template that will be called by 
the server for a subscription event
+                        
tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        //Saving the HTTP Listener Service
+                        tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, "localhost");
+                        //Saving the HTTP Subscription
+                        
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_XML);
+                        //Changing the service we subscribed to 
"JoePublisherService"
+                        Thread.sleep(1000);
+                        logger.info("Updating Service ********** ");
+                        
tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
+
+                        //waiting up to 100 seconds for the listener to notice 
the change.
+                        for (int i = 0; i < 200; i++) {
+                                Thread.sleep(500);
+                                System.out.print(".");
+                                if 
(UDDISubscriptionListenerImpl.notificationCount > 0) {
+                                        logger.info("Received HTTP 
Notification");
+                                        break;
+                                }
+                        }
+                        if (UDDISubscriptionListenerImpl.notificationCount == 
0) {
+                                Assert.fail("No HttpNotification 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) {
+                        logger.error("No exceptions please.");
+                        e.printStackTrace();
+
+                        Assert.fail();
+                } finally {
+                        
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_KEY);
+                        
tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+        }
+
+        @Test
+        public void joePublisherUpdateService_SMTP() {
+                try {
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        //Saving the binding template that will be called by 
the server for a subscription event
+                        
tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        //Saving the SMTP Listener Service
+                        tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_SMTP_SERVICE_XML, 0, "localhost");
+                        //Saving the SMTP Subscription
+                        
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_SMTP_XML);
+                        //Changing the service we subscribed to 
"JoePublisherService"
+                        Thread.sleep(1000);
+                        logger.info("Updating Service ********** ");
+                        
tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
+
+                        //waiting up to 100 seconds for the listener to notice 
the change.
+                        for (int i = 0; i < 200; i++) {
+                                Thread.sleep(500);
+                                System.out.print(".");
+                                if (mailServer.getReceivedEmailSize() > 0) {
+                                        logger.info("Received Email 
Notification");
+                                        break;
+                                }
+                        }
+                        if (mailServer.getReceivedEmailSize() == 0) {
+                                Assert.fail("No SmtpNotification was sent");
+                        }
+                        @SuppressWarnings("rawtypes")
+                        Iterator emailIter = mailServer.getReceivedEmail();
+                        SmtpMessage email = (SmtpMessage) emailIter.next();
+                        System.out.println("Subject:" + 
email.getHeaderValue("Subject"));
+                        System.out.println("Body:" + email.getBody());
+
+                        if (!email.getBody().contains("Service One")) {
+                                Assert.fail("Notification does not contain the 
correct service");
+                        }
+
+                } catch (Exception e) {
+                        logger.error("No exceptions please.");
+                        e.printStackTrace();
+
+                        Assert.fail();
+                } finally {
+                        
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_SMTP_KEY);
+                        
tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+        }
+
+        @Test
+        public void joePublisherUpdateBusiness_HTTP() {
+                try {
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        
tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        //Saving the Listener Service
+                        tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, "localhost");
+                        //Saving the Subscription
+                        
tckSubscriptionListener.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_XML);
+                        //Changing the service we subscribed to 
"JoePublisherService"
+                        Thread.sleep(1000);
+                        logger.info("Deleting Business ********** ");
+                        tckBusiness.updateJoePublisherBusiness(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) {
+                                        logger.info("Received Notification");
+                                        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) {
+                        logger.error("No exceptions please.");
+                        e.printStackTrace();
+
+                        Assert.fail();
+                } finally {
+                        
tckSubscriptionListener.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_KEY);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+        }
+
+        /**
+         * PUBLISHERASSERTION tests joe want's updates on when someone asserts
+         * that they own his business
+         *
+         * @throws Exception
+         */
+        @Test
+        //@Ignore
+        public void joePublisherUpdate_PUBLISHERASSERTION_DETAIL_TO() throws 
Exception {
+
+                
logger.info("joePublisherUpdate_HTTP_PUBLISHERASSERTION_DETAIL_TO");
+
+                UDDISubscriptionListenerImpl.notifcationMap.clear();
+                UDDISubscriptionListenerImpl.notificationCount=0;
+                Holder<List<Subscription>> holder = null;
+                try {
+
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        //tckTModelJoe.saveTModels(authInfoJoe, 
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+
+                        tckTModel.saveMaryPublisherTmodel(authInfoMary);
+                        BusinessEntity saveMaryPublisherBusiness = 
tckBusiness.saveMaryPublisherBusiness(authInfoMary);
+
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        
tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        //Saving the Listener Service
+                        String bindingkey = 
tckSubscriptionListener.saveService(authInfoJoe, 
TckSubscriptionListener.LISTENER_HTTP_SERVICE_XML, httpPort, "localhost");
+
+                        //Saving the Subscription
+                        holder = new Holder<List<Subscription>>();
+                        holder.value = new ArrayList<Subscription>();
+                        Subscription sub = new Subscription();
+                        sub.setBindingKey(bindingkey);
+                        
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(5000));
+                        sub.setSubscriptionFilter(new SubscriptionFilter());
+                        
sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                        
sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+
+                        holder.value.add(sub);
+                        subscription.saveSubscription(authInfoJoe, holder);
+                        logger.info("subscription saved for " + 
holder.value.get(0).getSubscriptionKey());
+                        
//tckSubscriptionListenerJoe.saveNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION3_XML);
+                        //Changing the service we subscribed to 
"JoePublisherService"
+                        Thread.sleep(1000);
+                        logger.info("saving Mary's publisher 
assertion********** ");
+                        AddPublisherAssertions pa = new 
AddPublisherAssertions();
+                        pa.setAuthInfo(authInfoMary);
+                        PublisherAssertion pas = new PublisherAssertion();
+                        pas.setToKey(TckBusiness.MARY_BUSINESS_KEY);
+                        pas.setFromKey(TckBusiness.JOE_BUSINESS_KEY);
+                        pas.setKeyedReference(new 
KeyedReference(UDDIConstants.RELATIONSHIPS, "parent", "parent-child"));
+                        pa.getPublisherAssertion().add(pas);
+
+                        publication.addPublisherAssertions(pa);
+                        boolean found = 
verifyDelivery(TckBusiness.MARY_BUSINESS_KEY);
+
+                        DeletePublisherAssertions deletePublisherAssertions = 
new DeletePublisherAssertions();
+                        deletePublisherAssertions.setAuthInfo(authInfoMary);
+                        
deletePublisherAssertions.getPublisherAssertion().add(pas);
+                        
publication.deletePublisherAssertions(deletePublisherAssertions);
+                        if (!found) {
+
+                                Assert.fail("Notification does not contain the 
correct service.");
+                        }
+
+                } catch (Exception e) {
+                        logger.error("No exceptions please.");
+                        e.printStackTrace();
+
+                        Assert.fail();
+                } finally {
+                        
//tckSubscriptionListenerJoe.deleteNotifierSubscription(authInfoJoe, 
TckSubscriptionListener.SUBSCRIPTION_KEY);
+                        DeleteSubscription ds = new DeleteSubscription();
+                        ds.setAuthInfo(authInfoJoe);
+                        
ds.getSubscriptionKey().add(holder.value.get(0).getSubscriptionKey());
+                        subscription.deleteSubscription(ds);
+                        tckBusiness.deleteMaryPublisherBusiness(authInfoMary);
+                        tckTModel.deleteMaryPublisherTmodel(authInfoMary);
+
+                        
tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                        tckTModel.deleteTModel(authInfoJoe, 
TckTModel.JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY, 
TckTModel.JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3);
+
+                }
+        }
+
+        public static boolean  verifyDelivery(String findMe) {
+                for (int i = 0; i < TckPublisher.getSubscriptionTimeout(); 
i++) {
+                        try {
+                                if 
(UDDISubscriptionListenerImpl.notificationCount > 0) {
+                                        Iterator<String> it = 
UDDISubscriptionListenerImpl.notifcationMap.values().iterator();
+                                     
+                                        while (it.hasNext()) {
+                                                String test = it.next();
+                                                if 
(test.toLowerCase().contains(findMe.toLowerCase())) {
+                                                         return true;
+                                                }
+                                        }
+                                }
+                                Thread.sleep(1000);
+                        } catch (Exception ex) {
+                                ex.printStackTrace();
+                        }
+                        System.out.print(".");
+                        //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;
+                        }
+                }
+                return found;
+        }
+
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-core/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
index ef864c1..35c98d2 100644
--- 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
+++ 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_091_RMISubscriptionListenerIntegrationTest.java
@@ -20,6 +20,8 @@ import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
+import java.util.Iterator;
+import java.util.Map;
 import java.util.Random;
 
 import org.apache.commons.configuration.ConfigurationException;
@@ -115,6 +117,8 @@ public class API_091_RMISubscriptionListenerIntegrationTest
        @Test
        public void joePublisher() {
                try {
+                        UDDISubscriptionListenerImpl.notifcationMap.clear();
+                        UDDISubscriptionListenerImpl.notificationCount=0;
                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
                        tckBusinessService.saveJoePublisherService(authInfoJoe);
@@ -126,7 +130,17 @@ public class API_091_RMISubscriptionListenerIntegrationTest
                        
tckBusinessService.updateJoePublisherService(authInfoJoe, "foo");
                        
             //waiting up to 100 seconds for the listener to notice the change.
-                       String test="";
+                        boolean 
found=API_090_SubscriptionListenerIntegrationTest.verifyDelivery("Service One");
+                        if (!found)
+                        {
+                                logger.warn("The test failed, dumping any 
received notifications");
+                                Iterator<Map.Entry<Integer, String>> iterator 
= UDDISubscriptionListenerImpl.notifcationMap.entrySet().iterator();
+                                while (iterator.hasNext()){
+                                        logger.info("Notification RX: " 
+iterator.next().getValue());
+                                }
+                        }
+                        Assert.assertTrue("Notification failed " 
+UDDISubscriptionListenerImpl.notificationCount + " items returned" , found);
+                       /*String test="";
                        for (int i=0; i<200; i++) {
                                Thread.sleep(500);
                                System.out.print(".");
@@ -139,9 +153,9 @@ public class API_091_RMISubscriptionListenerIntegrationTest
                        if (UDDISubscriptionListenerImpl.notificationCount == 
0) {
                                Assert.fail("No Notification was sent");
                        }
-                       if 
(!UDDISubscriptionListenerImpl.notifcationMap.get(0).contains("<name 
xml:lang=\"en\">Service One</name>")) {
+                       if 
(!UDDISubscriptionListenerImpl.notifcationMap.get(0).contains("foo")) {
                                Assert.fail("Notification does not contain the 
correct service");
-                       }
+                       }*/
                        
                } catch (Exception e) {
                        e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
----------------------------------------------------------------------
diff --git 
a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
 
b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
index 3541a0c..38306ab 100644
--- 
a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
+++ 
b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
@@ -139,16 +139,64 @@ public class UddiSubscribe implements 
ISubscriptionCallback, Runnable {
 
                 System.out.println("Registered FindTModel subscription key: " 
+ (subscriptionTM.getSubscriptionKey()) + " bindingkey: " + 
subscriptionTM.getBindingKey());
 
+                sub = new Subscription();
+                
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                
sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
+
+                Subscription subscriptionPA = clerk.register(sub, 
clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered Completed PublisherAssertion 
subscription key: " + (subscriptionPA.getSubscriptionKey()) + " bindingkey: " + 
subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                
sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+
+                Subscription subscriptionPA2 = clerk.register(sub, 
clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered FROM incomplete 
PublisherAssertion subscription key: " + (subscriptionPA2.getSubscriptionKey()) 
+ " bindingkey: " + subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                
sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+
+                Subscription subscriptionPA3 = clerk.register(sub, 
clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered TO incomplete 
PublisherAssertion subscription key: " + (subscriptionPA3.getSubscriptionKey()) 
+ " bindingkey: " + subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                
sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_BOTH_INCOMPLETE);
+
+                Subscription subscriptionPA4 = clerk.register(sub, 
clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered recently deleted 
PublisherAssertion subscription key: " + (subscriptionPA4.getSubscriptionKey()) 
+ " bindingkey: " + subscriptionTM.getBindingKey());
+
                 System.out.println("Waiting for callbacks. Now would be a good 
time to launch either another program or juddi-gui to make some changes. Press 
any key to stop!");
                 //Thread hook = new Thread(this);
-              //  Runtime.getRuntime().addShutdownHook(hook);
-                
-                        System.in.read();
-                
+                //  Runtime.getRuntime().addShutdownHook(hook);
+
+                System.in.read();
+
                 SubscriptionCallbackListener.stop(client, "default", 
start.getBindingKey());
                 
clerk.unRegisterSubscription(subscriptionBiz.getSubscriptionKey());
                 
clerk.unRegisterSubscription(subscriptionSvc.getSubscriptionKey());
                 
clerk.unRegisterSubscription(subscriptionTM.getSubscriptionKey());
+                
clerk.unRegisterSubscription(subscriptionPA.getSubscriptionKey());
+                
clerk.unRegisterSubscription(subscriptionPA2.getSubscriptionKey());
+                
clerk.unRegisterSubscription(subscriptionPA3.getSubscriptionKey());
+                
clerk.unRegisterSubscription(subscriptionPA4.getSubscriptionKey());
 
                 clerk.unRegisterTModel(createKeyGenator.getTModelKey());
 

http://git-wip-us.apache.org/repos/asf/juddi/blob/bacfa935/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
----------------------------------------------------------------------
diff --git 
a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
 
b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
index 19839d9..58f241f 100644
--- 
a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
+++ 
b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
@@ -105,8 +105,9 @@ public class UddiSubscribeAssertionStatus implements 
ISubscriptionCallback, Runn
                 sub.setBindingKey(start.getBindingKey());
                 sub.setSubscriptionFilter(new SubscriptionFilter());
                 sub.getSubscriptionFilter().setGetAssertionStatusReport(new 
GetAssertionStatusReport());
+                //it's optional
                 
-
+                
//sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
                 Subscription subscriptionBiz = clerk.register(sub, 
clerk.getUDDINode().getApiNode());
 
                 System.out.println("Registered GetAssertionStatus subscription 
key: " + (subscriptionBiz.getSubscriptionKey()) + " bindingkey: " + 
subscriptionBiz.getBindingKey());


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to