Changeset 1162


Ignore:
Timestamp:
07/14/10 18:41:22 (19 months ago)
Author:
jharrop
Message:

Content control binding extensions test/example

Location:
trunk/docx4j
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/model/datastorage/bind.xslt

    r1101 r1162  
    8080                                <w:r> 
    8181                                        <w:t><xsl:value-of 
    82                                                 select="java:org.docx4j.openpackaging.parts.CustomXmlDataStoragePart.getXPath( 
     82                                                select="java:org.docx4j.openpackaging.parts.CustomXmlDataStoragePart.xpathGetString( 
    8383                                                                        $customXmlDataStorageParts, 
    8484                                                                        $storeItemID, 
     
    9595                                        </w:rPr> 
    9696                                        <w:t><xsl:value-of 
    97                                                 select="java:org.docx4j.openpackaging.parts.CustomXmlDataStoragePart.getXPath( 
     97                                                select="java:org.docx4j.openpackaging.parts.CustomXmlDataStoragePart.xpathGetString( 
    9898                                                                        $customXmlDataStorageParts, 
    9999                                                                        $storeItemID, 
  • trunk/docx4j/src/main/java/org/docx4j/model/sdt/QueryString.java

    r919 r1162  
    7171 
    7272    }            
     73 
     74        public static HashMap<String, String> parseQueryString(String s) { 
     75                return parseQueryString(s, false); 
     76        } 
    7377         
    7478        /** 
     
    105109     * 
    106110     */ 
    107         public static HashMap<String, String> parseQueryString(String s) { 
     111        public static HashMap<String, String> parseQueryString(String s, boolean lax) { 
    108112 
    109113                log.debug("Query string: " + s); 
     
    120124                        int pos = pair.indexOf('='); 
    121125                        if (pos == -1) { 
    122                                 // XXX 
    123                                 // should give more detail about the illegal argument 
    124                                 throw new IllegalArgumentException(); 
     126                                 
     127                                if (lax) { 
     128                                        log.warn("Suspect parameter: " + pair); 
     129                                        map.put(pair, pair); 
     130                                } else { 
     131                                        // XXX 
     132                                        // should give more detail about the illegal argument 
     133                                        log.error("Suspect parameter: " + pair);                                         
     134                                        throw new IllegalArgumentException(); 
     135                                } 
     136                        } else { 
     137                                String key = parseName(pair.substring(0, pos) ); 
     138                                String val = pair.substring(pos + 1, pair.length()); 
     139                                map.put(key, val); 
    125140                        } 
    126                         String key = parseName(pair.substring(0, pos) ); 
    127                         String val = pair.substring(pos + 1, pair.length()); 
    128                         map.put(key, val); 
    129141                } 
    130142                return map; 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/Load.java

    r1050 r1162  
    284284                                        continue; 
    285285                                } 
    286                                 String itemId = customXmlProps.getItemId(); 
     286                                String itemId = customXmlProps.getItemId().toLowerCase(); 
    287287                                log.info("Identified/registered ds:itemId " + itemId); 
    288288                                pkg.getCustomXmlDataStorageParts().put(itemId,  
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/SaveToZipFile.java

    r1102 r1162  
    7070         * This HashMap is intended to prevent loops. 
    7171         */ 
    72         private HashMap<String, String> handled = new HashMap<String, String>(); 
     72        private HashMap<String, String> handled; 
    7373 
    7474        /* Save a Package as a Zip file in the file system */ 
    7575        public boolean save(String filepath) throws Docx4JException  { 
    76                  
    7776                log.info("Saving to" +  filepath );              
    7877                try { 
     
    8786        /* Save a Package as a Zip file in the file system */ 
    8887        public boolean save(java.io.File docxFile) throws Docx4JException  { 
    89                  
    9088                log.info("Saving to" +  docxFile );              
    9189                try { 
     
    10098        /* Save a Package as a Zip file in the outputstream provided */ 
    10199        public boolean save(OutputStream realOS) throws Docx4JException  {               
    102                  
     100                handled = new HashMap<String, String>(); 
    103101                 try { 
    104102 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/OpcPackage.java

    r1050 r1162  
    8888         
    8989        protected HashMap<String, CustomXmlDataStoragePart> customXmlDataStorageParts 
    90                 = new HashMap<String, CustomXmlDataStoragePart>(); 
     90                = new HashMap<String, CustomXmlDataStoragePart>(); // NB key is lowercase 
    9191        public HashMap<String, CustomXmlDataStoragePart> getCustomXmlDataStorageParts() { 
    9292                return customXmlDataStorageParts; 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/CustomXmlDataStoragePart.java

    r1158 r1162  
    175175        public static void preprocess(WordprocessingMLPackage wordMLPackage) throws Docx4JException { 
    176176 
    177                 Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts = wordMLPackage.getCustomXmlDataStorageParts();          
     177                //Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts = wordMLPackage.getCustomXmlDataStorageParts();                
    178178                MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); 
    179179                                 
     
    234234 
    235235                QueryString qs = new QueryString(); 
    236                 HashMap<String, String> map = qs.parseQueryString(tag.getVal()); 
     236                HashMap<String, String> map = qs.parseQueryString(tag.getVal(), true); 
    237237                 
    238238                String bindingrole = map.get("bindingrole"); 
     
    245245                 
    246246                // get the value 
    247                 String storeItemId = map.get("w:storeItemID"); 
     247                String storeItemId = map.get("w:storeItemID").toLowerCase(); 
    248248                String xpath = map.get("w:xpath"); 
    249249                String prefixMappings = map.get("w:prefixMappings"); 
     
    269269                        log.info("Got value: " + val); 
    270270                         
    271                         if (Boolean.getBoolean(val)) { 
     271                        if (new Boolean(val) ) { 
    272272                                log.debug("so keeping"); 
    273273                        } else { 
     
    365365                                                        log.debug("xpathBase: " + xpathBase); 
    366366                                                        int beginIndex = thisXPath.indexOf("/", xpathBase.length()+1 ); // +1 for good measure                                                   
    367                                                         String newPath = xpathBase + "/*[" + i + "]/" + thisXPath.substring(beginIndex+1);                                                       
     367                                                        String newPath = xpathBase + "/*[" + (i+1) + "]/" + thisXPath.substring(beginIndex+1);                                                   
    368368                                                        log.debug("newPath: " + newPath); 
    369369                                                        binding.setXpath(newPath); 
     
    505505                        String storeItemId, String xpath, String prefixMappings) { 
    506506                 
    507                 CustomXmlDataStoragePart part = customXmlDataStorageParts.get(storeItemId); 
     507                CustomXmlDataStoragePart part = customXmlDataStorageParts.get(storeItemId.toLowerCase()); 
    508508                if (part==null) { 
    509509                        log.error("Couldn't locate part by storeItemId " + storeItemId); 
Note: See TracChangeset for help on using the changeset viewer.