You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2003/04/01 22:16:28 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java ElemAttribute.java ElemCopy.java ElemCopyOf.java ElemElement.java ElemExtensionCall.java ElemForEach.java ElemLiteralResult.java ElemTemplateElement.java ElemTextLiteral.java ElemValueOf.java OutputProperties.java StylesheetRoot.java output_html.properties output_text.properties output_xml.properties
mkwan 2003/04/01 12:16:28
Modified: java/src/org/apache/xalan/templates ElemApplyTemplates.java
ElemAttribute.java ElemCopy.java ElemCopyOf.java
ElemElement.java ElemExtensionCall.java
ElemForEach.java ElemLiteralResult.java
ElemTemplateElement.java ElemTextLiteral.java
ElemValueOf.java OutputProperties.java
StylesheetRoot.java
Removed: java/src/org/apache/xalan/templates output_html.properties
output_text.properties output_xml.properties
Log:
Merging XSLTC_DTM and common serializer to the head
Changes in org.apache.xalan.templates.
Replace ResultTreeHandler with SerializationHandler.
Revision Changes Path
1.29 +4 -4 xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java
Index: ElemApplyTemplates.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemApplyTemplates.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ElemApplyTemplates.java 30 Jan 2003 18:45:50 -0000 1.28
+++ ElemApplyTemplates.java 1 Apr 2003 20:16:26 -0000 1.29
@@ -60,18 +60,17 @@
import javax.xml.transform.TransformerException;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.StackGuard;
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xml.utils.IntStack;
import org.apache.xml.utils.QName;
import org.apache.xpath.VariableStack;
import org.apache.xpath.XPath;
import org.apache.xpath.XPathContext;
import org.apache.xpath.objects.XObject;
-import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
/**
@@ -268,8 +267,8 @@
new org.apache.xpath.objects.XNodeSet(sourceNodes));
}
- final ResultTreeHandler rth = transformer.getResultTreeHandler();
- ContentHandler chandler = rth.getContentHandler();
+ final SerializationHandler rth = transformer.getSerializationHandler();
+// ContentHandler chandler = rth.getContentHandler();
final StylesheetRoot sroot = transformer.getStylesheet();
final TemplateList tl = sroot.getTemplateListComposed();
final boolean quiet = transformer.getQuietConflictWarnings();
@@ -319,6 +318,7 @@
}
final int exNodeType = dtm.getExpandedTypeID(child);
+
final int nodeType = dtm.getNodeType(child);
final QName mode = transformer.getMode();
1.23 +14 -6 xml-xalan/java/src/org/apache/xalan/templates/ElemAttribute.java
Index: ElemAttribute.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemAttribute.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- ElemAttribute.java 30 Jan 2003 18:45:50 -0000 1.22
+++ ElemAttribute.java 1 Apr 2003 20:16:27 -0000 1.23
@@ -59,8 +59,9 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xml.serializer.NamespaceMappings;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xml.utils.QName;
import org.xml.sax.SAXException;
@@ -114,7 +115,7 @@
TransformerImpl transformer)
throws TransformerException
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getSerializationHandler();
// If they are trying to add an attribute when there isn't an
// element pending, it is an error.
@@ -154,7 +155,7 @@
*
* @return The prefix to be used.
*/
- protected String resolvePrefix(ResultTreeHandler rhandler,
+ protected String resolvePrefix(SerializationHandler rhandler,
String prefix, String nodeNamespace)
throws TransformerException
{
@@ -170,7 +171,8 @@
{
if(nodeNamespace.length() > 0)
{
- prefix = rhandler.getNewUniqueNSPrefix();
+ NamespaceMappings prefixMapping = rhandler.getNamespaceMappings();
+ prefix = prefixMapping.generateNextPrefix();
}
else
prefix = "";
@@ -215,7 +217,7 @@
if(null != nodeName && nodeName.length() > 0)
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getSerializationHandler();
if(prefix != null && prefix.length() > 0)
{
try
@@ -229,7 +231,13 @@
}
String val = transformer.transformToString(this);
String localName = QName.getLocalPart(nodeName);
- rhandler.addAttribute(nodeNamespace, localName, nodeName, "CDATA", val);
+ try
+ {
+ rhandler.addAttribute(nodeNamespace, localName, nodeName, "CDATA", val);
+ }
+ catch (SAXException e)
+ {
+ }
}
}
1.18 +4 -3 xml-xalan/java/src/org/apache/xalan/templates/ElemCopy.java
Index: ElemCopy.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopy.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ElemCopy.java 30 Jan 2003 18:45:50 -0000 1.17
+++ ElemCopy.java 1 Apr 2003 20:16:27 -0000 1.18
@@ -59,9 +59,10 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.transformer.ClonerToResultTree;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xml.dtm.DTM;
+import org.apache.xalan.serialize.SerializerUtils;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xpath.XPathContext;
/**
@@ -136,7 +137,7 @@
if ((DTM.DOCUMENT_NODE != nodeType) && (DTM.DOCUMENT_FRAGMENT_NODE != nodeType))
{
- ResultTreeHandler rthandler = transformer.getResultTreeHandler();
+ SerializationHandler rthandler = transformer.getSerializationHandler();
if (TransformerImpl.S_DEBUG)
transformer.getTraceManager().fireTraceEvent(this);
@@ -148,7 +149,7 @@
if (DTM.ELEMENT_NODE == nodeType)
{
super.execute(transformer);
- rthandler.processNSDecls(sourceNode, nodeType, dtm);
+ SerializerUtils.processNSDecls(rthandler, sourceNode, nodeType, dtm);
transformer.executeChildTemplates(this, true);
String ns = dtm.getNamespaceURI(sourceNode);
1.17 +6 -5 xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java
Index: ElemCopyOf.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ElemCopyOf.java 30 Jan 2003 18:45:50 -0000 1.16
+++ ElemCopyOf.java 1 Apr 2003 20:16:27 -0000 1.17
@@ -59,12 +59,13 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xalan.transformer.TreeWalker2Result;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
import org.apache.xml.dtm.ref.DTMTreeWalker;
+import org.apache.xalan.serialize.SerializerUtils;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xpath.XPath;
import org.apache.xpath.XPathContext;
import org.apache.xpath.objects.XObject;
@@ -173,7 +174,7 @@
transformer.getTraceManager().fireSelectedEvent(sourceNode, this,
"select", m_selectExpression, value);
- ResultTreeHandler handler = transformer.getResultTreeHandler();
+ SerializationHandler handler = transformer.getSerializationHandler();
if (null != value)
{
@@ -215,7 +216,7 @@
}
else if (t == DTM.ATTRIBUTE_NODE)
{
- handler.addAttribute(pos);
+ SerializerUtils.addAttribute(handler, pos);
}
else
{
@@ -225,8 +226,8 @@
// nl.detach();
break;
case XObject.CLASS_RTREEFRAG :
- handler.outputResultTreeFragment(value,
- transformer.getXPathContext());
+ SerializerUtils.outputResultTreeFragment(
+ handler, value, transformer.getXPathContext());
break;
default :
1.30 +5 -5 xml-xalan/java/src/org/apache/xalan/templates/ElemElement.java
Index: ElemElement.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemElement.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- ElemElement.java 30 Jan 2003 18:45:50 -0000 1.29
+++ ElemElement.java 1 Apr 2003 20:16:27 -0000 1.30
@@ -59,8 +59,8 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xml.utils.QName;
import org.apache.xpath.XPathContext;
import org.xml.sax.SAXException;
@@ -242,7 +242,7 @@
*
* @return The prefix to be used.
*/
- protected String resolvePrefix(ResultTreeHandler rhandler,
+ protected String resolvePrefix(SerializationHandler rhandler,
String prefix, String nodeNamespace)
throws TransformerException
{
@@ -278,7 +278,7 @@
if (TransformerImpl.S_DEBUG)
transformer.getTraceManager().fireTraceEvent(this);
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getSerializationHandler();
XPathContext xctxt = transformer.getXPathContext();
int sourceNode = xctxt.getCurrentNode();
@@ -390,7 +390,7 @@
try
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getResultTreeHandler();
if (null == nodeName)
{
@@ -409,7 +409,7 @@
}
rhandler.startElement(nodeNamespace, QName.getLocalPart(nodeName),
- nodeName, null);
+ nodeName);
super.execute(transformer);
1.33 +2 -2 xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java
Index: ElemExtensionCall.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- ElemExtensionCall.java 30 Jan 2003 18:45:50 -0000 1.32
+++ ElemExtensionCall.java 1 Apr 2003 20:16:27 -0000 1.33
@@ -291,9 +291,9 @@
}
}
}
- catch(org.xml.sax.SAXException se)
+ catch(TransformerException e)
{
- transformer.getErrorListener().fatalError(new TransformerException(se));
+ transformer.getErrorListener().fatalError(e);
}
}
1.34 +0 -4 xml-xalan/java/src/org/apache/xalan/templates/ElemForEach.java
Index: ElemForEach.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemForEach.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- ElemForEach.java 30 Jan 2003 18:45:50 -0000 1.33
+++ ElemForEach.java 1 Apr 2003 20:16:27 -0000 1.34
@@ -61,7 +61,6 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.transformer.NodeSorter;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
@@ -71,7 +70,6 @@
import org.apache.xpath.ExpressionOwner;
import org.apache.xpath.XPath;
import org.apache.xpath.XPathContext;
-import org.xml.sax.ContentHandler;
/**
* <meta name="usage" content="advanced"/>
@@ -375,8 +373,6 @@
new org.apache.xpath.objects.XNodeSet(sourceNodes));
}
- final ResultTreeHandler rth = transformer.getResultTreeHandler();
- ContentHandler chandler = rth.getContentHandler();
xctxt.pushCurrentNode(DTM.NULL);
1.35 +3 -3 xml-xalan/java/src/org/apache/xalan/templates/ElemLiteralResult.java
Index: ElemLiteralResult.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemLiteralResult.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- ElemLiteralResult.java 30 Jan 2003 18:45:50 -0000 1.34
+++ ElemLiteralResult.java 1 Apr 2003 20:16:27 -0000 1.35
@@ -61,8 +61,8 @@
import javax.xml.transform.TransformerException;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xml.utils.StringVector;
import org.apache.xpath.XPathContext;
@@ -647,7 +647,7 @@
try
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getSerializationHandler();
// JJK Bugzilla 3464, test namespace85 -- make sure LRE's
// namespace is asserted even if default, since xsl:element
@@ -656,7 +656,7 @@
// Add namespace declarations.
executeNSDecls(transformer);
- rhandler.startElement(getNamespace(), getLocalName(), getRawName(), null);
+ rhandler.startElement(getNamespace(), getLocalName(), getRawName());
try
{
1.59 +3 -3 xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java
Index: ElemTemplateElement.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- ElemTemplateElement.java 30 Jan 2003 18:45:51 -0000 1.58
+++ ElemTemplateElement.java 1 Apr 2003 20:16:27 -0000 1.59
@@ -65,8 +65,8 @@
import org.apache.xalan.res.XSLMessages;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xml.utils.PrefixResolver;
import org.apache.xml.utils.UnImplNode;
import org.apache.xpath.ExpressionNode;
@@ -1208,7 +1208,7 @@
{
if (null != m_prefixTable)
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getResultTreeHandler();
int n = m_prefixTable.size();
for (int i = n - 1; i >= 0; i--)
@@ -1257,7 +1257,7 @@
{
if (null != m_prefixTable)
{
- ResultTreeHandler rhandler = transformer.getResultTreeHandler();
+ SerializationHandler rhandler = transformer.getResultTreeHandler();
int n = m_prefixTable.size();
for (int i = 0; i < n; i++)
1.13 +2 -2 xml-xalan/java/src/org/apache/xalan/templates/ElemTextLiteral.java
Index: ElemTextLiteral.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTextLiteral.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ElemTextLiteral.java 30 Jan 2003 18:45:51 -0000 1.12
+++ ElemTextLiteral.java 1 Apr 2003 20:16:27 -0000 1.13
@@ -58,8 +58,8 @@
import javax.xml.transform.TransformerException;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xml.serializer.SerializationHandler;
import org.xml.sax.SAXException;
/**
@@ -242,7 +242,7 @@
transformer.getTraceManager().fireTraceEvent(this);
try
{
- ResultTreeHandler rth = transformer.getResultTreeHandler();
+ SerializationHandler rth = transformer.getResultTreeHandler();
if (m_disableOutputEscaping)
{
rth.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
1.22 +2 -2 xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java
Index: ElemValueOf.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ElemValueOf.java 30 Jan 2003 18:45:51 -0000 1.21
+++ ElemValueOf.java 1 Apr 2003 20:16:27 -0000 1.22
@@ -59,9 +59,9 @@
import javax.xml.transform.TransformerException;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.transformer.ResultTreeHandler;
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xml.dtm.DTM;
+import org.apache.xml.serializer.SerializationHandler;
import org.apache.xpath.Expression;
import org.apache.xpath.XPath;
import org.apache.xpath.XPathContext;
@@ -250,7 +250,7 @@
{
XPathContext xctxt = transformer.getXPathContext();
- ResultTreeHandler rth = transformer.getResultTreeHandler();
+ SerializationHandler rth = transformer.getResultTreeHandler();
if (TransformerImpl.S_DEBUG)
transformer.getTraceManager().fireTraceEvent(this);
1.28 +34 -415 xml-xalan/java/src/org/apache/xalan/templates/OutputProperties.java
Index: OutputProperties.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/OutputProperties.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- OutputProperties.java 30 Jan 2003 18:45:51 -0000 1.27
+++ OutputProperties.java 1 Apr 2003 20:16:27 -0000 1.28
@@ -56,9 +56,6 @@
*/
package org.apache.xalan.templates;
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
@@ -68,10 +65,10 @@
import org.apache.xalan.res.XSLMessages;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.serialize.Method;
+import org.apache.xml.serializer.OutputPropertiesFactory;
+import org.apache.xml.serializer.OutputPropertyUtils;
import org.apache.xml.utils.FastStringBuffer;
import org.apache.xml.utils.QName;
-import org.apache.xml.utils.WrappedRuntimeException;
/**
* This class provides information from xsl:output elements. It is mainly
@@ -94,7 +91,7 @@
*/
public OutputProperties()
{
- this(Method.XML);
+ this(org.apache.xml.serializer.Method.XML);
}
/**
@@ -119,308 +116,8 @@
*/
public OutputProperties(String method)
{
- m_properties = new Properties(getDefaultMethodProperties(method));
- }
-
- static final String S_XSLT_PREFIX = "xslt.output.";
- static final int S_XSLT_PREFIX_LEN = S_XSLT_PREFIX.length();
- static final String S_XALAN_PREFIX = "org.apache.xslt.";
- static final int S_XALAN_PREFIX_LEN = S_XALAN_PREFIX.length();
-
- /** Built-in extensions namespace, reexpressed in {namespaceURI} syntax
- * suitable for prepending to a localname to produce a "universal
- * name".
- */
- static final String S_BUILTIN_EXTENSIONS_UNIVERSAL=
- "{"+Constants.S_BUILTIN_EXTENSIONS_URL+"}";
-
- /**
- * The old built-in extension namespace
- */
- static final String S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL=
- "{"+Constants.S_BUILTIN_OLD_EXTENSIONS_URL+"}";
-
- static final int S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL_LEN = S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL.length();
-
- /**
- * Fix up a string in an output properties file according to
- * the rules of {@link #loadPropertiesFile}.
- *
- * @param s non-null reference to string that may need to be fixed up.
- * @return A new string if fixup occured, otherwise the s argument.
- */
- static private String fixupPropertyString(String s, boolean doClipping)
- {
- int index;
- if (doClipping && s.startsWith(S_XSLT_PREFIX))
- {
- s = s.substring(S_XSLT_PREFIX_LEN);
- }
- if (s.startsWith(S_XALAN_PREFIX))
- {
- s = S_BUILTIN_EXTENSIONS_UNIVERSAL + s.substring(S_XALAN_PREFIX_LEN);
- }
- if ((index = s.indexOf("\\u003a")) > 0)
- {
- String temp = s.substring(index+6);
- s = s.substring(0, index) + ":" + temp;
-
- }
- return s;
- }
-
- /**
- * Load the properties file from a resource stream. If a
- * key name such as "org.apache.xslt.xxx", fix up the start of
- * string to be a curly namespace. If a key name starts with
- * "xslt.output.xxx", clip off "xslt.output.". If a key name *or* a
- * key value is discovered, check for \u003a in the text, and
- * fix it up to be ":", since earlier versions of the JDK do not
- * handle the escape sequence (at least in key names).
- *
- * @param resourceName non-null reference to resource name.
- * @param defaults Default properties, which may be null.
- */
- static private Properties loadPropertiesFile(final String resourceName, Properties defaults)
- throws IOException
- {
-
- // This static method should eventually be moved to a thread-specific class
- // so that we can cache the ContextClassLoader and bottleneck all properties file
- // loading throughout Xalan.
-
- Properties props = new Properties(defaults);
-
- InputStream is = null;
- BufferedInputStream bis = null;
- Class accessControllerClass = null;
-
- try {
- try {
- try {
-
- // This Class was introduced in JDK 1.2. With the re-architecture of
- // security mechanism ( starting in JDK 1.2 ), we have option of
- // giving privileges to certain part of code using doPrivileged block.
- // In JDK1.1.X applications won't be having security manager and if
- // there is security manager ( in applets ), code need to be signed
- // and trusted for having access to resources.
-
- accessControllerClass=Class.forName("java.security.AccessController");
-
- // If we are here means user is using JDK >= 1.2.
- // Using doPrivileged to be able to read property file without opening
- // up secured container permissions like J2EE container
-
- is =(InputStream)java.security.AccessController.doPrivileged (
- new java.security.PrivilegedAction() {
-
- public Object run() {
- try {
- java.lang.reflect.Method getCCL = Thread.class.getMethod(
- "getContextClassLoader", NO_CLASSES);
- if (getCCL != null) {
- ClassLoader contextClassLoader = (ClassLoader)
- getCCL.invoke(Thread.currentThread(), NO_OBJS);
- return ( contextClassLoader.getResourceAsStream (
- "org/apache/xalan/templates/" + resourceName) );
- }
- } catch ( Exception e ) { }
-
- return null;
-
- }
- });
- } catch ( ClassNotFoundException e ) {
- //User may be using older JDK ( JDK <1.2 ). Allow him/her to use it.
- // But don't try to use doPrivileged
- try {
- java.lang.reflect.Method getCCL = Thread.class.getMethod(
- "getContextClassLoader", NO_CLASSES);
- if (getCCL != null) {
- ClassLoader contextClassLoader = (ClassLoader)
- getCCL.invoke(Thread.currentThread(), NO_OBJS);
- is = contextClassLoader.getResourceAsStream (
- "org/apache/xalan/templates/" + resourceName );
- }
- } catch ( Exception exception ) { }
- }
- }
- catch (Exception e) {}
-
- if ( is == null ) {
- if ( accessControllerClass != null ) {
- is=(InputStream)java.security.AccessController.doPrivileged(
- new java.security.PrivilegedAction(){
- public Object run() {
- return OutputProperties.class.getResourceAsStream(resourceName);
- }
- });
- } else {
- // User may be using older JDK ( JDK < 1.2 )
- is = OutputProperties.class.getResourceAsStream(resourceName);
- }
- }
-
- bis = new BufferedInputStream(is);
- props.load(bis);
- }
- catch (IOException ioe) {
- if ( defaults == null ) {
- throw ioe;
- }
- else {
- throw new WrappedRuntimeException(XSLMessages.createMessage(XSLTErrorResources.ER_COULD_NOT_LOAD_RESOURCE, new Object[]{resourceName}), ioe); //"Could not load '"+resourceName+"' (check CLASSPATH), now using just the defaults ", ioe);
- }
- }
- catch (SecurityException se) {
- // Repeat IOException handling for sandbox/applet case -sc
- if ( defaults == null ) {
- throw se;
- }
- else {
- throw new WrappedRuntimeException(XSLMessages.createMessage(XSLTErrorResources.ER_COULD_NOT_LOAD_RESOURCE, new Object[]{resourceName}), se); //"Could not load '"+resourceName+"' (check CLASSPATH, applet security), now using just the defaults ", se);
- }
- }
- finally {
- if ( bis != null ) {
- bis.close();
- }
- if (is != null ) {
- is.close();
- }
- }
-
- // Note that we're working at the HashTable level here,
- // and not at the Properties level! This is important
- // because we don't want to modify the default properties.
- // NB: If fixupPropertyString ends up changing the property
- // name or value, we need to remove the old key and re-add
- // with the new key and value. However, then our Enumeration
- // could lose its place in the HashTable. So, we first
- // clone the HashTable and enumerate over that since the
- // clone will not change. When we migrate to Collections,
- // this code should be revisited and cleaned up to use
- // an Iterator which may (or may not) alleviate the need for
- // the clone. Many thanks to Padraig O'hIceadha
- // <pa...@gradient.ie> for finding this problem. Bugzilla 2000.
-
- Enumeration keys = ((Properties) props.clone()).keys();
- while(keys.hasMoreElements())
- {
- String key = (String)keys.nextElement();
- // Now check if the given key was specified as a
- // System property. If so, the system property
- // overides the default value in the propery file.
- String value = null;
- try {
- value = System.getProperty(key);
- }
- catch (SecurityException se) {
- // No-op for sandbox/applet case, leave null -sc
- }
- if (value == null)
- value = (String)props.get(key);
-
- String newKey = fixupPropertyString(key, true);
- String newValue = null;
- try {
- newValue = System.getProperty(newKey);
- }
- catch (SecurityException se) {
- // No-op for sandbox/applet case, leave null -sc
- }
- if (newValue == null)
- newValue = fixupPropertyString(value, false);
- else
- newValue = fixupPropertyString(newValue, false);
-
- if(key != newKey || value != newValue)
- {
- props.remove(key);
- props.put(newKey, newValue);
- }
-
- }
-
- return props;
- }
-
- /**
- * Creates an empty OutputProperties with the defaults specified by
- * a property file. The method argument is used to construct a string of
- * the form output_[method].properties (for instance, output_html.properties).
- * The output_xml.properties file is always used as the base.
- * <p>At the moment, anything other than 'text', 'xml', and 'html', will
- * use the output_xml.properties file.</p>
- *
- * @param method non-null reference to method name.
- *
- * @return Properties object that holds the defaults for the given method.
- */
- static public Properties getDefaultMethodProperties(String method)
- {
- String fileName = null;
- Properties defaultProperties = null;
- // According to this article : Double-check locking does not work
- // http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-toolbox.html
- try
- {
- synchronized (m_synch_object)
- {
- if (null == m_xml_properties) // double check
- {
- fileName = "output_xml.properties";
- m_xml_properties = loadPropertiesFile(fileName, null);
- }
- }
-
- if (method.equals(Method.XML))
- {
- defaultProperties = m_xml_properties;
- }
- else if (method.equals(Method.HTML))
- {
- if (null == m_html_properties) // double check
- {
- fileName = "output_html.properties";
- m_html_properties = loadPropertiesFile(fileName,
- m_xml_properties);
- }
-
- defaultProperties = m_html_properties;
- }
- else if (method.equals(Method.Text))
- {
- if (null == m_text_properties) // double check
- {
- fileName = "output_text.properties";
- m_text_properties = loadPropertiesFile(fileName,
- m_xml_properties);
- if(null == m_text_properties.getProperty(OutputKeys.ENCODING))
- {
- String mimeEncoding = org.apache.xalan.serialize.Encodings.getMimeEncoding(null);
- m_text_properties.put(OutputKeys.ENCODING, mimeEncoding);
- }
- }
-
- defaultProperties = m_text_properties;
- }
- else
- {
-
- // TODO: Calculate res file from name.
- defaultProperties = m_xml_properties;
- }
- }
- catch (IOException ioe)
- {
- throw new WrappedRuntimeException(
- "Output method is "+method+" could not load "+fileName+" (check CLASSPATH)",
- ioe);
- }
-
- return defaultProperties;
+ m_properties = new Properties(
+ OutputPropertiesFactory.getDefaultMethodProperties(method));
}
/**
@@ -473,8 +170,9 @@
setMethodDefaults(value);
}
- if (key.startsWith(S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL))
- key = S_BUILTIN_EXTENSIONS_UNIVERSAL + key.substring(S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL_LEN);
+ if (key.startsWith(OutputPropertiesFactory.S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL))
+ key = OutputPropertiesFactory.S_BUILTIN_EXTENSIONS_UNIVERSAL
+ + key.substring(OutputPropertiesFactory.S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL_LEN);
m_properties.put(key, value);
}
@@ -502,10 +200,11 @@
* @param key the property key.
* @return the value in this property list with the specified key value.
*/
- public String getProperty(String key)
+ public String getProperty(String key)
{
- if (key.startsWith(S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL))
- key = S_BUILTIN_EXTENSIONS_UNIVERSAL + key.substring(S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL_LEN);
+ if (key.startsWith(OutputPropertiesFactory.S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL))
+ key = OutputPropertiesFactory.S_BUILTIN_EXTENSIONS_UNIVERSAL
+ + key.substring(OutputPropertiesFactory.S_BUILTIN_OLD_EXTENSIONS_UNIVERSAL_LEN);
return m_properties.getProperty(key);
}
@@ -562,33 +261,10 @@
*/
public boolean getBooleanProperty(String key)
{
- return getBooleanProperty(key, m_properties);
+ return OutputPropertyUtils.getBooleanProperty(key, m_properties);
}
/**
- * Searches for the boolean property with the specified key in the property list.
- * If the key is not found in this property list, the default property list,
- * and its defaults, recursively, are then checked. The method returns
- * <code>false</code> if the property is not found, or if the value is other
- * than "yes".
- *
- * @param key the property key.
- * @param props the list of properties that will be searched.
- * @return the value in this property list as a boolean value, or false
- * if null or not "yes".
- */
- public static boolean getBooleanProperty(String key, Properties props)
- {
-
- String s = props.getProperty(key);
-
- if (null == s ||!s.equals("yes"))
- return false;
- else
- return true;
- }
-
- /**
* Set an output property.
*
* @param key the key to be placed into the property list.
@@ -641,31 +317,9 @@
*/
public int getIntProperty(String key)
{
- return getIntProperty(key, m_properties);
+ return OutputPropertyUtils.getIntProperty(key, m_properties);
}
- /**
- * Searches for the int property with the specified key in the property list.
- * If the key is not found in this property list, the default property list,
- * and its defaults, recursively, are then checked. The method returns
- * <code>false</code> if the property is not found, or if the value is other
- * than "yes".
- *
- * @param key the property key.
- * @param props the list of properties that will be searched.
- * @return the value in this property list as a int value, or 0
- * if null or not a number.
- */
- public static int getIntProperty(String key, Properties props)
- {
-
- String s = props.getProperty(key);
-
- if (null == s)
- return 0;
- else
- return Integer.parseInt(s);
- }
/**
* Set an output property with a QName value. The QName will be turned
@@ -688,14 +342,25 @@
*/
public void setMethodDefaults(String method)
{
- String defaultMethod = m_properties.getProperty(OutputKeys.METHOD);
- if((null == defaultMethod) || !defaultMethod.equals(method))
- {
- Properties savedProps = m_properties;
- Properties newDefaults = getDefaultMethodProperties(method);
- m_properties = new Properties(newDefaults);
- copyFrom(savedProps, false);
- }
+ String defaultMethod = m_properties.getProperty(OutputKeys.METHOD);
+
+ if((null == defaultMethod) || !defaultMethod.equals(method)
+ // bjm - add the next condition as a hack
+ // but it is because both output_xml.properties and
+ // output_unknown.properties have the same method=xml
+ // for their default. Otherwise we end up with
+ // a ToUnknownStream wraping a ToXMLStream even
+ // when the users says method="xml"
+ //
+ || defaultMethod.equals("xml")
+ )
+ {
+ Properties savedProps = m_properties;
+ Properties newDefaults =
+ OutputPropertiesFactory.getDefaultMethodProperties(method);
+ m_properties = new Properties(newDefaults);
+ copyFrom(savedProps, false);
+ }
}
@@ -1014,7 +679,7 @@
*
* @return true if key is legal.
*/
- public boolean isLegalPropertyKey(String key)
+ public static boolean isLegalPropertyKey(String key)
{
return (key.equals(OutputKeys.CDATA_SECTION_ELEMENTS)
@@ -1034,51 +699,5 @@
* @serial */
private Properties m_properties = null;
- // Some special Xalan keys.
-
- /** The number of whitespaces to indent by, if indent="yes". */
- public static String S_KEY_INDENT_AMOUNT =
- S_BUILTIN_EXTENSIONS_UNIVERSAL+"indent-amount";
-
- /**
- * Fully qualified name of class with a default constructor that
- * implements the ContentHandler interface, where the result tree events
- * will be sent to.
- */
- public static String S_KEY_CONTENT_HANDLER =
- S_BUILTIN_EXTENSIONS_UNIVERSAL+"content-handler";
-
- /** File name of file that specifies character to entity reference mappings. */
- public static String S_KEY_ENTITIES =
- S_BUILTIN_EXTENSIONS_UNIVERSAL+"entities";
-
- /** Use a value of "yes" if the href values for HTML serialization should
- * use %xx escaping. */
- public static String S_USE_URL_ESCAPING =
- S_BUILTIN_EXTENSIONS_UNIVERSAL+"use-url-escaping";
-
- /** Use a value of "yes" if the META tag should be omitted where it would
- * otherwise be supplied.
- */
- public static String S_OMIT_META_TAG =
- S_BUILTIN_EXTENSIONS_UNIVERSAL+"omit-meta-tag";
-
- /** The default properties of all output files. */
- private static Properties m_xml_properties = null;
-
- /** The default properties when method="html". */
- private static Properties m_html_properties = null;
-
- /** The default properties when method="text". */
- private static Properties m_text_properties = null;
-
- /** Synchronization object for lazy initialization of the above tables. */
- private static Integer m_synch_object = new Integer(1);
-
- /** a zero length Class array used in loadPropertiesFile() */
- private static final Class[] NO_CLASSES = new Class[0];
-
- /** a zero length Object array used in loadPropertiesFile() */
- private static final Object[] NO_OBJS = new Object[0];
}
1.50 +4 -2 xml-xalan/java/src/org/apache/xalan/templates/StylesheetRoot.java
Index: StylesheetRoot.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/StylesheetRoot.java,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- StylesheetRoot.java 30 Jan 2003 18:45:51 -0000 1.49
+++ StylesheetRoot.java 1 Apr 2003 20:16:27 -0000 1.50
@@ -71,7 +71,7 @@
import org.apache.xalan.processor.XSLTSchema;
import org.apache.xalan.res.XSLMessages;
import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xalan.serialize.Method;
+
import org.apache.xalan.transformer.TransformerImpl;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.ref.ExpandedNameTable;
@@ -281,7 +281,9 @@
// We set up the global variables that will hold the recomposed information.
- m_outputProperties = new OutputProperties(Method.XML);
+
+ m_outputProperties = new OutputProperties(org.apache.xml.serializer.Method.UNKNOWN);
+// m_outputProperties = new OutputProperties(Method.XML);
m_attrSets = new Hashtable();
m_decimalFormatSymbols = new Hashtable();
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org