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) {