You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2006/06/06 13:21:02 UTC

svn commit: r412089 - in /geronimo/xbean/branches/spring2/trunk/xbean-spring-common: ./ src/main/java/org/apache/xbean/spring/context/ src/main/java/org/apache/xbean/spring/context/impl/ src/main/java/org/apache/xbean/spring/generator/ src/test/

Author: gnodet
Date: Tue Jun  6 04:21:01 2006
New Revision: 412089

URL: http://svn.apache.org/viewvc?rev=412089&view=rev
Log:
Remove tests, create a loose coupling to the xbean implementation depending on spring major version
Remove implementation specific classes

Added:
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanHelper.java
Removed:
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanDefinitionParser.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanDefinitionReader.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/test/
Modified:
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/pom.xml
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ClassPathXmlApplicationContext.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/FileSystemXmlApplicationContext.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ResourceXmlApplicationContext.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/XmlWebApplicationContext.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanFactory.java
    geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XmlMetadataGenerator.java

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/pom.xml?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/pom.xml (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/pom.xml Tue Jun  6 04:21:01 2006
@@ -5,47 +5,9 @@
     <version>2.4-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <artifactId>xbean-spring</artifactId>
-  <name>XBean :: Spring</name>
+  <artifactId>xbean-spring-common</artifactId>
+  <name>XBean :: Spring :: Common</name>
   <version>2.4-SNAPSHOT</version>
-  <build>
-    <testResources>
-      <testResource>
-        <directory>src/test/resources</directory>
-      </testResource>
-      <testResource>
-        <directory>target/test-generated</directory>
-      </testResource>
-    </testResources>
-    <plugins>
-      <plugin>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>run</goal>
-            </goals>
-            <configuration>
-              <tasks>
-                <taskdef classname="org.apache.xbean.spring.generator.MappingGeneratorTask" name="mapping">
-                  <classpath>
-                    <pathelement path="${basedir}/target/classes"></pathelement>
-                    <pathelement path="${basedir}/target/test-classes"></pathelement>
-                    <path refid="maven.runtime.classpath"></path>
-                  </classpath>
-                </taskdef>
-                <mapping namespace="http://xbean.apache.org/schemas/pizza" srcdir="src/test/java" destFile="target/restaurant.xsd" metaInfDir="${basedir}/target/test-generated/"></mapping>
-                <copy todir="${basedir}/target/test-classes">
-                  <fileset dir="${basedir}/target/test-generated"></fileset>
-                </copy>
-              </tasks>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
       <groupId>mx4j</groupId>

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ClassPathXmlApplicationContext.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ClassPathXmlApplicationContext.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ClassPathXmlApplicationContext.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ClassPathXmlApplicationContext.java Tue Jun  6 04:21:01 2006
@@ -17,15 +17,19 @@
  **/
 package org.apache.xbean.spring.context;
 
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.xbean.spring.context.impl.XBeanHelper;
 import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.ResourceEntityResolver;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationContext;
-import org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionReader;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
+import org.springframework.core.SpringVersion;
 
 /**
  * An XBean version of the regular Spring class to provide improved XML handling.
@@ -163,10 +167,18 @@
      * {@inheritDoc}
      */
     protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
-        XmlBeanDefinitionReader beanDefinitionReader = new XBeanXmlBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
+        // Create a new XmlBeanDefinitionReader for the given BeanFactory.
+        XmlBeanDefinitionReader beanDefinitionReader = XBeanHelper.createBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
 
-        initBeanDefinitionReader(beanDefinitionReader);
+        // Configure the bean definition reader with this context's
+        // resource loading environment.
+        beanDefinitionReader.setResourceLoader(this);
+        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
 
+        // Allow a subclass to provide custom initialization of the reader,
+        // then proceed with actually loading the bean definitions.
+        initBeanDefinitionReader(beanDefinitionReader);
         loadBeanDefinitions(beanDefinitionReader);
     }
+    
 }

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/FileSystemXmlApplicationContext.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/FileSystemXmlApplicationContext.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/FileSystemXmlApplicationContext.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/FileSystemXmlApplicationContext.java Tue Jun  6 04:21:01 2006
@@ -17,15 +17,16 @@
  **/
 package org.apache.xbean.spring.context;
 
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.xbean.spring.context.impl.XBeanHelper;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.ResourceEntityResolver;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationContext;
-import org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionReader;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * An XBean version of the regular Spring class to provide improved XML
@@ -154,10 +155,18 @@
      * {@inheritDoc}
      */
     protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
