| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| diff -ruN org/apache/xml/resolver/Catalog.java patched-org/apache/xml/resolver/Catalog.java |
| --- org/apache/xml/resolver/Catalog.java 2006-11-20 15:23:08.000000000 +0100 |
| +++ patched-org/apache/xml/resolver/Catalog.java 2017-10-21 08:26:49.650587000 +0200 |
| @@ -393,6 +393,26 @@ |
| } |
| |
| /** |
| + * Return all registered public IDs. |
| + * This method added for solving the following issues in NetBeans codebase: |
| + * http://www.netbeans.org/issues/show_bug.cgi?id=98212 |
| + * and |
| + * http://www.netbeans.org/issues/show_bug.cgi?id=112679 |
| + */ |
| + public java.util.Iterator getPublicIDs() { |
| + Vector v = new Vector(); |
| + Enumeration enumeration = catalogEntries.elements(); |
| + |
| + while (enumeration.hasMoreElements()) { |
| + CatalogEntry e = (CatalogEntry) enumeration.nextElement(); |
| + if (e.getEntryType() == PUBLIC) { |
| + v.add(e.getEntryArg(0)); |
| + } |
| + } |
| + return v.iterator(); |
| + } |
| + |
| + /** |
| * Setup readers. |
| */ |
| public void setupReaders() { |
| diff -ruN org/apache/xml/resolver/CatalogManager.java patched-org/apache/xml/resolver/CatalogManager.java |
| --- org/apache/xml/resolver/CatalogManager.java 2006-11-20 15:23:08.000000000 +0100 |
| +++ patched-org/apache/xml/resolver/CatalogManager.java 2017-10-21 08:27:26.850588000 +0200 |
| @@ -239,6 +239,9 @@ |
| * resources from it. |
| */ |
| private synchronized void readProperties() { |
| + if (propertyFile == null) { |
| + return; |
| + } |
| try { |
| propertyFileURI = CatalogManager.class.getResource("/"+propertyFile); |
| InputStream in = |
| diff -ruN org/apache/xml/resolver/NbCatalogManager.java patched-org/apache/xml/resolver/NbCatalogManager.java |
| --- org/apache/xml/resolver/NbCatalogManager.java 1970-01-01 01:00:00.000000000 +0100 |
| +++ patched-org/apache/xml/resolver/NbCatalogManager.java 2017-10-22 15:12:38.608007524 +0200 |
| @@ -0,0 +1,570 @@ |
| +/* |
| + * Licensed to the Apache Software Foundation (ASF) under one or more |
| + * contributor license agreements. See the NOTICE file distributed with |
| + * this work for additional information regarding copyright ownership. |
| + * The ASF licenses this file to You under the Apache License, Version 2.0 |
| + * (the "License"); you may not use this file except in compliance with |
| + * the License. You may obtain a copy of the License at |
| + * |
| + * http://www.apache.org/licenses/LICENSE-2.0 |
| + * |
| + * Unless required by applicable law or agreed to in writing, software |
| + * distributed under the License is distributed on an "AS IS" BASIS, |
| + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| + * See the License for the specific language governing permissions and |
| + * limitations under the License. |
| + */ |
| +package org.apache.xml.resolver; |
| + |
| +import java.io.IOException; |
| +import java.io.InputStream; |
| +import java.io.PrintStream; |
| +import java.net.MalformedURLException; |
| +import java.net.URL; |
| +import java.util.MissingResourceException; |
| +import java.util.PropertyResourceBundle; |
| +import java.util.ResourceBundle; |
| +import java.util.StringTokenizer; |
| +import java.util.Vector; |
| +import org.apache.xml.resolver.helpers.BootstrapResolver; |
| +import org.apache.xml.resolver.helpers.Debug; |
| + |
| +public class NbCatalogManager |
| + extends CatalogManager |
| +{ |
| + private static String pFiles = "xml.catalog.files"; |
| + private static String pVerbosity = "xml.catalog.verbosity"; |
| + private static String pPrefer = "xml.catalog.prefer"; |
| + private static String pStatic = "xml.catalog.staticCatalog"; |
| + private static String pAllowPI = "xml.catalog.allowPI"; |
| + private static String pClassname = "xml.catalog.className"; |
| + private static String pIgnoreMissing = "xml.catalog.ignoreMissing"; |
| + private static NbCatalogManager staticManager = new NbCatalogManager(); |
| + private BootstrapResolver bResolver = new BootstrapResolver(); |
| + private boolean ignoreMissingProperties = (System.getProperty(pIgnoreMissing) != null) || (System.getProperty(pFiles) != null); |
| + private ResourceBundle resources; |
| + private String propertyFile = "CatalogManager.properties"; |
| + private URL propertyFileURI = null; |
| + private String defaultCatalogFiles = "./xcatalog"; |
| + private String catalogFiles = null; |
| + private boolean fromPropertiesFile = false; |
| + private int defaultVerbosity = 1; |
| + private Integer verbosity = null; |
| + private boolean defaultPreferPublic = true; |
| + private Boolean preferPublic = null; |
| + private boolean defaultUseStaticCatalog = true; |
| + private Boolean useStaticCatalog = null; |
| + private static Catalog staticCatalog = null; |
| + private boolean defaultOasisXMLCatalogPI = true; |
| + private Boolean oasisXMLCatalogPI = null; |
| + private boolean defaultRelativeCatalogs = true; |
| + private Boolean relativeCatalogs = null; |
| + private String catalogClassName = null; |
| + public Debug debug = null; |
| + |
| + public NbCatalogManager() |
| + { |
| + this.debug = new Debug(); |
| + } |
| + |
| + public NbCatalogManager(String propertyFile) |
| + { |
| + this.propertyFile = propertyFile; |
| + |
| + this.debug = new Debug(); |
| + } |
| + |
| + public void setBootstrapResolver(BootstrapResolver resolver) |
| + { |
| + this.bResolver = resolver; |
| + } |
| + |
| + public BootstrapResolver getBootstrapResolver() |
| + { |
| + return this.bResolver; |
| + } |
| + |
| + private synchronized void readProperties() |
| + { |
| + if (this.propertyFile == null) { |
| + return; |
| + } |
| + try |
| + { |
| + this.propertyFileURI = NbCatalogManager.class.getResource("/" + this.propertyFile); |
| + InputStream in = NbCatalogManager.class.getResourceAsStream("/" + this.propertyFile); |
| + if (in == null) |
| + { |
| + if (!this.ignoreMissingProperties) |
| + { |
| + this.debug.message(2, "Cannot find " + this.propertyFile); |
| + |
| + this.ignoreMissingProperties = true; |
| + } |
| + return; |
| + } |
| + this.resources = new PropertyResourceBundle(in); |
| + } |
| + catch (MissingResourceException mre) |
| + { |
| + if (!this.ignoreMissingProperties) { |
| + System.err.println("Cannot read " + this.propertyFile); |
| + } |
| + } |
| + catch (IOException e) |
| + { |
| + if (!this.ignoreMissingProperties) { |
| + System.err.println("Failure trying to read " + this.propertyFile); |
| + } |
| + } |
| + if (this.verbosity == null) { |
| + try |
| + { |
| + String verbStr = this.resources.getString("verbosity"); |
| + int verb = Integer.parseInt(verbStr.trim()); |
| + this.debug.setDebug(verb); |
| + this.verbosity = new Integer(verb); |
| + } |
| + catch (Exception e) {} |
| + } |
| + } |
| + |
| + public static CatalogManager getStaticManager() |
| + { |
| + return staticManager; |
| + } |
| + |
| + public boolean getIgnoreMissingProperties() |
| + { |
| + return this.ignoreMissingProperties; |
| + } |
| + |
| + public void setIgnoreMissingProperties(boolean ignore) |
| + { |
| + this.ignoreMissingProperties = ignore; |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public void ignoreMissingProperties(boolean ignore) |
| + { |
| + setIgnoreMissingProperties(ignore); |
| + } |
| + |
| + private int queryVerbosity() |
| + { |
| + String defaultVerbStr = Integer.toString(this.defaultVerbosity); |
| + |
| + String verbStr = System.getProperty(pVerbosity); |
| + if (verbStr == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources != null) { |
| + try |
| + { |
| + verbStr = this.resources.getString("verbosity"); |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + verbStr = defaultVerbStr; |
| + } |
| + } else { |
| + verbStr = defaultVerbStr; |
| + } |
| + } |
| + int verb = this.defaultVerbosity; |
| + try |
| + { |
| + verb = Integer.parseInt(verbStr.trim()); |
| + } |
| + catch (Exception e) |
| + { |
| + System.err.println("Cannot parse verbosity: \"" + verbStr + "\""); |
| + } |
| + if (this.verbosity == null) |
| + { |
| + this.debug.setDebug(verb); |
| + this.verbosity = new Integer(verb); |
| + } |
| + return verb; |
| + } |
| + |
| + public int getVerbosity() |
| + { |
| + if (this.verbosity == null) { |
| + this.verbosity = new Integer(queryVerbosity()); |
| + } |
| + return this.verbosity.intValue(); |
| + } |
| + |
| + public void setVerbosity(int verbosity) |
| + { |
| + this.verbosity = new Integer(verbosity); |
| + this.debug.setDebug(verbosity); |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public int verbosity() |
| + { |
| + return getVerbosity(); |
| + } |
| + |
| + private boolean queryRelativeCatalogs() |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources == null) { |
| + return this.defaultRelativeCatalogs; |
| + } |
| + try |
| + { |
| + String allow = this.resources.getString("relative-catalogs"); |
| + return (allow.equalsIgnoreCase("true")) || (allow.equalsIgnoreCase("yes")) || (allow.equalsIgnoreCase("1")); |
| + } |
| + catch (MissingResourceException e) {} |
| + return this.defaultRelativeCatalogs; |
| + } |
| + |
| + public boolean getRelativeCatalogs() |
| + { |
| + if (this.relativeCatalogs == null) { |
| + this.relativeCatalogs = new Boolean(queryRelativeCatalogs()); |
| + } |
| + return this.relativeCatalogs.booleanValue(); |
| + } |
| + |
| + public void setRelativeCatalogs(boolean relative) |
| + { |
| + this.relativeCatalogs = new Boolean(relative); |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public boolean relativeCatalogs() |
| + { |
| + return getRelativeCatalogs(); |
| + } |
| + |
| + private String queryCatalogFiles() |
| + { |
| + String catalogList = System.getProperty(pFiles); |
| + this.fromPropertiesFile = false; |
| + if (catalogList == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources != null) { |
| + try |
| + { |
| + catalogList = this.resources.getString("catalogs"); |
| + this.fromPropertiesFile = true; |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + System.err.println(this.propertyFile + ": catalogs not found."); |
| + catalogList = null; |
| + } |
| + } |
| + } |
| + if (catalogList == null) { |
| + catalogList = this.defaultCatalogFiles; |
| + } |
| + return catalogList; |
| + } |
| + |
| + public Vector getCatalogFiles() |
| + { |
| + if (this.catalogFiles == null) { |
| + this.catalogFiles = queryCatalogFiles(); |
| + } |
| + StringTokenizer files = new StringTokenizer(this.catalogFiles, ";"); |
| + Vector catalogs = new Vector(); |
| + while (files.hasMoreTokens()) |
| + { |
| + String catalogFile = files.nextToken(); |
| + URL absURI = null; |
| + if ((this.fromPropertiesFile) && (!relativeCatalogs())) { |
| + try |
| + { |
| + absURI = new URL(this.propertyFileURI, catalogFile); |
| + catalogFile = absURI.toString(); |
| + } |
| + catch (MalformedURLException mue) |
| + { |
| + absURI = null; |
| + } |
| + } |
| + catalogs.add(catalogFile); |
| + } |
| + return catalogs; |
| + } |
| + |
| + public void setCatalogFiles(String fileList) |
| + { |
| + this.catalogFiles = fileList; |
| + this.fromPropertiesFile = false; |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public Vector catalogFiles() |
| + { |
| + return getCatalogFiles(); |
| + } |
| + |
| + private boolean queryPreferPublic() |
| + { |
| + String prefer = System.getProperty(pPrefer); |
| + if (prefer == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources == null) { |
| + return this.defaultPreferPublic; |
| + } |
| + try |
| + { |
| + prefer = this.resources.getString("prefer"); |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + return this.defaultPreferPublic; |
| + } |
| + } |
| + if (prefer == null) { |
| + return this.defaultPreferPublic; |
| + } |
| + return prefer.equalsIgnoreCase("public"); |
| + } |
| + |
| + public boolean getPreferPublic() |
| + { |
| + if (this.preferPublic == null) { |
| + this.preferPublic = new Boolean(queryPreferPublic()); |
| + } |
| + return this.preferPublic.booleanValue(); |
| + } |
| + |
| + public void setPreferPublic(boolean preferPublic) |
| + { |
| + this.preferPublic = new Boolean(preferPublic); |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public boolean preferPublic() |
| + { |
| + return getPreferPublic(); |
| + } |
| + |
| + private boolean queryUseStaticCatalog() |
| + { |
| + String staticCatalog = System.getProperty(pStatic); |
| + if (staticCatalog == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources == null) { |
| + return this.defaultUseStaticCatalog; |
| + } |
| + try |
| + { |
| + staticCatalog = this.resources.getString("static-catalog"); |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + return this.defaultUseStaticCatalog; |
| + } |
| + } |
| + if (staticCatalog == null) { |
| + return this.defaultUseStaticCatalog; |
| + } |
| + return (staticCatalog.equalsIgnoreCase("true")) || (staticCatalog.equalsIgnoreCase("yes")) || (staticCatalog.equalsIgnoreCase("1")); |
| + } |
| + |
| + public boolean getUseStaticCatalog() |
| + { |
| + if (this.useStaticCatalog == null) { |
| + this.useStaticCatalog = new Boolean(queryUseStaticCatalog()); |
| + } |
| + return this.useStaticCatalog.booleanValue(); |
| + } |
| + |
| + public void setUseStaticCatalog(boolean useStatic) |
| + { |
| + this.useStaticCatalog = new Boolean(useStatic); |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public boolean staticCatalog() |
| + { |
| + return getUseStaticCatalog(); |
| + } |
| + |
| + public Catalog getPrivateCatalog() |
| + { |
| + Catalog catalog = staticCatalog; |
| + if (this.useStaticCatalog == null) { |
| + this.useStaticCatalog = new Boolean(getUseStaticCatalog()); |
| + } |
| + if ((catalog == null) || (!this.useStaticCatalog.booleanValue())) |
| + { |
| + try |
| + { |
| + String catalogClassName = getCatalogClassName(); |
| + if (catalogClassName == null) { |
| + catalog = new Catalog(); |
| + } else { |
| + try |
| + { |
| + catalog = (Catalog)Class.forName(catalogClassName).newInstance(); |
| + } |
| + catch (ClassNotFoundException cnfe) |
| + { |
| + this.debug.message(1, "Catalog class named '" + catalogClassName + "' could not be found. Using default."); |
| + |
| + catalog = new Catalog(); |
| + } |
| + catch (ClassCastException cnfe) |
| + { |
| + this.debug.message(1, "Class named '" + catalogClassName + "' is not a Catalog. Using default."); |
| + |
| + catalog = new Catalog(); |
| + } |
| + } |
| + catalog.setCatalogManager(this); |
| + catalog.setupReaders(); |
| + catalog.loadSystemCatalogs(); |
| + } |
| + catch (Exception ex) |
| + { |
| + ex.printStackTrace(); |
| + } |
| + if (this.useStaticCatalog.booleanValue()) { |
| + staticCatalog = catalog; |
| + } |
| + } |
| + return catalog; |
| + } |
| + |
| + public Catalog getCatalog() |
| + { |
| + Catalog catalog = staticCatalog; |
| + if (this.useStaticCatalog == null) { |
| + this.useStaticCatalog = new Boolean(getUseStaticCatalog()); |
| + } |
| + if ((catalog == null) || (!this.useStaticCatalog.booleanValue())) |
| + { |
| + catalog = getPrivateCatalog(); |
| + if (this.useStaticCatalog.booleanValue()) { |
| + staticCatalog = catalog; |
| + } |
| + } |
| + return catalog; |
| + } |
| + |
| + public boolean queryAllowOasisXMLCatalogPI() |
| + { |
| + String allow = System.getProperty(pAllowPI); |
| + if (allow == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources == null) { |
| + return this.defaultOasisXMLCatalogPI; |
| + } |
| + try |
| + { |
| + allow = this.resources.getString("allow-oasis-xml-catalog-pi"); |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + return this.defaultOasisXMLCatalogPI; |
| + } |
| + } |
| + if (allow == null) { |
| + return this.defaultOasisXMLCatalogPI; |
| + } |
| + return (allow.equalsIgnoreCase("true")) || (allow.equalsIgnoreCase("yes")) || (allow.equalsIgnoreCase("1")); |
| + } |
| + |
| + public boolean getAllowOasisXMLCatalogPI() |
| + { |
| + if (this.oasisXMLCatalogPI == null) { |
| + this.oasisXMLCatalogPI = new Boolean(queryAllowOasisXMLCatalogPI()); |
| + } |
| + return this.oasisXMLCatalogPI.booleanValue(); |
| + } |
| + |
| + public void setAllowOasisXMLCatalogPI(boolean allowPI) |
| + { |
| + this.oasisXMLCatalogPI = new Boolean(allowPI); |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public boolean allowOasisXMLCatalogPI() |
| + { |
| + return getAllowOasisXMLCatalogPI(); |
| + } |
| + |
| + public String queryCatalogClassName() |
| + { |
| + String className = System.getProperty(pClassname); |
| + if (className == null) |
| + { |
| + if (this.resources == null) { |
| + readProperties(); |
| + } |
| + if (this.resources == null) { |
| + return null; |
| + } |
| + try |
| + { |
| + return this.resources.getString("catalog-class-name"); |
| + } |
| + catch (MissingResourceException e) |
| + { |
| + return null; |
| + } |
| + } |
| + return className; |
| + } |
| + |
| + public String getCatalogClassName() |
| + { |
| + if (this.catalogClassName == null) { |
| + this.catalogClassName = queryCatalogClassName(); |
| + } |
| + return this.catalogClassName; |
| + } |
| + |
| + public void setCatalogClassName(String className) |
| + { |
| + this.catalogClassName = className; |
| + } |
| + |
| + /** |
| + * @deprecated |
| + */ |
| + public String catalogClassName() |
| + { |
| + return getCatalogClassName(); |
| + } |
| +} |
| Los ficheros binarios org/apache/xml/resolver/.NbCatalogManager.java.swp y patched-org/apache/xml/resolver/.NbCatalogManager.java.swp son distintos |
| diff -ruN org/apache/xml/resolver/tools/NbCatalogResolver.java patched-org/apache/xml/resolver/tools/NbCatalogResolver.java |
| --- org/apache/xml/resolver/tools/NbCatalogResolver.java 1970-01-01 01:00:00.000000000 +0100 |
| +++ patched-org/apache/xml/resolver/tools/NbCatalogResolver.java 2017-10-22 15:12:54.716007923 +0200 |
| @@ -0,0 +1,233 @@ |
| +/* |
| + * Licensed to the Apache Software Foundation (ASF) under one or more |
| + * contributor license agreements. See the NOTICE file distributed with |
| + * this work for additional information regarding copyright ownership. |
| + * The ASF licenses this file to You under the Apache License, Version 2.0 |
| + * (the "License"); you may not use this file except in compliance with |
| + * the License. You may obtain a copy of the License at |
| + * |
| + * http://www.apache.org/licenses/LICENSE-2.0 |
| + * |
| + * Unless required by applicable law or agreed to in writing, software |
| + * distributed under the License is distributed on an "AS IS" BASIS, |
| + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| + * See the License for the specific language governing permissions and |
| + * limitations under the License. |
| + */ |
| +package org.apache.xml.resolver.tools; |
| + |
| +import java.io.IOException; |
| +import java.net.MalformedURLException; |
| +import java.net.URL; |
| +import javax.xml.parsers.ParserConfigurationException; |
| +import javax.xml.parsers.SAXParser; |
| +import javax.xml.parsers.SAXParserFactory; |
| +import javax.xml.transform.Source; |
| +import javax.xml.transform.TransformerException; |
| +import javax.xml.transform.URIResolver; |
| +import javax.xml.transform.sax.SAXSource; |
| +import org.apache.xml.resolver.Catalog; |
| +import org.apache.xml.resolver.CatalogManager; |
| +import org.apache.xml.resolver.NbCatalogManager; |
| +import org.apache.xml.resolver.helpers.Debug; |
| +import org.apache.xml.resolver.helpers.FileURL; |
| +import org.xml.sax.EntityResolver; |
| +import org.xml.sax.InputSource; |
| +import org.xml.sax.SAXException; |
| +import org.xml.sax.XMLReader; |
| + |
| +public class NbCatalogResolver |
| + implements EntityResolver, URIResolver |
| +{ |
| + public boolean namespaceAware = true; |
| + public boolean validating = false; |
| + private Catalog catalog = null; |
| + private CatalogManager catalogManager = NbCatalogManager.getStaticManager(); |
| + |
| + public NbCatalogResolver() |
| + { |
| + initializeCatalogs(false); |
| + } |
| + |
| + public NbCatalogResolver(boolean privateCatalog) |
| + { |
| + initializeCatalogs(privateCatalog); |
| + } |
| + |
| + public NbCatalogResolver(NbCatalogManager manager) |
| + { |
| + this.catalogManager = manager; |
| + initializeCatalogs(!this.catalogManager.getUseStaticCatalog()); |
| + } |
| + |
| + private void initializeCatalogs(boolean privateCatalog) |
| + { |
| + this.catalog = this.catalogManager.getCatalog(); |
| + } |
| + |
| + public Catalog getCatalog() |
| + { |
| + return this.catalog; |
| + } |
| + |
| + public String getResolvedEntity(String publicId, String systemId) |
| + { |
| + String resolved = null; |
| + if (this.catalog == null) |
| + { |
| + this.catalogManager.debug.message(1, "Catalog resolution attempted with null catalog; ignored"); |
| + return null; |
| + } |
| + if (systemId != null) { |
| + try |
| + { |
| + resolved = this.catalog.resolveSystem(systemId); |
| + } |
| + catch (MalformedURLException me) |
| + { |
| + this.catalogManager.debug.message(1, "Malformed URL exception trying to resolve", publicId); |
| + |
| + resolved = null; |
| + } |
| + catch (IOException ie) |
| + { |
| + this.catalogManager.debug.message(1, "I/O exception trying to resolve", publicId); |
| + resolved = null; |
| + } |
| + } |
| + if (resolved == null) |
| + { |
| + if (publicId != null) { |
| + try |
| + { |
| + resolved = this.catalog.resolvePublic(publicId, systemId); |
| + } |
| + catch (MalformedURLException me) |
| + { |
| + this.catalogManager.debug.message(1, "Malformed URL exception trying to resolve", publicId); |
| + } |
| + catch (IOException ie) |
| + { |
| + this.catalogManager.debug.message(1, "I/O exception trying to resolve", publicId); |
| + } |
| + } |
| + if (resolved != null) { |
| + this.catalogManager.debug.message(2, "Resolved public", publicId, resolved); |
| + } |
| + } |
| + else |
| + { |
| + this.catalogManager.debug.message(2, "Resolved system", systemId, resolved); |
| + } |
| + return resolved; |
| + } |
| + |
| + public InputSource resolveEntity(String publicId, String systemId) |
| + { |
| + String resolved = getResolvedEntity(publicId, systemId); |
| + if (resolved != null) |
| + { |
| + InputSource iSource = new InputSource(resolved); |
| + iSource.setPublicId(publicId); |
| + return iSource; |
| + } |
| + return null; |
| + } |
| + |
| + public Source resolve(String href, String base) |
| + throws TransformerException |
| + { |
| + String uri = href; |
| + String fragment = null; |
| + int hashPos = href.indexOf("#"); |
| + if (hashPos >= 0) |
| + { |
| + uri = href.substring(0, hashPos); |
| + fragment = href.substring(hashPos + 1); |
| + } |
| + String result = null; |
| + try |
| + { |
| + result = this.catalog.resolveURI(href); |
| + } |
| + catch (Exception e) {} |
| + if (result == null) { |
| + try |
| + { |
| + URL url = null; |
| + if (base == null) |
| + { |
| + url = new URL(uri); |
| + result = url.toString(); |
| + } |
| + else |
| + { |
| + URL baseURL = new URL(base); |
| + url = href.length() == 0 ? baseURL : new URL(baseURL, uri); |
| + result = url.toString(); |
| + } |
| + } |
| + catch (MalformedURLException mue) |
| + { |
| + String absBase = makeAbsolute(base); |
| + if (!absBase.equals(base)) { |
| + return resolve(href, absBase); |
| + } |
| + throw new TransformerException("Malformed URL " + href + "(base " + base + ")", mue); |
| + } |
| + } |
| + this.catalogManager.debug.message(2, "Resolved URI", href, result); |
| + |
| + SAXSource source = new SAXSource(); |
| + source.setInputSource(new InputSource(result)); |
| + setEntityResolver(source); |
| + return source; |
| + } |
| + |
| + private void setEntityResolver(SAXSource source) |
| + throws TransformerException |
| + { |
| + XMLReader reader = source.getXMLReader(); |
| + if (reader == null) |
| + { |
| + SAXParserFactory spFactory = SAXParserFactory.newInstance(); |
| + spFactory.setNamespaceAware(true); |
| + try |
| + { |
| + reader = spFactory.newSAXParser().getXMLReader(); |
| + } |
| + catch (ParserConfigurationException ex) |
| + { |
| + throw new TransformerException(ex); |
| + } |
| + catch (SAXException ex) |
| + { |
| + throw new TransformerException(ex); |
| + } |
| + } |
| + reader.setEntityResolver(this); |
| + source.setXMLReader(reader); |
| + } |
| + |
| + private String makeAbsolute(String uri) |
| + { |
| + if (uri == null) { |
| + uri = ""; |
| + } |
| + try |
| + { |
| + URL url = new URL(uri); |
| + return url.toString(); |
| + } |
| + catch (MalformedURLException mue) |
| + { |
| + try |
| + { |
| + URL fileURL = FileURL.makeURL(uri); |
| + return fileURL.toString(); |
| + } |
| + catch (MalformedURLException mue2) {} |
| + } |
| + return uri; |
| + } |
| +} |
| Los ficheros binarios org/apache/xml/resolver/tools/.NbCatalogResolver.java.swp y patched-org/apache/xml/resolver/tools/.NbCatalogResolver.java.swp son distintos |
| Los ficheros binarios org/apache/xml/resolver/.Version.java.swp y patched-org/apache/xml/resolver/.Version.java.swp son distintos |