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