Author: veithen Date: Wed Mar 31 09:20:31 2010 New Revision: 929441 URL: http://svn.apache.org/viewvc?rev=929441&view=rev Log: AXIS2-4662: Some simplifications of the PoC code.
Added: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java (with props) Modified: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ConfigurationContextFactoryBean.java axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ListenerManagerFactoryBean.java axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/service/PojoServiceFactoryBean.java Modified: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ConfigurationContextFactoryBean.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ConfigurationContextFactoryBean.java?rev=929441&r1=929440&r2=929441&view=diff ============================================================================== --- axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ConfigurationContextFactoryBean.java (original) +++ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ConfigurationContextFactoryBean.java Wed Mar 31 09:20:31 2010 @@ -23,13 +23,11 @@ import org.apache.axis2.context.Configur import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.description.TransportOutDescription; import org.apache.axis2.engine.AxisConfiguration; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; +import org.apache.axis2.spring.util.SingletonFactoryBean; -public class ConfigurationContextFactoryBean implements FactoryBean, InitializingBean { +public class ConfigurationContextFactoryBean extends SingletonFactoryBean<ConfigurationContext> { private TransportInDescription[] transportInDescriptions; private TransportOutDescription[] transportOutDescriptions; - private ConfigurationContext configurationContext; public void setTransportInDescriptions(TransportInDescription[] transportInDescriptions) { this.transportInDescriptions = transportInDescriptions; @@ -39,16 +37,13 @@ public class ConfigurationContextFactory this.transportOutDescriptions = transportOutDescriptions; } - public Class<?> getObjectType() { - return ConfigurationContext.class; + public ConfigurationContextFactoryBean() { + super(ConfigurationContext.class); } - - public boolean isSingleton() { - return true; - } - - public void afterPropertiesSet() throws Exception { - configurationContext = ConfigurationContextFactory.createBasicConfigurationContext("axis2_default_spring.xml"); + + @Override + protected ConfigurationContext create() throws Exception { + ConfigurationContext configurationContext = ConfigurationContextFactory.createBasicConfigurationContext("axis2_default_spring.xml"); // configurationContext = ConfigurationContextFactory.createEmptyConfigurationContext(); AxisConfiguration config = configurationContext.getAxisConfiguration(); if (transportInDescriptions != null) { @@ -61,9 +56,6 @@ public class ConfigurationContextFactory config.addTransportOut(description); } } - } - - public Object getObject() throws Exception { return configurationContext; } } Modified: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ListenerManagerFactoryBean.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ListenerManagerFactoryBean.java?rev=929441&r1=929440&r2=929441&view=diff ============================================================================== --- axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ListenerManagerFactoryBean.java (original) +++ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/cfgctx/ListenerManagerFactoryBean.java Wed Mar 31 09:20:31 2010 @@ -20,36 +20,28 @@ package org.apache.axis2.spring.cfgctx; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.engine.ListenerManager; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; +import org.apache.axis2.spring.util.SingletonFactoryBean; -public class ListenerManagerFactoryBean implements FactoryBean, InitializingBean, DisposableBean { +public class ListenerManagerFactoryBean extends SingletonFactoryBean<ListenerManager> { private ConfigurationContext configurationContext; - private ListenerManager listenerManager; public void setConfigurationContext(ConfigurationContext configurationContext) { this.configurationContext = configurationContext; } - public Class getObjectType() { - return ListenerManager.class; + public ListenerManagerFactoryBean() { + super(ListenerManager.class); } - - public boolean isSingleton() { - return true; - } - - public void afterPropertiesSet() throws Exception { - listenerManager = new ListenerManager(); + + @Override + protected ListenerManager create() throws Exception { + ListenerManager listenerManager = new ListenerManager(); listenerManager.startSystem(configurationContext); + return listenerManager; } - public Object getObject() throws Exception { - return null; - } - - public void destroy() throws Exception { + @Override + protected void destroy(ListenerManager listenerManager) throws Exception { listenerManager.destroy(); } } Modified: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/service/PojoServiceFactoryBean.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/service/PojoServiceFactoryBean.java?rev=929441&r1=929440&r2=929441&view=diff ============================================================================== --- axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/service/PojoServiceFactoryBean.java (original) +++ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/service/PojoServiceFactoryBean.java Wed Mar 31 09:20:31 2010 @@ -20,13 +20,11 @@ package org.apache.axis2.spring.service; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.description.AxisService; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; +import org.apache.axis2.spring.util.SingletonFactoryBean; -public class PojoServiceFactoryBean implements FactoryBean, InitializingBean { +public class PojoServiceFactoryBean extends SingletonFactoryBean<AxisService> { private ConfigurationContext configurationContext; private Object serviceObject; - private AxisService service; public void setConfigurationContext(ConfigurationContext configurationContext) { this.configurationContext = configurationContext; @@ -35,20 +33,13 @@ public class PojoServiceFactoryBean impl public void setServiceObject(Object serviceObject) { this.serviceObject = serviceObject; } - - public Class<?> getObjectType() { - return AxisService.class; - } - - public boolean isSingleton() { - return true; - } - - public void afterPropertiesSet() throws Exception { - service = PojoServiceUtil.deployPojo(configurationContext, serviceObject); + + public PojoServiceFactoryBean() { + super(AxisService.class); } - public Object getObject() throws Exception { - return service; + @Override + protected AxisService create() throws Exception { + return PojoServiceUtil.deployPojo(configurationContext, serviceObject); } } Added: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java?rev=929441&view=auto ============================================================================== --- axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java (added) +++ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java Wed Mar 31 09:20:31 2010 @@ -0,0 +1,60 @@ +/* + * 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.axis2.spring.util; + +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.InitializingBean; + +/** + * Convenience base class for singleton {...@link FactoryBean} implementations. + */ +public abstract class SingletonFactoryBean<T> implements FactoryBean, InitializingBean, DisposableBean { + private final Class<T> objectType; + private T instance; + + public SingletonFactoryBean(Class<T> objectType) { + this.objectType = objectType; + } + + public final Class<?> getObjectType() { + return objectType; + } + + public final boolean isSingleton() { + return true; + } + + public final void afterPropertiesSet() throws Exception { + instance = create(); + } + + protected abstract T create() throws Exception; + + public Object getObject() throws Exception { + return instance; + } + + public final void destroy() throws Exception { + destroy(instance); + } + + protected void destroy(T instance) throws Exception { + } +} Propchange: axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/util/SingletonFactoryBean.java ------------------------------------------------------------------------------ svn:eol-style = native