Author: pdodds
Date: Wed Oct  4 10:23:05 2006
New Revision: 452942

URL: http://svn.apache.org/viewvc?view=rev&rev=452942
Log:
Implements ScriptHelper and fixed issues with the Groovy testcase

Added:
    
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptHelper.java
Modified:
    
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeHelper.java
    
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeProcessorEndpoint.java
    
incubator/servicemix/trunk/servicemix-script/src/test/resources/RubyExchangeProcessor.rb
    incubator/servicemix/trunk/servicemix-script/src/test/resources/spring.xml

Modified: 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeHelper.java?view=diff&rev=452942&r1=452941&r2=452942
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeHelper.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeHelper.java
 Wed Oct  4 10:23:05 2006
@@ -26,15 +26,22 @@
  * @org.apache.xbean.XBean element="exchangeHelper" description="ServiceMix
  *                         Scripting Helper"
  */
-public class ScriptExchangeHelper {
+public class ScriptExchangeHelper implements ScriptHelper {
 
        private ScriptExchangeProcessorEndpoint endpoint;
 
-       public ScriptExchangeHelper(ScriptExchangeProcessorEndpoint endpoint) {
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.servicemix.script.ScriptHelper#setScriptExchangeProcessorEndpoint(org.apache.servicemix.script.ScriptExchangeProcessorEndpoint)
+        */
+       public void setScriptExchangeProcessorEndpoint(
+                       ScriptExchangeProcessorEndpoint endpoint) {
                this.endpoint = endpoint;
        }
 
-       public void doneExchange(MessageExchange exchange) throws 
MessagingException {
+       public void doneExchange(MessageExchange exchange)
+                       throws MessagingException {
                endpoint.done(exchange);
        }
 
@@ -43,7 +50,8 @@
                endpoint.fail(exchange, exception);
        }
 
-       public void sendExchange(MessageExchange exchange) throws 
MessagingException {
+       public void sendExchange(MessageExchange exchange)
+                       throws MessagingException {
                endpoint.send(exchange);
        }
-}
+}
\ No newline at end of file

Modified: 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeProcessorEndpoint.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeProcessorEndpoint.java?view=diff&rev=452942&r1=452941&r2=452942
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeProcessorEndpoint.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptExchangeProcessorEndpoint.java
 Wed Oct  4 10:23:05 2006
@@ -16,16 +16,18 @@
  */
 package org.apache.servicemix.script;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import javax.jbi.component.ComponentContext;
 import javax.jbi.management.DeploymentException;
 import javax.jbi.messaging.DeliveryChannel;
 import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.InOut;
 import javax.jbi.messaging.MessageExchange;
 import javax.jbi.messaging.MessageExchangeFactory;
 import javax.jbi.messaging.MessagingException;
 import javax.jbi.messaging.MessageExchange.Role;
-import javax.jbi.messaging.NormalizedMessage;
 import javax.jbi.servicedesc.ServiceEndpoint;
 
 import org.apache.servicemix.common.BaseLifeCycle;
@@ -46,6 +48,8 @@
 
        private ExchangeProcessor implementation;
 
+       private List helpers = new ArrayList();
+
        public void activate() throws Exception {
                logger = this.serviceUnit.getComponent().getLogger();
                ComponentContext ctx = getServiceUnit().getComponent()
@@ -76,6 +80,14 @@
                send(me);
        }
 
+       public List getHelpers() {
+               return helpers;
+       }
+
+       public ExchangeProcessor getImplementation() {
+               return implementation;
+       }
+
        public ExchangeProcessor getProcessor() {
                return this;
        }
@@ -89,10 +101,6 @@
                return Role.PROVIDER;
        }
 
-       public ExchangeProcessor getImplementation() {
-               return implementation;
-       }
-
        public void process(MessageExchange exchange) throws Exception {
                if (implementation != null)
                        implementation.process(exchange);
@@ -110,8 +118,19 @@
                }
        }
 
