Author: jvazquez
Date: Thu Mar 19 22:59:05 2009
New Revision: 756250

URL: http://svn.apache.org/viewvc?rev=756250&view=rev
Log:
beginning with unit testing

Added:
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/XplBuilderTest.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/html.xpl
Modified:
    incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/pom.xml
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/XplBuilder.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/api/XplElement.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/AbstractXplElementImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/DocumentImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/InputImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/PipelineImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XplElementFactoryImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XsltImpl.java
    
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/resources/SLING-INF/content/apps/sling/xpl/html.xpl

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/pom.xml?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/pom.xml 
(original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/pom.xml 
Thu Mar 19 22:59:05 2009
@@ -101,6 +101,7 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
+        
         <!-- Testing -->
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -108,6 +109,13 @@
             <version>2.0.3-incubator-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
+               <dependency>
+                       <groupId>xmlunit</groupId>
+                       <artifactId>xmlunit</artifactId>
+                       <version>1.2</version>
+                       <scope>test</scope>
+               </dependency>
+               
     </dependencies>
     
     <profiles>

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/XplBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/XplBuilder.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/XplBuilder.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/XplBuilder.java
 Thu Mar 19 22:59:05 2009
@@ -57,8 +57,8 @@
                return xplHandler.getRootStep();
        }
        
-       protected XplElement createXplElement(String localName, Map<String, 
String> parameters) {
-        return XplBuilder.this.xplElementFactory.createXplElement(new 
QName(XplConstants.NS_XPROC, localName), parameters);
+       protected XplElement createXplElement(String localName, Map<String, 
String> attributes) {
+        return XplBuilder.this.xplElementFactory.createXplElement(new 
QName(XplConstants.NS_XPROC, localName), attributes);
     }
        
        class XplHandler extends DefaultHandler {
@@ -95,13 +95,13 @@
                                throw new IllegalStateException("Expected 
'pipeline' as first element, but received '" + localName + "'");
                        }
                        
-                       Map<String, String> parameters = new HashMap<String, 
String>();
+                       Map<String, String> atts = new HashMap<String, 
String>();
             int length = attributes.getLength();
             for (int i = 0; i < length; i++) {
-                parameters.put(attributes.getQName(i), attributes.getValue(i));
+               atts.put(attributes.getQName(i), attributes.getValue(i));
             }
                        
-                       XplElement xplElement = createXplElement(localName, 
parameters);
+                       XplElement xplElement = createXplElement(localName, 
atts);
                        this.currentXplElement.addChild(xplElement);
                        this.currentXplElement = xplElement;
                }

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/api/XplElement.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/api/XplElement.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/api/XplElement.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/api/XplElement.java
 Thu Mar 19 22:59:05 2009
@@ -21,11 +21,15 @@
 import java.util.LinkedList;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 public interface XplElement {
        
+       QName getQName();
+       
        XplElement getParent();
        
-       void setParameters(Map<String, String> parameters);
+       void setAttributes(Map<String, String> attributes);
        
        void setParent(XplElement parent);
        
@@ -33,4 +37,8 @@
        
        void addChild(XplElement child);
        
+       int getDepth();
+
+       void setDepth(int depth);
+       
 }

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/AbstractXplElementImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/AbstractXplElementImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/AbstractXplElementImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/AbstractXplElementImpl.java
 Thu Mar 19 22:59:05 2009
@@ -26,6 +26,8 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.xml.namespace.QName;
+
 import org.apache.sling.api.scripting.SlingScriptHelper;
 import org.apache.sling.scripting.xproc.xpl.api.XplElement;
 import org.slf4j.Logger;
@@ -36,11 +38,11 @@
        protected final Logger log = LoggerFactory.getLogger(this.getClass());
        
        private SlingScriptHelper sling;
-
-       private final Map<String, String> parameters = new HashMap<String, 
String>();   
+       private final Map<String, String> attributes = new HashMap<String, 
String>();   
        private XplElement parent; 
        private final LinkedList<XplElement> children = new 
LinkedList<XplElement>();
-       
+       private int depth = 0;
+
        public LinkedList<XplElement> getChildren() {
                return children;
        }
@@ -63,45 +65,43 @@
             } catch (IllegalAccessException e) {
                 this.log.error("Failed to set child field for child class '" + 
child.getClass().getName(), e);
             }
