Author: vikas
Date: Tue Feb  7 02:24:10 2006
New Revision: 375561

URL: http://svn.apache.org/viewcvs?rev=375561&view=rev
Log:
The prototype of synapse object for property and parameter handling!

Added:
    incubator/synapse/trunk/scratch/infravio/synapse-SO/
    incubator/synapse/trunk/scratch/infravio/synapse-SO/README.txt
    incubator/synapse/trunk/scratch/infravio/synapse-SO/build.xml
    incubator/synapse/trunk/scratch/infravio/synapse-SO/lib/
    incubator/synapse/trunk/scratch/infravio/synapse-SO/lib/xercesImpl.jar   
(with props)
    incubator/synapse/trunk/scratch/infravio/synapse-SO/src/
    incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/
    incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/
    incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/GenericObject.java
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/Sample.java
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObject.java
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObjectArray.java
    incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/TestSample.java
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/UtilConstants.java
    
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/Utils.java

Added: incubator/synapse/trunk/scratch/infravio/synapse-SO/README.txt
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/README.txt?rev=375561&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/infravio/synapse-SO/README.txt (added)
+++ incubator/synapse/trunk/scratch/infravio/synapse-SO/README.txt Tue Feb  7 
02:24:10 2006
@@ -0,0 +1,12 @@
+Features:
+1) Create SynapseObject from SynapseObject-XML
+2) Create SynapseObject from any xml using BO xslt
+3) SynapseObject can have a SynapseObject (self aggregation)
+4) SynapseObject can have 0 or more attributes
+5) To set attribute for a SynapseMediatorObject there are setters/getters
+   methods such as setString(String name,String value), setLong(String 
name,String value),etc.
+   eg. SetString(foo,value)
+6) SynapseObject has a getXMLFragment method which spits out an xml
+   representing the BO itself
+7) SynapseObject have finder methods based on attribute names, values as
+   well as businessObjects.
\ No newline at end of file

Added: incubator/synapse/trunk/scratch/infravio/synapse-SO/build.xml
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/build.xml?rev=375561&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/infravio/synapse-SO/build.xml (added)
+++ incubator/synapse/trunk/scratch/infravio/synapse-SO/build.xml Tue Feb  7 
02:24:10 2006
@@ -0,0 +1,85 @@
+<?xml version = '1.0' encoding = 'windows-1252'?>
+
+<project name="Test" default="usage" basedir=".">
+
+
+   <!--Set the output directories-->
+   <property name="compile.outdir" value="classes"/>
+   <property name="javadoc.outdir" value="javadoc"/>
+
+   <!--Set the classpath-->
+   <path id="classpath">
+      <pathelement location="lib/xercesImpl.jar"/>
+      <pathelement location="${compile.outdir}"/>
+   </path>
+
+   <!--Set the source path-->
+   <property name="src.dir" value="src"/>
+   <path id="srcpath">
+      <pathelement location="${src.dir}"/>
+   </path>
+
+   <target name="usage">
+    <echo>
+        ant compile
+            Compiles the source code and creates a classes directory at the 
same level as src
+        ant Sample
+            Runs the com.infravio.core.Sample which demonstrates building a 
SynapseObject through 
+            API and displays the its xml fragment.
+        ant TestSample
+            Runs the com.infravio.utils.TestSample which creates a 
SynapseObject from an xml fragment. Displays the xml fragment for that synapse 
object.
+    </echo>
+   </target>
+
+   <target name="Sample">
+       <java classname="com.infravio.core.Sample">
+               <classpath refid="classpath"/>
+       </java>
+   </target>
+
+   <target name="TestSample">
+       <java classname="com.infravio.utils.TestSample">
+           <classpath refid="classpath"/>
+        </java>
+   </target>
+
+   <target name="init">
+      <tstamp/>
+   </target>
+
+   <target name="compile" depends="init">
+      <mkdir dir="${compile.outdir}"/>
+      <!--Compile Java source files-->
+      <javac destdir="${compile.outdir}" debug="on" encoding="Cp1252">
+         <classpath refid="classpath"/>
+         <src refid="srcpath"/>
+         <include name="com/infravio/utils/TestSample.java"/>
+         <include name="com/infravio/utils/UtilConstants.java"/>
+         <include name="com/infravio/core/SynapseObjectArray.java"/>
+         <include name="com/infravio/utils/Utils.java"/>
+         <include name="com/infravio/core/Sample.java"/>
+         <include name="com/infravio/core/GenericObject.java"/>
+         <include name="com/infravio/core/SynapseObject.java"/>
+      </javac>
+   </target>
+
+   <target name="doc" depends="init">
+      <mkdir dir="${javadoc.outdir}"/>
+      <!--Create Javadoc-->
+      <javadoc sourcepathref="srcpath" classpathref="classpath" 
destdir="${javadoc.outdir}" version="false" author="false" encoding="Cp1252" 
additionalparam="-J-Xmx32m">
+         <package name="com.infravio.utils"/>
+         <package name="com.infravio.core"/>
+      </javadoc>
+   </target>
+
+   <target name="clean">
+      <!--Delete output directories-->
+      <delete dir="${compile.outdir}"/>
+      <delete dir="${javadoc.outdir}"/>
+   </target>
+
+   <target name="rebuild" depends="clean,compile"/>
+
+   <target name="all" depends="compile,doc"/>
+
+</project>

