Changeset 1004


Ignore:
Timestamp:
01/10/10 05:15:02 (2 years ago)
Author:
jharrop
Message:

Remove dom4j stuff

Location:
trunk/docx4j
Files:
8 added
2 deleted
24 edited

Legend:

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

    r869 r1004  
    2323 
    2424import java.io.IOException; 
    25 import java.io.InputStream; 
    26 import java.io.OutputStream; 
    27 import java.io.ByteArrayOutputStream; 
    2825import java.io.OutputStreamWriter; 
    29 import java.io.StringWriter; 
    3026import java.io.Writer; 
    31 import java.util.Iterator; 
    32 import java.util.Map; 
    3327 
    3428import javax.xml.bind.JAXBContext; 
    35 import javax.xml.bind.JAXBElement; 
    36 import javax.xml.bind.JAXBException; 
    3729import javax.xml.bind.Marshaller; 
    38 import javax.xml.bind.Unmarshaller; 
    39 import javax.xml.parsers.DocumentBuilderFactory; 
    40 import javax.xml.parsers.ParserConfigurationException; 
    41  
    42 import javax.xml.transform.ErrorListener; 
    43 import javax.xml.transform.Templates; 
    44 import javax.xml.transform.Transformer; 
    45 import javax.xml.transform.TransformerConfigurationException; 
    46 import javax.xml.transform.TransformerException; 
    47 import javax.xml.transform.dom.DOMSource; 
    48 import javax.xml.transform.stream.StreamResult; 
    49 import javax.xml.transform.stream.StreamSource; 
    5030 
    5131import org.apache.log4j.Logger; 
    52 import org.apache.xml.dtm.ref.DTMNodeProxy; 
    5332import org.docx4j.jaxb.Context; 
    5433import org.docx4j.jaxb.NamespacePrefixMapperUtils; 
    55 import org.docx4j.openpackaging.exceptions.Docx4JException; 
    5634import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
    5735import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
    58  
    59 import org.dom4j.DocumentException; 
    60 import org.dom4j.Element; 
    61 import org.dom4j.io.DOMWriter; 
    62 import org.dom4j.io.OutputFormat; 
    63 import org.dom4j.io.XMLWriter; 
    64 import org.w3c.dom.Attr; 
    65 import org.w3c.dom.Document; 
    66 import org.w3c.dom.DocumentFragment; 
    67 import org.w3c.dom.NamedNodeMap; 
    68 import org.w3c.dom.Node; 
    69 import org.w3c.dom.NodeList; 
    70 import org.xml.sax.Attributes; 
    71 import org.xml.sax.ContentHandler; 
    72 import org.xml.sax.Locator; 
    7336import org.xml.sax.SAXException; 
    7437import org.xml.sax.helpers.DefaultHandler; 
  • trunk/docx4j/src/main/java/org/docx4j/XmlUtils.java

    r999 r1004  
    5858import org.docx4j.openpackaging.exceptions.Docx4JException; 
    5959 
    60 import org.dom4j.DocumentException; 
    61 import org.dom4j.Element; 
    62 import org.dom4j.io.DOMWriter; 
    63 import org.dom4j.io.OutputFormat; 
    64 import org.dom4j.io.XMLWriter; 
    6560import org.w3c.dom.Attr; 
    6661import org.w3c.dom.Document; 
     
    7469        private static Logger log = Logger.getLogger(XmlUtils.class);    
    7570                 
    76         /** Make a dom4j element into something JAXB can unmarshall */ 
    77         @Deprecated 
    78         private static java.io.InputStream getInputStreamFromDom4jEl(Element el) { 
    79                  
    80                 // Write it to an output stream 
    81                 java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream(); 
    82         OutputFormat format = OutputFormat.createPrettyPrint(); 
    83             try { 
    84                     XMLWriter xmlWriter = new XMLWriter( out, format ); 
    85                     xmlWriter.write(el); 
    86                     xmlWriter.flush(); 
    87             } catch (IOException e) { 
    88                         e.printStackTrace(); 
    89                         return null; 
    90                 }            
    91                  
    92             byte[] bytes = out.toByteArray(); 
    93              
    94                 // Now return an input stream 
    95             return new java.io.ByteArrayInputStream(bytes); 
    96                  
    97         } 
    9871         
    9972        public static String TRANSFORMER_FACTORY_ORIGINAL; 
     
    181154        } 
    182155 
    183         /** Unmarshal a Dom4j element as JAXB object using  JAXBContext Context.jc */  
    184         @Deprecated 
    185         public static Object unmarshalDom4jDoc(org.dom4j.Document doc) { 
    186                                  
    187                 JAXBContext jc = Context.jc; 
    188                          
    189                 Object o = null; 
    190                 try {                            
    191                     org.dom4j.io.DOMWriter writer = new org.dom4j.io.DOMWriter(); 
    192                         org.w3c.dom.Document w3cDoc = writer.write(doc); 
    193  
    194 //                      JAXBContext jc = JAXBContext 
    195 //                                      .newInstance("org.docx4j.jaxb.document"); 
    196                         Unmarshaller u = jc.createUnmarshaller(); 
    197                         u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 
    198  
    199                         o = u.unmarshal( w3cDoc ); 
    200  
    201                         System.out.println("unmarshalled "); 
    202  
    203                 } catch (Exception ex) { 
    204                         ex.printStackTrace(); 
    205                 }                
    206                 return o; 
    207         } 
    208          
    209         /** Unmarshal a Dom4j element as an object in the package org.docx4j.jaxb.document. 
    210          *  
    211          *  Since most of our types don't have an XmlRootElement, here we use 
    212          *  the version of the unmarshal method that takes the 'expectedType' argument. 
    213          *  See https://jaxb.dev.java.net/guide/_XmlRootElement_and_unmarshalling.html   
    214          *   
    215          *  */  
    216         @Deprecated 
    217         public static  <T> JAXBElement<T> unmarshalDom4jEl(Element el, Class<T> declaredType) { 
    218                  
    219                 JAXBElement<T> o = null; 
    220                 //Object o = null; 
    221                 try {    
    222  
    223                         JAXBContext jc = Context.jc; 
    224  
    225                         Unmarshaller u = jc.createUnmarshaller(); 
    226                                                  
    227                         //u.setSchema(null); 
    228                         //u.setValidating( false ); 
    229                          
    230                         u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 
    231  
    232 //                      // Convert dom4j el to W3C 
    233 //                      org.dom4j.io.DOMWriter writer = new org.dom4j.io.DOMWriter(); 
    234 //                      org.w3c.dom.Document w3cDoc = writer.write(el);  // Only takes Document objects :( 
    235                                                  
    236                         o = u.unmarshal(new StreamSource(org.docx4j.XmlUtils.getInputStreamFromDom4jEl(el)), declaredType); 
    237  
    238                         System.out.println("unmarshalled "); 
    239  
    240                 } catch (Exception ex) { 
    241                         ex.printStackTrace(); 
    242                 }                
    243                 return o; 
    244         } 
     156         
    245157 
    246158        /** Unmarshal an InputStream as an object in the package org.docx4j.jaxb.document. 
     
    287199        } 
    288200         
    289         /** Marshal to a Dom4j document */  
    290         @Deprecated 
    291         public static org.dom4j.Document marshaltoDom4jDocument(Object o) { 
    292                 // TODO - refactor this. 
    293                 try { 
    294                         JAXBContext jc = Context.jc; 
    295  
    296                         Marshaller marshaller=jc.createMarshaller(); 
    297                          
    298                         javax.xml.parsers.DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    299                         dbf.setNamespaceAware(true); 
    300                         org.w3c.dom.Document doc = dbf.newDocumentBuilder().newDocument(); 
    301                         NamespacePrefixMapperUtils.setProperty(marshaller,  
    302                                         NamespacePrefixMapperUtils.getPrefixMapper());                   
    303                         marshaller.marshal(o, doc); 
    304                          
    305                         // Now convert the W3C document to a dom4j document 
    306                         org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader(); 
    307                          
    308                         /*  Should be able to do .. 
    309                          *  
    310                          *  dom4j has DocumentResult that extends Result, so you can do: 
    311  
    312                                 DocumentResult dr = new DocumentResult(); 
    313                                 marshaller.marshal( object, dr ); 
    314                                 o = dr.getDocument(); 
    315  
    316                          *  
    317                          *  
    318                          */ 
    319                     return xmlReader.read(doc); 
    320                 } catch (JAXBException e) { 
    321                         // TODO Auto-generated catch block 
    322                         e.printStackTrace(); 
    323                 } catch (ParserConfigurationException e) { 
    324                         // TODO Auto-generated catch block 
    325                         e.printStackTrace(); 
    326                 } 
    327                 return null;                             
    328         } 
    329201 
    330202        /** Marshal to a String */  
  • trunk/docx4j/src/main/java/org/docx4j/jaxb/Context.java

    r973 r1004  
    3636        public static JAXBContext jcRelationships; 
    3737        public static JAXBContext jcCustomXmlProperties; 
     38        public static JAXBContext jcContentTypes; 
    3839         
    3940        private static Logger log = Logger.getLogger(Context.class); 
     
    7374                        jcRelationships = JAXBContext.newInstance("org.docx4j.relationships",classLoader ); 
    7475                        jcCustomXmlProperties = JAXBContext.newInstance("org.docx4j.customXmlProperties",classLoader ); 
     76                        jcContentTypes = JAXBContext.newInstance("org.docx4j.openpackaging.contenttype",classLoader ); 
    7577                         
    7678                } catch (Exception ex) { 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/Base.java

    r954 r1004  
    2424 
    2525import org.apache.log4j.Logger; 
     26import org.docx4j.openpackaging.contenttype.CTDefault; 
    2627import org.docx4j.openpackaging.contenttype.ContentType; 
     28import org.docx4j.openpackaging.contenttype.ObjectFactory; 
    2729import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    2830import org.docx4j.openpackaging.packages.Package; 
     
    181183                         
    182184                        // Make sure content manager knows how to handle .rels 
     185                        ObjectFactory factory = new ObjectFactory(); 
     186                        CTDefault relsCT = factory.createCTDefault(); 
     187                        relsCT.setExtension("rels"); 
     188                        relsCT.setContentType(org.docx4j.openpackaging.contenttype.ContentTypes.RELATIONSHIPS_PART); 
     189                         
    183190                        getPackage().getContentTypeManager().addDefaultContentType("rels",  
    184                                         org.docx4j.openpackaging.contenttype.ContentTypes.RELATIONSHIPS_PART); 
     191                                        relsCT); 
    185192                } 
    186193                 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/contenttype/ContentTypeManager.java

    r954 r1004  
    6060import java.util.zip.ZipOutputStream; 
    6161 
     62import javax.xml.bind.JAXBElement; 
     63import javax.xml.bind.JAXBException; 
     64import javax.xml.bind.Marshaller; 
     65import javax.xml.bind.Unmarshaller; 
     66 
    6267import org.apache.log4j.Logger; 
     68import org.docx4j.jaxb.Context; 
     69import org.docx4j.jaxb.NamespacePrefixMapperUtils; 
    6370import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    6471import org.docx4j.openpackaging.exceptions.PartUnrecognisedException; 
     
    6774import org.docx4j.openpackaging.parts.*; 
    6875import org.docx4j.openpackaging.parts.WordprocessingML.*; 
    69 import org.dom4j.Document; 
    70 import org.dom4j.DocumentException; 
    71 import org.dom4j.DocumentHelper; 
    72 import org.dom4j.Element; 
    73 import org.dom4j.Namespace; 
    74 import org.dom4j.QName; 
    75 import org.dom4j.io.SAXReader; 
    7676 
    7777 
     
    115115         * Default content type tree. <Extension, ContentType> 
    116116         */ 
    117         private TreeMap<String, String> defaultContentType; 
     117        private TreeMap<String, CTDefault> defaultContentType; 
    118118 
    119119        /** 
    120120         * Override content type tree. 
    121121         */ 
    122         private TreeMap<URI, String> overrideContentType; 
    123  
    124         /** 
    125          * Constructor. Parses the content of the specified input stream. 
    126          *  
    127          * @param archive 
    128          *            If different of <i>null</i> then the content types part is 
    129          *            retrieve and parse. 
    130          * @throws InvalidFormatException 
    131          *             If the content types part content is not valid. 
    132          */ 
    133         public ContentTypeManager(Document contentTypes) throws InvalidFormatException { 
    134                 init(); 
    135                 if (contentTypes != null) { 
    136                         try { 
    137                                 parseContentTypesFile(contentTypes); 
    138                         } catch (InvalidFormatException e) { 
    139                                 throw new InvalidFormatException( 
    140                                                 "Can't read content types part !"); 
    141                         } 
    142                 } else { 
    143                         log.warn("Passed null content types ?!"); 
    144                 } 
    145         } 
     122        private TreeMap<URI, CTOverride> overrideContentType; 
     123         
     124        private static ObjectFactory ctFactory = new ObjectFactory(); 
    146125 
    147126        public ContentTypeManager()  { 
     
    150129         
    151130        private void init() { 
    152                 defaultContentType = new TreeMap<String, String>(); 
    153                 overrideContentType = new TreeMap<URI, String>(); 
    154         } 
    155  
    156         /** 
    157          * Build association extention-> content type (will be stored in 
    158          * [Content_Types].xml) for example ContentType="image/png" Extension="png" 
    159          *  
    160          * @param partUri 
    161          *            the uri that will be stored 
    162          * @return <b>false</b> if an error occured. 
    163          */ 
    164         public void addContentType(PartName partName, String contentType) { 
    165                 boolean defaultCTExists = false; 
    166                 String extension = partName.getExtension(); 
    167                 if ((extension.length() == 0) 
    168                                 || (this.defaultContentType.containsKey(extension)  
    169                                                 && !(defaultCTExists = this.defaultContentType.containsValue(contentType)))) { 
    170                         this.addOverrideContentType(partName.getURI(), contentType); 
    171                 } else if (!defaultCTExists) { 
    172                         this.addDefaultContentType(extension, contentType); 
    173                 } 
    174         } 
     131                defaultContentType = new TreeMap<String, CTDefault>(); 
     132                overrideContentType = new TreeMap<URI, CTOverride>(); 
     133        } 
     134 
     135//      /** 
     136//       * Build association extention-> content type (will be stored in 
     137//       * [Content_Types].xml) for example ContentType="image/png" Extension="png" 
     138//       *  
     139//       * @param partUri 
     140//       *            the uri that will be stored 
     141//       * @return <b>false</b> if an error occured. 
     142//       */ 
     143//      public void addContentType(PartName partName, String contentType) { 
     144//              boolean defaultCTExists = false; 
     145//              String extension = partName.getExtension(); 
     146//              if ((extension.length() == 0) 
     147//                              || (this.defaultContentType.containsKey(extension)  
     148//                                              && !(defaultCTExists = this.defaultContentType.containsValue(contentType)))) { 
     149//                      this.addOverrideContentType(partName.getURI(), contentType); 
     150//              } else if (!defaultCTExists) { 
     151//                      this.addDefaultContentType(extension, contentType); 
     152//              } 
     153//      } 
    175154 
    176155        /** 
     
    182161         *            Content type of the part. 
    183162         */ 
    184         public void addOverrideContentType(URI partUri, String contentType) { 
     163        public void addOverrideContentType(URI partUri, CTOverride contentType) { 
    185164                log.info("Registered " + partUri.toString() ); 
    186165                overrideContentType.put(partUri, contentType); 
     166        } 
     167         
     168        public void addOverrideContentType(URI partUri, String contentType) { 
     169 
     170                CTOverride overrideCT = ctFactory.createCTOverride(); 
     171                overrideCT.setPartName( partUri.toASCIIString() ); 
     172                overrideCT.setContentType(contentType ); 
     173                 
     174                overrideContentType.put(partUri, overrideCT); 
     175                 
    187176        } 
    188177 
     
    205194                        if (e != null) { 
    206195                                log.debug("Inspecting " + e.getValue()); 
    207                                 if ( ((String)e.getValue()).equals(contentType) ) { 
     196                                if ( ((CTOverride)e.getValue()).getContentType().equals(contentType) ) { 
    208197                                        log.debug("Matched!"); 
    209198                                        return (URI)e.getKey();  
     
    222211 
    223212                // look for an override 
    224                 String contentType = (String)overrideContentType.get(new URI(partName)); 
    225                 if (contentType!=null ) { 
     213                CTOverride overrideCT = (CTOverride) overrideContentType.get(new URI(partName)); 
     214                if (overrideCT!=null ) { 
     215                        String contentType = overrideCT.getContentType();  
    226216                        log.debug("Found content type '" + contentType + "' for " + partName); 
    227217                         p = newPartForContentType(contentType, partName); 
     
    233223                String ext = partName.substring(partName.indexOf(".") + 1); 
    234224                log.info("Looking at extension '" + ext); 
    235                 contentType = (String)defaultContentType.get(ext); 
    236                 if (contentType!=null ) { 
     225                CTDefault defaultCT = (CTDefault)defaultContentType.get(ext); 
     226                if (defaultCT!=null ) { 
     227                        String contentType = defaultCT.getContentType(); 
    237228                        log.info("Found content type '" + contentType + "' for " 
    238229                                                        + partName); 
     
    442433         *            The content type associated with the specified extension. 
    443434         */ 
    444         public void addDefaultContentType(String extension, String contentType) { 
     435        public void addDefaultContentType(String extension, CTDefault contentType) { 
    445436                log.debug("Registered " + extension ); 
    446437                defaultContentType.put(extension, contentType); 
    447438        } 
     439         
     440        public void addDefaultContentType(String extension, String contentType) { 
     441                 
     442                CTDefault defaultCT = ctFactory.createCTDefault(); 
     443                defaultCT.setExtension("extension"); 
     444                defaultCT.setContentType(contentType); 
     445                 
     446                log.debug("Registered " + extension ); 
     447                defaultContentType.put(extension, defaultCT); 
     448        } 
     449         
    448450 
    449451        /** 
     
    506508                if ((this.overrideContentType != null) 
    507509                                && this.overrideContentType.containsKey(partName.getURI())) 
    508                         return this.overrideContentType.get(partName.getURI()); 
     510                        return this.overrideContentType.get(partName.getURI()).getContentType(); 
    509511 
    510512                String extension = partName.getExtension(); 
    511513                if (this.defaultContentType.containsKey(extension)) 
    512                         return this.defaultContentType.get(extension); 
     514                        return this.defaultContentType.get(extension).getContentType(); 
    513515 
    514516                return null; 
     
    533535        } 
    534536 
    535         /** 
    536          * Parse the content types part. 
    537          *  
    538          * @throws InvalidFormatException 
    539          *             Throws if the content type doesn't exist or the XML format is 
    540          *             invalid. 
    541          */ 
    542         public void parseContentTypesFile(Document xmlContentTypeDoc) 
    543                         throws InvalidFormatException { 
    544                 //log.info("parseContentTypesFile"); 
     537         
     538        public void parseContentTypesFile(InputStream contentTypes)  
     539                throws InvalidFormatException { 
     540                 
     541                CTTypes types; 
     542                 
    545543                try { 
    546  
    547                         // Default content types 
    548                         List defaultTypes = xmlContentTypeDoc.getRootElement().elements( 
    549                                         DEFAULT_TAG_NAME); 
    550                         Iterator elementIteratorDefault = defaultTypes.iterator(); 
    551                         while (elementIteratorDefault.hasNext()) { 
    552                                 Element element = (Element) elementIteratorDefault.next(); 
    553                                 String extension = element.attribute(EXTENSION_ATTRIBUTE_NAME) 
    554                                                 .getValue(); 
    555                                 //log.info("found " + DEFAULT_TAG_NAME + extension); 
    556                                 String contentType = element.attribute( 
    557                                                 CONTENT_TYPE_ATTRIBUTE_NAME).getValue(); 
    558                                 addDefaultContentType(extension, contentType); 
     544                                     
     545                        Unmarshaller u = Context.jcContentTypes.createUnmarshaller(); 
     546                         
     547                        //u.setSchema(org.docx4j.jaxb.WmlSchema.schema); 
     548                        u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 
     549 
     550                        log.debug("unmarshalling " + this.getClass().getName() );                
     551                         
     552                        Object res = u.unmarshal( contentTypes ); 
     553                        types = (CTTypes)((JAXBElement)res).getValue();                          
     554                        log.debug( types.getClass().getName() + " unmarshalled" );                                                                       
     555 
     556                        CTDefault defaultCT; 
     557                        CTOverride overrideCT; 
     558                        for(Object o : types.getDefaultOrOverride() ) { 
     559                                 
     560                                if (o instanceof CTDefault) { 
     561                                        defaultCT = (CTDefault)o; 
     562                                        addDefaultContentType( defaultCT.getExtension(), defaultCT  ); 
     563                                } 
     564                                 
     565                                if (o instanceof CTOverride) { 
     566                                        overrideCT = (CTOverride)o; 
     567                                        URI uri = new URI(overrideCT.getPartName() ); 
     568                                        addOverrideContentType(uri, overrideCT ); 
     569                                } 
    559570                        } 
    560  
    561                         // Overriden content types 
    562                         List overrideTypes = xmlContentTypeDoc.getRootElement().elements( 
    563                                         OVERRIDE_TAG_NAME); 
    564                         Iterator elementIteratorOverride = overrideTypes.iterator(); 
    565                         while (elementIteratorOverride.hasNext()) { 
    566                                 Element element = (Element) elementIteratorOverride.next(); 
    567                                 URI uri = new URI(element.attribute(PART_NAME_ATTRIBUTE_NAME) 
    568                                                 .getValue()); 
    569                                 String contentType = element.attribute( 
    570                                                 CONTENT_TYPE_ATTRIBUTE_NAME).getValue(); 
    571                                 addOverrideContentType(uri, contentType); 
     571                         
     572                } catch (Exception e ) { 
     573                        log.error(e); 
     574                        throw new InvalidFormatException("Bad [Content_Types].xml", e); 
     575                } 
     576                 
     577                 
     578        } 
     579 
     580        private CTTypes buildTypes() { 
     581                 
     582                // Build the JAXB object 
     583                ObjectFactory factory = new ObjectFactory(); 
     584                CTTypes types = factory.createCTTypes(); 
     585 
     586                for (Entry<String, CTDefault> entry : defaultContentType.entrySet()) { 
     587                        types.getDefaultOrOverride().add(entry.getValue()); 
     588                } 
     589 
     590                if (overrideContentType != null) { 
     591                        for (Entry<URI, CTOverride> entry : overrideContentType.entrySet()) { 
     592                                types.getDefaultOrOverride().add(entry.getValue()); 
    572593                        } 
    573                 } catch (URISyntaxException urie) { 
    574                         throw new InvalidFormatException(urie.getMessage()); 
    575                 } 
    576         } 
    577  
    578         /** 
    579          * Generates the XML for the contents type part. 
    580          *  
    581          * @param outStream 
    582          *            The output stream use to save the XML content of the content 
    583          *            types part. 
    584          * @return <b>true</b> if the operation success, else <b>false</b>. 
    585          */ 
    586         public Document getDocument() { 
    587                 Document xmlOutDoc = DocumentHelper.createDocument(); 
    588  
    589                 // Building namespace 
    590                 Namespace dfNs = Namespace.get("", TYPES_NAMESPACE_URI); 
    591                 Element typesElem = xmlOutDoc 
    592                                 .addElement(new QName(TYPES_TAG_NAME, dfNs)); 
    593  
    594                 // Adding default types 
    595                 for (Entry<String, String> entry : defaultContentType.entrySet()) { 
    596                         appendDefaultType(typesElem, entry); 
    597                 } 
    598  
    599                 // Adding specific types if any exist 
    600                 if (overrideContentType != null) { 
    601                         for (Entry<URI, String> entry : overrideContentType.entrySet()) { 
    602                                 appendSpecificTypes(typesElem, entry); 
    603                         } 
    604                 } 
    605                 xmlOutDoc.normalize(); 
    606  
    607                 return xmlOutDoc; 
    608         } 
    609  
    610         /** 
    611          * Use to append specific type XML elements, use by the save() method. 
    612          *  
    613          * @param root 
    614          *            XML parent element use to append this override type element. 
    615          * @param entry 
    616          *            The values to append. 
    617          * @see #save(ZipOutputStream) 
    618          */ 
    619         private void appendSpecificTypes(Element root, Entry<URI, String> entry) { 
    620                 root.addElement(OVERRIDE_TAG_NAME).addAttribute( 
    621                                 PART_NAME_ATTRIBUTE_NAME, ((URI) entry.getKey()).getPath()) 
    622                                 .addAttribute(CONTENT_TYPE_ATTRIBUTE_NAME, 
    623                                                 (String) entry.getValue()); 
    624         } 
    625  
    626         /** 
    627          * Use to append default types XML elements, use by the save() metid. 
    628          *  
    629          * @param root 
    630          *            XML parent element use to append this default type element. 
    631          * @param entry 
    632          *            The values to append. 
    633          * @see #save(ZipOutputStream) 
    634          */ 
    635         private void appendDefaultType(Element root, Entry<String, String> entry) { 
    636                 root.addElement(DEFAULT_TAG_NAME).addAttribute( 
    637                                 EXTENSION_ATTRIBUTE_NAME, (String) entry.getKey()) 
    638                                 .addAttribute(CONTENT_TYPE_ATTRIBUTE_NAME, 
    639                                                 (String) entry.getValue()); 
    640  
    641         } 
     594                }        
     595                return types; 
     596        } 
     597         
     598    public void marshal(org.w3c.dom.Node node) throws JAXBException { 
     599                 
     600                try { 
     601                        Marshaller marshaller = Context.jcContentTypes.createMarshaller(); 
     602                         
     603                        NamespacePrefixMapperUtils.setProperty(marshaller,  
     604                                        NamespacePrefixMapperUtils.getPrefixMapper() ); 
     605                         
     606                        log.debug("marshalling " + this.getClass().getName() + " ..." );                                                                         
     607                         
     608                        marshaller.marshal(buildTypes(), node); 
     609                         
     610                        log.info("content types marshalled \n\n" );                                                                      
     611 
     612                } catch (JAXBException e) { 
     613                        //e.printStackTrace(); 
     614                        log.error(e); 
     615                        throw e; 
     616                } 
     617    } 
     618     
     619    public void marshal(java.io.OutputStream os) throws JAXBException { 
     620                 
     621                try { 
     622                        Marshaller marshaller = Context.jcContentTypes.createMarshaller(); 
     623                         
     624                        NamespacePrefixMapperUtils.setProperty(marshaller,  
     625                                        NamespacePrefixMapperUtils.getPrefixMapper() ); 
     626                         
     627                        log.debug("marshalling " + this.getClass().getName() + " ..." );                                                                         
     628                         
     629                        marshaller.marshal(buildTypes(), os); 
     630                         
     631                        log.info("content types marshalled \n\n" );                                                                      
     632 
     633                } catch (JAXBException e) { 
     634                        //e.printStackTrace(); 
     635                        log.error(e); 
     636                        throw e; 
     637                } 
     638        } 
     639 
     640         
    642641 
    643642        /* Return a package of the appropriate type.  Used when loading an existing 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/exceptions/InvalidFormatException.java

    r9 r1004  
    3535                super(message); 
    3636        } 
     37         
     38        public InvalidFormatException(String msg, Exception e) { 
     39                super(msg, e); 
     40        } 
     41 
     42        public InvalidFormatException(String msg, Throwable t) { 
     43                super(msg, t); 
     44        } 
     45         
    3746} 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/Load.java

    r1003 r1004  
    5151import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    5252import org.docx4j.relationships.Relationship; 
    53 import org.dom4j.Document; 
    54 import org.dom4j.io.OutputFormat; 
    55 import org.dom4j.io.XMLWriter; 
    5653 
    5754 
     
    107104        } 
    108105         
    109         protected static void debugPrint( Document coreDoc) { 
    110                 try { 
    111                         OutputFormat format = OutputFormat.createPrettyPrint(); 
    112                          
    113                         StringWriter sWriter = new StringWriter();                                                               
    114                     XMLWriter xmlWriter = new XMLWriter( sWriter, format ); 
    115                     xmlWriter.write( coreDoc ); 
    116                     log.warn(sWriter.toString() );                       
    117                 } catch (Exception e ) { 
    118                         e.printStackTrace(); 
    119                 }            
    120         } 
    121106         
    122107        /** 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/LoadFromJCR.java

    r1003 r1004  
    2626import java.net.URISyntaxException; 
    2727 
    28 import java.util.HashMap; 
    29 import java.util.Iterator; 
    30  
    3128import javax.jcr.Node; 
    32 import javax.jcr.NodeIterator; 
     29import javax.jcr.PathNotFoundException; 
    3330import javax.jcr.Property; 
    34 import javax.jcr.Repository; 
     31import javax.jcr.RepositoryException; 
    3532import javax.jcr.Session; 
    36 import javax.jcr.SimpleCredentials; 
    37 import javax.jcr.ValueFormatException; 
    38  
    39 import javax.jcr.PathNotFoundException; 
    40 import javax.jcr.RepositoryException; 
    41  
    42 import javax.xml.bind.JAXBContext; 
    43  
    44 //import org.apache.jackrabbit.core.TransientRepository; 
    4533 
    4634import org.apache.log4j.Logger; 
    47  
    4835import org.docx4j.JcrNodeMapper.NodeMapper; 
    4936import org.docx4j.jaxb.Context; 
    5037import org.docx4j.model.datastorage.CustomXmlDataStorage; 
     38import org.docx4j.openpackaging.Base; 
    5139import org.docx4j.openpackaging.URIHelper; 
    5240import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
     41import org.docx4j.openpackaging.exceptions.Docx4JException; 
    5342import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    54 import org.docx4j.openpackaging.Base; 
     43import org.docx4j.openpackaging.exceptions.PartUnrecognisedException; 
    5544import org.docx4j.openpackaging.packages.Package; 
    5645import org.docx4j.openpackaging.parts.DefaultXmlPart; 
     
    6049import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    6150import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
    62 import org.docx4j.relationships.Relationships; 
    6351import org.docx4j.relationships.Relationship; 
    64  
    65 import org.docx4j.openpackaging.exceptions.Docx4JException; 
    66 import org.docx4j.openpackaging.exceptions.PartUnrecognisedException; 
    67  
    68 // Aim to remove dependency on any XML API from  
    69 // this package. 
    70 import org.dom4j.Document; 
    71 import org.dom4j.DocumentException; 
    72 import org.dom4j.io.SAXReader; 
    7352 
    7453 
     
    242221                                        docxContentNode, "[Content_Types].xml"); 
    243222 
    244                         // Document ctmDocument = 
    245                         // deprecatedGetDocumentFromJCRPart(jcrSession, nodeMapper, 
    246                         // contentTypesPartNode); 
    247                         InputStream in = getInputStreamFromJCRPart(nodeMapper, 
     223                        InputStream is = getInputStreamFromJCRPart(nodeMapper, 
    248224                                        contentTypesPartNode); 
    249                         SAXReader xmlReader = new SAXReader(); 
    250                         Document ctmDocument = null; 
    251                         try { 
    252                                 ctmDocument = xmlReader.read(in); 
    253                                 debugPrint(ctmDocument); 
    254                         } catch (DocumentException e) { 
    255                                 e.printStackTrace(); 
    256                                 throw e; 
    257                         } 
    258  
    259                         ctm.parseContentTypesFile(ctmDocument); 
     225                         
     226                        ctm.parseContentTypesFile(is); 
    260227 
    261228                } catch (Exception e) { 
     
    367334        public static InputStream getInputStreamFromJCRPart(NodeMapper nodeMapper,  
    368335                        Node contentNode)  
    369                 throws DocumentException, RepositoryException, PathNotFoundException { 
     336                throws RepositoryException, PathNotFoundException { 
    370337         
    371338                try {            
     
    383350        public static Node getPartNode(Session jcrSession, 
    384351                        NodeMapper nodeMapper, Node docxNode, String partName)  
    385                 throws DocumentException, RepositoryException, PathNotFoundException { 
     352                throws RepositoryException, PathNotFoundException { 
    386353                 
    387354                long startTime = 0; 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/LoadFromZipFile.java

    r1003 r1004  
    5151import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
    5252import org.docx4j.relationships.Relationship; 
    53 import org.dom4j.Document; 
    54 import org.dom4j.DocumentException; 
    55 import org.dom4j.io.SAXReader; 
    5653 
    5754 
     
    130127                //              but only the WordML package exists at present 
    131128                 
    132                 Document ctmDocument = null; 
    133129                try { 
    134                         ctmDocument = deprecatedGetDocumentFromZippedPart(zf, "[Content_Types].xml"); 
    135                 } catch (Exception e) { 
    136                         // Shouldn't happen 
    137                         throw new Docx4JException("Couldn't get [Content_Types].xml", e); 
    138                 } 
    139                 debugPrint(ctmDocument); 
    140                 ctm.parseContentTypesFile(ctmDocument);          
     130                        InputStream is = getInputStreamFromZippedPart( zf,  "[Content_Types].xml"); 
     131                        ctm.parseContentTypesFile(is); 
     132                } catch (IOException e) { 
     133                        throw new Docx4JException("Couldn't get [Content_Types].xml from ZipFile", e); 
     134                } 
     135                 
    141136                Package p = ctm.createPackage(); 
    142137                 
     
    236231 
    237232        private static InputStream getInputStreamFromZippedPart(ZipFile zf, String partName)  
    238                 throws DocumentException, IOException { 
     233                throws IOException { 
    239234                 
    240235                InputStream in = null; 
     
    244239         
    245240         
    246         private static Document deprecatedGetDocumentFromZippedPart(ZipFile zf, String partName)  
    247                 throws DocumentException, IOException { 
    248                  
    249                 InputStream in = null; 
    250                 in = zf.getInputStream( zf.getEntry(partName ) ); 
    251                 SAXReader xmlReader = new SAXReader(); 
    252                 Document contents = null; 
    253                 try { 
    254                         contents = xmlReader.read(in); 
    255                 } catch (DocumentException e) { 
    256                         // Will land here for binary files eg gif file 
    257                         // These do get handled .. 
    258                         log.error("DocumentException on " + partName + " . Check this is binary content.");  
    259                         //e.printStackTrace() ; 
    260                         throw e; 
    261                 } finally { 
    262                         if (in != null) { 
    263                                 try { 
    264                                         in.close(); 
    265                                 } catch (IOException exc) { 
    266                                         exc.printStackTrace(); 
    267                                 } 
    268                         } 
    269                 } 
    270                 return contents;                 
    271         } 
    272241         
    273242        /* recursively  
     
    579548        }        
    580549         
    581         private void dumpZipFileContents(ZipFile zf) { 
    582                 Enumeration entries = zf.entries(); 
    583                 // Enumerate through the Zip entries until we find the one named 
    584                 // '[Content_Types].xml'. 
    585                 while (entries.hasMoreElements()) { 
    586                         ZipEntry entry = (ZipEntry) entries.nextElement(); 
    587                         log.info( "\n\n" + entry.getName() + "\n" ); 
    588                         InputStream in = null; 
    589                         try {                    
    590                                 in = zf.getInputStream(entry); 
    591                         } catch (IOException e) { 
    592                                 e.printStackTrace() ; 
    593                         }                                
    594                         SAXReader xmlReader = new SAXReader(); 
    595                         Document xmlDoc = null; 
    596                         try { 
    597                                 xmlDoc = xmlReader.read(in); 
    598                         } catch (DocumentException e) { 
    599                                 // Will land here for binary files eg gif file 
    600                                 e.printStackTrace() ; 
    601                         } finally { 
    602                                 if (in != null) { 
    603                                         try { 
    604                                                 in.close(); 
    605                                         } catch (IOException exc) { 
    606                                                 exc.printStackTrace(); 
    607                                         } 
    608                                 } 
    609                         } 
    610                         debugPrint(xmlDoc); 
    611                          
    612                 } 
    613                  
    614         } 
    615  
    616          
    617          
    618          
    619          
    620550         
    621551} 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/LoadFromZipNG.java

    r1003 r1004  
    5959import org.docx4j.relationships.Relationship; 
    6060 
    61 import org.dom4j.Document; 
    62 import org.dom4j.DocumentException; 
    63 import org.dom4j.io.SAXReader; 
    6461 
    6562 
     
    187184                //              Eventually, you'll also be able to create an Excel package etc 
    188185                //              but only the WordML package exists at present 
    189                  
    190                 Document ctmDocument = null; 
     186 
    191187                try { 
    192                         ctmDocument = deprecatedGetDocumentFromZippedPart(partByteArrays, "[Content_Types].xml"); 
    193                 } catch (Exception e) { 
    194                         // Shouldn't happen 
    195                         throw new Docx4JException("Couldn't get [Content_Types].xml", e); 
    196                 } 
    197                 debugPrint(ctmDocument); 
    198                 ctm.parseContentTypesFile(ctmDocument);          
     188                        InputStream is = getInputStreamFromZippedPart( partByteArrays,  "[Content_Types].xml");          
     189                        ctm.parseContentTypesFile(is); 
     190                } catch (IOException e) { 
     191                        throw new Docx4JException("Couldn't get [Content_Types].xml from ZipFile", e); 
     192                } 
     193                                 
    199194                Package p = ctm.createPackage(); 
    200195                 
     
    290285                        String partName)  
    291286        //private static InputStream getInputStreamFromZippedPart(ZipFile zf, String partName)  
    292                 throws DocumentException, IOException { 
     287                throws IOException { 
    293288                 
    294289                InputStream in = null; 
     
    298293        } 
    299294         
    300          
    301         private static Document deprecatedGetDocumentFromZippedPart(HashMap<String, ByteArray> partByteArrays,  
    302                         String partName) 
    303         //private static Document deprecatedGetDocumentFromZippedPart(ZipFile zf, String partName)  
    304                 throws DocumentException, IOException { 
    305                  
    306                 InputStream in = null; 
    307 //              in = zf.getInputStream( zf.getEntry(partName ) ); 
    308                 in = partByteArrays.get(partName).getInputStream(); 
    309                 SAXReader xmlReader = new SAXReader(); 
    310                 Document contents = null; 
    311                 try { 
    312                         contents = xmlReader.read(in); 
    313                 } catch (DocumentException e) { 
    314                         // Will land here for binary files eg gif file 
    315                         // These do get handled .. 
    316                         log.error("DocumentException on " + partName + " . Check this is binary content.");  
    317                         //e.printStackTrace() ; 
    318                         throw e; 
    319                 } finally { 
    320                         if (in != null) { 
    321                                 try { 
    322                                         in.close(); 
    323                                 } catch (IOException exc) { 
    324                                         exc.printStackTrace(); 
    325                                 } 
    326                         } 
    327                 } 
    328                 return contents;                 
    329         } 
    330          
     295                 
    331296        /* recursively  
    332297        (i) create new Parts for each thing listed 
     
    632597                return part; 
    633598        }        
    634          
    635         private void dumpZipFileContents(ZipFile zf) { 
    636                 Enumeration entries = zf.entries(); 
    637                 // Enumerate through the Zip entries until we find the one named 
    638                 // '[Content_Types].xml'. 
    639                 while (entries.hasMoreElements()) { 
    640                         ZipEntry entry = (ZipEntry) entries.nextElement(); 
    641                         log.info( "\n\n" + entry.getName() + "\n" ); 
    642                         InputStream in = null; 
    643                         try {                    
    644                                 in = zf.getInputStream(entry); 
    645                         } catch (IOException e) { 
    646                                 e.printStackTrace() ; 
    647                         }                                
    648                         SAXReader xmlReader = new SAXReader(); 
    649                         Document xmlDoc = null; 
    650                         try { 
    651                                 xmlDoc = xmlReader.read(in); 
    652                         } catch (DocumentException e) { 
    653                                 // Will land here for binary files eg gif file 
    654                                 e.printStackTrace() ; 
    655                         } finally { 
    656                                 if (in != null) { 
    657                                         try { 
    658                                                 in.close(); 
    659                                         } catch (IOException exc) { 
    660                                                 exc.printStackTrace(); 
    661                                         } 
    662                                 } 
    663                         } 
    664                         debugPrint(xmlDoc); 
    665                          
    666                 } 
    667                  
    668         } 
    669          
     599                 
    670600        class ByteArray { 
    671601                 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/SaveToJCR.java

    r1003 r1004  
    6363import org.docx4j.openpackaging.exceptions.Docx4JException; 
    6464 
    65 import org.dom4j.Document; 
    66 import org.dom4j.DocumentException; 
    67 import org.dom4j.io.OutputFormat; 
    68 import org.dom4j.io.XMLWriter; 
    69  
    7065import org.merlin.io.DOMSerializerEngine; 
    7166import org.merlin.io.OutputEngineInputStream; 
     
    141136                        // 3. Get [Content_Types].xml 
    142137                        ContentTypeManager ctm = p.getContentTypeManager(); 
    143                         org.w3c.dom.Document w3cDoc = null; 
    144                         // convert dom4j node to real W3C dom node 
    145                         w3cDoc = new org.dom4j.io.DOMWriter() 
    146                                         .write(ctm.getDocument()); 
    147                         saveRawXmlPart(jcrSession, baseNode, "[Content_Types].xml", w3cDoc ); 
     138                        javax.xml.parsers.DocumentBuilderFactory dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance(); 
     139                        dbf.setNamespaceAware(true); 
     140                        org.w3c.dom.Document w3cDoc = dbf.newDocumentBuilder().newDocument(); 
     141                         
     142                        ctm.marshal( w3cDoc ); 
     143                         
     144                        saveRawXmlPart(jcrSession, baseNode, "[Content_Types].xml", w3cDoc); 
     145                         
    148146                 
    149147                        // 4. Start with _rels/.rels 
     
    766764    } 
    767765     
    768    
    769          
    770         protected void debugPrint( Document coreDoc) { 
    771                 try { 
    772                         OutputFormat format = OutputFormat.createPrettyPrint(); 
    773                     XMLWriter writer = new XMLWriter( System.out, format ); 
    774                     writer.write( coreDoc ); 
    775                 } catch (Exception e ) { 
    776                         e.printStackTrace(); 
    777                 }            
    778         } 
    779766                 
    780767//      // Testing - Jackrabbit only 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/SaveToZipFile.java

    r1003 r1004  
    2626import java.io.FileOutputStream; 
    2727import java.io.IOException; 
    28 import java.io.InputStream; 
    2928import java.io.OutputStream; 
    3029import java.net.URI; 
    31 import java.util.Enumeration; 
    32 import java.util.Iterator; 
    3330import java.util.zip.ZipEntry; 
    34 import java.util.zip.ZipFile; 
    3531import java.util.zip.ZipOutputStream; 
    3632 
     
    4440import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart; 
    4541import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
    46 import org.docx4j.relationships.Relationships; 
    4742import org.docx4j.relationships.Relationship; 
    48  
    49 import org.dom4j.Document; 
    50 import org.dom4j.DocumentException; 
    51 import org.dom4j.io.OutputFormat; 
    52 import org.dom4j.io.SAXReader; 
    53 import org.dom4j.io.XMLWriter; 
    5443 
    5544 
     
    10796                         
    10897                         
    109                         // 3. Get [Content_Types].xml 
     98                        // 3. Save [Content_Types].xml 
    11099                        ContentTypeManager ctm = p.getContentTypeManager(); 
    111                         deprecatedSaveRawXmlPart(out, "[Content_Types].xml", ctm.getDocument() ); 
     100                out.putNextEntry(new ZipEntry("[Content_Types].xml")); 
     101                ctm.marshal(out); 
     102                out.closeEntry(); 
    112103                 
    113104                        // 4. Start with _rels/.rels 
     
    228219        } 
    229220         
    230         protected void deprecatedSaveRawXmlPart(ZipOutputStream out, String partName, Document xml) throws Docx4JException  { 
    231  
    232                 try { 
    233                 // Add ZIP entry to output stream. 
    234                 out.putNextEntry(new ZipEntry(partName)); 
    235                  
    236                  
    237                         OutputFormat format = OutputFormat.createPrettyPrint(); 
    238                         format.setEncoding("UTF-8");                     
    239                     XMLWriter writer = new XMLWriter( out, format ); 
    240                     writer.write( xml ); 
    241                 // Complete the entry 
    242                 out.closeEntry(); 
    243                         log.info( "PUT SUCCESS: " + partName);           
    244                 } catch (Exception e ) { 
    245                         e.printStackTrace(); 
    246                         throw new Docx4JException("Failed to put " + partName, e); 
    247                 }                
    248                  
    249         } 
    250221         
    251222        /* recursively  
     
    403374         
    404375         
    405          
    406         private void dumpZipFileContents(ZipFile zf) { 
    407                 Enumeration entries = zf.entries(); 
    408                 // Enumerate through the Zip entries until we find the one named 
    409                 // '[Content_Types].xml'. 
    410                 while (entries.hasMoreElements()) { 
    411                         ZipEntry entry = (ZipEntry) entries.nextElement(); 
    412                         log.info( "\n\n" + entry.getName() + "\n" ); 
    413                         InputStream in = null; 
    414                         try {                    
    415                                 in = zf.getInputStream(entry); 
    416                         } catch (IOException e) { 
    417                                 e.printStackTrace() ; 
    418                         }                                
    419                         SAXReader xmlReader = new SAXReader(); 
    420                         Document xmlDoc = null; 
    421                         try { 
    422                                 xmlDoc = xmlReader.read(in); 
    423                         } catch (DocumentException e) { 
    424                                 // Will land here for binary files eg gif file 
    425                                 e.printStackTrace() ; 
    426                         } 
    427                         debugPrint(xmlDoc); 
    428                          
    429                 } 
    430                  
    431         } 
    432          
    433          
    434         private void debugPrint( Document coreDoc) { 
    435                 try { 
    436                         OutputFormat format = OutputFormat.createPrettyPrint(); 
    437                     XMLWriter writer = new XMLWriter( System.out, format ); 
    438                     writer.write( coreDoc ); 
    439                 } catch (Exception e ) { 
    440                         e.printStackTrace(); 
    441                 }            
    442         } 
    443                  
    444          
    445          
    446376} 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r995 r1004  
    2424import java.io.FileInputStream; 
    2525import java.io.FileNotFoundException; 
     26import java.io.FileOutputStream; 
    2627import java.util.Map; 
    2728 
     
    3031import javax.xml.bind.JAXBException; 
    3132import javax.xml.bind.Marshaller; 
     33import javax.xml.bind.PropertyException; 
    3234import javax.xml.bind.Unmarshaller; 
    3335import javax.xml.transform.Source; 
     
    4143import org.docx4j.fonts.Mapper; 
    4244import org.docx4j.jaxb.Context; 
     45import org.docx4j.jaxb.NamespacePrefixMapperUtils; 
    4346import org.docx4j.model.structure.DocumentModel; 
    4447import org.docx4j.model.structure.HeaderFooterPolicy; 
     
    197200         */      
    198201        public void save(java.io.File docxFile) throws Docx4JException { 
    199                  
     202 
     203                if (docxFile.getName().endsWith(".xml")) { 
     204                         
     205                        // Create a org.docx4j.wml.Package object 
     206                        FlatOpcXmlCreator worker = new FlatOpcXmlCreator(this); 
     207                        org.docx4j.xmlPackage.Package pkg = worker.get(); 
     208                 
     209                // Now marshall it 
     210                        JAXBContext jc = Context.jcXmlPackage; 
     211                        try { 
     212                                Marshaller marshaller=jc.createMarshaller(); 
     213                                 
     214                                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
     215                                NamespacePrefixMapperUtils.setProperty(marshaller,  
     216                                                NamespacePrefixMapperUtils.getPrefixMapper());                   
     217                                 
     218                                marshaller.marshal(pkg, new FileOutputStream(docxFile)); 
     219                        } catch (Exception e) { 
     220                                throw new Docx4JException("Error saving Flat OPC XML", e); 
     221                        }        
     222                        return; 
     223                } 
     224                         
    200225                SaveToZipFile saver = new SaveToZipFile(this);  
    201226                saver.save(docxFile); 
     
    379404 
    380405                // Create main document part 
    381                 Part wordDocumentPart = new org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart();          
     406                MainDocumentPart wordDocumentPart = new MainDocumentPart();              
    382407                 
    383408                // Create main document part content 
    384                 org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory(); 
    385                  
    386                 org.docx4j.wml.Body  body = factory.createBody(); 
    387                  
     409                org.docx4j.wml.ObjectFactory factory = Context.getWmlObjectFactory(); 
     410                org.docx4j.wml.Body  body = factory.createBody();                
    388411                org.docx4j.wml.Document wmlDocumentEl = factory.createDocument(); 
     412                 
    389413                wmlDocumentEl.setBody(body); 
    390414                 
     
    397421                                 
    398422                // Put the content in the part 
    399                 ((org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart)wordDocumentPart).setJaxbElement(wmlDocumentEl); 
     423                wordDocumentPart.setJaxbElement(wmlDocumentEl); 
    400424                                                 
    401425                // Add the main document part to the package relationships 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/CustomXmlDataStoragePart.java

    r848 r1004  
    2727 
    2828import javax.xml.bind.JAXBContext; 
    29 import javax.xml.bind.JAXBException; 
    30 import javax.xml.bind.Marshaller; 
    3129import javax.xml.transform.Source; 
    3230import javax.xml.transform.Templates; 
     
    3836import org.docx4j.jaxb.Context; 
    3937import org.docx4j.model.datastorage.CustomXmlDataStorage; 
    40 import org.docx4j.model.datastorage.CustomXmlDataStorageImpl; 
    4138import org.docx4j.openpackaging.exceptions.Docx4JException; 
    4239import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    43 import org.docx4j.openpackaging.parts.Part; 
    4440import org.docx4j.openpackaging.parts.WordprocessingML.DocumentPart; 
    4541import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    46  
    47 import org.dom4j.Document; 
    48  
    4942 
    5043 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/CustomXmlDataStoragePropertiesPart.java

    r817 r1004  
    2424import org.docx4j.customXmlProperties.DatastoreItem; 
    2525import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    26 import org.docx4j.openpackaging.parts.Part; 
    2726import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    28  
    29 import org.dom4j.Document; 
    30  
    3127 
    3228 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/Part.java

    r995 r1004  
    3030import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
    3131import org.docx4j.relationships.Relationship; 
    32  
    33 import org.dom4j.Document; 
    3432 
    3533import org.apache.log4j.Logger; 
     
    137135         
    138136 
    139         /** 
    140          * Constructor. 
    141          *  
    142          * @param partName 
    143          *            The part name, relative to the parent Package root. 
    144          * @throws InvalidFormatException 
    145          *             If the specified URI is not valid. 
    146          */ 
    147         public Part(PartName partName, Document document) 
    148                         throws InvalidFormatException { 
    149                 this.partName = partName; 
    150         } 
    151137         
    152138        /** 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MainDocumentPart.java

    r995 r1004  
    4848import org.docx4j.wml.Style; 
    4949import org.docx4j.wml.Styles; 
    50 import org.dom4j.Document; 
    51 import org.dom4j.io.OutputFormat; 
    52 import org.dom4j.io.XMLWriter; 
    5350 
    5451 
     
    512509} 
    513510 
    514         private void debugPrint( Document coreDoc) { 
    515                 try { 
    516                         OutputFormat format = OutputFormat.createPrettyPrint(); 
    517                     XMLWriter writer = new XMLWriter( System.out, format ); 
    518                     writer.write( coreDoc ); 
    519                 } catch (Exception e ) { 
    520                         e.printStackTrace(); 
    521                 }            
    522         } 
    523511 
    524512        /** 
     
    627615        public void addObject(Object o) { 
    628616                 
    629                 org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)this.getJaxbElement(); 
    630                 Body body =  wmlDocumentEl.getBody(); 
     617                Body body =  this.jaxbElement.getBody(); 
    631618                body.getEGBlockLevelElts().add(o); 
    632619                 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/relationships/Namespaces.java

    r954 r1004  
    2020 
    2121package org.docx4j.openpackaging.parts.relationships; 
    22  
    23 import org.dom4j.Namespace; 
    2422 
    2523public class Namespaces { 
     
    148146 
    149147        public final static String W_NAMESPACE_DECLARATION = "xmlns:w=\"" + NS_WORD12 + "\"";  
    150          
    151         // This is dom4j specific 
    152         @Deprecated 
    153         public final static Namespace namespaceWord = new Namespace("w", NS_WORD12); 
    154          
     148                 
    155149        public final static String HYPERLINK  =  
    156150                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"; 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/relationships/RelationshipsPart.java

    r962 r1004  
    6262import org.docx4j.openpackaging.Base; 
    6363import org.docx4j.openpackaging.URIHelper; 
     64import org.docx4j.openpackaging.contenttype.CTDefault; 
     65import org.docx4j.openpackaging.contenttype.CTOverride; 
    6466import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
    6567import org.docx4j.openpackaging.contenttype.ContentTypes; 
     68import org.docx4j.openpackaging.contenttype.ObjectFactory; 
    6669import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    6770import org.docx4j.openpackaging.packages.Package; 
     
    427430                 
    428431                // Add an override to ContentTypeManager 
     432                ObjectFactory ctFactory = new ObjectFactory(); 
     433                 
    429434                if ( part.getContentType().equals( ContentTypes.IMAGE_JPEG) ) { 
    430435                         
    431                         ctm.addDefaultContentType("jpeg", ContentTypes.IMAGE_JPEG); 
     436                        CTDefault defaultCT = ctFactory.createCTDefault(); 
     437                        defaultCT.setExtension("jpeg"); 
     438                        defaultCT.setContentType(ContentTypes.IMAGE_JPEG); 
     439                        ctm.addDefaultContentType("jpeg",defaultCT ); 
    432440                         
    433441                } else if ( part.getContentType().equals( ContentTypes.EXTENSION_GIF ) ) { 
    434442                         
    435                         ctm.addDefaultContentType("gif", ContentTypes.EXTENSION_GIF); 
     443                        CTDefault defaultCT = ctFactory.createCTDefault(); 
     444                        defaultCT.setExtension("gif"); 
     445                        defaultCT.setContentType(ContentTypes.EXTENSION_GIF); 
     446                        ctm.addDefaultContentType("gif", defaultCT); 
    436447                         
    437448                } else if ( part.getContentType().equals( ContentTypes.EXTENSION_PNG ) ) { 
    438449                         
    439                         ctm.addDefaultContentType("png", ContentTypes.IMAGE_PNG); 
     450                        CTDefault defaultCT = ctFactory.createCTDefault(); 
     451                        defaultCT.setExtension("png"); 
     452                        defaultCT.setContentType(ContentTypes.IMAGE_PNG); 
     453                        ctm.addDefaultContentType("png", defaultCT); 
    440454                         
    441455                } else { 
    442                         ctm.addOverrideContentType(part.getPartName().getURI(), part.getContentType()); 
     456                        CTOverride overrideCT = ctFactory.createCTOverride(); 
     457                        overrideCT.setPartName(part.getPartName().getName() ); 
     458                        overrideCT.setContentType(part.getContentType()); 
     459                         
     460                        ctm.addOverrideContentType(part.getPartName().getURI(), overrideCT ); 
    443461                } 
    444462                 
  • trunk/docx4j/src/main/java/org/docx4j/samples/CopyPart.java

    r962 r1004  
    2222package org.docx4j.samples; 
    2323 
    24 import java.io.File; 
    2524import java.io.FileInputStream; 
    26 import java.io.FileOutputStream; 
    27 import java.io.IOException; 
    28 import java.io.InputStream; 
    2925 
    30 import javax.jcr.Node; 
    31 import javax.jcr.Session; 
    3226import javax.xml.bind.JAXBContext; 
    3327import javax.xml.bind.JAXBElement; 
    34 import javax.xml.bind.Marshaller; 
    3528import javax.xml.bind.Unmarshaller; 
    3629 
    37 import org.docx4j.JcrNodeMapper.NodeMapper; 
    38 import org.docx4j.convert.out.flatOpcXml.FlatOpcXmlCreator; 
    39 import org.docx4j.dml.Inline; 
    40 import org.docx4j.docProps.extended.Properties; 
    4130import org.docx4j.jaxb.Context; 
    42 import org.docx4j.openpackaging.Base; 
    4331import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
    44 import org.docx4j.openpackaging.exceptions.Docx4JException; 
    45 import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    46 import org.docx4j.openpackaging.io.Load; 
    47 import org.docx4j.openpackaging.io.SaveToZipFile; 
    48  
    49 import org.docx4j.openpackaging.parts.DocPropsExtendedPart; 
    5032import org.docx4j.openpackaging.parts.Part; 
    5133import org.docx4j.openpackaging.parts.PartName; 
    52 import org.docx4j.openpackaging.contenttype.ContentType; 
    53 import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
    54 import org.docx4j.openpackaging.contenttype.ContentTypes; 
    55 import org.docx4j.relationships.Relationship; 
    56 import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage; 
    5734import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    5835import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
    59 import org.dom4j.Document; 
    60 import org.dom4j.DocumentException; 
    61 import org.dom4j.io.SAXReader; 
     36import org.docx4j.relationships.Relationship; 
    6237 
    6338/** 
  • trunk/docx4j/src/main/java/org/docx4j/samples/CreateDocxWithCustomXml.java

    r819 r1004  
    2424import java.io.File; 
    2525 
    26 import org.docx4j.model.datastorage.Dom4jCustomXmlDataStorage; 
     26import org.docx4j.model.datastorage.CustomXmlDataStorage; 
     27import org.docx4j.model.datastorage.CustomXmlDataStorageImpl; 
    2728import org.docx4j.openpackaging.Base; 
    2829import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
     
    3233import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    3334import org.docx4j.openpackaging.io.SaveToZipFile; 
    34 import org.dom4j.Document; 
    35 import org.dom4j.DocumentHelper; 
    36 import org.dom4j.Element; 
    3735 
    3836/** 
     
    7371                                // Defaults to /customXml/item1.xml 
    7472                         
    75                         Dom4jCustomXmlDataStorage data = new Dom4jCustomXmlDataStorage(); 
     73                        CustomXmlDataStorage data = new CustomXmlDataStorageImpl(); 
    7674                        data.setDocument(createCustomXmlDocument()); 
    7775                         
     
    9088        } 
    9189         
    92         public static Document createCustomXmlDocument() { 
     90        public static org.w3c.dom.Document createCustomXmlDocument() { 
    9391                 
    94                 Document document = DocumentHelper.createDocument(); 
    95                 Element root = document.addElement("root"); 
     92                // TODO: implement 
    9693                 
    97                 Element myChild = root.addElement("myChild").addAttribute("att1", "att1Val").addAttribute("att2", "att2Val").addText("some text"); 
    98                  
    99                 return document; 
     94                return null; 
    10095                 
    10196        } 
  • trunk/docx4j/src/main/java/org/docx4j/samples/CreatePdf.java

    r1000 r1004  
    4949                    throws Exception { 
    5050 
    51                 boolean save = true; 
     51                boolean save = false; 
    5252                 
    5353                String inputfilepath = System.getProperty("user.dir") + "/sample-docs/sample-docx.xml";          
  • trunk/docx4j/src/main/java/org/docx4j/samples/CreateWordprocessingMLDocument.java

    r955 r1004  
    3434import org.docx4j.openpackaging.parts.PartName; 
    3535import org.docx4j.openpackaging.parts.WordprocessingML.AlternativeFormatInputPart; 
     36import org.docx4j.openpackaging.contenttype.CTDefault; 
    3637import org.docx4j.openpackaging.contenttype.ContentType; 
     38import org.docx4j.openpackaging.contenttype.ContentTypes; 
     39import org.docx4j.openpackaging.contenttype.ObjectFactory; 
    3740import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
    3841import org.docx4j.openpackaging.io.SaveToZipFile; 
     
    124127            ac.setId(altChunkRel.getId() ); 
    125128            wordMLPackage.getMainDocumentPart().addObject(ac); 
     129 
    126130            // .. content type 
    127             wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html"); 
     131                ObjectFactory ctFactory = new ObjectFactory(); 
     132                CTDefault defaultCT = ctFactory.createCTDefault(); 
     133                defaultCT.setExtension("html"); 
     134                defaultCT.setContentType("text/html"); 
     135            wordMLPackage.getContentTypeManager().addDefaultContentType("html", defaultCT); 
    128136             
    129137                //injectDocPropsCustomPart(wordMLPackage); 
     
    132140                if (save) { 
    133141                        System.out.println("Saved."); 
    134                         wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/ac.docx") ); 
     142                        wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/ad.docx") ); 
    135143                } else { 
    136144                        // Create a org.docx4j.wml.Package object 
  • trunk/docx4j/src/main/java/org/docx4j/samples/ImportForeignPart.java

    r856 r1004  
    4848import org.docx4j.openpackaging.parts.Part; 
    4949import org.docx4j.openpackaging.parts.PartName; 
     50import org.docx4j.openpackaging.contenttype.CTOverride; 
    5051import org.docx4j.openpackaging.contenttype.ContentType; 
    5152import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
    5253import org.docx4j.openpackaging.contenttype.ContentTypes; 
     54import org.docx4j.openpackaging.contenttype.ObjectFactory; 
    5355import org.docx4j.relationships.Relationship; 
    5456import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage; 
    5557import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    56 import org.dom4j.Document; 
    57 import org.dom4j.DocumentException; 
    58 import org.dom4j.io.SAXReader; 
    5958 
    6059/** 
     
    7372                // Need to know how what type of part to map to          
    7473                InputStream in = new FileInputStream("/home/dev/workspace/docx4j/foregin_parts/[Content_Types].xml"); 
    75                 SAXReader xmlReader = new SAXReader(); 
    76                 Document ctmDocument = null; 
    77                 try { 
    78                         ctmDocument = xmlReader.read(in); 
    79                 } catch (DocumentException e) { 
    80                         e.printStackTrace(); 
    81                         throw e; 
    82                 } 
    8374                ContentTypeManager externalCtm = new ContentTypeManager(); 
    84                 externalCtm.parseContentTypesFile(ctmDocument); 
     75                externalCtm.parseContentTypesFile(in); 
    8576                 
    8677                // Example of a part which become a rel of the word document 
     
    112103                // Add content type 
    113104                ContentTypeManager packageCtm = wordMLPackage.getContentTypeManager(); 
    114                 packageCtm.addOverrideContentType(foreignPart.getPartName().getURI(), foreignPart.getContentType()); 
     105                ObjectFactory ctFactory = new ObjectFactory(); 
     106                CTOverride overrideCT = ctFactory.createCTOverride(); 
     107                overrideCT.setPartName(foreignPart.getPartName().getName() ); 
     108                overrideCT.setContentType(foreignPart.getContentType()); 
     109                 
     110                packageCtm.addOverrideContentType(foreignPart.getPartName().getURI(), overrideCT ); 
    115111                 
    116112                System.out.println("Attached foreign part: " + resolvedPartUri); 
Note: See TracChangeset for help on using the changeset viewer.