-        } else {
-            this.children.add(child);
         }
-               
+        child.setDepth(this.getDepth() + 1);
+        this.children.add(child);
                child.setParent(this);
                
        }
        
-       public void setParameters(Map<String, String> parameters) {
-               if (parameters == null || parameters.isEmpty()) {
+       public void setAttributes(Map<String, String> attributes) {
+               if (attributes == null || attributes.isEmpty()) {
             // nothing to do
             return;
         }
 
-        // check for special parameter fields
-        Map<String, Field> parameterFields = this.getParameterFields();
-        for (Entry<String, String> entry : parameters.entrySet()) {
+        // check for special attribute fields
+        Map<String, Field> attributeFields = this.getAttributeFields();
+        for (Entry<String, String> entry : attributes.entrySet()) {
             String key = entry.getKey();
             String value = entry.getValue();
 
-            Field parameterField = parameterFields.get(key);
-            if (parameterField != null) {
-                parameterField.setAccessible(true);
+            Field attributeField = attributeFields.get(key);
+            if (attributeField != null) {
+               attributeField.setAccessible(true);
                 try {
-                    parameterField.set(this, value);
+                       attributeField.set(this, value);
                 } catch (IllegalArgumentException e) {
-                    String message = "Failed to set parameter field " + key;
+                    String message = "Failed to set attribute field " + key;
                     this.log.error(message, e);
                     throw new RuntimeException(message, e);
                 } catch (IllegalAccessException e) {
-                    String message = "Failed to set parameter field " + key;
+                    String message = "Failed to set attribute field " + key;
                     this.log.error(message, e);
                     throw new RuntimeException(message, e);
                 }
-                continue;
-            }
+             }
 
-            // default parameter processing
-            this.processParameter(key, value);
+            // default attribute processing
+            this.processAttribute(key, value);
         }
        }
        
@@ -109,6 +109,8 @@
                return sling;
        }
        
+       public abstract QName getQName();
+       
        public XplElement getParent() {
                return parent;
        }
@@ -117,8 +119,54 @@
                this.parent = parent;
        }
        
-       protected void processParameter(String key, String value) {
-        this.parameters.put(key, value);
+       public int getDepth() {
+               return depth;
+       }
+
+       public void setDepth(int depth) {
+               this.depth = depth;
+       }
+       
+       @Override
+       public String toString() {
+               StringBuffer sbXplElement = new StringBuffer();
+//             if (getDepth() == 0)
+//                     sbXplElement.append("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>");
+//             addTabs(sbXplElement, getDepth());
+               sbXplElement.append("<");
+               sbXplElement.append("p:" + this.getQName().getLocalPart());
+               if (getDepth() == 0) {
+                       sbXplElement.append(" 
xmlns:p=\"http://www.w3.org/ns/xproc\"";);
+               }
+               for (String attribute : this.attributes.keySet()) {
+                       sbXplElement.append(" ");
+                       sbXplElement.append(attribute + "=" + "\"" + 
this.attributes.get(attribute) + "\"");
+               }
+               if (getChildren().size() == 0) {
+                       sbXplElement.append(" />");
+                       return sbXplElement.toString();
+               }
+               sbXplElement.append(">");
+               for (XplElement child : this.getChildren()) {
+//                     sbXplElement.append("\r\n");
+                       sbXplElement.append(child.toString());
+               }
+//             sbXplElement.append("\r\n");
+//             addTabs(sbXplElement, getDepth());
+               sbXplElement.append("</");
+               sbXplElement.append("p:" + this.getQName().getLocalPart());
+               sbXplElement.append(">");
+               
+               return sbXplElement.toString();
+       }
+       
+       private void addTabs(StringBuffer sb, int num) {
+               for (int i = 0; i < num; i++) 
+                       sb.append("\t");
+       }
+       
+       protected void processAttribute(String key, String value) {
+        this.attributes.put(key, value);
     }
        
        private Field getChildField(XplElement child) {
@@ -134,21 +182,21 @@
         return null;
     }
        
-    private Map<String, Field> getParameterFields() {
-        Map<String, Field> parameterFields = new HashMap<String, Field>();
+    private Map<String, Field> getAttributeFields() {
+        Map<String, Field> attributeFields = new HashMap<String, Field>();
 
         Class<?> currentClass = this.getClass();
         while (currentClass != null) {
             Field[] declaredFields = currentClass.getDeclaredFields();
             for (Field declaredField : declaredFields) {              
                 String fieldName = 
this.convertCamelCase(declaredField.getName());
-                parameterFields.put(fieldName, declaredField);
+                attributeFields.put(fieldName, declaredField);
             }
 
             currentClass = currentClass.getSuperclass();
         }
 
-        return parameterFields;
+        return attributeFields;
     }
 
     private String convertCamelCase(String name) {

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/DocumentImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/DocumentImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/DocumentImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/DocumentImpl.java
 Thu Mar 19 22:59:05 2009
@@ -18,6 +18,9 @@
  */
 package org.apache.sling.scripting.xproc.xpl.impl;
 
+import javax.xml.namespace.QName;
+
+import org.apache.sling.scripting.xproc.xpl.XplConstants;
 import org.apache.sling.scripting.xproc.xpl.api.Document;
 
 public class DocumentImpl extends AbstractXplElementImpl implements Document {
@@ -32,4 +35,9 @@
                this.href = href;
        }
        
+       @Override
+       public QName getQName() {
+               return XplConstants.QNAME_DOCUMENT;
+       }
+       
 }

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/InputImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/InputImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/InputImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/InputImpl.java
 Thu Mar 19 22:59:05 2009
@@ -18,6 +18,9 @@
  */
 package org.apache.sling.scripting.xproc.xpl.impl;
 
+import javax.xml.namespace.QName;
+
+import org.apache.sling.scripting.xproc.xpl.XplConstants;
 import org.apache.sling.scripting.xproc.xpl.api.Document;
 import org.apache.sling.scripting.xproc.xpl.api.Input;
 
@@ -42,4 +45,9 @@
                this.document = document;
        }
        
+       @Override
+       public QName getQName() {
+               return XplConstants.QNAME_INPUT;
+       }
+       
 }

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/PipelineImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/PipelineImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/PipelineImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/PipelineImpl.java
 Thu Mar 19 22:59:05 2009
@@ -20,10 +20,13 @@
 
 import java.io.OutputStream;
 
+import javax.xml.namespace.QName;
+
 import org.apache.cocoon.pipeline.NonCachingPipeline;
 import org.apache.cocoon.pipeline.component.sax.AbstractGenerator;
 import org.apache.cocoon.pipeline.component.sax.XMLSerializer;
 import org.apache.sling.scripting.xproc.cocoon.generator.SlingGenerator;
+import org.apache.sling.scripting.xproc.xpl.XplConstants;
 import org.apache.sling.scripting.xproc.xpl.api.Pipeline;
 import org.apache.sling.scripting.xproc.xpl.api.Step;
 
@@ -55,5 +58,10 @@
                }
                
        }