Added: incubator/synapse/trunk/scratch/infravio/synapse-SO/lib/xercesImpl.jar
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/lib/xercesImpl.jar?rev=375561&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/lib/xercesImpl.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/GenericObject.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/GenericObject.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/GenericObject.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/GenericObject.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,30 @@
+package com.infravio.core;
+
+import java.io.Serializable;
+
+/**
+ * @author
+ */
+public class GenericObject implements Serializable {
+    String name;
+    String type;
+    String value;
+
+    public GenericObject(String name, String type, String value) {
+        this.name = name;
+        this.type = type;
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+     public String getValue() {
+        return value;
+    }
+}
\ No newline at end of file

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/Sample.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/Sample.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/Sample.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/Sample.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,27 @@
+package com.infravio.core;
+
+/**
+ * @author
+ */
+public class Sample {
+    public Sample() {
+    }
+
+    public static void main(String[] args) {
+        SynapseObject slaConfig = new SynapseObject("slaConfig");
+        SynapseObject slaRequest = new SynapseObject("slaRequest");
+        SynapseObject serviceURL = new SynapseObject("serviceURL");
+        slaRequest.setString("ip", "192.168.1.127");
+        slaRequest.setBoolean("enabled", "true");
+        serviceURL.setString("url", 
"http://www.webservicex.net/stockquote.asmx";);
+        serviceURL.setBoolean("enabled", "true");
+        serviceURL.setInteger("priority", "0");
+        slaConfig.addChild(slaRequest);
+        slaRequest.addChild(serviceURL);
+        SynapseObject serviceURL1 = new SynapseObject("serviceURL1");
+        serviceURL1.setString("url", 
"http://www.webservicex.net/stockquote.asmx";);
+        slaRequest.addChild(serviceURL1);
+        System.out.println(slaConfig.getXMLFragment());
+
+    }
+}
\ No newline at end of file

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObject.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObject.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObject.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObject.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,264 @@
+package com.infravio.core;
+
+import org.w3c.dom.Document;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.*;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * @author
+ */
+public class SynapseObject extends Hashtable implements Serializable {
+    SynapseObjectArray object = new SynapseObjectArray();
+    String objectName;
+    String createdBy;
+    String creationDate;
+
+    public SynapseObject(String objectName) {
+        this.objectName = objectName;
+    }
+
+    public String translate(String xsl) {
+        String out_xml = "";
+        String xml = this.getXMLFragment();
+        TransformerFactory tFactory = TransformerFactory.newInstance();
+        try {
+            Transformer transformer = tFactory.newTransformer(new 
StreamSource(new StringReader(xsl)));
+            try {
+                ByteArrayOutputStream byteArrayOutput = new 
ByteArrayOutputStream();
+                transformer.transform(new StreamSource(new StringReader(xml)), 
new StreamResult(byteArrayOutput));
+                out_xml = byteArrayOutput.toString();
+            } catch (TransformerException e) {
+                e.printStackTrace();
+            }
+        } catch (TransformerConfigurationException e) {
+            e.printStackTrace();
+        }
+        return out_xml;
+    }
+
+    public String getBOName() {
+        return this.objectName;
+    }
+
+    /**
+     * Get contained object
+     *
+     * @return SynapseObject
+     */
+    public SynapseObject[] getChildren() {
+        return this.object.getSynapseObjects();
+    }
+
+    /**
+     * Set object
+     *
+     * @param SynapseObject
+     */
+    public void addChild(SynapseObject SynapseObject) {
+
+        this.object.add(SynapseObject);
+    }
+
+    public void setLong(String attributeName, String attributeValue) {
+        GenericObject go = new GenericObject(attributeName, 
(Long.TYPE).getName(), attributeValue);
+        this.put(attributeName, go);
+    }
+
+    public void setInteger(String attributeName, String attributeValue) {
+        GenericObject go = new GenericObject(attributeName, 
(Integer.TYPE).getName(), attributeValue);
+        this.put(attributeName, go);
+    }
+
+    public void setFloat(String attributeName, String attributeValue) {
+        GenericObject go = new GenericObject(attributeName, 
(Float.TYPE).getName(), attributeValue);
+        this.put(attributeName, go);
+    }
+
+    public void setString(String attributeName, String attributeValue) {
+        GenericObject go = new GenericObject(attributeName, "STRING", 
attributeValue);
+        this.put(attributeName, go);
+    }
+
+    public void setBoolean(String attributeName, String attributeValue) {
+        GenericObject go = new GenericObject(attributeName, 
(Boolean.TYPE).getName(), attributeValue);
+        this.put(attributeName, go);
+    }
+
+    public Long getLong(String attributeName) {
+        GenericObject go = (GenericObject) this.get(attributeName);
+        return new Long(go.getValue());
+    }
+
+    public String getXMLFragment() {
+        String xmlFragStart = "";
+        String xmlFragEnd = "</SynapseObject>";
+        String x3 = recurse(this, xmlFragStart);
+        xmlFragStart += xmlFragEnd;
+        return x3;
+    }
+    private String recurse(SynapseObject bo, String xmlFrag) {
+
+        xmlFrag = xmlFrag + "<SynapseObject name=\"" + bo.getBOName() + 
"\">\n";
+        xmlFrag = bo.getAttributes(bo, xmlFrag);
+        Enumeration enumeration = bo.object.elements();
+        while (enumeration.hasMoreElements()) {
+            SynapseObject boj = (SynapseObject)enumeration.nextElement();
+            xmlFrag = boj.recurse(boj, xmlFrag);
+        }
+        xmlFrag += "</SynapseObject>\n";
+        return xmlFrag;
+    }
+
+    private String getAttributes(SynapseObject bo, String xmlReturn) {
+
+        Enumeration enumeration = bo.elements();
+        while (enumeration.hasMoreElements()) {
+            GenericObject go = (GenericObject) enumeration.nextElement();
+            String name = go.getName();
+            String type = go.getType();
+            String value = go.getValue();
+            xmlReturn += "<attribute name=\"" + name + "\" " + "type=\"" + 
type + "\">" + value + "</attribute>\n";
+        }
+        return xmlReturn;
+    }
+
+    public SynapseObject findSynapseObjectByAttributeValue(String 
attributeValue) {
+        SynapseObject bo = new SynapseObject("Not Found");
+        if (this.hasAttributeValue(attributeValue)) {
+            return this;
+        } else {
+            Enumeration enumeration = this.object.elements();
+            while (enumeration.hasMoreElements()) {
+                SynapseObject boj = (SynapseObject)enumeration.nextElement();
+                bo = boj.findSynapseObjectByAttributeValue(attributeValue);
+            }
+        }
+        return bo;
+    }
+
+    public boolean hasAttributeValue(String attr) {
+        SynapseObject bo = this;
+        Enumeration enumeration = bo.elements();
+        while (enumeration.hasMoreElements()) {
+            GenericObject go = (GenericObject) enumeration.nextElement();
+            String value = go.getValue();
+            if (attr.equals(value)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public SynapseObject findSynapseObjectByName(String name) {
+        SynapseObject bo = new SynapseObject("Not Found");
+        if (this.getBOName().equalsIgnoreCase(name)) {
+            return this;
+        } else {
+            Enumeration enumeration = this.object.elements();
+            while (enumeration.hasMoreElements()) {
+                SynapseObject boj = (SynapseObject)enumeration.nextElement();
+                bo = boj.findSynapseObjectByName(name);
+            }
+        }
+        return bo;
+    }
+
+    public SynapseObject[] findSynapseObjectsByAttributeName(String 
attributeName) {
+
+        SynapseObjectArray boArray = new SynapseObjectArray();
+
+        if (this.findChildrenWithAttributeName(attributeName) != null)
+            
boArray.addSynapseObjects(this.findChildrenWithAttributeName(attributeName));
+
+        Enumeration enumeration = this.object.elements();
+        while (enumeration.hasMoreElements()) {
+            SynapseObject bo = (SynapseObject)enumeration.nextElement();
+            if (bo.findSynapseObjectsByAttributeName(attributeName) != null) {
+                
boArray.addSynapseObjects(bo.findSynapseObjectsByAttributeName(attributeName));
+            }
+        }
+
+        if (boArray.size() > 0) {
+            return boArray.getSynapseObjects();
+        } else {
+            return null;
+        }
+    }
+
+    public SynapseObject[] findChildrenWithAttributeName(String attributeName) 
{
+        SynapseObjectArray boa = new SynapseObjectArray();
+        Enumeration enumeration = this.object.elements();
+        while (enumeration.hasMoreElements()) {
+            SynapseObject bo = (SynapseObject)enumeration.nextElement();
+            if (bo.hasAttribute(attributeName)) {
+                boa.addSynapseObject(bo);
+            }
+        }
+        if (boa.size() > 0) {
+            return boa.getSynapseObjects();
+        } else {
+            return null;
+        }
+    }
+
+
+    public SynapseObject[] findSynapseObjectsByAttributeValue(String 
attributeValue) {
+
+        SynapseObjectArray boArray = new SynapseObjectArray();
+
+        if (this.findChildrenWithAttributeName(attributeValue) != null)
+            
boArray.addSynapseObjects(this.findChildrenWithAttributeName(attributeValue));
+
+        Enumeration enumeration = this.object.elements();
+        while (enumeration.hasMoreElements()) {
+            SynapseObject bo = (SynapseObject)enumeration.nextElement();
+            if (bo.findSynapseObjectsByAttributeName(attributeValue) != null) {
+                
boArray.addSynapseObjects(bo.findSynapseObjectsByAttributeName(attributeValue));
+            }
+        }
+
+        if (boArray.size() > 0) {
+            return boArray.getSynapseObjects();
+        } else {
+            return null;
+        }
+    }
+
+    public SynapseObject[] findChildrenWithAttributeValue(String 
attributeValue) {
+        SynapseObjectArray boa = new SynapseObjectArray();
+        Enumeration enumeration = this.object.elements();
+        while (enumeration.hasMoreElements()) {
+            SynapseObject bo = (SynapseObject)enumeration.nextElement();
+            if (bo.hasAttributeValue(attributeValue)) {
+                boa.addSynapseObject(bo);
+            }
+        }
+        if (boa.size() > 0) {
+            return boa.getSynapseObjects();
+        } else {
+            return null;
+        }
+    }
+
+
+    public boolean hasAttribute(String attr) {
+        SynapseObject bo = this;
+        Enumeration enumeration = bo.elements();
+        while (enumeration.hasMoreElements()) {
+            GenericObject go = (GenericObject) enumeration.nextElement();
+            String name = go.getName();
+            if (attr.equals(name)) {
+                return true;
+            }
+        }
+        return false;
+  }
+}
\ No newline at end of file

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObjectArray.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObjectArray.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObjectArray.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/core/SynapseObjectArray.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,32 @@
+package com.infravio.core;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class SynapseObjectArray extends Vector {
+    public SynapseObjectArray() {
+    }
+
+    public void addSynapseObject(SynapseObject bo) {
+        this.add(bo);
+    }
+
+    public void addSynapseObjects(SynapseObject[] bos) {
+        int length = bos.length;
+        int i;
+        for (i = 0; i < length; i++) {
+            this.add(bos[i]);
+        }
+    }
+
+    public SynapseObject[] getSynapseObjects() {
+        int count = this.size();
+        int index = 0;
+        SynapseObject[] children = new SynapseObject[count];
+        Enumeration enumeration = this.elements();
+        while (enumeration.hasMoreElements()) {
+            children[index++] = (SynapseObject)enumeration.nextElement();
+        }
+        return children;
+    }
+}
\ No newline at end of file

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/TestSample.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/TestSample.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/TestSample.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/TestSample.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,21 @@
+package com.infravio.utils;
+
+import com.infravio.core.SynapseObject;
+
+public class TestSample {
+    public static void main(String[] args) {
+        String xml = "<SynapseObject name=\"SLA\">\n" +
+                "    <attribute name=\"service\" 
type=\"String\">http://myhost:myport/Service</attribute>\n" +
+                "    <SynapseObject name=\"consumer\">\n" +
+                "        <attribute name=\"ip\" 
type=\"string\">192.9.2.11</attribute>\n" +
+                "    </SynapseObject>\n" +
+                "</SynapseObject>";
+        SynapseObject so = Utils.xmlToSynapseObject(xml);
+        System.out.println("The XML Frag : \n" + so.getXMLFragment());
+        SynapseObject result[] = so.findSynapseObjectsByAttributeName("ip");
+        System.out.println("The XML for SynapseObject with 'ip' : \n" + 
result[0].getXMLFragment());
+        boolean hasAttrib = so.hasAttribute("service");
+        System.out.println("Has Attrib service : \n" + hasAttrib);
+
+    }
+}

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/UtilConstants.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/UtilConstants.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/UtilConstants.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/UtilConstants.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,9 @@
+package com.infravio.utils;
+
+public class UtilConstants {
+
+    public static String NODE = "SynapseObject";
+    public static String LEAF = "attribute";
+    public static String NAME_ATTRIB = "name";
+    public static String TYPE_ATTRIB = "type";
+}

Added: 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/Utils.java
URL: 
http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/Utils.java?rev=375561&view=auto
==============================================================================
--- 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/Utils.java
 (added)
+++ 
incubator/synapse/trunk/scratch/infravio/synapse-SO/src/com/infravio/utils/Utils.java
 Tue Feb  7 02:24:10 2006
@@ -0,0 +1,198 @@
+package com.infravio.utils;
+
+import com.infravio.core.SynapseObject;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayOutputStream;
+import java.io.StringReader;
+
+public class Utils {
+
+    private static Document xmlDocument;
+
+    public static SynapseObject xmlToSynapseObject(String xml) {
+        SynapseObject businessObj;
+        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+        try {
+            InputSource inputSource = new InputSource(new StringReader(xml));
+            DocumentBuilder parser = factory.newDocumentBuilder();
+            xmlDocument = parser.parse(inputSource);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        businessObj = createSynapseObject(xmlDocument);
+        return businessObj;
+    }
+
+    public static SynapseObject createSynapseObject(Document xmlDocument) {
+
+        SynapseObject businessObj = null;
+        NodeList node = xmlDocument.getChildNodes();
+        int len = node.getLength();
+        int i;
+
+        for (i = 0; i < len; i++) {
+
+            String nodeName = node.item(i).getNodeName();
+            if (nodeName.equalsIgnoreCase(UtilConstants.NODE)) {
+                businessObj = processBONode(node.item(i));
+            }
+        }
+        return businessObj;
+    }
+
+    private static SynapseObject processBONode(Node boNode) {
+
+        String name = "";
+        SynapseObject tempObj;
+        NamedNodeMap namedNodeMap = boNode.getAttributes();
+        int attributeCount = namedNodeMap.getLength();
+        for (int counter = 0; counter < attributeCount; counter++) {
+            Node attribName = namedNodeMap.item(counter);
+            if (attribName.getNodeName().equals(UtilConstants.NAME_ATTRIB)) {
+                name = 
namedNodeMap.getNamedItem(UtilConstants.NAME_ATTRIB).getNodeValue();
+            }
+
+        }
+        tempObj = new SynapseObject(name);
+        NodeList nodeList = boNode.getChildNodes();
+        int len = nodeList.getLength();
+        int i;
+
+        for (i = 0; i < len; i++) {
+            String nodeName = nodeList.item(i).getNodeName();
+            if (nodeName.equalsIgnoreCase(UtilConstants.LEAF)) {
+                try {
+                    tempObj = processGONode(nodeList.item(i), tempObj);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            if (nodeName.equalsIgnoreCase(UtilConstants.NODE)) {
+                SynapseObject bObj = processBONode(nodeList.item(i));
+                tempObj.addChild(bObj);
+            }
+        }
+        return tempObj;
+    }
+
+    private static SynapseObject processGONode(Node goNode, SynapseObject 
parent) throws Exception {
+
+        String goName = "", goType = "", goValue = "";
+        NamedNodeMap namedNodeMap = goNode.getAttributes();
+        int attributeCount = namedNodeMap.getLength();
+        for (int counter = 0; counter < attributeCount; counter++) {
+            Node attribName = namedNodeMap.item(counter);
+            if (attribName.getNodeName().equals(UtilConstants.NAME_ATTRIB)) {
+                goName = 
namedNodeMap.getNamedItem(UtilConstants.NAME_ATTRIB).getNodeValue();
+            } else if 
(attribName.getNodeName().equals(UtilConstants.TYPE_ATTRIB)) {
+                goType = 
namedNodeMap.getNamedItem(UtilConstants.TYPE_ATTRIB).getNodeValue();
+            }
+        }
+        if (goNode.hasChildNodes()) {
+            if (goNode.getFirstChild().getNodeType() == Node.TEXT_NODE) {
+                goValue = goNode.getFirstChild().getNodeValue();
+            }
+        }
+        if (goType.equalsIgnoreCase("Boolean")) {
+            parent.setBoolean(goName, goValue);
+        } else if (goType.equalsIgnoreCase("Float")) {
+            parent.setFloat(goName, goValue);
+        } else if (goType.equalsIgnoreCase("Integer")) {
+            parent.setInteger(goName, goValue);
+        } else if (goType.equalsIgnoreCase("Long")) {
+            parent.setLong(goName, goValue);
+        } else if (goType.equalsIgnoreCase("String")) {
+            parent.setString(goName, goValue);
+        } else {
+            throw new Exception("TYPE NOT SUPPORTED!");
+        }
+        return parent;
+    }
+
+    public static String transform(String xml, String xsl) {
+        /*String xsl = "<xsl:stylesheet 
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"; version=\"1.0\">\n" +
+         "<xsl:output method=\"text\" /> \n" +
+         "<xsl:template match=\"/\">\n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "<xsl:template match=\"student_list\">\n" +
+         "Student Directory for example.edu \n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "<xsl:template match=\"name\">\n" +
+         "Name: \n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "<xsl:template match=\"major\">\n" +
+         "Major: \n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "<xsl:template match=\"phone\">\n" +
+         "Phone: \n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "<xsl:template match=\"email\">\n" +
+         "Email: \n" +
+         "<xsl:apply-templates /> \n" +
+         "</xsl:template>\n" +
+         "</xsl:stylesheet>";
+
+  String xml = "<student_list>\n" +
+          "<student>\n" +
+          "<name>George Washington</name> \n" +
+          "<major>Politics</major> \n" +
+          "<phone>312-123-4567</phone> \n" +
+          "<email>[EMAIL PROTECTED]</email> \n" +
+          "</student>\n" +
+          "<student>\n" +
+          "<name>Janet Jones</name> \n" +
+          "<major>Undeclared</major> \n" +
+          "<phone>311-122-2233</phone> \n" +
+          "<email>[EMAIL PROTECTED]</email> \n" +
+          "</student>\n" +
+          "<student>\n" +
+          "<name>Joe Taylor</name> \n" +
+          "<major>Engineering</major> \n" +
+          "<phone>211-111-2333</phone> \n" +
+          "<email>[EMAIL PROTECTED]</email> \n" +
+          "</student>\n" +
+          "</student_list>";
+        */
+        String out_xml = "";
+        TransformerFactory tFactory = TransformerFactory.newInstance();
+        try {
+            Transformer transformer = tFactory.newTransformer(new 
StreamSource(new StringReader(xsl)));
+            try {
+                ByteArrayOutputStream byteArrayOutput = new 
ByteArrayOutputStream();
+                transformer.transform(new StreamSource(new StringReader(xml)), 
new StreamResult(byteArrayOutput));
+                out_xml = byteArrayOutput.toString();
+            } catch (TransformerException e) {
+                e.printStackTrace();
+            }
+        } catch (TransformerConfigurationException e) {
+            e.printStackTrace();
+        }
+        return out_xml;
+    }
+
+    public static SynapseObject transformToSynapseObject(String xml, String 
xsl){
+        String BOXml = Utils.transform(xml,xsl);
+        SynapseObject bObject = Utils.xmlToSynapseObject(BOXml);
+        return bObject;
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to