You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2014/12/13 00:36:27 UTC

juddi git commit: JUDDI-873 fixed JUDDI-242 stubbing out remaining replication items

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 <al...@apache.org>
Authored: Fri Dec 12 18:36:22 2014 -0500
Committer: Alex <al...@apache.org>
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:tcunning@apache.org">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", "jUDDI@example.org");
-			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", "jUDDI@example.org");
+                        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: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org