You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by js...@apache.org on 2007/06/27 14:21:28 UTC

svn commit: r551137 - in /geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server: deployer/ spring/configuration/ spring/loader/

Author: jstrachan
Date: Wed Jun 27 05:21:27 2007
New Revision: 551137

URL: http://svn.apache.org/viewvc?view=rev&rev=551137
Log:
minor refactor to allow pure Spring based XmlApplicationContext classes to be used with xbean-server to boot up spring applications; basically allowing validation to be enabled etc.

Added:
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java   (with props)
Modified:
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/deployer/FileDeployer.java
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfigurationServiceFactory.java
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/SpringLoader.java

Modified: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/deployer/FileDeployer.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/deployer/FileDeployer.java?view=diff&rev=551137&r1=551136&r2=551137
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/deployer/FileDeployer.java (original)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/deployer/FileDeployer.java Wed Jun 27 05:21:27 2007
@@ -31,6 +31,7 @@
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.core.io.FileSystemResource;
 
 import java.io.File;
@@ -339,7 +340,7 @@
             Thread.currentThread().setContextClassLoader(classLoader);
             log.debug("Loading file: " + file + " using classLoader: " + classLoader);
             try {
-                SpringApplicationContext applicationContext = new ResourceXmlApplicationContext(new FileSystemResource(file), xmlPreprocessors, parentContext, beanFactoryPostProcessors, false);
+                AbstractXmlApplicationContext applicationContext = new ResourceXmlApplicationContext(new FileSystemResource(file), xmlPreprocessors, parentContext, beanFactoryPostProcessors, false);
                 applicationContext.setDisplayName(name);
                 applicationContext.setClassLoader(classLoader);
 

Modified: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java?view=diff&rev=551137&r1=551136&r2=551137
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java (original)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java Wed Jun 27 05:21:27 2007
@@ -32,6 +32,7 @@
 import org.apache.xbean.server.spring.loader.SpringLoader;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.context.support.AbstractXmlApplicationContext;
 
 /**
  * SpringConfiguration that registers and unregisters services that have been defined in a SpringApplicationContext.
@@ -41,7 +42,7 @@
  * @since 2.0
  */
 public class SpringConfiguration {
-    private final SpringApplicationContext applicationContext;
+    private final AbstractXmlApplicationContext applicationContext;
     private final Map serviceFactories;
     private final Kernel kernel;
 
@@ -51,7 +52,7 @@
      * @param kernel the kernel in which services are registered and unregistered
      * @throws Exception if a problem occurs while registering the services from the application context
      */
-    public SpringConfiguration(SpringApplicationContext applicationContext, Kernel kernel) throws Exception {
+    public SpringConfiguration(AbstractXmlApplicationContext applicationContext, Kernel kernel) throws Exception {
         this.applicationContext = applicationContext;
         this.kernel = kernel;
 
@@ -143,7 +144,7 @@
         }
     }
 
-    private static Map buildServiceNameIndex(SpringApplicationContext applicationContext) {
+    private static Map buildServiceNameIndex(AbstractXmlApplicationContext applicationContext) {
         BeanDefinitionRegistry registry = null;
         if (applicationContext instanceof BeanDefinitionRegistry) {
             registry = (BeanDefinitionRegistry) applicationContext;
@@ -174,7 +175,7 @@
         }
     }
 
-    protected static ClassLoader getClassLoader(SpringApplicationContext applicationContext) {
+    protected static ClassLoader getClassLoader(AbstractXmlApplicationContext applicationContext) {
         ClassLoader classLoader = applicationContext.getClassLoader();
         if (classLoader == null) {
             classLoader = Thread.currentThread().getContextClassLoader();

Modified: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfigurationServiceFactory.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfigurationServiceFactory.java?view=diff&rev=551137&r1=551136&r2=551137
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfigurationServiceFactory.java (original)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfigurationServiceFactory.java Wed Jun 27 05:21:27 2007
@@ -30,7 +30,7 @@
 import org.apache.xbean.kernel.ServiceContext;
 import org.apache.xbean.kernel.ServiceFactory;
 import org.apache.xbean.kernel.ServiceName;
-import org.apache.xbean.spring.context.SpringApplicationContext;
+import org.springframework.context.support.AbstractXmlApplicationContext;
 
 /**
  * SpringConfigurationServiceFactory is manages the creation and destruction of a SpringConfiguration.
@@ -40,7 +40,7 @@
  * @since 2.0
  */
 public class SpringConfigurationServiceFactory extends AbstractServiceFactory {
-    private final SpringApplicationContext applicationContext;
+    private final AbstractXmlApplicationContext applicationContext;
     private final ConfigurationStopCondition configurationStopCondition;
     private SpringConfiguration springConfiguration;
 
@@ -48,7 +48,7 @@
      * Creates a SpringConfigurationServiceFactory that wraps the specified application context.
      * @param applicationContext the application context for this configuration
      */
-    public SpringConfigurationServiceFactory(SpringApplicationContext applicationContext) {
+    public SpringConfigurationServiceFactory(AbstractXmlApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
         configurationStopCondition = new ConfigurationStopCondition();
         addStopCondition(configurationStopCondition);
@@ -67,7 +67,7 @@
      * effect the running state of services.
      * @return the application context wrapped by this configuration
      */
-    public SpringApplicationContext getApplicationContext() {
+    public AbstractXmlApplicationContext getApplicationContext() {
         return applicationContext;
     }
 

Added: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java?view=auto&rev=551137
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java (added)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java Wed Jun 27 05:21:27 2007
@@ -0,0 +1,35 @@
+/**
+ *
+ * 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.xbean.server.spring.loader;
+
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+
+/**
+ * A derivation of {@link SpringLoader} which does not use the XBean versions of the Spring ApplicationContext classes
+ * and which so enforces XML validation
+ *
+ * @version $Revision: 1.1 $
+ */
+public class PureSpringLoader extends SpringLoader {
+    
+    @Override
+    protected AbstractXmlApplicationContext createXmlApplicationContext(String configLocation) {
+        return new FileSystemXmlApplicationContext(new String[]{configLocation}, false);
+    }
+}

Propchange: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/PureSpringLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/SpringLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/SpringLoader.java?view=diff&rev=551137&r1=551136&r2=551137
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/SpringLoader.java (original)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/loader/SpringLoader.java Wed Jun 27 05:21:27 2007
@@ -30,7 +30,7 @@
 import org.apache.xbean.spring.context.FileSystemXmlApplicationContext;
 import org.apache.xbean.spring.context.SpringApplicationContext;
 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-
+import org.springframework.context.support.AbstractXmlApplicationContext;
 
 /**
  * SpringLoader loads Spring xml configurations into a Kernel.  This service uses the XBean version of
@@ -130,10 +130,7 @@
     public ServiceName load(String location) throws Exception {
         String resolvedLocation = baseDir.toURI().resolve(location).getPath();
         String configLocation = "/" + resolvedLocation + ".xml";
-        SpringApplicationContext applicationContext = new FileSystemXmlApplicationContext(
-                new String[] {configLocation},
-                false,
-                xmlPreprocessors);
+        AbstractXmlApplicationContext applicationContext = createXmlApplicationContext(configLocation);
 
         for (Iterator iter = beanFactoryPostProcessors.iterator(); iter.hasNext();) {
             BeanFactoryPostProcessor processor = (BeanFactoryPostProcessor) iter.next();
@@ -153,5 +150,15 @@
         ServiceFactory springConfigurationServiceFactory = new SpringConfigurationServiceFactory(applicationContext);
         kernel.registerService(serviceName, springConfigurationServiceFactory);
         return serviceName;
+    }
+
+    /**
+     * A factory method for creating the application context
+     */
+    protected AbstractXmlApplicationContext createXmlApplicationContext(String configLocation) {
+        return new FileSystemXmlApplicationContext(
+                new String[] {configLocation},
+                false,
+                xmlPreprocessors);
     }
 }