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; + } + +}