sboag 00/10/03 12:38:10
Modified: java/src/org/apache/xalan/processor ProcessorLRE.java
java/src/org/apache/xalan/templates ElemExtensionCall.java
ElemExtensionDecl.java ElemExtensionScript.java
StylesheetRoot.java
java/src/org/apache/xalan/transformer ResultTreeHandler.java
TransformerImpl.java
Log:
Java extension functions and elements, including component\script, should now
have basic functionality... more to do. Also, put defensive code in
ResultTreeHandler flush pending, when switching serializers.
Revision Changes Path
1.6 +15 -11
xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java
Index: ProcessorLRE.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ProcessorLRE.java 2000/10/03 15:41:08 1.5
+++ ProcessorLRE.java 2000/10/03 19:38:00 1.6
@@ -140,7 +140,7 @@
p = p.getParentElem();
}
- ElemLiteralResult elem = null;
+ ElemTemplateElement elem = null;
try
{
if(isExtension)
@@ -150,22 +150,26 @@
}
else if(isComponentDecl)
{
+ elem = (ElemTemplateElement)classObject.newInstance();
}
else if(isUnknownTopLevel)
{
// TBD: Investigate, not sure about this. -sb
- elem = (ElemLiteralResult)classObject.newInstance();
+ elem = (ElemTemplateElement)classObject.newInstance();
}
else
{
- elem = (ElemLiteralResult)classObject.newInstance();
+ elem = (ElemTemplateElement)classObject.newInstance();
}
elem.setDOMBackPointer(handler.getOriginatingNode());
elem.setLocaterInfo(handler.getLocator());
elem.setPrefixes(handler.getNamespaceSupport());
- elem.setNamespace(uri);
- elem.setLocalName(localName);
- elem.setRawName(rawName);
+ if(elem instanceof ElemLiteralResult)
+ {
+ ((ElemLiteralResult)elem).setNamespace(uri);
+ ((ElemLiteralResult)elem).setLocalName(localName);
+ ((ElemLiteralResult)elem).setRawName(rawName);
+ }
}
catch(InstantiationException ie)
{
@@ -179,18 +183,18 @@
setPropertiesFromAttributes(handler, rawName, attributes, elem);
// bit of a hack here...
- if(!isExtension)
+ if(!isExtension && (elem instanceof ElemLiteralResult))
{
- isExtension = elem.containsExtensionElementURI(uri);
+ isExtension =
((ElemLiteralResult)elem).containsExtensionElementURI(uri);
if(isExtension)
{
// System.out.println("Creating extension(2): "+uri);
elem = new ElemExtensionCall();
elem.setLocaterInfo(handler.getLocator());
elem.setPrefixes(handler.getNamespaceSupport());
- elem.setNamespace(uri);
- elem.setLocalName(localName);
- elem.setRawName(rawName);
+ ((ElemLiteralResult)elem).setNamespace(uri);
+ ((ElemLiteralResult)elem).setLocalName(localName);
+ ((ElemLiteralResult)elem).setRawName(rawName);
setPropertiesFromAttributes(handler, rawName, attributes, elem);
}
}
1.8 +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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ElemExtensionCall.java 2000/10/03 15:41:10 1.7
+++ ElemExtensionCall.java 2000/10/03 19:38:02 1.8
@@ -168,10 +168,10 @@
{
ElemExtensionDecl decl = null;
- int n = stylesheet.getImportCountComposed();
+ int n = stylesheet.getGlobalImportCount();
for(int i = 0; i < n; i++)
{
- Stylesheet imported = stylesheet.getImportComposed(i);
+ Stylesheet imported = stylesheet.getGlobalImport(i);
for(ElemTemplateElement child = imported.getFirstChildElem();
child != null; child = child.getNextSiblingElem())
{
1.2 +20 -17
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionDecl.java
Index: ElemExtensionDecl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionDecl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ElemExtensionDecl.java 2000/10/03 15:52:27 1.1
+++ ElemExtensionDecl.java 2000/10/03 19:38:02 1.2
@@ -4,6 +4,7 @@
import org.apache.xalan.utils.QName;
import org.apache.xalan.utils.NameSpace;
import org.apache.xalan.utils.StringToStringTable;
+import org.apache.xalan.utils.StringVector;
import org.apache.xalan.extensions.ExtensionNSHandler;
import org.apache.xalan.extensions.ExtensionsTable;
import org.apache.xalan.transformer.TransformerImpl;
@@ -15,7 +16,7 @@
{
public ElemExtensionDecl()
{
- System.out.println("ElemExtensionDecl ctor");
+ // System.out.println("ElemExtensionDecl ctor");
}
private String m_prefix = null;
@@ -30,14 +31,14 @@
return m_prefix;
}
- private Vector m_functions = new Vector();
+ private StringVector m_functions = new StringVector();
- public void setFunctions(Vector v)
+ public void setFunctions(StringVector v)
{
m_functions = v;
}
- public Vector getFunctions()
+ public StringVector getFunctions()
{
return m_functions;
}
@@ -57,14 +58,14 @@
}
- private Vector m_elements = null;
+ private StringVector m_elements = null;
- public void setElements(Vector v)
+ public void setElements(StringVector v)
{
m_elements = v;
}
- public Vector getElements()
+ public StringVector getElements()
{
return m_elements;
}
@@ -124,18 +125,20 @@
scriptSrc = new String(chars);
}
}
- break;
}
- XPathContext liaison = ((XPathContext)transformer.getXPathContext());
- ExtensionsTable etable = liaison.getExtensionsTable();
- ExtensionNSHandler nsh = etable.get(declNamespace);
+ }
+ XPathContext liaison = ((XPathContext)transformer.getXPathContext());
+ ExtensionsTable etable = liaison.getExtensionsTable();
+ ExtensionNSHandler nsh = etable.get(declNamespace);
- if(null == nsh)
- {
- nsh = new ExtensionNSHandler (declNamespace);
- nsh.setScript (lang, srcURL, scriptSrc);
- etable.addExtensionElementNamespace(declNamespace, nsh);
- }
+ if(null == nsh)
+ {
+ nsh = new ExtensionNSHandler (declNamespace);
+ // System.out.println("Adding NS Handler: declNamespace = "+
+ // declNamespace+", lang = "+lang+", srcURL = "+
+ // srcURL+", scriptSrc="+scriptSrc);
+ nsh.setScript (lang, srcURL, scriptSrc);
+ etable.addExtensionElementNamespace(declNamespace, nsh);
}
}
1.2 +1 -1
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionScript.java
Index: ElemExtensionScript.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionScript.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ElemExtensionScript.java 2000/10/03 15:52:27 1.1
+++ ElemExtensionScript.java 2000/10/03 19:38:05 1.2
@@ -4,7 +4,7 @@
{
public ElemExtensionScript()
{
- System.out.println("ElemExtensionScript ctor");
+ // System.out.println("ElemExtensionScript ctor");
}
private String m_lang = null;
1.11 +1 -1
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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- StylesheetRoot.java 2000/10/03 15:41:10 1.10
+++ StylesheetRoot.java 2000/10/03 19:38:05 1.11
@@ -214,7 +214,7 @@
for(ElemTemplateElement child = templ.getFirstChildElem();
child != null; child = child.getNextSiblingElem())
{
- child.compose();
+ composeTemplates(child);
}
}
1.13 +14 -11
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
Index: ResultTreeHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ResultTreeHandler.java 2000/10/02 23:42:34 1.12
+++ ResultTreeHandler.java 2000/10/03 19:38:09 1.13
@@ -331,19 +331,22 @@
try
{
Serializer oldSerializer = m_transformer.getSerializer();
- Serializer serializer = SerializerFactory.getSerializer(oformat);
- Writer writer = oldSerializer.getWriter();
- if(null != writer)
- serializer.setWriter(writer);
- else
+ if(null != oldSerializer)
{
- OutputStream os = serializer.getOutputStream();
- serializer.setOutputStream(os);
+ Serializer serializer =
SerializerFactory.getSerializer(oformat);
+ Writer writer = oldSerializer.getWriter();
+ if(null != writer)
+ serializer.setWriter(writer);
+ else
+ {
+ OutputStream os = serializer.getOutputStream();
+ serializer.setOutputStream(os);
+ }
+ m_transformer.setSerializer(serializer);
+ ContentHandler ch = serializer.asContentHandler();
+ m_transformer.setContentHandler(ch);
+ m_contentHandler = ch;
}
- m_transformer.setSerializer(serializer);
- ContentHandler ch = serializer.asContentHandler();
- m_transformer.setContentHandler(ch);
- m_contentHandler = ch;
}
catch(java.io.IOException e)
{
1.24 +2 -2
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
Index: TransformerImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- TransformerImpl.java 2000/10/03 15:41:12 1.23
+++ TransformerImpl.java 2000/10/03 19:38:09 1.24
@@ -579,10 +579,10 @@
// Give the top-level templates a chance to pass information into
// the context (this is mainly for setting up tables for extensions).
StylesheetRoot stylesheet = this.getStylesheet();
- int n = stylesheet.getImportCountComposed();
+ int n = stylesheet.getGlobalImportCount();
for(int i = 0; i < n; i++)
{
- Stylesheet imported = stylesheet.getImportComposed(i);
+ Stylesheet imported = stylesheet.getGlobalImport(i);
imported.runtimeInit(this);
for(ElemTemplateElement child = imported.getFirstChildElem();
child != null; child = child.getNextSiblingElem())