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 2013/05/07 00:26:47 UTC

svn commit: r1479705 - in /juddi/branches/juddi-3.2.x: juddi-core/src/main/java/org/apache/juddi/validation/ juddi-core/src/main/resources/ juddi-gui/src/java/org/apache/juddi/webconsole/resources/ juddi-gui/web/ juddi-gui/web/ajax/ uddi-tck/src/test/j...

Author: alexoree
Date: Mon May  6 22:25:24 2013
New Revision: 1479705

URL: http://svn.apache.org/r1479705
Log:
adding additional validation for subscription definitions, specifically duration, expires, max records. JIRA JUDDI-595 partial
updating some assertion related pages on the gui, users can now approve assertions 
adding unit tests for JIRA JUDDI-597

Modified:
    juddi/branches/juddi-3.2.x/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
    juddi/branches/juddi-3.2.x/juddi-core/src/main/resources/messages.properties
    juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web.properties
    juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web_es.properties
    juddi/branches/juddi-3.2.x/juddi-gui/web/ajax/assertions.jsp
    juddi/branches/juddi-3.2.x/juddi-gui/web/assertions.jsp
    juddi/branches/juddi-3.2.x/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_141_JIRAIntegrationTest.java

Modified: juddi/branches/juddi-3.2.x/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java Mon May  6 22:25:24 2013
@@ -117,7 +117,11 @@ public class ValidateSubscription extend
                         throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.maxrecordstoosmall"));
                     }
                 }