+
+       @Override
+       public QName getQName() {
+               return XplConstants.QNAME_PIPELINE;
+       }
        
 }
\ No newline at end of file

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XplElementFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XplElementFactoryImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XplElementFactoryImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XplElementFactoryImpl.java
 Thu Mar 19 22:59:05 2009
@@ -28,7 +28,7 @@
 
 public class XplElementFactoryImpl implements XplElementFactory {
        
-       public XplElement createXplElement(QName type, Map<String, String> 
parameters) {
+       public XplElement createXplElement(QName type, Map<String, String> 
attributes) {
                
                XplElement xplElement;
                
@@ -44,7 +44,7 @@
                        throw new IllegalArgumentException("An xpl element of 
type '" + type + "' could not be created.");
                }
                
-               xplElement.setParameters(parameters);
+               xplElement.setAttributes(attributes);
                
                return xplElement;
        }

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XsltImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XsltImpl.java?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XsltImpl.java
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/java/org/apache/sling/scripting/xproc/xpl/impl/XsltImpl.java
 Thu Mar 19 22:59:05 2009
@@ -18,7 +18,10 @@
  */
 package org.apache.sling.scripting.xproc.xpl.impl;
 
+import javax.xml.namespace.QName;
+
 import org.apache.sling.scripting.xproc.cocoon.transform.SlingTransformer;
+import org.apache.sling.scripting.xproc.xpl.XplConstants;
 import org.apache.sling.scripting.xproc.xpl.api.Input;
 import org.apache.sling.scripting.xproc.xpl.api.Xslt;
 
@@ -40,4 +43,9 @@
                this.stylesheet = stylesheet;
        }
        
+       @Override
+       public QName getQName() {
+               return XplConstants.QNAME_XSLT;
+       }
+       
 }
