Author: dkulp
Date: Wed Feb  9 15:46:11 2011
New Revision: 1068942

URL: http://svn.apache.org/viewvc?rev=1068942&view=rev
Log:
First pass at removing the singletons

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/PolicyEngine.java
    
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
    
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
    
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.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=1068942&r1=1068941&r2=1068942&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
 Wed Feb  9 15:46:11 2011
@@ -56,21 +56,27 @@ public class AssertionBuilderFactory {
     public static final String EXACTLY_ONE = "ExactlyOne";
 
     public static final String ALL = "All";
-
-    private static final QName XML_ASSERTION_BUILDER = new 
QName("http://test.org/test";, "test");
-
-    private static Map<QName, AssertionBuilder> registeredBuilders = new 
ConcurrentHashMap<QName, AssertionBuilder>();
-
+    
+    private Map<QName, AssertionBuilder> registeredBuilders = new 
ConcurrentHashMap<QName, AssertionBuilder>();
+    private AssertionBuilder defaultBuilder;
     private final ConverterRegistry converters;
+    private final PolicyEngine engine;
     
-    static {
+    public AssertionBuilderFactory(PolicyEngine eng, ConverterRegistry reg) {
+        converters = reg;
+        engine = eng;
+
         for (AssertionBuilder builder : 
Service.providers(AssertionBuilder.class)) {
             QName[] knownElements = builder.getKnownElements();
             for (int i = 0; i < knownElements.length; i++) {
                 registerBuilder(knownElements[i], builder);
             }
         }
-        registerBuilder(XML_ASSERTION_BUILDER, new 
XMLPrimitiveAssertionBuilder());
+        defaultBuilder = new XMLPrimitiveAssertionBuilder();
+    }
+    
+    public PolicyEngine getPolicyEngine() {
+        return engine;
     }
 
     /**
@@ -80,15 +86,11 @@ public class AssertionBuilderFactory {
      * @param builder the AssertionBuilder that can build an Assertion from
      *            an element of specified type
      */
-    public static void registerBuilder(QName key, AssertionBuilder builder) {
+    public void registerBuilder(QName key, AssertionBuilder builder) {
         registeredBuilders.put(key, builder);
     }
 
     
-    public AssertionBuilderFactory(ConverterRegistry reg) {
-        converters = reg;
-    }
-
     /**
      * Returns an assertion that is built using the specified element.
      * 
@@ -101,14 +103,13 @@ public class AssertionBuilderFactory {
 
         QName qname = converters.findQName(element);
         builder = registeredBuilders.get(qname);
-        if (builder != null) {
-            return invokeBuilder(element, builder);
+        if (builder == null) {
+            /*
+             * if we can't locate an appropriate AssertionBuilder, we always 
use the
+             * XMLPrimitiveAssertionBuilder
+             */
+            builder = defaultBuilder;
         }
-        /*
-         * if we can't locate an appropriate AssertionBuilder, we always use 
the
-         * XMLPrimitiveAssertionBuilder
-         */
-        builder = registeredBuilders.get(XML_ASSERTION_BUILDER);
         return invokeBuilder(element, builder);
     }
 

Modified: 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyEngine.java
 Wed Feb  9 15:46:11 2011
@@ -48,8 +48,8 @@ public class PolicyEngine {
 
     private static final Log log = LogFactory.getLog(PolicyEngine.class);
 
-    private static ConverterRegistry converters = new ConverterRegistry();
-    private static AssertionBuilderFactory factory = new 
AssertionBuilderFactory(converters);
+    private ConverterRegistry converters = new ConverterRegistry();
+    private AssertionBuilderFactory factory = new 
AssertionBuilderFactory(this, converters);
     
     /**
      * Registers an AssertionBuilder instances and associates it with a QName.
@@ -63,8 +63,8 @@ public class PolicyEngine {
      *            the AssertionBuilder that can build assertions that of 
'qname'
      *            type
      */
-    public static void registerBuilder(QName qname, AssertionBuilder builder) {
-        AssertionBuilderFactory.registerBuilder(qname, builder);
+    public void registerBuilder(QName qname, AssertionBuilder builder) {
+        factory.registerBuilder(qname, builder);
     }
 
     /**
@@ -74,7 +74,7 @@ public class PolicyEngine {
      *            the InputStream of the Policy
      * @return a Policy object of the Policy that is fed as a InputStream
      */
-    public static Policy getPolicy(InputStream inputStream) {
+    public Policy getPolicy(InputStream inputStream) {
         try {
             XMLStreamReader reader = 
XMLInputFactory.newInstance().createXMLStreamReader(inputStream);
             return getPolicy(reader);
@@ -85,12 +85,12 @@ public class PolicyEngine {
         // TODO throw an IllegalArgumentException
         return null;
     }
-    public static Policy getPolicy(Element el) {
+    public Policy getPolicy(Element el) {
         return getPolicyOperator(el);
     }
     
     
-    public static Policy getPolicy(XMLStreamReader reader) {
+    public Policy getPolicy(XMLStreamReader reader) {
         return getPolicyOperator(reader);
     }
     
@@ -102,7 +102,7 @@ public class PolicyEngine {
      *            the Policy element
      * @return a Policy object of the Policy element
      */
-    public static Policy getPolicy(Object element) {
+    public Policy getPolicy(Object element) {
         return getPolicyOperator(element);
     }
     
@@ -114,7 +114,7 @@ public class PolicyEngine {
      *            the InputStream of the PolicyReference
      * @return a PolicyReference object of the PolicyReference
      */
-    public static PolicyReference getPolicyReference(InputStream inputStream) {
+    public PolicyReference getPolicyReference(InputStream inputStream) {
         try {
             XMLStreamReader reader = 
XMLInputFactory.newInstance().createXMLStreamReader(inputStream);
             return getPolicyReference(reader);
@@ -133,7 +133,7 @@ public class PolicyEngine {
      *            the PolicyReference element
      * @return a PolicyReference object of the PolicyReference element
      */
-    public static PolicyReference getPolicyReference(Object element) {
+    public PolicyReference getPolicyReference(Object element) {
         QName qn = converters.findQName(element);
 
         if (!Constants.isPolicyRef(qn)) {
@@ -141,7 +141,7 @@ public class PolicyEngine {
                     "Specified element is not a <wsp:PolicyReference .. />  
element");
         }
 
-        PolicyReference reference = new PolicyReference();
+        PolicyReference reference = new PolicyReference(this);
 
         Map<QName, String> attrs = converters.getAttributes(element);
 
@@ -150,20 +150,20 @@ public class PolicyEngine {
         return reference;
     }
 
-    private static Policy getPolicyOperator(Object element) {
+    private Policy getPolicyOperator(Object element) {
         String ns = converters.findQName(element).getNamespaceURI();
         return (Policy) processOperationElement(element, new Policy(ns));
     }
 
-    private static ExactlyOne getExactlyOneOperator(Object element) {
+    private ExactlyOne getExactlyOneOperator(Object element) {
         return (ExactlyOne) processOperationElement(element, new ExactlyOne());
     }
 
-    private static All getAllOperator(Object element) {
+    private All getAllOperator(Object element) {
         return (All) processOperationElement(element, new All());
     }
 
-    private static PolicyOperator processOperationElement(Object 
operationElement,
+    private PolicyOperator processOperationElement(Object operationElement,
                                                           PolicyOperator 
operator) {
 
         if (Constants.TYPE_POLICY == operator.getType()) {

Modified: 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/PolicyReference.java
 Wed Feb  9 15:46:11 2011
@@ -39,7 +39,15 @@ import javax.xml.stream.XMLStreamWriter;
 public class PolicyReference implements PolicyComponent {
 
     private String uri;
+    private PolicyEngine engine;
 
+    public PolicyReference(){
+    }
+    
+    public PolicyReference(PolicyEngine p){
+        engine = p;
+    }
+    
     /**
      * Sets the Policy URI
      * @param uri the Policy URI
@@ -107,14 +115,12 @@ public class PolicyReference implements 
         Policy policy = reg.lookup(key);        
         
         if (policy == null) {
-               policy = getRemoteReferencedPolicy(key);
-               
-               if(policy == null){
-                       throw new RuntimeException(key + " can't be resolved" );
-               }
-               
-               reg.register(key, policy);
-            
+            policy = getRemoteReferencedPolicy(key);
+
+            if (policy == null){
+                throw new RuntimeException(key + " can't be resolved" );
+            }
+            reg.register(key, policy);
         }
         
         return policy.normalize(reg, deep);
@@ -136,7 +142,7 @@ public class PolicyReference implements 
         writer.writeEndElement();
     }
     
-    public Policy getRemoteReferencedPolicy(String uri){
+    public Policy getRemoteReferencedPolicy(String uri) {
        try {                                   
             //create java.net URL pointing to remote resource                  
            URL url = new URL(uri);
@@ -145,7 +151,11 @@ public class PolicyReference implements 
 
            InputStream in = connection.getInputStream();
            try {
-               return PolicyEngine.getPolicy(connection.getInputStream());
+               PolicyEngine pe = engine;
+               if (pe == null) {
+                   pe = new PolicyEngine();
+               }
+               return pe.getPolicy(connection.getInputStream());
            } finally {
                in.close();
            }

Modified: 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/xml/XMLPrimitiveAssertionBuilder.java
 Wed Feb  9 15:46:11 2011
@@ -55,7 +55,7 @@ public class XMLPrimitiveAssertionBuilde
                 
 
             
-                Policy policy = PolicyEngine.getPolicy(el);
+                Policy policy = factory.getPolicyEngine().getPolicy(el);
                 return new PolicyContainingAssertion(new 
QName(element.getNamespaceURI(), element.getLocalName()),
                                                  optional == null ? false : 
Boolean.parseBoolean(optional.getValue()),
                                                  ignorable == null ? false : 
Boolean.parseBoolean(ignorable.getValue()),

Modified: 
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java?rev=1068942&r1=1068941&r2=1068942&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/test/java/org/apache/neethi/PolicyTestCase.java
 Wed Feb  9 15:46:11 2011
@@ -48,6 +48,7 @@ public abstract class PolicyTestCase ext
     
     protected String baseDir = System.getProperty("basedir");
     protected String testResourceDir = "src" + File.separator + "test" + 
File.separator + "test-resources";
+    protected PolicyEngine policyEngine = new PolicyEngine();
     
     public PolicyTestCase(String name) {
         super(name);
@@ -62,13 +63,13 @@ public abstract class PolicyTestCase ext
     public Policy getPolicy(String name, int type) throws Exception {
         switch (type) {
         case 0:
-            return PolicyEngine.getPolicy(getResource(name));
+            return policyEngine.getPolicy(getResource(name));
         case 1:
-            return PolicyEngine.getPolicy(getResourceAsDOM(name));
+            return policyEngine.getPolicy(getResourceAsDOM(name));
         case 2:
-            return PolicyEngine.getPolicy(getResourceAsStax(name));
+            return policyEngine.getPolicy(getResourceAsStax(name));
         default:
-            return PolicyEngine.getPolicy(getResourceAsElement(name));
+            return policyEngine.getPolicy(getResourceAsElement(name));
         }
     }
     


Reply via email to