Author: indika
Date: Wed Feb 14 23:02:07 2007
New Revision: 507842

URL: http://svn.apache.org/viewvc?view=rev&rev=507842
Log:
add ScriptMediatorSerializer and test cases for that 

Added:
    
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediatorSerializer.java
    
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializer.java
    
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/AbstractTestCase.java
    
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializationTest.java
Modified:
    
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediator.java
    
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
    
webservices/synapse/trunk/java/modules/extensions/src/main/resources/META-INF/services/org.apache.synapse.config.xml.MediatorSerializer

Modified: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediator.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediator.java?view=diff&rev=507842&r1=507841&r2=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediator.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediator.java
 Wed Feb 14 23:02:07 2007
@@ -100,4 +100,12 @@
             throw new SynapseException(e);
         }
     }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public String getScriptSrc() {
+        return scriptSrc;
+    }
 }

Added: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediatorSerializer.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediatorSerializer.java?view=auto&rev=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediatorSerializer.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/InlineScriptMediatorSerializer.java
 Wed Feb 14 23:02:07 2007
@@ -0,0 +1,60 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed 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 org.apache.synapse.config.xml.AbstractMediatorSerializer;
+import org.apache.synapse.Mediator;
+import org.apache.synapse.SynapseException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMText;
+
+/**
+ * Serializer for a script mediator, which use a script specified in inline in 
the Synapse config XML
+ */
+
+public class InlineScriptMediatorSerializer extends AbstractMediatorSerializer 
{
+
+    private static final Log log = 
LogFactory.getLog(InlineScriptMediatorSerializer.class);
+
+    public OMElement serializeMediator(OMElement parent, Mediator m) {
+        if (!(m instanceof InlineScriptMediator)) {
+            handleException("Unsupported mediator passed in for serialization 
: " + m.getType());
+        }
+        InlineScriptMediator inlineScriptMediator = (InlineScriptMediator) m;
+        String scriptName = inlineScriptMediator.getScriptName();
+        OMElement script = fac.createOMElement(scriptName, synNS);
+        String scriptSrc = inlineScriptMediator.getScriptSrc();
+        OMText src = fac.createOMText(scriptSrc.trim());
+        script.addChild(src);
+        if (parent != null) {
+            parent.addChild(script);
+        }
+        return script;
+
+    }
+
+    public String getMediatorClassName() {
+        return InlineScriptMediator.class.getName();
+    }
+
+    private void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}
+

Modified: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java?view=diff&rev=507842&r1=507841&r2=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
 Wed Feb 14 23:02:07 2007
@@ -133,4 +133,11 @@
         return oc;
     }
 
+    public String getScriptKey() {
+        return scriptKey;
+    }
+
+    public String getFunctionName() {
+        return functionName;
+    }
 }

Added: 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializer.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializer.java?view=auto&rev=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializer.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializer.java
 Wed Feb 14 23:02:07 2007
