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]

Reply via email to