Author: antelder
Date: Wed Jan  3 16:20:10 2007
New Revision: 492366

URL: http://svn.apache.org/viewvc?view=rev&rev=492366
Log:
Groovy 1.0 final out today so start support for Groovy script

Added:
    
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
   (with props)
    
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
   (with props)
Modified:
    webservices/synapse/trunk/java/modules/extensions/pom.xml

Modified: webservices/synapse/trunk/java/modules/extensions/pom.xml
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/pom.xml?view=diff&rev=492366&r1=492365&r2=492366
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/pom.xml (original)
+++ webservices/synapse/trunk/java/modules/extensions/pom.xml Wed Jan  3 
16:20:10 2007
@@ -109,6 +109,12 @@
             <version>${bsf.version}</version>
         </dependency>
 
+        <dependency>
+           <groupId>groovy</groupId>
+           <artifactId>groovy-all</artifactId>
+           <version>${groovy.version}</version>
+        </dependency>
+
     </dependencies>
 
     <properties>
@@ -119,5 +125,6 @@
         <js.version>1.6R5</js.version>
         <xbean.version>2.2.0</xbean.version>
         <bsf.version>2.4.0</bsf.version>
+        <groovy.version>1.0</groovy.version>
     </properties>
 </project>

Added: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java?view=auto&rev=492366
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
 Wed Jan  3 16:20:10 2007
@@ -0,0 +1,103 @@
+/*
+ *  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.synapse.mediators.bsf.convertors;
+
+import groovy.lang.Writable;
+import groovy.util.Node;
+import groovy.util.XmlNodePrinter;
+import groovy.util.XmlParser;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.synapse.SynapseException;
+
+/**
+ * Converts between AXIOM OMElement and Groovy Node objects
+ * TODO: find a more efficent way to do this using STaX instead of going via a 
String
+ */
+public class GROOVYOMElementConvertor extends DefaultOMElementConvertor {
+
+    public GROOVYOMElementConvertor() {
+    }
+
+    /**
+     * Converts an OMElement into a groovy.util.Node
+     */
+    public Object toScript(OMElement o) {
+        try {
+
+            Node xmlNode = new XmlParser().parseText(o.toString());
+            return xmlNode;
+
+        } catch (Exception e) {
+            throw new SynapseException(e);
+        }        
+    }
+
+    /**
+     * Converts a Groovy object into a OMElement
+     */
+    public OMElement fromScript(Object o) {
+        try {
+
+            OMElement omElement;
+
+            if (o instanceof Node) {
+                omElement = nodeToOMElement((Node)o);
+            } else if (o instanceof Writable){
+                omElement = writableToOMElement((Writable)o);
+            } else {
+                throw new SynapseException("unknown type: " + o);
+            }
+
+            return omElement;
+
+        } catch (Exception e) {
+            throw new SynapseException(e);
+        }
+    }
+
+    protected OMElement writableToOMElement(Writable writable) throws 
IOException, XMLStreamException {
+        Writer out = new StringWriter();
+        writable.writeTo(out);
+        out.close();
+        StAXOMBuilder builder = new StAXOMBuilder(out.toString());
+        OMElement omElement = builder.getDocumentElement();
+        return omElement;
+    }
+
+    protected OMElement nodeToOMElement(Node node) throws XMLStreamException {
+        StringWriter out = new StringWriter();
+        new XmlNodePrinter(new PrintWriter(out)).print(node);
+        String xmlString = out.toString();
+        StAXOMBuilder builder = new StAXOMBuilder(new 
ByteArrayInputStream(xmlString.getBytes()));
+        OMElement omElement = builder.getDocumentElement();
+        return omElement;
+    }
+
+}

Propchange: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/GROOVYOMElementConvertor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java?view=auto&rev=492366
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
 Wed Jan  3 16:20:10 2007
@@ -0,0 +1,47 @@
+/*
+ *  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.synapse.mediators.bsf;
+
+import junit.framework.TestCase;
+
+import org.apache.synapse.mediators.TestUtils;
+
+public class GroovyScriptMediatorTest extends TestCase {
+
+    public void testXMLMediator2() throws Exception {
+        InlineScriptMediator mediator = new InlineScriptMediator("xml.groovy", 
"mc.setPayloadXML(mc.getPayloadXML())");
+        mediator.init();
+        
assertTrue(mediator.mediate(TestUtils.getTestContext("<a><b>petra</b></a>")));
+    }
+
+// TODO: doesn't work yet
+//  public void testXMLMediator3() throws Exception {
+//  String script = 
+//      "import groovy.xml.StreamingMarkupBuilder\n" +
+//      "def xml = mc.getPayloadXML()\n" +
+//      "def builder = new StreamingMarkupBuilder()\n" +
+//      "def copier = builder.bind{ mkp.yield(xml) }\n" +
+//      "mc.setPayloadXML(\"$copier\")\n";
+//  
+//  InlineScriptMediator mediator = new InlineScriptMediator("xml.groovy", 
script);
+//  mediator.init();
+//  
assertTrue(mediator.mediate(TestUtils.getTestContext("<a><b>petra</b></a>")));
+//}
+}

Propchange: 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/GroovyScriptMediatorTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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

Reply via email to