\ No newline at end of file

Modified: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/resources/SLING-INF/content/apps/sling/xpl/html.xpl
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/resources/SLING-INF/content/apps/sling/xpl/html.xpl?rev=756250&r1=756249&r2=756250&view=diff
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/resources/SLING-INF/content/apps/sling/xpl/html.xpl
 (original)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/main/resources/SLING-INF/content/apps/sling/xpl/html.xpl
 Thu Mar 19 22:59:05 2009
@@ -29,4 +29,4 @@
     </p:input>
   </p:xslt>
   
-</p:pipeline>
+</p:pipeline>
\ No newline at end of file

Added: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/XplBuilderTest.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/XplBuilderTest.java?rev=756250&view=auto
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/XplBuilderTest.java
 (added)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/java/org/apache/sling/scripting/xproc/xpl/XplBuilderTest.java
 Thu Mar 19 22:59:05 2009
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.scripting.xproc.xpl;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.apache.sling.scripting.xproc.xpl.api.Step;
+import org.custommonkey.xmlunit.XMLAssert;
+
+import junit.framework.TestCase;
+
+public class XplBuilderTest extends TestCase {
+       
+       public void testBuild() throws Exception {              
+               String xplPath = "/xpl/html.xpl";               
+               XplBuilder builder = new XplBuilder();
+               Step pipeline = builder.build(getReaderFromPath(xplPath));
+               System.out.println(pipeline.toString());
+               String kk1 = "<p:pipeline 
xmlns:p=\"http://www.w3.org/ns/xproc\";><p:xslt><p:input 
port=\"stylesheet\"><p:document 
href=\"/xpl-sample/xsl/test-content.xslt\"/></p:input></p:xslt></p:pipeline>";
+               String kk2 = "<p:pipeline 
xmlns:p=\"http://www.w3.org/ns/xproc\";><p:xslt><p:input 
port=\"stylesheet\"><p:document 
href=\"/xpl-sample/xsl/test-content.xslt\"/></p:input></p:xslt></p:pipeline>";
+               XMLAssert.assertXMLEqual(getReaderFromString(kk1), 
getReaderFromString(kk2));
+//             XMLAssert.assertXMLEqual(getReaderFromPath(xplPath), 
getReaderFromString(pipeline.toString()));
+       }
+       
+       private Reader getReaderFromPath(String path) throws Exception {
+               InputStream is = getClass().getResourceAsStream(path);
+               Reader reader = new BufferedReader(new InputStreamReader(is, 
"utf-8"));
+               return reader;
+       }
+       
+       private Reader getReaderFromString(String str) throws Exception {
+               return new BufferedReader(new StringReader(str));
+       }
+
+       private String readerToString(Reader reader) throws Exception {
+               StringWriter sw = new StringWriter();
+               BufferedWriter bfw = new BufferedWriter(sw);
+               int c;
+               while ((c = reader.read()) != -1) {
+                       bfw.write(c);
+               }
+               bfw.flush();
+               return sw.getBuffer().toString();
+       }
+}

Added: 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/html.xpl
URL: 
http://svn.apache.org/viewvc/incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/html.xpl?rev=756250&view=auto
==============================================================================
--- 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/html.xpl
 (added)
+++ 
incubator/sling/whiteboard/jvazquez/org.apache.sling.scripting.xproc/src/test/resources/xpl/html.xpl
 Thu Mar 19 22:59:05 2009
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<p:pipeline xmlns:p="http://www.w3.org/ns/xproc";>
+
+  <p:xslt>
+    <p:input port="stylesheet">
+      <p:document href="/xpl-sample/xsl/test-content.xslt"/>
+    </p:input>
+  </p:xslt>
+  
+  <p:xslt>
+    <p:input port="stylesheet">
+      <p:document href="/xpl-sample/xsl/test-html.xslt"/>
+    </p:input>
+  </p:xslt>
+  
+</p:pipeline>


Reply via email to