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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to