You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scout-dev@ws.apache.org by ks...@apache.org on 2007/11/05 22:16:43 UTC

svn commit: r592154 - in /webservices/scout/trunk/scout/src: main/java/org/apache/ws/scout/util/EnumerationHelper.java main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java

Author: kstam
Date: Mon Nov  5 13:16:40 2007
New Revision: 592154

URL: http://svn.apache.org/viewvc?rev=592154&view=rev
Log:
SCOUT-53, adding code to create associations.

Modified:
    webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/EnumerationHelper.java
    webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java
    webservices/scout/trunk/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java

Modified: webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/EnumerationHelper.java
URL: http://svn.apache.org/viewvc/webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/EnumerationHelper.java?rev=592154&r1=592153&r2=592154&view=diff
==============================================================================
--- webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/EnumerationHelper.java (original)
+++ webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/EnumerationHelper.java Mon Nov  5 13:16:40 2007
@@ -16,78 +16,124 @@
  */
 package org.apache.ws.scout.util;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.StringTokenizer;
 
 import javax.xml.registry.JAXRException;
 import javax.xml.registry.infomodel.ClassificationScheme;
 import javax.xml.registry.infomodel.Concept;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ws.scout.registry.infomodel.ClassificationSchemeImpl;
 import org.apache.ws.scout.registry.infomodel.ConceptImpl;
 import org.apache.ws.scout.registry.infomodel.InternationalStringImpl;
+import org.apache.ws.scout.registry.infomodel.KeyImpl;
 
 /**
  * Helper class that deals with predefined enumerations
  *
  * @author Anil Saldhana  <an...@apache.org>
+ * @author Kurt Stam <ks...@apache.org>
+ * 
  */
 public class EnumerationHelper
 {
+    private static Log log = LogFactory.getLog(EnumerationHelper.class);
+    
+    private final static String OBJECT_TYPE                   = "ObjectType";
+    private final static String ASSOCIATION_TYPE              = "AssociationType";
+    private final static String URL_TYPE                      = "URLType";
+    private final static String PHONE_TYPE                    = "PhoneType";
+    private final static String POSTAL_ADDRESS_ATTRIBUTES_STR = "PostalAddressAttributes";
+    private final static String[] TYPES = {OBJECT_TYPE, ASSOCIATION_TYPE, URL_TYPE, PHONE_TYPE, POSTAL_ADDRESS_ATTRIBUTES_STR};
+    
+    private final static String[] OBJECT_TYPES = {
+         "ExternalLink","Package","ExternalId","Association","Classification","Concept",
+         "AuditableEvent","User","Organization","CPA","CPP","Service","ServiceBinding","Process","WSDL",
+         "ExtrinsicObj","Organization","User"};
+    private final static String[] ASSOCIATION_TYPES = {
+         "RelatedTo","ExternallyLinks","Contains","Extends","Implements",
+         "InstanceOf","Supersedes","Uses","HasMember","EquivalentTo","HasChild","HasParent","Replaces",
+         "ResponsibleFor","SubmitterOf"};
+    private final static String[] URL_TYPES = {
+         "HTTP","HTTPS","SMTP","FAX","PHONE","OTHER"};
+    private final static String[] PHONE_TYPES = {
+         "Office","Home","Mobile","Beeper","FAX"};
+    private final static String[] POSTAL_ADDRESS_ATTRIBUTES = {
+         "StreetNumber","Street","City","State","PostalCode","Country"};
+    
+    private final static ArrayList<String> TYPES_LIST                     = new ArrayList<String>(Arrays.asList(TYPES));
+    private final static ArrayList<String> OBJECT_TYPES_LIST              = new ArrayList<String>(Arrays.asList(OBJECT_TYPES));
+    private final static ArrayList<String> ASSOCIATION_TYPES_LIST         = new ArrayList<String>(Arrays.asList(ASSOCIATION_TYPES));
+    private final static ArrayList<String> URL_TYPES_LIST                 = new ArrayList<String>(Arrays.asList(URL_TYPES));
+    private final static ArrayList<String> PHONE_TYPES_LIST               = new ArrayList<String>(Arrays.asList(PHONE_TYPES));
+    private final static ArrayList<String> POSTAL_ADDRESS_ATTRIBUTES_LIST = new ArrayList<String>(Arrays.asList(POSTAL_ADDRESS_ATTRIBUTES));
+
+    private static Map<String,ArrayList<String>> typesMap = new HashMap<String,ArrayList<String>>();
+    static {
+        typesMap.put(OBJECT_TYPE                  ,OBJECT_TYPES_LIST);
+        typesMap.put(ASSOCIATION_TYPE             ,ASSOCIATION_TYPES_LIST);
+        typesMap.put(URL_TYPE                     , URL_TYPES_LIST);
+        typesMap.put(PHONE_TYPE                   , PHONE_TYPES_LIST);
+        typesMap.put(POSTAL_ADDRESS_ATTRIBUTES_STR, POSTAL_ADDRESS_ATTRIBUTES_LIST);
+    }
+    
     public static Concept getConceptByPath( String path)
     throws IllegalArgumentException, JAXRException
     {
         //Lets tokenize the path
         StringTokenizer tokenizer = new StringTokenizer(path,"/");
-        //Deal with the first token
-        String firstToken = "";
+        String firstToken = null;
+        String secondToken = null;
+        
         if(tokenizer.hasMoreTokens())
         {
            firstToken = tokenizer.nextToken();
-           if(!checkFirstToken( firstToken))
-               throw new IllegalArgumentException("Wrong Path");;
+           if (tokenizer.hasMoreTokens()) {
+               secondToken = tokenizer.nextToken();
+               if (tokenizer.hasMoreTokens()) {
+                   log.warn("Looking for 2 tokens. " + tokenizer.nextToken() + " will be ignored");
+               }
+           } else {
+               throw new IllegalArgumentException("Expected two token separated with a forward slash (/)");
+           }
+        } else {
+            throw new IllegalArgumentException("Expected two token separated with a forward slash (/)");
         }
-
-        String secondToken = tokenizer.nextToken();
-        //TODO:Check whether the second token is also valid
         return createConcept(firstToken, secondToken) ;
-
-    }
-
-
-    private static boolean checkFirstToken(String token)
-    throws IllegalArgumentException
-    {
-        if(token == null )
-            throw new IllegalArgumentException();
-        if(token.equalsIgnoreCase("AssociationType"))  return true;
-        if(token.equalsIgnoreCase("URLType"))  return true;
-        if(token.equalsIgnoreCase("PhoneType"))  return true;
-        if(token.equalsIgnoreCase("PostalAddressAttributes"))  return true;
-        if(token.equalsIgnoreCase("ObjectType"))  return true;
-        return false;
     }
 
     /**
-     *
+     * 
      * @param firstToken
      * @param secondToken
-     * @return
+     * @return Concept
      * @throws JAXRException
      */
     private static  Concept createConcept(String firstToken, String secondToken)
-            throws JAXRException
+            throws JAXRException, IllegalArgumentException
     {
-        /**
-         * This is a hack!!!  Need to figure out how to do this!
-         */
+        if (!TYPES_LIST.contains(firstToken)) throw new IllegalArgumentException("Exspected the path to " +
+                "start with one of " + TYPES);
+        
+        //get the predefined classificationscheme
         ClassificationScheme cs = new ClassificationSchemeImpl(null);
         cs.setName(new InternationalStringImpl(firstToken));
+        cs.setKey(new KeyImpl(firstToken));
 
+        ArrayList<String> conceptStrings = typesMap.get(firstToken);
+        if (!conceptStrings.contains(secondToken)) throw new IllegalArgumentException("Exspected the path to " +
+                "end with one of " + conceptStrings.toArray());
+                
         Concept concept = new ConceptImpl(null);
         concept.setName(new InternationalStringImpl(secondToken.toLowerCase()));
         concept.setValue(secondToken);
+        concept.setKey(new KeyImpl(firstToken + "/" + secondToken));
         ((ConceptImpl)concept).setScheme(((ClassificationSchemeImpl)cs));
         return concept;
-
     }
 }