-		
+		if (subscription.getNotificationInterval()==null)
+                {
+                    //TODO default value?
+                     throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.notificationintervalnotdefined"));
+                }
 		validateSubscriptionFilter(subscription.getSubscriptionFilter(), entityExists);
 	}
         /**

Modified: juddi/branches/juddi-3.2.x/juddi-core/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-core/src/main/resources/messages.properties?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-core/src/main/resources/messages.properties (original)
+++ juddi/branches/juddi-3.2.x/juddi-core/src/main/resources/messages.properties Mon May  6 22:25:24 2013
@@ -192,6 +192,7 @@ errors.subscription.BlankFilter=A filter
 errors.subscription.TooManyFilters=Only one filter is allowed per subscription request
 errors.subscription.expired=The expiration timestamp has already passed.
 errors.subscription.maxrecordstoosmall=When specifying the maxium record, it must be greater than zero
+errors.subscription.notificationintervalnotdefined=A notification interval must be specified
 errors.getsubscriptionresult.SubscriptionExpired=The passed subscription has expired
 errors.getsubscriptionresult.NullCoveragePeriod=The coverage period cannot be blank
 errors.getsubscriptionresult.InvalidDateInCoveragePeriod=The coverage period must contain valid dates for start and end points

Modified: juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web.properties
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web.properties?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web.properties (original)
+++ juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web.properties Mon May  6 22:25:24 2013
@@ -250,7 +250,7 @@ navbar.create.mybiz.tooltip=A list of al
 navbar.create.mybiz.content=My Businesses contains a list of all the UDDI business elements that you have access to. This typically means that you can make changes to it, however this may vary between vendors.
 actions.transfer.description=Transfer this entity to another UDDI node or publisher.
 actions.subscribe.description=Alert me when this entity changes.
-items.publisherassertions.from=My Business
+items.publisherassertions.from=This Business
 items.publisherassertions.to=Is related to business
 items.publisherassertions.relationship=Relationship
 items.status=Status
@@ -326,3 +326,4 @@ pages.transfer.discardtoken.content=Made
 pages.transfer.accepttransfer.content=If another UDDI publisher gave you a transfer token and you all agreed to transfer ownership of a business or tModel, it can be done here. Enter the transfer token. It must match exactly.
 actions.savethis=Copy and save this information to your computer. There's no way to retrieve this information again! 
 navbar.help.source=Source Code
+actions.approve=Approve

Modified: juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web_es.properties
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web_es.properties?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web_es.properties (original)
+++ juddi/branches/juddi-3.2.x/juddi-gui/src/java/org/apache/juddi/webconsole/resources/web_es.properties Mon May  6 22:25:24 2013
@@ -251,7 +251,7 @@ navbar.create.mybiz.tooltip=Una lista de
 navbar.create.mybiz.content=Mis empresas contiene una lista de todos los elementos empresariales UDDI que usted tiene acceso. Esto normalmente significa que usted puede hacer cambios en \u00e9l, sin embargo esto puede variar entre los proveedores.
 actions.transfer.description=Traslade esta entidad a otro nodo UDDI o el editor.
 actions.subscribe.description=Avisarme cuando esta entidad los cambios.
-items.publisherassertions.from=Mi Negocio
+items.publisherassertions.from=Este Negocio
 items.publisherassertions.to=Est\u00e1 relacionado con los negocios
 items.publisherassertions.relationship=Relaci\u00f3n
 items.status=Estado
@@ -327,3 +327,4 @@ pages.transfer.discardtoken.content=Come
 pages.transfer.accepttransfer.content=Si otro editor UDDI le dio un token de transferencia y todos ustedes se comprometi\u00f3 a transferir la propiedad de un negocio o tModel, se puede hacer aqu\u00ed. Introduzca el token de transferencia. Debe coincidir exactamente.
 actions.savethis=Copie y guarde esta informaci\u00f3n a su ordenador. No hay manera de recuperar esta informaci\u00f3n de nuevo!
 navbar.help.source=C\u00f3digo Fuente
+actions.approve=Aprobar

Modified: juddi/branches/juddi-3.2.x/juddi-gui/web/ajax/assertions.jsp
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-gui/web/ajax/assertions.jsp?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-gui/web/ajax/assertions.jsp (original)
+++ juddi/branches/juddi-3.2.x/juddi-gui/web/ajax/assertions.jsp Mon May  6 22:25:24 2013
@@ -4,6 +4,7 @@
     Author     : Alex O'Ree
 --%>
 
+<%@page import="org.uddi.api_v3.CompletionStatus"%>
 <%@page import="org.uddi.api_v3.AssertionStatusItem"%>
 <%@page import="org.apache.commons.lang.StringEscapeUtils"%>
 <%@page import="java.util.concurrent.atomic.AtomicReference"%>
@@ -55,8 +56,8 @@
         <th><%=ResourceLoader.GetResource(session, "items.status")%></th>
     </tr>
         <%
-    //TODO i18n
-
+   
+        
             for (int i = 0; i < data.size(); i++) {
                 out.write("<tr><td>");
                 out.write(data.get(i).getFromKey());
@@ -69,6 +70,22 @@
                     out.write("<div style=\"float:left\">" + ResourceLoader.GetResource(session, "items.value") + " :</div><div id=\"" + PostBackConstants.KEYVALUE + "\" class=\"edit\">" + data.get(i).getKeyedReference().getKeyValue());
                 }
                 out.write("</td><td>");
+                if (data.get(i).getCompletionStatus() == CompletionStatus.STATUS_FROM_KEY_INCOMPLETE ||
+                        data.get(i).getCompletionStatus() == CompletionStatus.STATUS_TO_KEY_INCOMPLETE)
+                                       {
+                     out.write("<a class=\"btn btn-primary\" href=\"javascript:approveAssertion('"
+                        + StringEscapeUtils.escapeJavaScript(data.get(i).getFromKey())
+                        + "','"
+                        + StringEscapeUtils.escapeJavaScript(data.get(i).getToKey())
+                        + "','"
+                        + StringEscapeUtils.escapeJavaScript(data.get(i).getKeyedReference().getTModelKey())
+                        + "','"
+                        + StringEscapeUtils.escapeJavaScript(data.get(i).getKeyedReference().getKeyName())
+                        + "','"
+                        + StringEscapeUtils.escapeJavaScript(data.get(i).getKeyedReference().getKeyValue())
+                        + "');"
+                        + "\">" + ResourceLoader.GetResource(session, "actions.approve") + "</a>");
+                }
                 out.write("<a class=\"btn btn-primary\" href=\"javascript:removeAssertion('"
                         + StringEscapeUtils.escapeJavaScript(data.get(i).getFromKey())
                         + "','"

Modified: juddi/branches/juddi-3.2.x/juddi-gui/web/assertions.jsp
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-gui/web/assertions.jsp?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-gui/web/assertions.jsp (original)
+++ juddi/branches/juddi-3.2.x/juddi-gui/web/assertions.jsp Mon May  6 22:25:24 2013
@@ -123,6 +123,58 @@
                     });
                 }
               
+                function approveAssertion(fromkey,tokey, tmodelkey, keyname, keyvalue)
+                {
+                    var ok=true;
+                    var url='ajax/assertions.jsp';
+                    var postbackdata = new Array();
+                    postbackdata.push({
+                        name: 'fromkey', 
+                        value: fromkey
+                    });
+                    postbackdata.push({
+                        name: 'tokey', 
+                        value: tokey
+                    });
+                    postbackdata.push({
+                        name: 'tmodelkey', 
+                        value: tmodelkey
+                    });
+                    postbackdata.push({
+                        name: 'keyname', 
+                        value: keyname
+                    });
+                    postbackdata.push({
+                        name: 'keyvalue', 
+                        value: keyvalue
+                    });
+                        
+                    postbackdata.push({
+                        name:"nonce", 
+                        value: $("#nonce").val()
+                    });
+                    
+                    var request=   $.ajax({
+                        url: url,
+                        type:"POST",
+                        //  data" + i18n_type + ": "html", 
+                        cache: false, 
+                        //  processData: false,f
+                        data: postbackdata
+                    });
+                
+                
+                    request.done(function(msg) {
+                        window.console && console.log('postback done '  + url);                
+                        $("#saveresult").html(msg);
+                        RenderAssertions();
+                    });
+
+                    request.fail(function(jqXHR, textStatus) {
+                        window.console && console.log('postback failed ' + url);                                
+                        $("#saveresult").html(jqXHR.responseText + textStatus);
+                    });
+                }
               
                 function removeAssertion(fromkey,tokey, tmodelkey, keyname, keyvalue)
                 {
@@ -192,7 +244,7 @@
     <div class="modal hide fade" id="addPublisherAssertion">
         <div class="modal-header">
             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-            <h3>Add a publisher assertion</h3>
+            <h3><%=ResourceLoader.GetResource(session, "items.publisherassertion.add")%></h3>
         </div>
         <div class="modal-body" id="addPublisherAssertionContent">
             <div style="float:left;width:25%">From Key : </div><div id="fromkey" class="edit"><%
@@ -204,13 +256,13 @@
             <div style="float:left;width:25%">tModel Key : </div><div id="tmodelkey" class="edit">uddi:uddi.org:relationships</div>
             <div style="float:left;width:25%">Key Name : </div><div id="keyname" class="edit">Subsidiary</div>
             <div style="float:left;width:25%">Key Value : </div><div id="keyvalue" class="edit">parent-child</div>
-            <div id="saveresult"></div>
+            <div id="saveresult" style="color:red"></div>
         </div>
         <script type="text/javascript">
             Reedit();
         </script>
         <div class="modal-footer">
-            <a href="javascript:addAssertion();" class="btn btn-primary">Save</a>
+            <a href="javascript:addAssertion();" class="btn btn-primary"><%=ResourceLoader.GetResource(session, "actions.save")%></a>
             <a href="javascript:$('#addPublisherAssertion').modal('hide');" class="btn"><%=ResourceLoader.GetResource(session, "modal.close")%></a>
         </div>
     </div>

Modified: juddi/branches/juddi-3.2.x/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_141_JIRAIntegrationTest.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_141_JIRAIntegrationTest.java?rev=1479705&r1=1479704&r2=1479705&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_141_JIRAIntegrationTest.java (original)
+++ juddi/branches/juddi-3.2.x/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_141_JIRAIntegrationTest.java Mon May  6 22:25:24 2013
@@ -14,9 +14,18 @@
  */
 package org.apache.juddi.v3.tck;
 