@@ -0,0 +1,66 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed 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 org.apache.synapse.config.xml.AbstractMediatorSerializer;
+import org.apache.synapse.Mediator;
+import org.apache.synapse.SynapseException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.axiom.om.OMElement;
+
+/**
+ * Serializer for a script mediator, which use a script specified in registry 
properties
+ */
+
+public class ScriptMediatorSerializer extends AbstractMediatorSerializer {
+
+    private static final Log log = 
LogFactory.getLog(ScriptMediatorSerializer.class);
+
+    public OMElement serializeMediator(OMElement parent, Mediator m) {
+        if (!(m instanceof ScriptMediator)) {
+            handleException("Unsupported mediator passed in for serialization 
: " + m.getType());
+        }
+        ScriptMediator scriptMediator = (ScriptMediator) m;
+        OMElement script = fac.createOMElement("script", synNS);
+        String key = scriptMediator.getScriptKey();
+        String function = scriptMediator.getFunctionName();
+        if (key != null && function != null) {
+            script.addAttribute(fac.createOMAttribute(
+                    "key", nullNS, key));
+            if (!function.equals("mediate")) {
+                script.addAttribute(fac.createOMAttribute(
+                        "function", nullNS, function));
+            }
+        } else {
+            handleException("Invalid Script mediator. Both of the Script 
registry key and the function name are required");
+        }
+        finalizeSerialization(script, scriptMediator);
+        if (parent != null) {
+            parent.addChild(script);
+        }
+        return script;
+    }
+
+    public String getMediatorClassName() {
+        return ScriptMediator.class.getName();
+    }
+
+    private void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}

Modified: 
webservices/synapse/trunk/java/modules/extensions/src/main/resources/META-INF/services/org.apache.synapse.config.xml.MediatorSerializer
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/resources/META-INF/services/org.apache.synapse.config.xml.MediatorSerializer?view=diff&rev=507842&r1=507841&r2=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/main/resources/META-INF/services/org.apache.synapse.config.xml.MediatorSerializer
 (original)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/main/resources/META-INF/services/org.apache.synapse.config.xml.MediatorSerializer
 Wed Feb 14 23:02:07 2007
@@ -2,3 +2,5 @@
 org.apache.synapse.mediators.transform.XSLTMediatorSerializer
 org.apache.synapse.mediators.spring.SpringMediatorSerializer
 org.apache.synapse.mediators.json.JsonMediatorSerializer
+org.apache.synapse.mediators.bsf.ScriptMediatorSerializer
+org.apache.synapse.mediators.bsf.InlineScriptMediatorSerializer
\ No newline at end of file

Added: 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/AbstractTestCase.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/AbstractTestCase.java?view=auto&rev=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/AbstractTestCase.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/AbstractTestCase.java
 Wed Feb 14 23:02:07 2007
@@ -0,0 +1,91 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed 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;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.impl.llom.util.XMLComparator;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.axiom.om.OMElement;
+import org.apache.synapse.config.xml.MediatorFactory;
+import org.apache.synapse.config.xml.MediatorSerializer;
+import org.apache.synapse.config.xml.MediatorFactoryFinder;
+import org.apache.synapse.Mediator;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import java.io.StringReader;
+
+/**
+ *
+ *
+ */
+
+public abstract class AbstractTestCase extends TestCase {
+
+    XMLComparator comparator = null;
+
+    public AbstractTestCase(String name) {
+        super(name);
+    }
+
+    public AbstractTestCase() {
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        comparator = new XMLComparator();
+    }
+
+    protected OMElement createOMElement(String xml) {
+        try {
+
+            XMLStreamReader reader = 
XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(xml));
+            StAXOMBuilder builder = new StAXOMBuilder(reader);
+            OMElement omElement = builder.getDocumentElement();
+            return omElement;
+
+        }
+        catch (XMLStreamException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    protected boolean serialization(String inputXml, MediatorFactory 
mediatorFactory, MediatorSerializer mediatorSerializer) throws 
XMLComparisonException {
+
+        OMElement inputOM = createOMElement(inputXml);
+        Mediator mediator = mediatorFactory.createMediator(inputOM);
+        OMElement resultOM = mediatorSerializer.serializeMediator(null, 
mediator);
+        return comparator.compare(resultOM, inputOM);
+    }
+
+    protected boolean serialization(String inputXml, MediatorSerializer 
mediatorSerializer) throws XMLComparisonException {
+        OMElement inputOM = createOMElement(inputXml);
+        Mediator mediator = 
MediatorFactoryFinder.getInstance().getMediator(inputOM);
+        OMElement resultOM = mediatorSerializer.serializeMediator(null, 
mediator);
+        return comparator.compare(resultOM, inputOM);
+    }
+
+    protected OMElement getParent() {
+        String parentXML = "<synapse 
xmlns=\"http://ws.apache.org/ns/synapse\";><definitions></definitions></synapse>";
+        return createOMElement(parentXML);
+    }
+
+    protected boolean compare(OMElement inputElement, OMElement 
serializedElement) throws XMLComparisonException {
+        return comparator.compare(inputElement, serializedElement);
+    }
+}
\ No newline at end of file

Added: 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializationTest.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializationTest.java?view=auto&rev=507842
==============================================================================
--- 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializationTest.java
 (added)
+++ 
webservices/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorSerializationTest.java
 Wed Feb 14 23:02:07 2007
@@ -0,0 +1,57 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed 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 org.apache.axiom.om.impl.exception.XMLComparisonException;
+import org.apache.synapse.mediators.AbstractTestCase;
+
+/**
+ *
+ *
+ */
+
+public class ScriptMediatorSerializationTest extends AbstractTestCase {
+
+    ScriptMediatorFactory mediatorFactory;
+    ScriptMediatorSerializer scriptMediatorSerializer;
+    InlineScriptMediatorSerializer inlineScriptMediatorSerializer;
+
+    public ScriptMediatorSerializationTest() {
+        mediatorFactory = new ScriptMediatorFactory();
+        scriptMediatorSerializer = new ScriptMediatorSerializer();
+        inlineScriptMediatorSerializer = new InlineScriptMediatorSerializer();
+    }
+
+    public void testScriptMediatorSerializationSenarioOne() throws 
XMLComparisonException {
+        String inputXml = "<script xmlns=\"http://ws.apache.org/ns/synapse\"; 
key=\"script-key\" function=\"funOne\"></script> ";
+        assertTrue(serialization(inputXml, mediatorFactory, 
scriptMediatorSerializer));
+        assertTrue(serialization(inputXml, scriptMediatorSerializer));
+    }
+
+    public void testScriptMediatorSerializationSenarioTwo() throws 
XMLComparisonException {
+        String inputXml = "<script xmlns=\"http://ws.apache.org/ns/synapse\"; 
key=\"script-key\" ></script> ";
+        assertTrue(serialization(inputXml, mediatorFactory, 
scriptMediatorSerializer));
+        assertTrue(serialization(inputXml, scriptMediatorSerializer));
+    }
+
+    public void testInlineScriptMediatorSerializationSenarioOne() throws 
XMLComparisonException {
+        String inputXml = "<script.js 
xmlns=\"http://ws.apache.org/ns/synapse\"; " +
+                "> <![CDATA[var symbol = 
mc.getPayloadXML()..*::Code.toString();mc.setPayloadXML(<m:getQuote 
xmlns:m=\"http://services.samples/xsd\";>\n" +
+                
"<m:request><m:symbol>{symbol}</m:symbol></m:request></m:getQuote>);]]></script.js>
 ";
+        assertTrue(serialization(inputXml, mediatorFactory, 
inlineScriptMediatorSerializer));
+        assertTrue(serialization(inputXml, inlineScriptMediatorSerializer));
+    }
+}



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

Reply via email to