You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2002/09/25 12:40:26 UTC
cvs commit: xml-cocoon2/src/java/org/apache/cocoon/transformation CIncludeTransformer.java
cziegeler 2002/09/25 03:40:25
Modified: src/java/org/apache/cocoon/transformation
CIncludeTransformer.java
Log:
Fixing xpath handling of cinclude transformer
Revision Changes Path
1.10 +18 -22 xml-cocoon2/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java
Index: CIncludeTransformer.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/CIncludeTransformer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- CIncludeTransformer.java 10 Sep 2002 12:15:49 -0000 1.9
+++ CIncludeTransformer.java 25 Sep 2002 10:40:25 -0000 1.10
@@ -50,6 +50,7 @@
*/
package org.apache.cocoon.transformation;
+import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
@@ -105,7 +106,6 @@
/** The current <code>ComponentManager</code>. */
protected ComponentManager manager = null;
- private XPathProcessor processor = null;
/**
* Setup the component.
@@ -121,11 +121,6 @@
*/
public final void compose(final ComponentManager manager) {
this.manager = manager;
- try {
- this.processor = (XPathProcessor)this.manager.lookup(XPathProcessor.ROLE);
- } catch (Exception e) {
- getLogger().error("cannot obtain XPathProcessor", e);
- }
}
/**
@@ -162,7 +157,8 @@
super.endElement(uri, name, raw);
}
- protected void processCIncludeElement(String src, String element, String select, String ns, String prefix)
+ protected void processCIncludeElement(String src, String element,
+ String select, String ns, String prefix)
throws SAXException {
if (element == null) element="";
@@ -192,36 +188,37 @@
}
Source source = null;
- Parser parser = null;
try {
source = this.sourceResolver.resolveURI(src);
if (!"".equals(select)) {
-
- parser = (Parser)manager.lookup(Parser.ROLE);
+
+ Parser parser = null;
+ XPathProcessor processor = null;
+
+ try {
+ parser = (Parser)this.manager.lookup(Parser.ROLE);
+ processor = (XPathProcessor)this.manager.lookup(XPathProcessor.ROLE);
InputSource input = SourceUtil.getInputSource(source);
- String xpath = select;
- if (this.getLogger().isDebugEnabled()) {
- getLogger().debug("XPath is "+xpath);
- }
Document document = parser.parseDocument(input);
- NodeList list = processor.selectNodeList(document,xpath);
+ NodeList list = processor.selectNodeList(document, select);
int length = list.getLength();
for (int i=0; i<length; i++) {
consumer.includeNode((Node)list.item(i),
(ContentHandler)this,
(LexicalHandler)this);
}
+ } finally {
+ this.manager.release(parser);
+ this.manager.release((Component)processor);
+ }
} else {
- // do nothing, will result in the inclusion of the whole
- // document
+ this.sourceResolver.toSAX(source, consumer);
}
- this.sourceResolver.toSAX(source, consumer);
-
} catch (IOException e) {
throw new SAXException("CIncludeTransformer could not read resource", e);
@@ -232,8 +229,7 @@
} catch(ComponentException e) {
throw new SAXException(e);
} finally {
- this.manager.release(parser);
- this.sourceResolver.release(source);
+ this.sourceResolver.release(source);
}
if (!"".equals(element)) {
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org