Author: dkulp
Date: Thu Mar 15 14:16:18 2012
New Revision: 1300991

URL: http://svn.apache.org/viewvc?rev=1300991&view=rev
Log:
Some minor optimizations to avoid some Class.forName calls when we know
axiom is not available.  Also allow for a shared ConverterRegistry to be
used.

Modified:
    
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactoryImpl.java
    
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/converters/ConverterRegistry.java

Modified: 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactoryImpl.java?rev=1300991&r1=1300990&r2=1300991&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactoryImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/AssertionBuilderFactoryImpl.java
 Thu Mar 15 14:16:18 2012
@@ -46,7 +46,14 @@ public class AssertionBuilderFactoryImpl
     protected PolicyBuilder engine;
     
     public AssertionBuilderFactoryImpl(PolicyBuilder eng) {
+        this(eng, new ConverterRegistry());
+    }
+    public AssertionBuilderFactoryImpl(PolicyBuilder eng, ConverterRegistry 
reg) {
         engine = eng;
+        if (reg == null) {
+            throw new IllegalArgumentException("ConverterRegistry must not be 
null");
+        }
+        converters = reg;
 
         for (AssertionBuilder<?> builder : 
Service.providers(AssertionBuilder.class)) {
             QName[] knownElements = builder.getKnownElements();

Modified: 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/converters/ConverterRegistry.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/converters/ConverterRegistry.java?rev=1300991&r1=1300990&r2=1300991&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/converters/ConverterRegistry.java
 (original)
+++ 
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/builders/converters/ConverterRegistry.java
 Thu Mar 15 14:16:18 2012
@@ -36,6 +36,17 @@ import javax.xml.namespace.QName;
  * from those format to/from OMElements.
  */
 public class ConverterRegistry {
+    private static final boolean HAS_AXIOM;
+    static {
+        boolean hasAxiom = true;
+        try {
+            Class.forName("org.apache.axiom.om.OMElement", true, 
Converter.class.getClassLoader());
+        } catch (Throwable e) {
+            hasAxiom = false;
+        }
+        HAS_AXIOM = hasAxiom;
+    }
+    
     private static class ConverterKey {
         Class<?> src;
         Class<?> target;
@@ -49,17 +60,22 @@ public class ConverterRegistry {
         // if the supplied element implements both the DOM and Axiom APIs.
         registerConverter(new DOMToDOMConverter());
         registerConverter(new StaxToStaxConverter());
-        
registerConverter("org.apache.neethi.builders.converters.OMToOMConverter");
+        if (HAS_AXIOM) {
+            //requires Axiom
+            
registerConverter("org.apache.neethi.builders.converters.OMToOMConverter");
+        }
         
         //built into JDK stuff, should have no problem
         registerConverter(new StaxToDOMConverter());
         registerConverter(new DOMToStaxConverter());
 
-        //requires Axiom, may have an issue
-        
registerConverter("org.apache.neethi.builders.converters.DOMToOMConverter");
-        
registerConverter("org.apache.neethi.builders.converters.OMToDOMConverter");
-        
registerConverter("org.apache.neethi.builders.converters.StaxToOMConverter");
-        
registerConverter("org.apache.neethi.builders.converters.OMToStaxConverter");
+        if (HAS_AXIOM) {
+            //requires Axiom
+            
registerConverter("org.apache.neethi.builders.converters.DOMToOMConverter");
+            
registerConverter("org.apache.neethi.builders.converters.OMToDOMConverter");
+            
registerConverter("org.apache.neethi.builders.converters.StaxToOMConverter");
+            
registerConverter("org.apache.neethi.builders.converters.OMToStaxConverter");
+        }
     }
 
     private void registerConverter(String name) {
@@ -70,7 +86,7 @@ public class ConverterRegistry {
         } catch (Throwable e) {
             //likely due to Axiom not available, we're OK with that.  There
             //won't be any builders registered that require Axiom if
-            //axiom isn't avilable anyway
+            //axiom isn't available anyway
         }
     }
     


Reply via email to