Author: chirino
Date: Tue May  1 08:58:48 2007
New Revision: 534139

URL: http://svn.apache.org/viewvc?view=rev&rev=534139
Log:
Adding intial cut of the remoting stuff for spring.

Added:
    
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/
    
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
    
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java

Added: 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java?view=auto&rev=534139
==============================================================================
--- 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
 (added)
+++ 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
 Tue May  1 08:58:48 2007
@@ -0,0 +1,65 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.remoting;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.pojo.PojoComponent;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.remoting.support.UrlBasedRemoteAccessor;
+
+/**
+ * Creates a Proxy to Camel Pojo Endpoint.
+ *  
+ * @author chirino
+ */
+public class CamelProxyFactoryBean extends UrlBasedRemoteAccessor implements 
FactoryBean {
+
+       private Endpoint endpoint;
+       private Object serviceProxy;
+       
+       @Override
+       public void afterPropertiesSet() {
+               super.afterPropertiesSet();
+               try {
+                       this.serviceProxy = PojoComponent.createProxy(endpoint, 
getServiceInterface());
+               } catch (Exception e) {
+                       throw new IllegalArgumentException(e);
+               }
+       }
+       
+       public Object getObject() throws Exception {
+               return serviceProxy;
+       }
+
+       public Class getObjectType() {
+               return getServiceInterface();
+       }
+
+       public boolean isSingleton() {
+               return true;
+       }
+
+       public Endpoint getEndpoint() {
+               return endpoint;
+       }
+
+       public void setEndpoint(Endpoint endpoint) {
+               this.endpoint = endpoint;
+       }
+       
+}

Added: 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java?view=auto&rev=534139
==============================================================================
--- 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
 (added)
+++ 
activemq/camel/trunk/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
 Tue May  1 08:58:48 2007
@@ -0,0 +1,81 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.remoting;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.pojo.PojoComponent;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.remoting.support.RemoteExporter;
+
+/**
+ * Exports a Spring defined service to Camel as a Pojo endpoint.
+ *  
+ * @author chirino
+ */
+public class CamelServiceExporter extends RemoteExporter implements 
InitializingBean, DisposableBean {
+
+       CamelContext camelContext;
+       PojoComponent pojoComponent;
+       String serviceName;
+       
+       public void afterPropertiesSet() throws Exception {
+               if( serviceName == null ) {
+                       throw new IllegalArgumentException("The serviceName 
must be configured.");
+               }
+               if( pojoComponent == null ) {
+                       if( camelContext == null ) {
+                               throw new IllegalArgumentException("A 
pojoComponent or camelContext must be configured.");
+                       }
+                       pojoComponent = (PojoComponent) 
camelContext.getComponent("pojo");
+                       if( pojoComponent == null ) {
+                               throw new IllegalArgumentException("The 
pojoComponent could not be found.");
+                       }
+               }
+               pojoComponent.addService(serviceName, getProxyForService());
+       }
+
+       public void destroy() throws Exception {
+               if( serviceName!=null ) {
+                       pojoComponent.removeService(serviceName);
+               }
+       }
+
+       
+       public PojoComponent getPojoComponent() {
+               return pojoComponent;
+       }
+       public void setPojoComponent(PojoComponent pojoComponent) {
+               this.pojoComponent = pojoComponent;
+       }
+
+       public CamelContext getCamelContext() {
+               return camelContext;
+       }
+       public void setCamelContext(CamelContext camelContext) {
+               this.camelContext = camelContext;
+       }
+
+       public String getServiceName() {
+               return serviceName;
+       }
+       public void setServiceName(String serviceName) {
+               this.serviceName = serviceName;
+       }
+
+}


Reply via email to