Changeset 1590

Show
Ignore:
Timestamp:
01/14/10 10:41:11 (2 years ago)
Author:
dcoppola
Message:

In case xml-resolver is available on the boot classpath of ant 1.7.0 xml catalog resolver will be used instead of dummy catalog resolver.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/java/org/jcoderz/commons/taskdefs/XsltBasedTask.java

    r1415 r1590  
    5454import org.apache.tools.ant.Project; 
    5555import org.apache.tools.ant.Task; 
     56import org.apache.xerces.util.XMLCatalogResolver; 
    5657import org.jcoderz.commons.util.IoUtil; 
    5758import org.jcoderz.commons.util.StringUtil; 
     59import org.xml.sax.EntityResolver; 
    5860import org.xml.sax.InputSource; 
    5961import org.xml.sax.SAXException; 
     
    479481        return result; 
    480482    } 
     483     
     484    /** 
     485     * Instantiates xml resolver for xerces xml parser. 
     486     *  
     487     * If xml-resolver.jar is available on the boot classpath of ant, the  
     488     * implementation of an xml catalog resolver will be returned otherwise 
     489     * the dummy resolver implementation will be provided  
     490     *  
     491     * @return EntityResolver entity resolver 
     492     */ 
     493    private EntityResolver getEntityResolver() 
     494    { 
     495        EntityResolver resolver = new DummyEntityResolver(this); 
     496        try  
     497        { 
     498            String [] catalogs = {"/org/jcoderz/commons/taskdefs/catalog.xml"}; 
     499       
     500            System.getProperties().put("xml.catalog.verbosity", "1000"); 
     501            // Create catalog resolver and set a catalog list. 
     502            XMLCatalogResolver xmlResolver = new XMLCatalogResolver(); 
     503            xmlResolver.setPreferPublic(true); 
     504            xmlResolver.setCatalogList(catalogs); 
     505            resolver = xmlResolver; 
     506        } 
     507        catch (NoClassDefFoundError e) 
     508        { 
     509            // The most secure way to check for non-existence of the CatalogReader 
     510            // class is within ant class loaders is to catch the NoClassDefFoundError. 
     511            log("Class CatalogReader (xml-resolver.jar) could not be found " + 
     512                        " within bootstrap classpath. No entity resolver is " +  
     513                        " available, setting dummy resolver.", Project.MSG_WARN); 
     514        } 
     515         
     516        return resolver; 
     517    } 
    481518 
    482519    /** 
     
    491528            final org.xml.sax.XMLReader reader; 
    492529            try 
    493             { 
     530            {       
     531                EntityResolver resolver = getEntityResolver(); 
     532                 
    494533                // reader = XMLReaderFactory.createXMLReader( 
    495534                // "org.apache.xerces.parsers.SAXParser"); 
    496535                reader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader(); 
    497                 reader.setEntityResolver(new DummyEntityResolver(this)); 
     536                reader.setEntityResolver(resolver); 
    498537                result = new SAXSource(reader, new InputSource( 
    499538                    new FileInputStream(mInFile)));