Author: antelder
Date: Sun Oct 22 02:25:50 2006
New Revision: 466636
URL: http://svn.apache.org/viewvc?view=rev&rev=466636
Log:
Get the script mediator working with Ruby REXML
Added:
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_ruby.xml
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.rb
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediator.java
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/DefaultOMElementConvertor.java
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/OMElementConvertor.java
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/RBOMElementConvertor.java
Added:
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_ruby.xml
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_ruby.xml?view=auto&rev=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_ruby.xml
(added)
+++
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_ruby.xml
Sun Oct 22 02:25:50 2006
@@ -0,0 +1,24 @@
+<synapse xmlns="http://ws.apache.org/ns/synapse">
+
+ <definitions>
+
+ <set-property name="xmethodsStockquote"
src="file:synapse_repository/conf/sample/xmethodsStockquote.rb"/>
+
+ </definitions>
+
+ <rules>
+
+ <in>
+ <script key="xmethodsStockquote" function="mediateIn"/>
+ <header name="To" value="http://64.124.140.30:9090/soap"/>
+ </in>
+
+ <out>
+ <script key="xmethodsStockquote" function="mediateOut"/>
+ </out>
+
+ <send/>
+
+ </rules>
+
+</synapse>
\ No newline at end of file
Added:
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.rb
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.rb?view=auto&rev=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.rb
(added)
+++
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.rb
Sun Oct 22 02:25:50 2006
@@ -0,0 +1,35 @@
+<x><![CDATA[
+
+require 'rexml/document'
+include REXML
+
+def mediateIn(msg)
+ newRequest = Document.new($REQUEST)
+ newRequest.root.elements[1].text =
msg.getPayloadXML().root.elements[1].elements[1].get_text
+ msg.setPayloadXML(newRequest)
+end
+
+def mediateOut(msg)
+ newResponse = Document.new($RESPONSE)
+ newResponse.root.elements[1].elements[1].text =
msg.getPayloadXML().root.elements[1].get_text
+ msg.setPayloadXML(newResponse)
+end
+
+
+$REQUEST = <<EOF
+ <ns1:getQuote xmlns:ns1="urn:xmethods-delayed-quotes"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
+ <symbol xsi:type="xsd:string"></symbol>
+ </ns1:getQuote>
+EOF
+
+$RESPONSE = <<EOF
+ <ns:getQuoteResponse xmlns:ns="http://services.samples/xsd">
+ <ns:return>
+ <ns:last></ns:last>
+ </ns:return>
+ </ns:getQuoteResponse>
+EOF
+
+]]></x>
+
+
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediator.java
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediator.java?view=diff&rev=466636&r1=466635&r2=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediator.java
(original)
+++
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediator.java
Sun Oct 22 02:25:50 2006
@@ -68,20 +68,21 @@
public synchronized BSFEngine getBSFEngine(SynapseConfiguration
synapseConfig) {
Property dp = synapseConfig.getPropertyObject(scriptKey);
- boolean requiresRefresh = (dp != null) && (!dp.isCached() ||
dp.isExpired());
-
- if (bsfEngine == null || requiresRefresh) {
+// boolean requiresRefresh = (dp != null) && (!dp.isCached() ||
dp.isExpired());
+// if (bsfEngine == null || requiresRefresh) { TODO: sort out caching
+ if (bsfEngine == null) {
OMElement el = (OMElement) synapseConfig.getProperty(scriptKey);
String scriptSrc = el.getText();
String scriptName = dp.getSrc().toString();
this.bsfEngine = createBSFEngine(scriptName, scriptSrc);
this.convertor = createOMElementConvertor(scriptName);
+ convertor.setEngine(bsfEngine);
}
return bsfEngine;
}
- public BSFEngine createBSFEngine(String scriptName, String scriptSrc) {
+ protected BSFEngine createBSFEngine(String scriptName, String scriptSrc) {
try {
BSFManager bsfManager = new BSFManager();
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMessageContext.java?view=diff&rev=466636&r1=466635&r2=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
(original)
+++
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
Sun Oct 22 02:25:50 2006
@@ -43,7 +43,8 @@
}
/**
- * Get the SOAP Body payload. The payload is the first element inside the
SOAP <Body> tags
+ * Get the XML representation of SOAP Body payload.
+ * The payload is the first element inside the SOAP <Body> tags
*
* @return the XML SOAP Body
*/
@@ -52,13 +53,20 @@
}
/**
- * Set the SOAP body payload from a String
+ * Set the SOAP body payload from XML
*
* @param payload
* @throws XMLStreamException
*/
public void setPayloadXML(Object payload) throws XMLStreamException {
mc.getEnvelope().getBody().setFirstChild(convertor.fromScript(payload));
+ }
+
+ /**
+ * Get the XML representation of the complete SOAP envelope
+ */
+ public Object getEnvelopeXML() {
+ return convertor.toScript(mc.getEnvelope());
}
// helpers to set EPRs from a script string
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/DefaultOMElementConvertor.java
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/DefaultOMElementConvertor.java?view=diff&rev=466636&r1=466635&r2=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/DefaultOMElementConvertor.java
(original)
+++
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/DefaultOMElementConvertor.java
Sun Oct 22 02:25:50 2006
@@ -21,6 +21,7 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.bsf.BSFEngine;
import org.apache.synapse.SynapseException;
/**
@@ -43,6 +44,11 @@
public Object toScript(OMElement omElement) {
return omElement.toString();
+ }
+
+ public void setEngine(BSFEngine e) {
+ // TODO Auto-generated method stub
+
}
}
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/OMElementConvertor.java
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/OMElementConvertor.java?view=diff&rev=466636&r1=466635&r2=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/OMElementConvertor.java
(original)
+++
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/OMElementConvertor.java
Sun Oct 22 02:25:50 2006
@@ -16,6 +16,7 @@
package org.apache.synapse.mediators.bsf.convertors;
import org.apache.axiom.om.OMElement;
+import org.apache.bsf.BSFEngine;
/**
* The OMElementConvertor interface enables customizing the conversion of
@@ -34,6 +35,7 @@
*/
public interface OMElementConvertor {
+ public void setEngine(BSFEngine e);
public Object toScript(OMElement omElement);
public OMElement fromScript(Object o);
Modified:
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/RBOMElementConvertor.java
URL:
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/RBOMElementConvertor.java?view=diff&rev=466636&r1=466635&r2=466636
==============================================================================
---
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/RBOMElementConvertor.java
(original)
+++
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/convertors/RBOMElementConvertor.java
Sun Oct 22 02:25:50 2006
@@ -23,7 +23,6 @@
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.bsf.BSFEngine;
import org.apache.bsf.BSFException;
-import org.apache.bsf.BSFManager;
import org.apache.synapse.SynapseException;
/**
@@ -37,20 +36,18 @@
protected BSFEngine bsfEngine;
public RBOMElementConvertor() {
- try {
- this.bsfEngine = new BSFManager().loadScriptingEngine("ruby");
- } catch (BSFException e) {
- throw new SynapseException(e);
- }
}
public Object toScript(OMElement omElement) {
try {
- StringBuilder srcFragment = new StringBuilder("Document.new(\"");
+ StringBuilder srcFragment = new
StringBuilder("Document.new(<<EOF\n");
srcFragment.append(omElement.toString());
- srcFragment.append("\")");
- return bsfEngine.eval("RBOMElementConvertor", 0, 0,
srcFragment.toString());
+ srcFragment.append("\nEOF\n");
+ srcFragment.append(")");
+
+ Object o = bsfEngine.eval("RBOMElementConvertor", 0, 0,
srcFragment.toString());
+ return o;
} catch (BSFException e) {
throw new SynapseException(e);
@@ -69,5 +66,9 @@
} catch (XMLStreamException e) {
throw new SynapseException(e);
}
+ }
+
+ public void setEngine(BSFEngine e) {
+ this.bsfEngine = e;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]