Modified: webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java
URL: http://svn.apache.org/viewvc/webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java?rev=592154&r1=592153&r2=592154&view=diff
==============================================================================
--- webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java (original)
+++ webservices/scout/trunk/scout/src/main/java/org/apache/ws/scout/util/ScoutJaxrUddiHelper.java Mon Nov  5 13:16:40 2007
@@ -269,7 +269,7 @@
 				// TODO: This setting to "" should not be needed at all.
 				// However, a bug in jUDDI needs it to be there. See:
 				// http://issues.apache.org/jira/browse/JUDDI-78
-				kr.setTModelKey("");
+				//kr.setTModelKey("");
 			} else {
                 kr.setTModelKey(key.getId());
 			}

Modified: webservices/scout/trunk/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java
URL: http://svn.apache.org/viewvc/webservices/scout/trunk/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java?rev=592154&r1=592153&r2=592154&view=diff
==============================================================================
--- webservices/scout/trunk/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java (original)
+++ webservices/scout/trunk/scout/src/test/java/org/apache/ws/scout/registry/qa/JAXR030AssociationsTest.java Mon Nov  5 13:16:40 2007
@@ -17,6 +17,7 @@
 package org.apache.ws.scout.registry.qa;
 
 import static org.junit.Assert.fail;
+import static org.junit.Assert.assertEquals;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -61,7 +62,7 @@
 
 	private BusinessQueryManager bqm = null;
 
-	String associationType = "/AssociationType/RelatedTo";
+	String associationType = "AssociationType/RelatedTo";
 	private static String tempSrcOrgName = "Apache Source Org -- APACHE SCOUT TEST";
 	private static String tempTgtOrgName = "Apache Target Org -- APACHE SCOUT TEST";
 
@@ -173,10 +174,12 @@
 
 		if (associations == null) {
 			System.out.println("\n-- Matched 0 orgs");
+            fail("Expected 1 association");
 
 		} else {
 			System.out.println("\n-- Matched " + associations.size()
 					+ " associations --\n");
+            assertEquals(1,associations.size());
 
 			// then step through them
 			for (Iterator conceptIter = associations.iterator(); conceptIter
@@ -206,6 +209,7 @@
 		keys.add(key);
 		BulkResponse response = blm.deleteAssociations(keys);
 
+        assertEquals(BulkResponse.STATUS_SUCCESS, response.getStatus());
 		Collection exceptions = response.getExceptions();
 		if (exceptions == null) {
 			Collection retKeys = response.getCollection();



---------------------------------------------------------------------
To unsubscribe, e-mail: scout-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: scout-dev-help@ws.apache.org