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);
+       }
     }
 
     /**

Reply via email to