You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2017/10/22 14:45:36 UTC

[incubator-netbeans] branch master updated: [NETBEANS-54] Module Review o.apache.xml.resolver

This is an automated email from the ASF dual-hosted git repository.

matthiasblaesing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 4f4debf  [NETBEANS-54] Module Review o.apache.xml.resolver
     new 4d66104  Merge branch 'pr/172'
4f4debf is described below

commit 4f4debf776ff247b33fe49b876379fbd90d65fe3
Author: Antonio Vieiro <an...@vieiro.net>
AuthorDate: Sat Oct 21 19:14:12 2017 +0200

    [NETBEANS-54] Module Review o.apache.xml.resolver
    
      - Updated external/binaries-list with Maven coordinates for the sources.
      - Created external/xml-resolver-1.2-netbeans.patch and external/README-xml-resolver-1.2-netbeans.patch
      - Added resolver-1.2-notice.txt
      - Updated "build.xml" adding a hook at "-javac-init" to apply the patch to the sources and create external/resolver-1.2.jar
      - No other licensing issues found.
---
 o.apache.xml.resolver/build.xml                    |  38 +
 .../README-xml-resolver-1.2-netbeans.patch         |  23 +
 o.apache.xml.resolver/external/binaries-list       |   3 +-
 .../external/resolver-1.2-notice.txt               |   9 +
 .../external/xml-resolver-1.2-netbeans.patch       | 874 +++++++++++++++++++++
 5 files changed, 946 insertions(+), 1 deletion(-)

diff --git a/o.apache.xml.resolver/build.xml b/o.apache.xml.resolver/build.xml
index e296041..40143e1 100644
--- a/o.apache.xml.resolver/build.xml
+++ b/o.apache.xml.resolver/build.xml
@@ -20,5 +20,43 @@
 
 -->
 <project name="o.apache.xml.resolver" default="netbeans" basedir=".">
+
     <import file="../nbbuild/templates/projectized.xml"/>
+
+    <!-- A task to check if the binary 'external/resolver-1.2.jar exists -->
+    <target name="-check-requires-patching-maven-sources">
+        <available file="external/resolver-1.2.jar" property="sources-already-patched" />
+    </target>
+
+    <!-- 
+         '-javac-init' task is invoked after maven sources have been downloaded 
+         to 'external/xml-resolver-1.2-sources.jar'
+         (see external/binaries-list).
+         Then if 'external/resolver-1.2.jar does NOT exist...
+    -->
+    <target name="-prepare-patched-binary" depends="-check-requires-patching-maven-sources" unless="sources-already-patched">
+        <echo message="Patching xml-resolver-1.2-sources.jar for Netbeans..." />
+        <!-- ... 1. Prepares a 'build/external-patch/[sources|classes]' working directories -->
+        <delete dir="build/external-patch" />
+        <mkdir dir="build/external-patch/sources" />
+        <!-- ... 2. Unzips maven sources -->
+        <unzip src="external/xml-resolver-1.2-sources.jar" dest="build/external-patch/sources" />
+        <!-- ... 3. Applies patch 'external/xml-resolver-1.2-netbeans.patch -->
+        <patch dir="build/external-patch/sources"
+            patchfile="external/xml-resolver-1.2-netbeans.patch"
+            strip="0" />
+        <!-- ... 4. Compiles sources to build/external-patch/classes -->
+        <mkdir dir="build/external-patch/classes" />
+        <javac srcdir="build/external-patch/sources"
+            destdir="build/external-patch/classes" >
+            <exclude name="org/apache/xml/resolver/tests/**" />
+        </javac>
+        <!-- ... 5. Creates a jar in 'external/resolver-1.2.jar' -->
+        <jar destfile="external/resolver-1.2.jar">
+            <fileset dir="build/external-patch/classes" />
+        </jar>
+    </target>
+
+    <!-- Hook into harness "basic-init" task -->
+    <target name="-javac-init" depends="-prepare-patched-binary, projectized-common.-javac-init" />
 </project>
diff --git a/o.apache.xml.resolver/external/README-xml-resolver-1.2-netbeans.patch b/o.apache.xml.resolver/external/README-xml-resolver-1.2-netbeans.patch
new file mode 100644
index 0000000..20f2837
--- /dev/null
+++ b/o.apache.xml.resolver/external/README-xml-resolver-1.2-netbeans.patch
@@ -0,0 +1,23 @@
+The "xml-resolver-1.2-netbeans.patch" was created in 2017 for the donation of NetBeans to the Apache Foundation.
+
+The patch is licensed under the Apache 2.0 License. See [1] for license information.
+
+The patch is to be applied to the Apache XML Commons Resolver version 1.2 sources as downloaded from Maven Central [2]
+
+The patch contains the modifications detailed in "readme.txt", i.e.:
+  - The method "getPublicIDs()" in org/apache/xml/resolver/Catalog.java
+  - The special "if" clause in org/apache/xml/resolver/CatalogManager.java#readProperties()
+  - The org/apache/xml/resolver/NbCatalogManager.java new class.
+  - The org/apache/xml/resolver/tools/NbCatalogResolver.java new class.
+
+Note that for historic reasons the sources from Maven Central contain
+MS-DOS/Windows line endings, so the patch also uses these line endings, that
+must be preserved.
+
+
+
+[1] http://mail-archives.apache.org/mod_mbox/incubator-netbeans-dev/201710.mbox/browser
+[2] http://repo1.maven.org/maven2/xml-resolver/xml-resolver/1.2/xml-resolver-1.2-sources.jar
+[3] https://netbeans.org/bugzilla/show_bug.cgi?id=128678#c17
+
+
diff --git a/o.apache.xml.resolver/external/binaries-list b/o.apache.xml.resolver/external/binaries-list
index 4db0e8a..34aab98 100644
--- a/o.apache.xml.resolver/external/binaries-list
+++ b/o.apache.xml.resolver/external/binaries-list
@@ -14,4 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-B0D0FCBAC68826D2AFA3C7C89FC4D57B95A000C3 resolver-1.2.jar
+#
+6B72432EA1C5296783007365BB7C9A6B39DFB730 xml-resolver:xml-resolver:1.2:sources
diff --git a/o.apache.xml.resolver/external/resolver-1.2-notice.txt b/o.apache.xml.resolver/external/resolver-1.2-notice.txt
new file mode 100644
index 0000000..214dadd
--- /dev/null
+++ b/o.apache.xml.resolver/external/resolver-1.2-notice.txt
@@ -0,0 +1,9 @@
+Apache XML Commons Resolver
+Copyright 2006 The Apache Software Foundation.
+
+This product includes software developed at
+The Apache Software Foundation http://www.apache.org/
+
+Portions of this code are derived from classes placed in the
+public domain by Arbortext on 10 Apr 2000. See:
+http://www.arbortext.com/customer_support/updates_and_technical_notes/catalogs/docs/README.htm
diff --git a/o.apache.xml.resolver/external/xml-resolver-1.2-netbeans.patch b/o.apache.xml.resolver/external/xml-resolver-1.2-netbeans.patch
new file mode 100644
index 0000000..5dd98b5
--- /dev/null
+++ b/o.apache.xml.resolver/external/xml-resolver-1.2-netbeans.patch
@@ -0,0 +1,874 @@
+# 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

-- 
To stop receiving notification emails like this one, please contact
['"commits@netbeans.apache.org" <co...@netbeans.apache.org>'].