-        XmlBeanDefinitionReader beanDefinitionReader = new XBeanXmlBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
+        // Create a new XmlBeanDefinitionReader for the given BeanFactory.
+        XmlBeanDefinitionReader beanDefinitionReader = XBeanHelper.createBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
 
-        initBeanDefinitionReader(beanDefinitionReader);
+        // Configure the bean definition reader with this context's
+        // resource loading environment.
+        beanDefinitionReader.setResourceLoader(this);
+        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
 
+        // Allow a subclass to provide custom initialization of the reader,
+        // then proceed with actually loading the bean definitions.
+        initBeanDefinitionReader(beanDefinitionReader);
         loadBeanDefinitions(beanDefinitionReader);
     }
+    
 }

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ResourceXmlApplicationContext.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ResourceXmlApplicationContext.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ResourceXmlApplicationContext.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/ResourceXmlApplicationContext.java Tue Jun  6 04:21:01 2006
@@ -17,19 +17,20 @@
  **/
 package org.apache.xbean.spring.context;
 
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.xbean.spring.context.impl.XBeanHelper;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.ResourceEntityResolver;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.core.io.Resource;
-import org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionReader;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
 
 /**
  * An XBean version of a regular Spring ApplicationContext which takes a
@@ -84,13 +85,20 @@
     }
 
     protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
-        XmlBeanDefinitionReader beanDefinitionReader = new XBeanXmlBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
+        // Create a new XmlBeanDefinitionReader for the given BeanFactory.
+        XmlBeanDefinitionReader beanDefinitionReader = XBeanHelper.createBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
 
-        initBeanDefinitionReader(beanDefinitionReader);
+        // Configure the bean definition reader with this context's
+        // resource loading environment.
+        beanDefinitionReader.setResourceLoader(this);
+        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
 
+        // Allow a subclass to provide custom initialization of the reader,
+        // then proceed with actually loading the bean definitions.
+        initBeanDefinitionReader(beanDefinitionReader);
         loadBeanDefinitions(beanDefinitionReader);
     }
-
+    
     /**
      * {@inheritDoc}
      */

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/XmlWebApplicationContext.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/XmlWebApplicationContext.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/XmlWebApplicationContext.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/XmlWebApplicationContext.java Tue Jun  6 04:21:01 2006
@@ -17,14 +17,17 @@
  **/
 package org.apache.xbean.spring.context;
 
-import org.springframework.beans.factory.support.DefaultListableBeanFactory;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
-import org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionReader;
-
 import java.io.IOException;
+import java.lang.reflect.Constructor;
 import java.util.Collections;
 import java.util.List;
 
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.ResourceEntityResolver;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.core.SpringVersion;
+
 /**
  * An XBean version of the regular Spring class to provide improved XML
  * handling.
@@ -56,10 +59,29 @@
      * {@inheritDoc}
      */
     protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
-        XmlBeanDefinitionReader beanDefinitionReader = new XBeanXmlBeanDefinitionReader(this, beanFactory, xmlPreprocessors);
+        // Create a new XmlBeanDefinitionReader for the given BeanFactory.
+        XmlBeanDefinitionReader beanDefinitionReader = createBeanDefinitionReader(beanFactory);
 
-        initBeanDefinitionReader(beanDefinitionReader);
+        // Configure the bean definition reader with this context's
+        // resource loading environment.
+        beanDefinitionReader.setResourceLoader(this);
+        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
 
+        // Allow a subclass to provide custom initialization of the reader,
+        // then proceed with actually loading the bean definitions.
+        initBeanDefinitionReader(beanDefinitionReader);
         loadBeanDefinitions(beanDefinitionReader);
