Author: davsclaus
Date: Thu Feb 12 11:27:54 2009
New Revision: 743689

URL: http://svn.apache.org/viewvc?rev=743689&view=rev
Log:
CAMEL-505: rmi endpoint can now be configued using spring bean style.

Added:
    
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java
      - copied, changed from r743658, 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java
Modified:
    
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiConsumer.java
    
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
    
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java

Modified: 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiConsumer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiConsumer.java?rev=743689&r1=743688&r2=743689&view=diff
==============================================================================
--- 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiConsumer.java
 (original)
+++ 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiConsumer.java
 Thu Feb 12 11:27:54 2009
@@ -44,7 +44,6 @@
     public RmiConsumer(RmiEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
         this.endpoint = endpoint;
-
     }
 
     @Override
@@ -59,7 +58,8 @@
             String name = endpoint.getName();
             registry.bind(name, stub);
 
-        } catch (Exception e) { // Registration might fail.. clean up..
+        } catch (Exception e) {
+            // Registration might fail.. clean up..
             try {
                 UnicastRemoteObject.unexportObject(stub, true);
             } catch (Throwable ignore) {
@@ -76,7 +76,8 @@
         try {
             Registry registry = endpoint.getRegistry();
             registry.unbind(endpoint.getName());
-        } catch (Throwable e) { // do our best to unregister
+        } catch (Throwable e) {
+            // do our best to unregister
         }
         UnicastRemoteObject.unexportObject(proxy, true);
     }

Modified: 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java?rev=743689&r1=743688&r2=743689&view=diff
==============================================================================
--- 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
 Thu Feb 12 11:27:54 2009
@@ -25,13 +25,10 @@
 import java.util.List;
 
 import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * @version $Revision:520964 $
@@ -44,6 +41,9 @@
     private int port;
     private String method;
 
+    public RmiEndpoint() {
+    }
+
     protected RmiEndpoint(String endpointUri, RmiComponent component) throws 
URISyntaxException {
         super(endpointUri, component);
         this.uri = new URI(endpointUri);
@@ -58,14 +58,21 @@
         return false;
     }
 
-    public Consumer createConsumer(Processor processor) throws Exception {
+    @Override
+    protected String createEndpointUri() {
+        return uri.toString();
+    }
+
+    public Consumer createConsumer(Processor processor) {
+        ObjectHelper.notNull(uri, "uri");
         if (remoteInterfaces == null || remoteInterfaces.size() == 0) {
-            throw new RuntimeCamelException("To create a RMI consumer, the RMI 
endpoint's remoteInterfaces property must be be configured.");
+            throw new IllegalArgumentException("To create a RMI consumer, the 
RMI endpoint's remoteInterfaces property must be be configured.");
         }
         return new RmiConsumer(this, processor);
     }
 
     public Producer createProducer() throws Exception {
+        ObjectHelper.notNull(uri, "uri");
         return new RmiProducer(this);
     }
 
@@ -131,4 +138,12 @@
     public void setMethod(String method) {
         this.method = method;
     }
+
+    public URI getUri() {
+        return uri;
+    }
+
+    public void setUri(URI uri) {
+        this.uri = uri;
+    }
 }

Copied: 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java
 (from r743658, 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java?p2=camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java&p1=camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java&r1=743658&r2=743689&rev=743689&view=diff
==============================================================================
--- 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java
 (original)
+++ 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteEndpointTest.java
 Thu Feb 12 11:27:54 2009
@@ -16,83 +16,40 @@
  */
 package org.apache.camel.component.rmi;
 
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.rmi.registry.LocateRegistry;
-
-import junit.framework.TestCase;
+import java.net.URI;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.bean.ProxyHelper;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.util.jndi.JndiContext;
 
 /**
  * @version $Revision$
  */
-public class RmiRouteTest extends TestCase {
+public class RmiRouteEndpointTest extends RmiRouteTest {
+
+    protected int getPort() {
+        return 37542;
+    }
 
-    public void testPojoRoutes() throws Exception {
-        if (classPathHasSpaces()) {
-            return;
-        }
-
-        // Boot up a local RMI registry
-        LocateRegistry.createRegistry(37541);
-
-        // START SNIPPET: register
-        JndiContext context = new JndiContext();
-        context.bind("bye", new SayService("Good Bye!"));
-
-        CamelContext camelContext = new DefaultCamelContext(context);
-        // END SNIPPET: register
-
-        // START SNIPPET: route
-        // lets add simple route
-        camelContext.addRoutes(new RouteBuilder() {
-            public void configure() {
-                from("direct:hello").to("rmi://localhost:37541/bye");
+    @Override
+    protected RouteBuilder getRouteBuilder(final CamelContext context) {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                RmiEndpoint say = new RmiEndpoint();
+                say.setCamelContext(context);
+                say.setUri(new URI("uri://localhost:37542/bye"));
+
+                from("direct:hello").to(say);
 
                 // When exposing an RMI endpoint, the interfaces it exposes 
must
                 // be configured.
-                RmiEndpoint bye = 
(RmiEndpoint)endpoint("rmi://localhost:37541/bye");
+                RmiEndpoint bye = new RmiEndpoint();
+                bye.setCamelContext(context);
                 bye.setRemoteInterfaces(ISay.class);
-                from(bye).to("bean:bye");
-            }
-        });
-        // END SNIPPET: route
+                bye.setUri(new URI("uri://localhost:37542/bye"));
 
-        camelContext.start();
-
-        // START SNIPPET: invoke
-        Endpoint endpoint = camelContext.getEndpoint("direct:hello");
-        ISay proxy = ProxyHelper.createProxy(endpoint, ISay.class);
-        String rc = proxy.say();
-        assertEquals("Good Bye!", rc);
-        // END SNIPPET: invoke
-
-        camelContext.stop();
-    }
-
-    private boolean classPathHasSpaces() {
-        ClassLoader cl = getClass().getClassLoader();
-        if (cl instanceof URLClassLoader) {
-            URLClassLoader ucl = (URLClassLoader)cl;
-            URL[] urls = ucl.getURLs();
-            for (int i = 0; i < urls.length; i++) {
-                if (urls[i].getPath().contains(" ")) {
-                    
System.err.println("=======================================================================");
-                    System.err.println(" TEST Skipped: " + getName());
-                    System.err.println("   Your probably on windows.  We 
detected that the classpath");
-                    System.err.println("   has a space in it.  Try running 
maven with the following option: ");
-                    System.err.println("   
-Dmaven.repo.local=C:\\DOCUME~1\\userid\\.m2\\repository");
-                    
System.err.println("=======================================================================");
-                    return true;
-                }
+                from(bye).to("bean:bye");
             }
-        }
-        return false;
+        };
     }
-}
+}
\ No newline at end of file

Modified: 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java?rev=743689&r1=743688&r2=743689&view=diff
==============================================================================
--- 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java
 (original)
+++ 
camel/trunk/components/camel-rmi/src/test/java/org/apache/camel/component/rmi/RmiRouteTest.java
 Thu Feb 12 11:27:54 2009
@@ -34,13 +34,17 @@
  */
 public class RmiRouteTest extends TestCase {
 
+    protected int getPort() {
+        return 37541;
+    }
+
     public void testPojoRoutes() throws Exception {
         if (classPathHasSpaces()) {
             return;
         }
 
         // Boot up a local RMI registry
-        LocateRegistry.createRegistry(37541);
+        LocateRegistry.createRegistry(getPort());
 
         // START SNIPPET: register
         JndiContext context = new JndiContext();
@@ -49,20 +53,7 @@
         CamelContext camelContext = new DefaultCamelContext(context);
         // END SNIPPET: register
 
-        // START SNIPPET: route
-        // lets add simple route
-        camelContext.addRoutes(new RouteBuilder() {
-            public void configure() {
-                from("direct:hello").to("rmi://localhost:37541/bye");
-
-                // When exposing an RMI endpoint, the interfaces it exposes 
must
-                // be configured.
-                RmiEndpoint bye = 
(RmiEndpoint)endpoint("rmi://localhost:37541/bye");
-                bye.setRemoteInterfaces(ISay.class);
-                from(bye).to("bean:bye");
-            }
-        });
-        // END SNIPPET: route
+        camelContext.addRoutes(getRouteBuilder(camelContext));
 
         camelContext.start();
 
@@ -76,6 +67,23 @@
         camelContext.stop();
     }
 
+    protected RouteBuilder getRouteBuilder(final CamelContext context) {
+        return new RouteBuilder() {
+            // START SNIPPET: route
+            // lets add simple route
+            public void configure() {
+                from("direct:hello").to("rmi://localhost:37541/bye");
+
+                // When exposing an RMI endpoint, the interfaces it exposes 
must
+                // be configured.
+                RmiEndpoint bye = 
(RmiEndpoint)endpoint("rmi://localhost:37541/bye");
+                bye.setRemoteInterfaces(ISay.class);
+                from(bye).to("bean:bye");
+            }
+            // END SNIPPET: route
+        };
+    }
+
     private boolean classPathHasSpaces() {
         ClassLoader cl = getClass().getClassLoader();
         if (cl instanceof URLClassLoader) {


Reply via email to