Ignore:
Timestamp:
08/26/10 16:27:13 (18 months ago)
Author:
jharrop
Message:

Ensure docx4j can be built using either ant or maven, with only one of the JAXB implementations (Java 6 or RI) required

Location:
trunk/docx4j/src/main/java/org/docx4j/jaxb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/jaxb/Context.java

    r1152 r1196  
    4949        Class c; 
    5050        try { 
    51                 c = Class.forName("com.sun.xml.bind.marshaller.NamespacePrefixMapper"); 
    52                 System.out.println("JAXB: Using RI (or recent Java 6?)"); 
    53                  
    54                 // 2010 07 13 recent versions of Java 6 seem to include 
    55                 // com.sun.xml.bind.marshaller.NamespacePrefixMapper, 
    56                 // so we can't be sure its the RI. 
     51                c = Class.forName("com.sun.xml.bind.marshaller.MinimumEscapeHandler"); 
     52                System.out.println("JAXB: Using RI"); 
    5753                 
    5854        } catch (ClassNotFoundException cnfe) { 
     
    6056                System.out.println("JAXB: RI not present.  Trying Java 6 implementation."); 
    6157                try { 
    62                                 c = Class.forName("com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper"); 
     58                                c = Class.forName("com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler"); 
    6359                        System.out.println("JAXB: Using Java 6 implementation."); 
    6460                        } catch (ClassNotFoundException e) { 
  • trunk/docx4j/src/main/java/org/docx4j/jaxb/NamespacePrefixMapperUtils.java

    r1184 r1196  
    88public class NamespacePrefixMapperUtils { 
    99         
    10         private static Logger log = Logger.getLogger(NamespacePrefixMapperUtils.class);                          
     10        private static Logger log = Logger.getLogger(NamespacePrefixMapperUtils.class);          
     11         
     12        /* 
     13         * As from 2010 08 26,   
     14         * both com.sun.xml.bind.marshaller.NamespacePrefixMapper 
     15         * and  com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper 
     16         * are provided in the jar JAXB-NamespacePrefixMapperInterfaces.jar 
     17         * so that people can build docx4j without needing both JAXB 
     18         * implementations. 
     19         *  
     20         * But if that jar is on their classpath, testing for either 
     21         * of these classes will always succeed. 
     22         *  
     23         * So, we have to test for something else.  The following will do: 
     24         *  
     25         * com.sun.xml.bind.marshaller.MinimumEscapeHandler 
     26         * com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler 
     27         */ 
    1128         
    1229         
     
    1532        Class c; 
    1633        try { 
    17                 c = Class.forName("com.sun.xml.bind.marshaller.NamespacePrefixMapper"); 
     34                c = Class.forName("com.sun.xml.bind.marshaller.MinimumEscapeHandler"); 
    1835                return new NamespacePrefixMapper();  // JAXB Reference Implementation  
    1936        } catch (ClassNotFoundException cnfe) { 
    2037                // JAXB Reference Implementation not present 
    2138                // Use Java 6 implementation 
    22                 log.info("JAXB RI (com.sun.xml.bind.marshaller.NamespacePrefixMapper) not present.  Trying Java 6 implementation."); 
     39                log.info("JAXB RI (com.sun.xml.bind.marshaller.MinimumEscapeHandler) not present.  Trying Java 6 implementation."); 
    2340                try { 
    24                                 c = Class.forName("com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper"); 
     41                                c = Class.forName("com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler"); 
    2542                        } catch (ClassNotFoundException e) { 
    2643                                e.printStackTrace(); 
     
    3754        Class c; 
    3855        try { 
    39                 c = Class.forName("com.sun.xml.bind.marshaller.NamespacePrefixMapper"); 
     56                c = Class.forName("com.sun.xml.bind.marshaller.MinimumEscapeHandler"); 
    4057                return new NamespacePrefixMapperRelationshipsPart(); 
    4158        } catch (ClassNotFoundException cnfe) { 
    4259                // JAXB Reference Implementation not present 
    43                 log.info("JAXB RI (com.sun.xml.bind.marshaller.NamespacePrefixMapper) not present.  Trying Java 6 implementation."); 
     60                log.info("JAXB RI (com.sun.xml.bind.marshaller.MinimumEscapeHandler) not present.  Trying Java 6 implementation."); 
    4461                try { 
    45                                 c = Class.forName("com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper"); 
     62                                c = Class.forName("com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler"); 
    4663                        } catch (ClassNotFoundException e) { 
    4764                                e.printStackTrace(); 
Note: See TracChangeset for help on using the changeset viewer.