Author: danielf Date: Sun Jan 23 14:27:41 2005 New Revision: 126245 URL: http://svn.apache.org/viewcvs?view=rev&rev=126245 Log: Factored out some copied code. Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java?view=diff&rev=126245&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java&r1=126244&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java&r2=126245 ============================================================================== --- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java (original) +++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java Sun Jan 23 14:27:41 2005 @@ -24,12 +24,7 @@ import org.apache.cocoon.template.jxtg.script.event.StartElement; import org.apache.cocoon.template.jxtg.script.event.StartInstruction; import org.apache.cocoon.template.jxtg.script.Invoker; -import org.apache.cocoon.xml.IncludeXMLConsumer; import org.apache.cocoon.xml.XMLConsumer; -import org.apache.commons.lang.ArrayUtils; -import org.apache.excalibur.xml.sax.XMLizable; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; import org.xml.sax.Attributes; import org.xml.sax.Locator; import org.xml.sax.SAXException; @@ -63,30 +58,7 @@ Object val; try { val = this.compiledExpression.getNode(expressionContext); - if (val instanceof Node) { - Invoker.executeDOM(consumer, (Node) val); - } else if (val instanceof NodeList) { - NodeList nodeList = (NodeList) val; - int len = nodeList.getLength(); - for (int i = 0; i < len; i++) { - Node n = nodeList.item(i); - Invoker.executeDOM(consumer, n); - } - } else if (val instanceof Node[]) { - Node[] nodeList = (Node[]) val; - int len = nodeList.length; - for (int i = 0; i < len; i++) { - Node n = nodeList[i]; - Invoker.executeDOM(consumer, n); - } - } else if (val instanceof XMLizable) { - ((XMLizable) val).toSAX(new IncludeXMLConsumer(consumer)); - } else { - char[] ch = - val == null ? ArrayUtils.EMPTY_CHAR_ARRAY - : val.toString().toCharArray(); - consumer.characters(ch, 0, ch.length); - } + Invoker.executeNode(consumer, val); } catch (Exception e) { throw new SAXParseException(e.getMessage(), getLocation(), e); } Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java?view=diff&rev=126245&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java&r1=126244&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java&r2=126245 ============================================================================== --- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java (original) +++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java Sun Jan 23 14:27:41 2005 @@ -69,36 +69,12 @@ char[] chars; if (subst instanceof Literal) { chars = ((Literal)subst).getCharArray(); + consumer.characters(chars, 0, chars.length); } else { JXTExpression expr = (JXTExpression) subst; try { Object val = expr.getNode(expressionContext); - if (val instanceof Node) { - executeDOM(consumer, (Node) val); - continue; - } else if (val instanceof NodeList) { - NodeList nodeList = (NodeList) val; - int len = nodeList.getLength(); - for (int i = 0; i < len; i++) { - Node n = nodeList.item(i); - executeDOM(consumer, n); - } - continue; - } else if (val instanceof Node[]) { - Node[] nodeList = (Node[]) val; - int len = nodeList.length; - for (int i = 0; i < len; i++) { - Node n = nodeList[i]; - executeDOM(consumer, n); - } - continue; - } else if (val instanceof XMLizable) { - ((XMLizable) val).toSAX(new IncludeXMLConsumer( - consumer)); - continue; - } - chars = val != null ? val.toString().toCharArray() - : ArrayUtils.EMPTY_CHAR_ARRAY; + executeNode(consumer, val); } catch (Exception e) { throw new SAXParseException(e.getMessage(), ev.getLocation(), e); @@ -108,7 +84,6 @@ new ErrorHolder(err)); } } - consumer.characters(chars, 0, chars.length); } } else if (ev instanceof EndDocument) { consumer.endDocument(); @@ -335,6 +310,35 @@ } handler.characters(chars, 0, chars.length); } + } + + public static void executeNode(final XMLConsumer consumer, Object val) + throws SAXException { + + if (val instanceof Node) { + executeDOM(consumer, (Node) val); + } else if (val instanceof NodeList) { + NodeList nodeList = (NodeList) val; + int len = nodeList.getLength(); + for (int i = 0; i < len; i++) { + Node n = nodeList.item(i); + executeDOM(consumer, n); + } + } else if (val instanceof Node[]) { + Node[] nodeList = (Node[]) val; + int len = nodeList.length; + for (int i = 0; i < len; i++) { + Node n = nodeList[i]; + executeDOM(consumer, n); + } + } else if (val instanceof XMLizable) { + ((XMLizable) val).toSAX(new IncludeXMLConsumer(consumer)); + } else { + char[] ch = + val == null ? ArrayUtils.EMPTY_CHAR_ARRAY + : val.toString().toCharArray(); + consumer.characters(ch, 0, ch.length); + } } /**
