Committing the patch in XALANJ-2220.
This reducest the serializer's knowledge of its own package
by replacing literal strings starting with:
"org.apache.xml.serializer"
"org/apache/xml/serializer"
with a constant that is derived from:
SerializerBase.class.getName()
The patch was reviewed by Yash Talwar (see the Jira issue).
diff --git a/src/org/apache/xalan/xsltc/compiler/Constants.java b/src/org/apache/xalan/xsltc/compiler/Constants.java
index 97e1784..76b1f7b 100644
--- a/src/org/apache/xalan/xsltc/compiler/Constants.java
+++ b/src/org/apache/xalan/xsltc/compiler/Constants.java
@@ -20,6 +20,7 @@
package org.apache.xalan.xsltc.compiler;
import org.apache.bcel.generic.InstructionConstants;
+import org.apache.xml.serializer.SerializerBase;
/**
* @author Jacek Ambroziak
@@ -136,9 +137,9 @@
public static final String STRING_VALUE_HANDLER_SIG
= "Lorg/apache/xalan/xsltc/runtime/StringValueHandler;";
public static final String OUTPUT_HANDLER
- = "org/apache/xml/serializer/SerializationHandler";
+ = SerializerBase.PKG_PATH+"/SerializationHandler";
public static final String OUTPUT_HANDLER_SIG
- = "Lorg/apache/xml/serializer/SerializationHandler;";
+ = "L"+SerializerBase.PKG_PATH+"/SerializationHandler;";
public static final String FILTER_INTERFACE
= "org.apache.xalan.xsltc.dom.Filter";
public static final String FILTER_INTERFACE_SIG
@@ -212,7 +213,7 @@
public static final String UNION_ITERATOR_SIG
= "Lorg/apache/xalan/xsltc/dom/UnionIterator;";
public static final String TRANSLET_OUTPUT_SIG
- = "Lorg/apache/xml/serializer/SerializationHandler;";
+ = "L"+SerializerBase.PKG_PATH+"/SerializationHandler;";
public static final String MAKE_NODE_SIG
= "(I)Lorg/w3c/dom/Node;";
public static final String MAKE_NODE_SIG2
@@ -223,10 +224,10 @@
= "(" + NODE_ITERATOR_SIG + ")Lorg/w3c/dom/NodeList;";
public static final String STREAM_XML_OUTPUT
- = "org.apache.xml.serializer.ToXMLStream";
+ = SerializerBase.PKG_NAME+".ToXMLStream";
public static final String OUTPUT_BASE
- = "org.apache.xml.serializer.SerializerBase";
+ = SerializerBase.PKG_NAME+".SerializerBase";
public static final String LOAD_DOCUMENT_CLASS
= "org.apache.xalan.xsltc.dom.LoadDocument";
@@ -259,7 +260,7 @@
= "org.apache.xalan.xsltc.TransletOutputBase";
// output interface
public static final String TRANSLET_OUTPUT_INTERFACE
- = "org.apache.xml.serializer.SerializationHandler";
+ = SerializerBase.PKG_NAME+".SerializationHandler";
public static final String BASIS_LIBRARY_CLASS
= "org.apache.xalan.xsltc.runtime.BasisLibrary";
public static final String ATTRIBUTE_LIST_IMPL_CLASS
diff --git a/src/org/apache/xml/serializer/CharInfo.java b/src/org/apache/xml/serializer/CharInfo.java
index e617430..9389ac9 100644
--- a/src/org/apache/xml/serializer/CharInfo.java
+++ b/src/org/apache/xml/serializer/CharInfo.java
@@ -57,14 +57,14 @@
* If specified, the file will be resource loaded with the default class loader.
*/
public static final String HTML_ENTITIES_RESOURCE =
- "org.apache.xml.serializer.HTMLEntities";
+ SerializerBase.PKG_NAME+".HTMLEntities";
/**
* The name of the XML entities file.
* If specified, the file will be resource loaded with the default class loader.
*/
public static final String XML_ENTITIES_RESOURCE =
- "org.apache.xml.serializer.XMLEntities";
+ SerializerBase.PKG_NAME+".XMLEntities";
/** The horizontal tab character, which the parser should always normalize. */
public static final char S_HORIZONAL_TAB = 0x09;
diff --git a/src/org/apache/xml/serializer/Encodings.java b/src/org/apache/xml/serializer/Encodings.java
index bb5cf2f..0af625a 100644
--- a/src/org/apache/xml/serializer/Encodings.java
+++ b/src/org/apache/xml/serializer/Encodings.java
@@ -48,12 +48,7 @@
/**
* Standard filename for properties file with encodings data.
*/
- private static final String ENCODINGS_FILE = "org/apache/xml/serializer/Encodings.properties";
-
- /**
- * Standard filename for properties file with encodings data.
- */
- private static final String ENCODINGS_PROP = "org.apache.xalan.serialize.encodings";
+ private static final String ENCODINGS_FILE = SerializerBase.PKG_PATH+"/Encodings.properties";
/**
* Returns a writer for the specified encoding based on
@@ -294,30 +289,13 @@
*/
private static EncodingInfo[] loadEncodingInfo()
{
- URL url = null;
try
{
- String urlString = null;
- InputStream is = null;
-
- try
- {
- urlString = System.getProperty(ENCODINGS_PROP, "");
- }
- catch (SecurityException e)
- {
- }
-
- if (urlString != null && urlString.length() > 0) {
- url = new URL(urlString);
- is = url.openStream();
- }
-
- if (is == null) {
- SecuritySupport ss = SecuritySupport.getInstance();
- is = ss.getResourceAsStream(ObjectFactory.findClassLoader(),
+ final InputStream is;
+
+ SecuritySupport ss = SecuritySupport.getInstance();
+ is = ss.getResourceAsStream(ObjectFactory.findClassLoader(),
ENCODINGS_FILE);
- }
Properties props = new Properties();
if (is != null) {
diff --git a/src/org/apache/xml/serializer/OutputPropertiesFactory.java b/src/org/apache/xml/serializer/OutputPropertiesFactory.java
index ef85cf8..500b8dd 100644
--- a/src/org/apache/xml/serializer/OutputPropertiesFactory.java
+++ b/src/org/apache/xml/serializer/OutputPropertiesFactory.java
@@ -184,7 +184,7 @@
private static Integer m_synch_object = new Integer(1);
/** the directory in which the various method property files are located */
- private static final String PROP_DIR = "org/apache/xml/serializer/";
+ private static final String PROP_DIR = SerializerBase.PKG_PATH+'/';
/** property file for default XML properties */
private static final String PROP_FILE_XML = "output_xml.properties";
/** property file for default TEXT properties */
diff --git a/src/org/apache/xml/serializer/SerializerBase.java b/src/org/apache/xml/serializer/SerializerBase.java
index b7966ce..a6ea234 100644
--- a/src/org/apache/xml/serializer/SerializerBase.java
+++ b/src/org/apache/xml/serializer/SerializerBase.java
@@ -44,6 +44,42 @@
implements SerializationHandler, SerializerConstants
{
+ /**
+ * The name of the package that this class is in.
+ * <p>
+ * Not a public API.
+ */
+ public static final String PKG_NAME;
+
+ /**
+ * The same as the name of the package that this class is in
+ * except that '.' are replaced with '/'.
+ * <p>
+ * Not a public API.
+ */
+ public static final String PKG_PATH;
+
+ static {
+ String fullyQualifiedName = SerializerBase.class.getName();
+ int lastDot = fullyQualifiedName.lastIndexOf('.');
+ if (lastDot < 0) {
+ PKG_NAME = "";
+ } else {
+ PKG_NAME = fullyQualifiedName.substring(0, lastDot);
+ }
+
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < PKG_NAME.length(); i++) {
+ char ch = PKG_NAME.charAt(i);
+ if (ch == '.')
+ sb.append('/');
+ else
+ sb.append(ch);
+ }
+ PKG_PATH = sb.toString();
+ }
+
+
/**
* To fire off the end element trace event
diff --git a/src/org/apache/xml/serializer/SerializerConstants.java b/src/org/apache/xml/serializer/SerializerConstants.java
index 708cad9..fd2c977 100644
--- a/src/org/apache/xml/serializer/SerializerConstants.java
+++ b/src/org/apache/xml/serializer/SerializerConstants.java
@@ -47,7 +47,7 @@
static final String XMLNS_PREFIX = "xmlns";
static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/";
- public static final String DEFAULT_SAX_SERIALIZER="org.apache.xml.serializer.ToXMLSAXHandler";
+ public static final String DEFAULT_SAX_SERIALIZER=SerializerBase.PKG_NAME+".ToXMLSAXHandler";
/**
* Define the XML version.
diff --git a/src/org/apache/xml/serializer/utils/Utils.java b/src/org/apache/xml/serializer/utils/Utils.java
index 714ec8f..c23cf6d 100644
--- a/src/org/apache/xml/serializer/utils/Utils.java
+++ b/src/org/apache/xml/serializer/utils/Utils.java
@@ -19,6 +19,7 @@
package org.apache.xml.serializer.utils;
import java.util.Hashtable;
+import org.apache.xml.serializer.SerializerBase;
/**
* This class contains utilities used by the serializer.
@@ -37,5 +38,5 @@
*/
public static final org.apache.xml.serializer.utils.Messages messages=
new org.apache.xml.serializer.utils.Messages(
- "org.apache.xml.serializer.utils.SerializerMessages");
+ SerializerBase.PKG_NAME+".utils.SerializerMessages");
}