Author: bimargulies
Date: Tue Jan  6 12:41:56 2009
New Revision: 732106

URL: http://svn.apache.org/viewvc?rev=732106&view=rev
Log:
Make JDOM entirely optional in Aegis.

Modified:
    cxf/trunk/rt/databinding/aegis/pom.xml
    
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
    
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/ParameterMappingTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/WrappedTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/streams/XMLStreamReaderMappingTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/type/aegisOptionsTestBeans.xml

Modified: cxf/trunk/rt/databinding/aegis/pom.xml
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/pom.xml?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/pom.xml (original)
+++ cxf/trunk/rt/databinding/aegis/pom.xml Tue Jan  6 12:41:56 2009
@@ -82,6 +82,7 @@
             <groupId>jdom</groupId>
             <artifactId>jdom</artifactId>
             <version>${jdom.version}</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

Modified: 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
 Tue Jan  6 12:41:56 2009
@@ -92,6 +92,7 @@
     private TypeCreationOptions configuration;
     private boolean mtomEnabled;
     private boolean mtomUseXmime;
+    private boolean enableJDOMMappings;
     // this URI goes into the type map.
     private String mappingNamespaceURI;
 
@@ -140,7 +141,9 @@
         }
         if (typeMapping == null) {
             boolean defaultNillable = configuration.isDefaultNillable();
-            TypeMapping baseTM = 
DefaultTypeMapping.createDefaultTypeMapping(defaultNillable, mtomUseXmime);
+            TypeMapping baseTM = 
DefaultTypeMapping.createDefaultTypeMapping(defaultNillable, 
+                                                                             
mtomUseXmime, 
+                                                                             
enableJDOMMappings);
             // The use of the XSD URI in the mapping is, MAGIC.
             if (mappingNamespaceURI == null) {
                 mappingNamespaceURI = SOAPConstants.XSD;
@@ -461,4 +464,16 @@
     public void setMappingNamespaceURI(String mappingNamespaceURI) {
         this.mappingNamespaceURI = mappingNamespaceURI;
     }
+
+    public boolean isEnableJDOMMappings() {
+        return enableJDOMMappings;
+    }
+    
+    /**
+     * Whether to enable JDOM as a mapping for xsd:anyType if JDOM is in the 
classpath. 
+     * @param enableJDOMMappings
+     */
+    public void setEnableJDOMMappings(boolean enableJDOMMappings) {
+        this.enableJDOMMappings = enableJDOMMappings;
+    }
 }

Modified: 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java
 Tue Jan  6 12:41:56 2009
@@ -68,9 +68,9 @@
 import org.apache.cxf.aegis.type.xml.SourceType;
 import org.apache.cxf.aegis.type.xml.XMLStreamReaderType;
 import org.apache.cxf.binding.soap.Soap11;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.util.SOAPConstants;
 import org.apache.cxf.common.util.XMLSchemaQNames;
-import org.jdom.Element;
 
 /**
  * Contains type mappings for java/qname pairs.
@@ -224,7 +224,7 @@
     }
 
     private static void fillStandardMappings(TypeMapping tm, boolean 
defaultNillable, 
-                                             boolean enableMtomXmime) {
+                                             boolean enableMtomXmime, boolean 
enableJDOM) {
         defaultRegister(tm, defaultNillable, BigDecimal.class, 
XMLSchemaQNames.XSD_DECIMAL,
                         new BigDecimalType());
         defaultRegister(tm, defaultNillable, BigInteger.class, 
XMLSchemaQNames.XSD_INTEGER,
@@ -234,9 +234,6 @@
         defaultRegister(tm, defaultNillable, Calendar.class, 
XMLSchemaQNames.XSD_DATETIME,
                         new CalendarType());
         defaultRegister(tm, defaultNillable, Date.class, 
XMLSchemaQNames.XSD_DATETIME, new DateTimeType());
-        defaultRegister(tm, defaultNillable, Document.class, 
XMLSchemaQNames.XSD_ANY, new DocumentType());
-        defaultRegister(tm, defaultNillable, Element.class, 
XMLSchemaQNames.XSD_ANY,
-                        new JDOMElementType());
         defaultRegister(tm, defaultNillable, Float.class, 
XMLSchemaQNames.XSD_FLOAT, new FloatType());
         defaultRegister(tm, defaultNillable, Double.class, 
XMLSchemaQNames.XSD_DOUBLE, new DoubleType());
         defaultRegister(tm, defaultNillable, Integer.class, 
XMLSchemaQNames.XSD_INT, new IntType());
@@ -265,8 +262,6 @@
 
         defaultRegister(tm, defaultNillable, java.sql.Date.class, 
XMLSchemaQNames.XSD_DATETIME,
                         new SqlDateType());
-        defaultRegister(tm, defaultNillable, org.jdom.Document.class, 
XMLSchemaQNames.XSD_ANY,
-                        new JDOMDocumentType());
         
         QName mtomBase64 = XMLSchemaQNames.XSD_BASE64;
         if (enableMtomXmime) {
@@ -277,13 +272,56 @@
                         new DataSourceType(enableMtomXmime, null));
         defaultRegister(tm, defaultNillable, DataHandler.class, mtomBase64,
                         new DataHandlerType(enableMtomXmime, null));
+        
+
+        defaultRegister(tm, defaultNillable, Document.class, 
XMLSchemaQNames.XSD_ANY, new DocumentType());
+        if (enableJDOM) {
+            registerJDOMTypes(tm, defaultNillable);
+        }
+
+    }
+
+    private static void registerJDOMTypes(TypeMapping tm, boolean 
defaultNillable) {
+        try {
+            Class<?> jdomDocClass = 
ClassLoaderUtils.loadClass("org.jdom.Document", DefaultTypeMapping.class);
+            defaultRegister(tm, defaultNillable, jdomDocClass, 
XMLSchemaQNames.XSD_ANY,
+                            new JDOMDocumentType());
+
+        } catch (ClassNotFoundException e) {
+            // not available.
+        }
+        
+        try {
+            Class<?> jdomElementClass = 
+                ClassLoaderUtils.loadClass("org.jdom.Element", 
DefaultTypeMapping.class);
+            defaultRegister(tm, defaultNillable, jdomElementClass, 
XMLSchemaQNames.XSD_ANY,
+                                new JDOMElementType());
+        } catch (ClassNotFoundException e) {
+            // not available.
+        }
+    }
+
+    public static DefaultTypeMapping createSoap11TypeMapping(boolean 
defaultNillable, 
+     boolean enableMtomXmime) {
+        return createSoap11TypeMapping(
+                                       defaultNillable,
+                                       enableMtomXmime,
+                                       false);
     }
 
+    /**
+     * Create a type mapping object with a stock set of mappings, including 
the SOAP 1.1 'encoded'
+     * types.
+     * @param defaultNillable whether elements are nillable by default.
+     * @param enableMtomXmime whether to enable XMIME annotations with MTOM.
+     * @param enableJDOM whether to add mappings for JDOM.
+     * @return
+     */
     public static DefaultTypeMapping createSoap11TypeMapping(boolean 
defaultNillable, 
-                                                             boolean 
enableMtomXmime) {
+                                                             boolean 
enableMtomXmime, boolean enableJDOM) {
         // Create a Type Mapping for SOAP 1.1 Encoding
         DefaultTypeMapping soapTM = new 
DefaultTypeMapping(Soap11.SOAP_ENCODING_URI);
-        fillStandardMappings(soapTM, defaultNillable, enableMtomXmime);
+        fillStandardMappings(soapTM, defaultNillable, enableMtomXmime, 
enableJDOM);
 
         defaultRegister(soapTM, defaultNillable, boolean.class, 
Soap11.ENCODED_BOOLEAN, new BooleanType());
         defaultRegister(soapTM, defaultNillable, char.class, 
Soap11.ENCODED_CHAR, new CharacterType());
@@ -315,10 +353,26 @@
     }
 
     public static DefaultTypeMapping createDefaultTypeMapping(boolean 
defaultNillable, 
-                                                              boolean 
enableMtomXmime) {
+      boolean enableMtomXmime) {
+        return createDefaultTypeMapping(
+                                        defaultNillable,
+                                        enableMtomXmime,
+                                        false);
+    }
+
+    /**
+     * Create a set of default type mappings.
+     * @param defaultNillable whether elements are nillable by default.
+     * @param enableMtomXmime whether to enable XMIME annotations on MTOM.
+     * @param enableJDOM whether to map JDOM types.
+     * @return
+     */
+    public static DefaultTypeMapping createDefaultTypeMapping(boolean 
defaultNillable, 
+                                                              boolean 
enableMtomXmime, 
+                                                              boolean 
enableJDOM) {
         // by convention, the default mapping is against the XML schema URI.
         DefaultTypeMapping tm = new DefaultTypeMapping(SOAPConstants.XSD);
-        fillStandardMappings(tm, defaultNillable, enableMtomXmime);
+        fillStandardMappings(tm, defaultNillable, enableMtomXmime, enableJDOM);
         defaultRegister(tm, defaultNillable, Character.class, 
                         CharacterAsStringType.CHARACTER_AS_STRING_TYPE_QNAME,
                         new CharacterAsStringType());

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
 Tue Jan  6 12:41:56 2009
@@ -74,6 +74,7 @@
 
 public abstract class AbstractAegisTest extends AbstractCXFTest {
     protected LocalTransportFactory localTransport;
+    private boolean enableJDOM;
 
     @Before
     public void setUp() throws Exception {
@@ -205,7 +206,14 @@
     @SuppressWarnings("deprecation")
     protected void setupAegis(AbstractWSDLBasedEndpointFactory sf, 
AegisDatabinding binding) {
         if (binding == null) {
+            AegisContext context = new AegisContext();
+            if (enableJDOM) {
+                context.setEnableJDOMMappings(true);
+            }
             binding = new AegisDatabinding();
+            if (enableJDOM) { // this preserves pre-2.1 behavior.
+                binding.setAegisContext(context);
+            }
         }
         sf.getServiceFactory().getServiceConfigurations()
             .add(0, new 
org.apache.cxf.aegis.databinding.AegisServiceConfiguration());
@@ -312,5 +320,13 @@
         writer.close();
         return element;
     }
+
+    protected boolean isEnableJDOM() {
+        return enableJDOM;
+    }
+
+    protected void setEnableJDOM(boolean enableJDOM) {
+        this.enableJDOM = enableJDOM;
+    }
     
 }

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/ParameterMappingTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/ParameterMappingTest.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/ParameterMappingTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/ParameterMappingTest.java
 Tue Jan  6 12:41:56 2009
@@ -40,6 +40,7 @@
     @Before 
     public void setUp() throws Exception {
         super.setUp();
+        setEnableJDOM(true); // there are JDOM types in here.
         createService(AddNumbers.class, "AddNumbers", null);
         createService(ArrayService.class, "ArrayService", null);
     }

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/WrappedTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/WrappedTest.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/WrappedTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/WrappedTest.java
 Tue Jan  6 12:41:56 2009
@@ -41,6 +41,7 @@
     @Before 
     public void setUp() throws Exception {
         super.setUp();
+        setEnableJDOM(true);
         arrayService = new ArrayService();
         createService(BeanService.class, "BeanService");
         createService(ArrayService.class, arrayService, "Array", new 
QName("urn:Array", "Array"));

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/encoded/AbstractEncodedTest.java
 Tue Jan  6 12:41:56 2009
@@ -59,7 +59,7 @@
 
         AegisContext context = new AegisContext();
         // create a different mapping than the context creates.
-        TypeMapping baseMapping = 
DefaultTypeMapping.createSoap11TypeMapping(true, false);
+        TypeMapping baseMapping = 
DefaultTypeMapping.createSoap11TypeMapping(true, false, false);
         mapping = new DefaultTypeMapping(SOAPConstants.XSD, baseMapping);
         mapping.setTypeCreator(context.createTypeCreator());
         context.setTypeMapping(mapping);

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/streams/XMLStreamReaderMappingTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/streams/XMLStreamReaderMappingTest.java?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/streams/XMLStreamReaderMappingTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/streams/XMLStreamReaderMappingTest.java
 Tue Jan  6 12:41:56 2009
@@ -48,7 +48,7 @@
 
         context = new AegisContext();
         // create a different mapping than the context creates.
-        TypeMapping baseMapping = 
DefaultTypeMapping.createSoap11TypeMapping(true, false);
+        TypeMapping baseMapping = 
DefaultTypeMapping.createSoap11TypeMapping(true, false, false);
         mapping = new DefaultTypeMapping(SOAPConstants.XSD, baseMapping);
         mapping.register(XMLStreamReader.class, 
                          new QName("urn:Bean", "SimpleBean"), new 
XMLStreamReaderType());

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/type/aegisOptionsTestBeans.xml
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/type/aegisOptionsTestBeans.xml?rev=732106&r1=732105&r2=732106&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/type/aegisOptionsTestBeans.xml
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/type/aegisOptionsTestBeans.xml
 Tue Jan  6 12:41:56 2009
@@ -35,11 +35,17 @@
        <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" 
/>
 
         <bean id="aegisBean" 
class="org.apache.cxf.aegis.databinding.AegisDatabinding">
-                <property name="configuration">
-                        <bean 
class="org.apache.cxf.aegis.type.TypeCreationOptions">
-                        <property name="defaultMinOccurs" value="3"/>
-                        <property name="defaultNillable" value="false"/>
-                        </bean>
+                <property name="aegisContext">
+                       <bean class="org.apache.cxf.aegis.AegisContext">
+                       <!--  the test that uses this uses JDOM -->
+                               <property name="enableJDOMMappings" 
value="true"/>
+                               <property name="configuration">
+                               <bean 
class="org.apache.cxf.aegis.type.TypeCreationOptions">
+                                       <property name="defaultMinOccurs" 
value="3"/>
+                                       <property name="defaultNillable" 
value="false"/>
+                               </bean>
+                               </property>
+                       </bean>
                 </property>
         </bean>
            


Reply via email to