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


Reply via email to