Author: antelder
Date: Sat Oct 21 06:58:47 2006
New Revision: 466400

URL: http://svn.apache.org/viewvc?view=rev&rev=466400
Log:
Allow specifying the script function to use in the synapse config xml and add a 
sample using that

Added:
    
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_script2.xml
    
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.js
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/ScriptMediatorFactory.java

Added: 
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_script2.xml
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_script2.xml?view=auto&rev=466400
==============================================================================
--- 
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_script2.xml
 (added)
+++ 
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/synapse_sample_script2.xml
 Sat Oct 21 06:58:47 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.js"/>
+    
+  </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.js
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.js?view=auto&rev=466400
==============================================================================
--- 
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.js
 (added)
+++ 
incubator/synapse/trunk/scratch/ant/BSF/repository/conf/sample/xmethodsStockquote.js
 Sat Oct 21 06:58:47 2006
@@ -0,0 +1,28 @@
+<x><![CDATA[
+
+  function mediateIn(msg) {
+
+     var payload = new XML(msg.getPayloadXML());
+     var newPayload = <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"> { 
payload..*::symbol.toString() } </symbol>
+                      </ns1:getQuote>;
+     msg.setPayloadXML(newPayload);
+  }
+
+
+  function mediateOut(msg) {
+
+     var payload = new XML(msg.getPayloadXML());
+
+     var newPayload = <ns:getQuoteResponse 
xmlns:ns="http://services.samples/xsd";>
+                         <ns:return>
+                            <ns:last> { payload..Result.toString() } </ns:last>
+                         </ns:return>
+                      </ns:getQuoteResponse>;
+
+     msg.setPayloadXML(newPayload);
+  }
+
+]]></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=466400&r1=466399&r2=466400
==============================================================================
--- 
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
 Sat Oct 21 06:58:47 2006
@@ -31,11 +31,14 @@
 public class ScriptMediator extends AbstractMediator {
 
     private String scriptKey;
+    
+    private String functionName;
 
     private BSFEngine bsfEngine;
 
-    public ScriptMediator(String scriptKey) {
+    public ScriptMediator(String scriptKey, String functionName) {
         this.scriptKey = scriptKey;
+        this.functionName = functionName;
     }
 
     public boolean mediate(MessageContext synCtx) {
@@ -44,7 +47,7 @@
             Object[] args = new Object[] { new ScriptMessageContext(synCtx) };
             SynapseConfiguration synapseConfig = synCtx.getConfiguration();
 
-            Object response = getBSFEngine(synapseConfig).call(null, 
"mediate", args);
+            Object response = getBSFEngine(synapseConfig).call(null, 
functionName, args);
             if (response instanceof Boolean) {
                 return ((Boolean) response).booleanValue();
             }

Modified: 
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediatorFactory.java?view=diff&rev=466400&r1=466399&r2=466400
==============================================================================
--- 
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediatorFactory.java
 (original)
+++ 
incubator/synapse/trunk/scratch/ant/BSF/src/org/apache/synapse/mediators/bsf/ScriptMediatorFactory.java
 Sat Oct 21 06:58:47 2006
@@ -28,7 +28,7 @@
  * Creates an instance of a Script mediator. <p/>
  * 
  * <pre>
- *  &lt;script key=&quot;property-key&quot; &lt;script/&gt;
+ *  &lt;script key=&quot;property-key&quot; 
function=&quot;script-function-name&quot; &lt;script/&gt;
  * </pre>
  * 
  */
@@ -42,7 +42,11 @@
         if (scriptKey == null) {
             throw new SynapseException("must specify 'key' for script source");
         }
-        ScriptMediator sm = new ScriptMediator(scriptKey.getAttributeValue());
+
+        OMAttribute function = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "function"));
+        String functionName = (function == null) ? "mediate" : 
function.getAttributeValue();
+
+        ScriptMediator sm = new ScriptMediator(scriptKey.getAttributeValue(), 
functionName);
         return sm;
     }
 



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

Reply via email to