+       public void setHelpers(List helpers) {
+               this.helpers = helpers;
+               for (Iterator iterator = helpers.iterator(); 
iterator.hasNext();) {
+                       Object nextHelper = iterator.next();
+                       if (nextHelper instanceof ScriptHelper) {
+                               ((ScriptHelper) nextHelper)
+                                               
.setScriptExchangeProcessorEndpoint(this);
+                       }
+               }
+       }
+
        public void setImplementation(ExchangeProcessor implementation) {
-               this.implementation = implementation;           
+               this.implementation = implementation;
        }
 
        public void start() throws Exception {

Added: 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptHelper.java?view=auto&rev=452942
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptHelper.java
 (added)
+++ 
incubator/servicemix/trunk/servicemix-script/src/main/java/org/apache/servicemix/script/ScriptHelper.java
 Wed Oct  4 10:23:05 2006
@@ -0,0 +1,8 @@
+package org.apache.servicemix.script;

+

+public interface ScriptHelper {

+

+       public abstract void setScriptExchangeProcessorEndpoint(

+                       ScriptExchangeProcessorEndpoint endpoint);

+

+}
\ No newline at end of file

Modified: 
incubator/servicemix/trunk/servicemix-script/src/test/resources/RubyExchangeProcessor.rb
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-script/src/test/resources/RubyExchangeProcessor.rb?view=diff&rev=452942&r1=452941&r2=452942
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-script/src/test/resources/RubyExchangeProcessor.rb
 (original)
+++ 
incubator/servicemix/trunk/servicemix-script/src/test/resources/RubyExchangeProcessor.rb
 Wed Oct  4 10:23:05 2006
@@ -13,16 +13,15 @@
  end

  

  def process(exchange)

-   print "Processing exchange in JRuby"

-   @exchangeHelper.sendExchange exchange

+   print "Processing exchange "

+   print exchange

+   print " using "

+   print @exchangeHelper

+   @exchangeHelper.sendExchange(exchange)

  end

 

  def stop()

    print "Stopping"

- end

- 

- def toString()

-   return "RubyExchangeProcessor"

  end

 

 end

Modified: 
incubator/servicemix/trunk/servicemix-script/src/test/resources/spring.xml
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-script/src/test/resources/spring.xml?view=diff&rev=452942&r1=452941&r2=452942
==============================================================================
--- incubator/servicemix/trunk/servicemix-script/src/test/resources/spring.xml 
(original)
+++ incubator/servicemix/trunk/servicemix-script/src/test/resources/spring.xml 
Wed Oct  4 10:23:05 2006
@@ -20,51 +20,57 @@
 <beans xmlns:sm="http://servicemix.apache.org/config/1.0";

        xmlns:script="http://org.apache.servicemix/script/1.0";

        xmlns:lang="http://www.springframework.org/schema/lang";

-       xmlns:test="urn:test">
-
+       xmlns:test="urn:test">

+

        <sm:container id="jbi" embedded="true" createMBeanServer="false">
                <sm:activationSpecs>
                        <sm:activationSpec>
                                <sm:component>
-                                       <script:component>                      
                        
+                                       <script:component>
                                                <script:endpoints>

                                                        <!-- Groovy Endpoint  
-->
-                                                       
<script:exchangeProcessor id="groovyEndpoint"

+                                                       
<script:exchangeProcessor

                                                                
service="test:groovy" endpoint="endpoint">

-                                                               <property 
name="implementation" ref="groovyExchangeProcessor"/>

+                                                               <property 
name="helpers">

+                                                                       <list>

+                                                                               
<ref bean="groovyExchangeHelper" />

+                                                                       </list>

+                                                               </property>

+                                                               <property 
name="implementation"

+                                                                       
ref="groovyExchangeProcessor" />

                                                        
</script:exchangeProcessor>

-                                                       

+

                                                        <!-- JRuby Endpoint  -->

-                                                       
<script:exchangeProcessor id="rubyEndpoint"

+                                                       
<script:exchangeProcessor

                                                                
service="test:jruby" endpoint="endpoint">

-                                                               <property 
name="implementation" ref="rubyExchangeProcessor"/>

+                                                               <property 
name="helpers">

+                                                                       <list>

+                                                                               
<ref bean="jrubyExchangeHelper" />

+                                                                       </list>

+                                                               </property>

+                                                               <property 
name="implementation"

+                                                                       
ref="jrubyExchangeProcessor" />

                                                        
</script:exchangeProcessor>
-                                               </script:endpoints>             
                                
+                                               </script:endpoints>
                                        </script:component>
                                </sm:component>
                        </sm:activationSpec>
                </sm:activationSpecs>
        </sm:container>

-       

-       <script:exchangeHelper id="groovyExchangeHelper">               

-               <constructor-arg ref="groovyEndpoint"/>

-       </script:exchangeHelper>

-       

-       <script:exchangeHelper id="rubyExchangeHelper">         

-               <constructor-arg ref="rubyEndpoint"/>

-       </script:exchangeHelper>

 

-       <lang:groovy

-               id="groovyExchangeProcessor"

+       <script:exchangeHelper id="groovyExchangeHelper" singleton="true" />

+

+       <script:exchangeHelper id="jrubyExchangeHelper" singleton="true" />

+

+       <lang:groovy id="groovyExchangeProcessor"

                script-source="classpath:GroovyExchangeProcessor.groovy">

                <lang:property name="exchangeHelper" ref="groovyExchangeHelper" 
/>

        </lang:groovy>

-       

-       <lang:jruby

-               id="rubyExchangeProcessor"

+

+       <lang:jruby id="jrubyExchangeProcessor"

                
script-interfaces="org.apache.servicemix.common.ExchangeProcessor"

                script-source="classpath:RubyExchangeProcessor.rb">

-               <lang:property name="exchangeHelper" value="rubyExchangeHelper" 
/>

-       </lang:jruby>
-
+               <lang:property name="exchangeHelper" ref="jrubyExchangeHelper" 
/>

+       </lang:jruby>

+

 </beans>


Reply via email to