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]