+import java.net.Inet4Address;
+import java.util.AbstractList;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
 import java.util.List;
+import javax.xml.bind.JAXB;
+import javax.xml.datatype.DatatypeFactory;
 import javax.xml.soap.SOAPFault;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Holder;
+import javax.xml.ws.soap.SOAPFaultException;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -28,9 +37,12 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.uddi.api_v3.*;
+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.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
 
 /**
  * This test class provides test cases of items discovered or reported through
@@ -44,6 +56,7 @@ public class UDDI_141_JIRAIntegrationTes
 
     private static Log logger = LogFactory.getLog(UDDI_141_JIRAIntegrationTest.class);
     static UDDISecurityPortType security = null;
+    static UDDISubscriptionPortType subscription = null;
     static UDDIInquiryPortType inquiry = null;
     static UDDIPublicationPortType publication = null;
     protected static String authInfoJoe = null;
@@ -80,6 +93,7 @@ public class UDDI_141_JIRAIntegrationTes
         try {
             Transport transport = manager.getTransport();
             security = transport.getUDDISecurityService();
+            subscription = transport.getUDDISubscriptionService();
             authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
             authInfoSam = TckSecurity.getAuthToken(security, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
             Assert.assertNotNull(authInfoJoe);
@@ -479,6 +493,381 @@ public class UDDI_141_JIRAIntegrationTes
 
     }
 
+    /**
+     * sets up a compelte publisher assertion
+     *
+     * @throws Exception
+     */
+    @Test
+    public void JUDDI_590() throws Exception {
+        //create two businesses
+        System.out.println("JUDDI_590");
+
+        SaveBusiness sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoJoe);
+        BusinessEntity be = new BusinessEntity();
+        Name n = new Name();
+        n.setValue("JUDDI_590 Joe");
+        be.getName().add(n);
+        sb.getBusinessEntity().add(be);
+        String joeBiz = null;
+        try {
+            BusinessDetail saveBusiness = publication.saveBusiness(sb);
+            joeBiz = saveBusiness.getBusinessEntity().get(0).getBusinessKey();
+            //DeleteBusiness db = new DeleteBusiness();
+            //db.setAuthInfo(authInfoJoe);
+            //db.getBusinessKey().add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
+            //publication.deleteBusiness(db);
+            //Assert.fail("request should have been rejected");
+        } catch (SOAPFaultException ex) {
+            HandleException(ex);
+        }
+
+        sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoSam);
+        be = new BusinessEntity();
+        n = new Name();
+        n.setValue("JUDDI_590 Sam");
+        be.getName().add(n);
+        sb.getBusinessEntity().add(be);
+        String samBiz = null;
+        try {
+            BusinessDetail saveBusiness = publication.saveBusiness(sb);
+            samBiz = saveBusiness.getBusinessEntity().get(0).getBusinessKey();
+            //DeleteBusiness db = new DeleteBusiness();
+            //db.setAuthInfo(authInfoJoe);
+            //db.getBusinessKey().add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
+            //publication.deleteBusiness(db);
+            //Assert.fail("request should have been rejected");
+        } catch (SOAPFaultException ex) {
+            HandleException(ex);
+        }
+
+
+        //create an assertion on one end
+        AddPublisherAssertions apa = new AddPublisherAssertions();
+        apa.setAuthInfo(authInfoJoe);
+        apa.getPublisherAssertion().add(new PublisherAssertion());
+        apa.getPublisherAssertion().get(0).setFromKey(joeBiz);
+        apa.getPublisherAssertion().get(0).setToKey(samBiz);
+        KeyedReference kr = new KeyedReference();
+        kr.setKeyName("Subsidiary");
+        kr.setKeyValue("parent-child");
+        kr.setTModelKey("uddi:uddi.org:relationships");
+        apa.getPublisherAssertion().get(0).setKeyedReference(kr);
+        publication.addPublisherAssertions(apa);
+        //check get status is not null from 1 and from 2
+        boolean ok = true;
+        String msg = "";
+        try {
+            List<AssertionStatusItem> assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+            if (assertionStatusReport.isEmpty()) {
+                msg = "Stage1: no result returned, expected at least 1";
+                ok = false;
+            }
+            for (int i = 0; i < assertionStatusReport.size(); i++) {
+                JAXB.marshal(assertionStatusReport.get(i), System.out);
+                if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                    if (!assertionStatusReport.get(i).getCompletionStatus().equals(CompletionStatus.STATUS_TO_KEY_INCOMPLETE)) {
+                        ok = false;
+                        msg = "Stage1: status type mismatch";
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            ok = false;
+            ex.printStackTrace();
+        }
+
+
+        //aprove the assertion from sam
+        apa = new AddPublisherAssertions();
+        apa.setAuthInfo(authInfoSam);
+        apa.getPublisherAssertion().add(new PublisherAssertion());
+        apa.getPublisherAssertion().get(0).setFromKey(joeBiz);
+        apa.getPublisherAssertion().get(0).setToKey(samBiz);
+        kr = new KeyedReference();
+        kr.setKeyName("Subsidiary");
+        kr.setKeyValue("parent-child");
+        kr.setTModelKey("uddi:uddi.org:relationships");
+        apa.getPublisherAssertion().get(0).setKeyedReference(kr);
+        publication.addPublisherAssertions(apa);
+        try {
+            List<AssertionStatusItem> assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_COMPLETE);
+            if (assertionStatusReport.isEmpty()) {
+                msg = "Stage2: no result returned, expected at least 1";
+                ok = false;
+            }
+            for (int i = 0; i < assertionStatusReport.size(); i++) {
+                JAXB.marshal(assertionStatusReport.get(i), System.out);
+                if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                    if (!assertionStatusReport.get(i).getCompletionStatus().equals(CompletionStatus.STATUS_COMPLETE)) {
+                        ok = false;
+                        msg = "Stage2: status type mismatch";
+                    }
+                }
+            }
+            //test to see what the status actually is
+            if (!ok) {
+                assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+                for (int i = 0; i < assertionStatusReport.size(); i++) {
+                    JAXB.marshal(assertionStatusReport.get(i), System.out);
+                    if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                        msg = "Stage3: status is " + assertionStatusReport.get(i).getCompletionStatus().toString() + " instead of complete";
+                    }
+                }
+
+                assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+                for (int i = 0; i < assertionStatusReport.size(); i++) {
+                    JAXB.marshal(assertionStatusReport.get(i), System.out);
+                    if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                        msg = "Stage3: status is " + assertionStatusReport.get(i).getCompletionStatus().toString() + " instead of complete";
+                    }
+                }
+                assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_BOTH_INCOMPLETE);
+                for (int i = 0; i < assertionStatusReport.size(); i++) {
+                    JAXB.marshal(assertionStatusReport.get(i), System.out);
+                    if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                        msg = "Stage3: status is " + assertionStatusReport.get(i).getCompletionStatus().toString() + " instead of complete";
+                    }
+                }
+
+            }
+        } catch (Exception ex) {
+            ok = false;
+            ex.printStackTrace();
+        }
+        List<String> biz = new ArrayList<String>();
+        biz.add(samBiz);
+        DeleteBusinesses(biz, authInfoSam);
+
+        biz = new ArrayList<String>();
+        biz.add(joeBiz);
+        DeleteBusinesses(biz, authInfoJoe);
+        Assert.assertTrue(msg, ok);
+
+
+    }
+
+    /**
+     * setups up a partial relationship and confirms its existence
+     *
+     * @throws Exception
+     */
+    @Test
+    public void JUDDI_590_1() throws Exception {
+        //create two businesses
+        System.out.println("JUDDI_590_1");
+
+        SaveBusiness sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoJoe);
+        BusinessEntity be = new BusinessEntity();
+        Name n = new Name();
+        n.setValue("JUDDI_590 Joe");
+        be.getName().add(n);
+        sb.getBusinessEntity().add(be);
+        String joeBiz = null;
+        try {
+            BusinessDetail saveBusiness = publication.saveBusiness(sb);
+            joeBiz = saveBusiness.getBusinessEntity().get(0).getBusinessKey();
+            //DeleteBusiness db = new DeleteBusiness();
+            //db.setAuthInfo(authInfoJoe);
+            //db.getBusinessKey().add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
+            //publication.deleteBusiness(db);
+            //Assert.fail("request should have been rejected");
+        } catch (SOAPFaultException ex) {
+            HandleException(ex);
+        }
+
+        sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoSam);
+        be = new BusinessEntity();
+        n = new Name();
+        n.setValue("JUDDI_590 Sam");
+        be.getName().add(n);
+        sb.getBusinessEntity().add(be);
+        String samBiz = null;
+        try {
+            BusinessDetail saveBusiness = publication.saveBusiness(sb);
+            samBiz = saveBusiness.getBusinessEntity().get(0).getBusinessKey();
+            //DeleteBusiness db = new DeleteBusiness();
+            //db.setAuthInfo(authInfoJoe);
+            //db.getBusinessKey().add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
+            //publication.deleteBusiness(db);
+            //Assert.fail("request should have been rejected");
+        } catch (SOAPFaultException ex) {
+            HandleException(ex);
+        }
+
+
+        //create an assertion on one end
+        AddPublisherAssertions apa = new AddPublisherAssertions();
+        apa.setAuthInfo(authInfoJoe);
+        apa.getPublisherAssertion().add(new PublisherAssertion());
+        apa.getPublisherAssertion().get(0).setFromKey(joeBiz);
+        apa.getPublisherAssertion().get(0).setToKey(samBiz);
+        KeyedReference kr = new KeyedReference();
+        kr.setKeyName("Subsidiary");
+        kr.setKeyValue("parent-child");
+        kr.setTModelKey("uddi:uddi.org:relationships");
+        apa.getPublisherAssertion().get(0).setKeyedReference(kr);
+        publication.addPublisherAssertions(apa);
+        //ok so joe has asserted that he knows sam
+
+        //check get status is not null from 1 and from 2
+        boolean ok = true;
+        String msg = "";
+        try {
+            List<AssertionStatusItem> assertionStatusReport = publication.getAssertionStatusReport(authInfoJoe, CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+            if (assertionStatusReport.isEmpty()) {
+                msg = "Stage1: no result returned, expected at least 1";
+                ok = false;
+            }
+            for (int i = 0; i < assertionStatusReport.size(); i++) {
+                JAXB.marshal(assertionStatusReport.get(i), System.out);
+                if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                    if (!assertionStatusReport.get(i).getCompletionStatus().equals(CompletionStatus.STATUS_TO_KEY_INCOMPLETE)) {
+                        ok = false;
+                        msg = "Stage1: status type mismatch";
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            ok = false;
+            ex.printStackTrace();
+        }
+        //check that sam got the message
+
+        try {
+            List<AssertionStatusItem> assertionStatusReport = publication.getAssertionStatusReport(authInfoSam, CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+            if (assertionStatusReport.isEmpty()) {
+                msg = "Stage2: no result returned, expected at least 1";
+                ok = false;
+            }
+            for (int i = 0; i < assertionStatusReport.size(); i++) {
+                JAXB.marshal(assertionStatusReport.get(i), System.out);
+                if (assertionStatusReport.get(i).getToKey().equals(samBiz)) {
+                    if (!assertionStatusReport.get(i).getCompletionStatus().equals(CompletionStatus.STATUS_TO_KEY_INCOMPLETE)) {
+                        ok = false;
+                        msg = "Stage2: status type mismatch";
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            ok = false;
+            ex.printStackTrace();
+        }
+
+        List<String> biz = new ArrayList<String>();
+        biz.add(samBiz);
+        DeleteBusinesses(biz, authInfoSam);
+
+        biz = new ArrayList<String>();
+        biz.add(joeBiz);
+        DeleteBusinesses(biz, authInfoJoe);
+        Assert.assertTrue(msg, ok);
+
+
+    }
+
+    //testing upper case subscription callbacks
+    @Test
+  public  void JIRA_597() throws Exception {
+        System.out.println("JIRA_597");
+        int port = 4444;
+        String localhostname = java.net.InetAddress.getLocalHost().getHostName();
+        UDDISubscriptionListenerImpl impl = new UDDISubscriptionListenerImpl();
+        UDDISubscriptionListenerImpl.notifcationMap.clear();
+        UDDISubscriptionListenerImpl.notificationCount = 0;
+        Endpoint ep = null;
+        boolean ok = false;
+        do {
+            try {
+                ep = Endpoint.publish("http://" + localhostname + ":" + port + "/UDDI_CALLBACK", impl);
+                ok = true;
+            } catch (Exception ex) {
+                port++;
+            }
+        } while (!ok);
+        SaveBusiness sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoJoe);
+        BusinessEntity be = new BusinessEntity();
+        be.getName().add(new Name());
+        be.getName().get(0).setValue("Joe's callback business");
+        be.setBusinessServices(new BusinessServices());
+        BusinessService bs = new BusinessService();
+        bs.getName().add(new Name());
+        bs.getName().get(0).setValue("Joe's callback service");
+        bs.setBindingTemplates(new BindingTemplates());
+        BindingTemplate bt = new BindingTemplate();
+        bt.setAccessPoint(new AccessPoint());
+        bt.getAccessPoint().setValue("http://" + localhostname + ":" + port + "/UDDI_CALLBACK");
+        bt.getAccessPoint().setUseType("endPoint");
+        //Added per Kurt
+        TModelInstanceInfo instanceInfo = new TModelInstanceInfo();
+        instanceInfo.setTModelKey("uddi:uddi.org:transport:http");
+        bt.setTModelInstanceDetails(new TModelInstanceDetails());
+        bt.getTModelInstanceDetails().getTModelInstanceInfo().add(instanceInfo);
+
+        bs.getBindingTemplates().getBindingTemplate().add(bt);
+
+        bs.getBindingTemplates().getBindingTemplate().add(bt);
+        be.getBusinessServices().getBusinessService().add(bs);
+        sb.getBusinessEntity().add(be);
+        BusinessDetail saveBusiness = publication.saveBusiness(sb);
+
+        //ok Joe's callback is setup
+
+        //Setup a business to subscribe to
+        sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoSam);
+        be = new BusinessEntity();
+        be.getName().add(new Name());
+        be.getName().get(0).setValue("Sam's business");
+        sb.getBusinessEntity().add(be);
+        BusinessDetail saveBusiness1 = publication.saveBusiness(sb);
+
+        //ok Joe now needs to subscribe for Sam's business
+        Holder<List<Subscription>> list = new Holder<List<Subscription>>();
+        list.value = new ArrayList<Subscription>();
+        Subscription s = new Subscription();
+        s.setBindingKey(saveBusiness.getBusinessEntity().get(0).getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0).getBindingKey());
+        s.setSubscriptionFilter(new SubscriptionFilter());
+        s.getSubscriptionFilter().setGetBusinessDetail(new GetBusinessDetail());
+        s.getSubscriptionFilter().getGetBusinessDetail().getBusinessKey().add(saveBusiness1.getBusinessEntity().get(0).getBusinessKey());
+        DatatypeFactory df = DatatypeFactory.newInstance();
+        GregorianCalendar gcal = new GregorianCalendar();
+        gcal.setTimeInMillis(System.currentTimeMillis());
+        gcal.add(Calendar.HOUR, 1);
+        s.setExpiresAfter(df.newXMLGregorianCalendar(gcal));
+        
+        s.setNotificationInterval(df.newDuration(5000));
+        list.value.add(s);
+        subscription.saveSubscription(authInfoJoe, list);
+
+        //ok have sam change his business around.
+        sb = new SaveBusiness();
+        sb.setAuthInfo(authInfoSam);
+        be = saveBusiness1.getBusinessEntity().get(0);
+        be.getName().get(0).setLang("en");
+        sb.getBusinessEntity().add(be);
+        publication.saveBusiness(sb);
+        int maxwait = 30000;
+        while (maxwait > 0) {
+            if (UDDISubscriptionListenerImpl.notifcationMap.size() > 0)
+                break;
+            Thread.sleep(1000);
+            maxwait = maxwait - 1000;
+        }
+        if (UDDISubscriptionListenerImpl.notifcationMap.isEmpty())
+        {
+            Assert.fail("no callbacks were recieved.");
+        }
+
+
+    }
+
+    //once more without any relationship
     //TODO binding template tmodel instance info
     //TODO tmodel tests
     //TODO create tests for enforcing ref integrity of tmodel keys, after enforcing this, the tests in this class will need to be heavily revised
@@ -628,11 +1017,17 @@ public class UDDI_141_JIRAIntegrationTes
 
     private void DeleteBusinesses(List<String> businesskeysToDelete) {
 
+        DeleteBusinesses(businesskeysToDelete, authInfoJoe);
+
+    }
+
+    private void DeleteBusinesses(List<String> businesskeysToDelete, String authinfo) {
+
 
         //cleanup
         try {
             DeleteBusiness db = new DeleteBusiness();
-            db.setAuthInfo(authInfoJoe);
+            db.setAuthInfo(authinfo);
             db.getBusinessKey().addAll(businesskeysToDelete);
             publication.deleteBusiness(db);
         } catch (Exception ex) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org