+    }
+    
+    protected XmlBeanDefinitionReader createBeanDefinitionReader(DefaultListableBeanFactory beanFactory) {
+        String version = SpringVersion.getVersion();
+        String className = "org.apache.xbean.spring.v" + version.charAt(0) + ".XBeanXmlBeanDefinitionReader";
+        try {
+            Class cl = Class.forName(className);
+            Constructor cstr = cl.getConstructor(new Class[] { SpringApplicationContext.class, BeanDefinitionRegistry.class, List.class });
+            return (XmlBeanDefinitionReader) cstr.newInstance(new Object[] { this, beanFactory, xmlPreprocessors });
+        } catch (Exception e) {
+            throw new IllegalStateException("Could not find valid implementation for: " + version);
+        }
     }
 }

Added: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanHelper.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanHelper.java?rev=412089&view=auto
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanHelper.java (added)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanHelper.java Tue Jun  6 04:21:01 2006
@@ -0,0 +1,27 @@
+package org.apache.xbean.spring.context.impl;
+
+import java.lang.reflect.Constructor;
+import java.util.List;
+
+import org.apache.xbean.spring.context.SpringApplicationContext;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.core.SpringVersion;
+
+public class XBeanHelper {
+
+    public static XmlBeanDefinitionReader createBeanDefinitionReader(
+                    SpringApplicationContext applicationContext,
+                    BeanDefinitionRegistry registry,
+                    List xmlPreprocessors) {
+        String version = SpringVersion.getVersion();
+        String className = "org.apache.xbean.spring.context.v" + version.charAt(0) + ".XBeanXmlBeanDefinitionReader";
+        try {
+            Class cl = Class.forName(className);
+            Constructor cstr = cl.getConstructor(new Class[] { SpringApplicationContext.class, BeanDefinitionRegistry.class, List.class });
+            return (XmlBeanDefinitionReader) cstr.newInstance(new Object[] { applicationContext, registry, xmlPreprocessors });
+        } catch (Exception e) {
+            throw new IllegalStateException("Could not find valid implementation for: " + version, e);
+        }
+    }
+}

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanFactory.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanFactory.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanFactory.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/context/impl/XBeanXmlBeanFactory.java Tue Jun  6 04:21:01 2006
@@ -16,14 +16,15 @@
  */
 package org.apache.xbean.spring.context.impl;
 
+import java.util.Collections;
+import java.util.List;
+
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.core.io.Resource;
 
-import java.util.Collections;
-import java.util.List;
-
 public class XBeanXmlBeanFactory extends DefaultListableBeanFactory {
 
     /**
@@ -68,7 +69,7 @@
      */
     public XBeanXmlBeanFactory(Resource resource, BeanFactory parentBeanFactory, List xmlPreprocessors) throws BeansException {
         super(parentBeanFactory);
-        XBeanXmlBeanDefinitionReader reader = new XBeanXmlBeanDefinitionReader(null, this, xmlPreprocessors);
+        XmlBeanDefinitionReader reader = XBeanHelper.createBeanDefinitionReader(null, this, xmlPreprocessors);
         reader.loadBeanDefinitions(resource);
     }
 

Modified: geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XmlMetadataGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XmlMetadataGenerator.java?rev=412089&r1=412088&r2=412089&view=diff
==============================================================================
--- geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XmlMetadataGenerator.java (original)
+++ geronimo/xbean/branches/spring2/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XmlMetadataGenerator.java Tue Jun  6 04:21:01 2006
@@ -36,6 +36,8 @@
 public class XmlMetadataGenerator implements GeneratorPlugin {
     private final String metaInfDir;
     private final LogFacade log;
+    
+    public static final String NAMESPACE_HANDLER = "org.apache.xbean.spring.context.v2.XBeanNamespaceHandler";
 
     public XmlMetadataGenerator(LogFacade log, String metaInfDir) {
         this.metaInfDir = metaInfDir;
@@ -54,6 +56,16 @@
         PrintWriter out = new PrintWriter(new FileWriter(file));
         try {
             generatePropertiesFile(out, namespaceMapping.getElements());
+        } finally {
+            out.close();
+        }
+        
+        // Generate spring 2.0 mapping
+        file = new File(metaInfDir, "META-INF/spring.handlers");
+        log.log("Generating Spring 2.0 handler mapping: " + file + " for namespace: " + namespace);
+        out = new PrintWriter(new FileWriter(file));
+        try {
+            out.println(namespace.replace(":", "\\:") + "=" + NAMESPACE_HANDLER);
         } finally {
             out.close();
         }