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]