You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by sa...@apache.org on 2006/08/21 19:45:10 UTC

svn commit: r433306 - in /webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi: AssertionBuilderFactory.java builders/AssertionBuilder.java builders/XMLPrimitiveAssertionBuilder.java

Author: sanka
Date: Mon Aug 21 10:45:08 2006
New Revision: 433306

URL: http://svn.apache.org/viewvc?rev=433306&view=rev
Log:
(1) Added a new method to AssertionBuilder interface,
AssertionBuilder.getKnownElement which will return QName of the element that the
AssertionBuilder can process and build an Assertion.

(2) Modified the AssertionBuilderFactory s.t. it will load and register any
AssertionBuilder instances that it can find it its class path statically.


Modified:
    webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
    webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/AssertionBuilder.java
    webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/XMLPrimitiveAssertionBuilder.java

Modified: webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java?rev=433306&r1=433305&r2=433306&view=diff
==============================================================================
--- webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java (original)
+++ webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactory.java Mon Aug 21 10:45:08 2006
@@ -16,12 +16,16 @@
 package org.apache.neethi;
 
 import java.util.HashMap;
+import java.util.Iterator;
+
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.neethi.builders.AssertionBuilder;
 
+import sun.misc.Service;
+
 /**
  * AssertionFactory is used to create an Assertion from an OMElement. It uses an
  * appropriate AssertionBuilder instace to create an Assertion based on the
@@ -43,15 +47,25 @@
     private final QName XML_ASSERTION_BUILDER = new QName(
             "http://test.org/test", "test");
 
-    private HashMap registeredBuilders = new HashMap();
-
-    public AssertionBuilderFactory() {
+    private static HashMap registeredBuilders = new HashMap();
+    
+    static {
+        AssertionBuilder builder;
+        
+        for (Iterator providers = Service.providers(AssertionBuilder.class); providers.hasNext();) {
+            builder = (AssertionBuilder) providers.next();
+            registerBuilder(builder.getKnownElement(), builder);
+        }
+        
     }
 
-    public void registerBuilder(QName key, AssertionBuilder builder) {
+    public static void registerBuilder(QName key, AssertionBuilder builder) {
         registeredBuilders.put(key, builder);
     }
-
+    
+    public AssertionBuilderFactory() {
+    }
+    
     /**
      * Returns an assertion
      * @param element
@@ -63,7 +77,7 @@
         AssertionBuilder builder;
 
         if (namespace != null) {
-            QName qname = new QName(namespace.getName(), element.getLocalName());
+            QName qname = new QName(namespace.getNamespaceURI(), element.getLocalName());
             builder = (AssertionBuilder) registeredBuilders.get(qname);
 
             if (builder != null) {

Modified: webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/AssertionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/AssertionBuilder.java?rev=433306&r1=433305&r2=433306&view=diff
==============================================================================
--- webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/AssertionBuilder.java (original)
+++ webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/AssertionBuilder.java Mon Aug 21 10:45:08 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.neethi.builders;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
@@ -34,4 +36,6 @@
 
     public Assertion build(OMElement element, AssertionBuilderFactory factory)
             throws IllegalArgumentException;
+    
+    public QName getKnownElement();
 }

Modified: webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/XMLPrimitiveAssertionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/XMLPrimitiveAssertionBuilder.java?rev=433306&r1=433305&r2=433306&view=diff
==============================================================================
--- webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/XMLPrimitiveAssertionBuilder.java (original)
+++ webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/XMLPrimitiveAssertionBuilder.java Mon Aug 21 10:45:08 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.neethi.builders;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
@@ -24,5 +26,9 @@
 
     public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
         return new XmlPrimtiveAssertion(element);
+    }
+    
+    public QName getKnownElement() {
+        return new QName("UnknownElement");
     }
 }



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