SCOUT-67 fixing classcast exception, adding ExternalLinks, instead of ExternalIdentifier. Adding more generics types to some Collections to prevent these types of bugs.

git-svn-id: https://svn.apache.org/repos/asf/webservices/scout/trunk@742195 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jaxr-api/src/main/java/javax/xml/registry/infomodel/ServiceBinding.java b/jaxr-api/src/main/java/javax/xml/registry/infomodel/ServiceBinding.java
index 4a96567..1334d70 100644
--- a/jaxr-api/src/main/java/javax/xml/registry/infomodel/ServiceBinding.java
+++ b/jaxr-api/src/main/java/javax/xml/registry/infomodel/ServiceBinding.java
@@ -32,13 +32,13 @@
 public interface ServiceBinding extends RegistryObject, URIValidator {

     void addSpecificationLink(SpecificationLink specificationLink) throws JAXRException;

 

-    void addSpecificationLinks(Collection specificationLinks) throws JAXRException;

+    void addSpecificationLinks(Collection<SpecificationLink> specificationLinks) throws JAXRException;

 

     String getAccessURI() throws JAXRException;

 

     Service getService() throws JAXRException;

 

-    Collection getSpecificationLinks() throws JAXRException;

+    Collection<SpecificationLink> getSpecificationLinks() throws JAXRException;

 

     ServiceBinding getTargetBinding() throws JAXRException;

 

diff --git a/jaxr-api/src/main/java/javax/xml/registry/infomodel/User.java b/jaxr-api/src/main/java/javax/xml/registry/infomodel/User.java
index ed28e82..405b6c7 100644
--- a/jaxr-api/src/main/java/javax/xml/registry/infomodel/User.java
+++ b/jaxr-api/src/main/java/javax/xml/registry/infomodel/User.java
@@ -31,25 +31,25 @@
  * @version $Revision$ $Date$

  */

 public interface User extends RegistryObject {

-    Collection getEmailAddresses() throws JAXRException;

+    Collection<EmailAddress> getEmailAddresses() throws JAXRException;

 

     Organization getOrganization() throws JAXRException;

 

     PersonName getPersonName() throws JAXRException;

 

-    Collection getPostalAddresses() throws JAXRException;

+    Collection<PostalAddress> getPostalAddresses() throws JAXRException;

 

-    Collection getTelephoneNumbers(String phoneType) throws JAXRException;

+    Collection<TelephoneNumber> getTelephoneNumbers(String phoneType) throws JAXRException;

 

     String getType() throws JAXRException;

 

     URL getUrl() throws JAXRException;

 

-    void setEmailAddresses(Collection addresses) throws JAXRException;

+    void setEmailAddresses(Collection<EmailAddress> addresses) throws JAXRException;

 

     void setPersonName(PersonName personName) throws JAXRException;

 

-    void setPostalAddresses(Collection addresses) throws JAXRException;

+    void setPostalAddresses(Collection<PostalAddress> addresses) throws JAXRException;

 

     void setTelephoneNumbers(Collection<TelephoneNumber> phoneNumbers) throws JAXRException;

 

diff --git a/scout/src/main/java/org/apache/ws/scout/registry/infomodel/RegistryObjectImpl.java b/scout/src/main/java/org/apache/ws/scout/registry/infomodel/RegistryObjectImpl.java
index 0237efc..8035c31 100644
--- a/scout/src/main/java/org/apache/ws/scout/registry/infomodel/RegistryObjectImpl.java
+++ b/scout/src/main/java/org/apache/ws/scout/registry/infomodel/RegistryObjectImpl.java
@@ -203,7 +203,7 @@
         ((ExternalIdentifierImpl) externalIdentifier).setRegistryObject(this);

     }

 

-    public void addExternalIdentifiers(Collection collection)

+    public void addExternalIdentifiers(Collection<ExternalIdentifier> collection)

     {

         if (collection!=null) {

             for (Iterator i = collection.iterator(); i.hasNext();)

diff --git a/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java b/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java
index af69576..d3090c0 100644
--- a/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java
+++ b/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java
@@ -197,11 +197,11 @@
             }
 
 			// SpecificationLink
-           Collection slcol = serve.getSpecificationLinks();
+           Collection<SpecificationLink> slcol = serve.getSpecificationLinks();
 			TModelInstanceDetails tid = TModelInstanceDetails.Factory
 					.newInstance();
 			if (slcol != null && !slcol.isEmpty()) {
-              Iterator iter = slcol.iterator();
+              Iterator<SpecificationLink> iter = slcol.iterator();
 				while (iter.hasNext()) {
 					SpecificationLink slink = (SpecificationLink) iter.next();
 
@@ -482,7 +482,7 @@
                 }
             }
 //          External Links 
-            Collection externalLinks = scheme.getExternalLinks(); 
+            Collection<ExternalLink> externalLinks = scheme.getExternalLinks(); 
             if(externalLinks != null && externalLinks.size() > 0)
             {
                 tm.setOverviewDoc(getOverviewDocFromExternalLink((ExternalLink)externalLinks.iterator().next()));
@@ -547,12 +547,12 @@
 						.getFullName());
 			}
 
-            Collection s = org.getServices();
+            Collection<Service> s = org.getServices();
             log.debug("?Org has services=" + s.isEmpty());
 
 			barr = new BusinessService[s.size()];
 
-            Iterator iter = s.iterator();
+            Iterator<Service> iter = s.iterator();
 			int barrPos = 0;
 			while (iter.hasNext()) {
 				BusinessService bs = ScoutJaxrUddiHelper
@@ -572,7 +572,7 @@
 			Contact[] carr = new Contact[0];
 
             User primaryContact = org.getPrimaryContact();
-            Collection users = org.getUsers();
+            Collection<User> users = org.getUsers();
 
             // Expand array to necessary size only (xmlbeans does not like
             // null items in cases like this)
@@ -584,7 +584,7 @@
             }
 
             // TODO: Clean this up and make it more efficient
-            Iterator it = users.iterator();
+            Iterator<User> it = users.iterator();
             while (it.hasNext()) {
                 User u = (User) it.next();
                 if (u != primaryContact) {
@@ -622,7 +622,7 @@
             biz.setBusinessServices(bss);
 
             // External Links
-            Iterator exiter = org.getExternalLinks().iterator();
+            Iterator<ExternalLink> exiter = org.getExternalLinks().iterator();
             DiscoveryURLs emptyDUs = null;
             boolean first = true;
             while (exiter.hasNext()) {
@@ -680,11 +680,11 @@
             ct.setUseType(user.getType());
 			}
 			// Postal Address
-            Collection postc = user.getPostalAddresses();
+            Collection<PostalAddress> postc = user.getPostalAddresses();
 
 			addarr = new Address[postc.size()];
 
-            Iterator iterator = postc.iterator();
+            Iterator<PostalAddress> iterator = postc.iterator();
 			int addarrPos = 0;
 			while (iterator.hasNext()) {
                 PostalAddress post = (PostalAddress) iterator.next();
diff --git a/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java b/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
index 3408058..08cc982 100644
--- a/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
+++ b/scout/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
@@ -36,6 +36,7 @@
 import javax.xml.registry.infomodel.RegistryObject;
 import javax.xml.registry.infomodel.Service;
 import javax.xml.registry.infomodel.ServiceBinding;
+import javax.xml.registry.infomodel.SpecificationLink;
 import javax.xml.registry.infomodel.TelephoneNumber;
 import javax.xml.registry.infomodel.User;
 
@@ -433,10 +434,10 @@
       for (int i = 0; tmodelInstanceInfoArray != null && i < tmodelInstanceInfoArray.length; i++)
       {
          TModelInstanceInfo info = (TModelInstanceInfo)tmodelInstanceInfoArray[i];
-         InstanceDetails idetails = info.getInstanceDetails(); 
+         InstanceDetails idetails = info.getInstanceDetails();
          Collection<ExternalLink> elinks = getExternalLinks(idetails.getOverviewDoc(),lcm);
-         SpecificationLinkImpl slink = new SpecificationLinkImpl(lcm);
-         slink.addExternalIdentifiers(elinks);
+         SpecificationLink slink = new SpecificationLinkImpl(lcm);
+         slink.addExternalLinks(elinks);
          serviceBinding.addSpecificationLink(slink); 
          
          ConceptImpl c = new ConceptImpl(lcm);
diff --git a/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR050ServiceBindingTest.java b/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR050ServiceBindingTest.java
index 2dd27b5..74c4d71 100644
--- a/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR050ServiceBindingTest.java
+++ b/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR050ServiceBindingTest.java
@@ -39,6 +39,7 @@
 import junit.framework.JUnit4TestAdapter;
 
 import org.apache.ws.scout.BaseTestCase;
+import org.apache.ws.scout.Finder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -92,6 +93,8 @@
         {
             RegistryService rs = connection.getRegistryService();
             blm = rs.getBusinessLifeCycleManager();
+            bqm = rs.getBusinessQueryManager();
+            Finder finder = new Finder(bqm);
 
             System.out.println("\nCreating temporary organization...\n");
             Organization tmpOrg = createTempOrg();
@@ -104,6 +107,10 @@
             System.out.println("\nCreating service binding...\n");
             Key sbKey = createServiceBinding(tmpSvc);
             
+            //find serviceBinding
+            Collection<ServiceBinding> serviceBindings2 = finder.findServiceBindings(tmpSvcKey );
+            ServiceBinding serviceBinding2 = serviceBindings2.iterator().next();
+            
             // All created ... now try to delete.
             deleteServiceBinding(sbKey);
             deleteTempService(tmpSvcKey);