You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by js...@apache.org on 2006/10/13 16:48:59 UTC
svn commit: r463693 - in /geronimo/xbean/sandbox: xbean-apt/
xbean-apt/src/main/java/org/apache/xbean/factory/
xbean-apt/src/main/resources/org/ xbean-apt/src/main/resources/org/apache/
xbean-apt/src/main/resources/org/apache/xbean/ xbean-apt/src/main/...
Author: jstrachan
Date: Fri Oct 13 07:48:58 2006
New Revision: 463693
URL: http://svn.apache.org/viewvc?view=rev&rev=463693
Log:
a bunch of changes after a very productive plane journey; now we've got a <beans> tag that you can nest in your <foo b:id="whatnot"/> tags which seems to work. We also dynamically resolve classes as we parse, using a similar technique to xbean-spring using META-INF/services. Also I've added test cases for using references or for using inheritence
Added:
geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/ClassResolverImpl.java
geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/NamespacePrefixMapperImpl.java
geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/
geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/
geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/
geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/
geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/jaxb.index
geronimo/xbean/sandbox/xbean-factory/src/main/resources/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/
geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/jaxb.index
geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/BeansTest.java
geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/InheritenceTest.java
geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/ReferenceTest.java
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/column
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/dataType
geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/user
geronimo/xbean/sandbox/xbean-factory/src/test/resources/column.xml
geronimo/xbean/sandbox/xbean-factory/src/test/resources/log4.properties
geronimo/xbean/sandbox/xbean-factory/src/test/resources/user-with-ref.xml
Modified:
geronimo/xbean/sandbox/xbean-apt/pom.xml
geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/BeanMarshaller.java
geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/Beans.java
geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/FactoryBeanSupport.java
geronimo/xbean/sandbox/xbean-factory/pom.xml
geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/ArrayDataType.java
geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomArrayDataTypeFactory.java
geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomColumnFactory.java
geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomDataTypeFactory.java
geronimo/xbean/sandbox/xbean-factory/src/test/resources/column-with-ref.xml
Modified: geronimo/xbean/sandbox/xbean-apt/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/pom.xml?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/pom.xml (original)
+++ geronimo/xbean/sandbox/xbean-apt/pom.xml Fri Oct 13 07:48:58 2006
@@ -2,11 +2,14 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-factory-parent</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
- <groupId>org.apache.xbean</groupId>
<artifactId>xbean-apt</artifactId>
<name>XBean APT Processor</name>
- <version>1.0-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
@@ -48,7 +51,7 @@
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
- <version>2.0.1</version>
+ <version>dev-20060914</version>
<exclusions>
<exclusion>
<groupId>javax.xml</groupId>
@@ -67,7 +70,7 @@
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.0</version>
+ <version>dev-20060914</version>
<exclusions>
<exclusion>
<groupId>javax.xml</groupId>
Modified: geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/BeanMarshaller.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/BeanMarshaller.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/BeanMarshaller.java (original)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/BeanMarshaller.java Fri Oct 13 07:48:58 2006
@@ -22,24 +22,62 @@
import javax.xml.bind.JAXBContext;
import java.io.OutputStream;
import java.io.InputStream;
+import java.util.*;
/**
* @version $Revision: $
*/
public class BeanMarshaller {
+ private JAXBContext context;
+
+ public BeanMarshaller() {
+ }
+
+ public BeanMarshaller(JAXBContext context) {
+ this.context = context;
+ }
+
+ public BeanMarshaller(String packages) throws JAXBException {
+ this(JAXBContext.newInstance(packages));
+ }
+
public void write(OutputStream out, Beans beans) throws JAXBException {
- Marshaller marshaller = createJAXBContext().createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ System.out.println("About to write: " + beans + " with factories: " + beans.getBeans());
+
+ Marshaller marshaller = createJAXBContext(beans).createMarshaller();
+ FactoryBeanSupport.configureMarshaller(marshaller);
marshaller.marshal(beans, out);
}
public Beans read(InputStream in) throws JAXBException {
Unmarshaller unmarshaller = createJAXBContext().createUnmarshaller();
+ FactoryBeanSupport.configureUnmarshaller(unmarshaller);
return (Beans) unmarshaller.unmarshal(in);
}
+ public JAXBContext getContext() throws JAXBException {
+ if (context == null) {
+ context = createJAXBContext();
+ }
+ return context;
+ }
+
protected JAXBContext createJAXBContext() throws JAXBException {
- return JAXBContext.newInstance(getClass());
+ return JAXBContext.newInstance(Beans.class);
}
+
+ private JAXBContext createJAXBContext(Beans beans) throws JAXBException {
+ List<Class> list = new ArrayList<Class>();
+ list.add(Beans.class);
+ Iterator iter = beans.getBeans().iterator();
+ while (iter.hasNext()) {
+ Object factory = iter.next();
+ list.add(factory.getClass());
+ }
+ Class[] array = new Class[list.size()];
+ list.toArray(array);
+ return JAXBContext.newInstance(array);
+ }
+
}
Modified: geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/Beans.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/Beans.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/Beans.java (original)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/Beans.java Fri Oct 13 07:48:58 2006
@@ -16,33 +16,58 @@
*/
package org.apache.xbean.factory;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
+import javax.xml.bind.annotation.*;
+import java.util.*;
/**
* @version $Revision: $
*/
-@XmlRootElement(namespace="http://www.springframework/beans/TODO")
+@XmlRootElement(namespace = "http://www.springframework/beans/TODO")
+@XmlAccessorType(value= XmlAccessType.FIELD)
public class Beans {
- private List<FactoryBeanSupport> beans = new ArrayList<FactoryBeanSupport>();
- private Map<String, FactoryBeanSupport> map = new HashMap<String, FactoryBeanSupport>();
+ @XmlAnyElement(lax = true)
+ private List<Object> beans = new ArrayList<Object>();
+ @XmlTransient
+ private Map<String, FactoryBeanSupport> map;
public FactoryBeanSupport getBeanFactory(String id) {
- return map.get(id);
+ return (FactoryBeanSupport) getMap().get(id);
}
- public List<FactoryBeanSupport> getBeans() {
+ public List<Object> getBeans() {
return beans;
}
- public void setBeans(List<FactoryBeanSupport> beans) {
+ public void setBeans(List<Object> beans) {
this.beans = beans;
- map.clear();
- for (FactoryBeanSupport bean : beans) {
- map.put(bean.get_id(), bean);
+ reloadMap();
+ }
+
+ public void addBean(FactoryBeanSupport bean) {
+ beans.add(bean);
+ getMap().put(bean.get_id(), bean);
+ }
+
+
+ protected Map<String, FactoryBeanSupport> getMap() {
+ if (map == null) {
+ reloadMap();
+ }
+ return map;
+ }
+
+ protected void reloadMap() {
+ map = new HashMap<String, FactoryBeanSupport>();
+ for (Iterator iter = beans.iterator(); iter.hasNext();) {
+ Object object = iter.next();
+ if (object instanceof FactoryBeanSupport) {
+ FactoryBeanSupport bean = (FactoryBeanSupport) object;
+ System.out.println("Found factory!!! with id: " + bean.get_id());
+ map.put(bean.get_id(), bean);
+ }
+ else {
+ System.out.println("Found: " + object + " of type: " + object.getClass());
+ }
}
}
}
Added: geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/ClassResolverImpl.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/ClassResolverImpl.java?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/ClassResolverImpl.java (added)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/ClassResolverImpl.java Fri Oct 13 07:48:58 2006
@@ -0,0 +1,148 @@
+/*
+ * 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.factory;
+
+import com.sun.xml.bind.api.ClassResolver;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.*;
+
+/**
+ * @version $Revision: $
+ */
+public class ClassResolverImpl extends ClassResolver {
+ public static final String META_INF_PREFIX = "META-INF/services/org/apache/xbean/factory/";
+ private static final String JAVA_PACKAGE_PREFIX = "java://";
+
+ private static final Log log = LogFactory.getLog(ClassResolverImpl.class);
+
+ public Class<?> resolveElementName(String namespaceURI, String localName) throws Exception {
+ if (namespaceURI != null && namespaceURI.startsWith(JAVA_PACKAGE_PREFIX)) {
+ String packageName = namespaceURI.substring(JAVA_PACKAGE_PREFIX.length());
+
+ Class answer = tryLoadClassName(packageName, localName);
+ if (answer == null) {
+ String name = localName + "FactoryBean";
+ answer = tryLoadClassName(packageName, name);
+ if (answer == null) {
+ name = name.substring(0, 1).toUpperCase() + name.substring(1, name.length());
+ answer = tryLoadClassName(packageName, name);
+ }
+ }
+ if (answer != null) {
+ return answer;
+ }
+ }
+
+
+ String uri = createDiscoveryPathName(namespaceURI, localName);
+ InputStream in = loadResource(uri);
+ if (in != null) {
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+ String name = reader.readLine();
+ if (name != null) {
+ name = name.trim();
+ if (name.length() > 0) {
+ return tryLoadClassName(name);
+ }
+ }
+ }
+ catch (IOException e) {
+ log.warn("Failed to load resource from uri: " + uri, e);
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Converts the namespace and localName into a valid path name we can use on
+ * the classpath to discover a text file
+ */
+ public static String createDiscoveryPathName(String uri, String localName) {
+ if (isEmpty(uri)) {
+ return META_INF_PREFIX + localName;
+ }
+ return createDiscoveryPathName(uri) + "/" + localName;
+ }
+
+ /**
+ * Converts the namespace and localName into a valid path name we can use on
+ * the classpath to discover a text file
+ */
+ public static String createDiscoveryPathName(String uri) {
+ // lets replace any dodgy characters
+ return META_INF_PREFIX + uri.replaceAll("://", "/").replace(':', '/').replace(' ', '_');
+ }
+
+ public static boolean isEmpty(String uri) {
+ return uri == null || uri.length() == 0;
+ }
+
+
+ /**
+ * Loads the resource from the given URI
+ */
+ protected InputStream loadResource(String uri) {
+ if (System.getProperty("xbean.dir") != null) {
+ File f = new File(System.getProperty("xbean.dir") + uri);
+ try {
+ return new FileInputStream(f);
+ }
+ catch (FileNotFoundException e) {
+ // Ignore
+ }
+ }
+ // lets try the thread context class loader first
+ InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(uri);
+ if (in == null) {
+ if (in == null) {
+ in = getClass().getClassLoader().getResourceAsStream(uri);
+ if (in == null) {
+ log.debug("Could not find resource: " + uri);
+ }
+ }
+ }
+ return in;
+ }
+
+
+ protected Class tryLoadClassName(String packageName, String localName) {
+ String name = localName;
+ if (!isEmpty(packageName)) {
+ name = packageName + "." + localName;
+ }
+ return tryLoadClassName(name);
+ }
+
+ protected Class tryLoadClassName(String name) {
+ try {
+ return Thread.currentThread().getContextClassLoader().loadClass(name);
+ }
+ catch (ClassNotFoundException e) {
+ try {
+ return getClass().getClassLoader().loadClass(name);
+ }
+ catch (ClassNotFoundException e1) {
+ return null;
+ }
+ }
+ }
+
+}
Modified: geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/FactoryBeanSupport.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/FactoryBeanSupport.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/FactoryBeanSupport.java (original)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/FactoryBeanSupport.java Fri Oct 13 07:48:58 2006
@@ -16,16 +16,17 @@
*/
package org.apache.xbean.factory;
-import java.io.InputStream;
-import java.io.OutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.*;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlTransient;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
/**
* A base class for a code generated factory bean
@@ -34,14 +35,26 @@
*/
public abstract class FactoryBeanSupport<T> {
+ private static final Log log = LogFactory.getLog(FactoryBeanSupport.class);
+
private String _id;
private Boolean _singleton;
+ private Class _objectType;
+
+ public FactoryBeanSupport() {
+ ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
+ Type[] typeArguments = genericSuperclass.getActualTypeArguments();
+ this._objectType = (Class) typeArguments[0];
+ }
+
+ public FactoryBeanSupport(Class _objectType) {
+ this._objectType = _objectType;
+ }
@XmlTransient
- abstract public Class get_objectType();
-
- @XmlTransient
- abstract public T getObject();
+ public Class get_objectType() {
+ return _objectType;
+ }
@XmlAttribute(name = "singleton", namespace = "http://www.springframework/beans/TODO", required = false)
public Boolean get_singleton() {
@@ -62,15 +75,19 @@
this._id = _id;
}
+ @XmlTransient
+ public abstract T getObject();
+
public void write(OutputStream out) throws JAXBException {
Marshaller marshaller = createJAXBContext().createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ configureMarshaller(marshaller);
marshaller.marshal(this, out);
}
- @SuppressWarnings("unchecked")
- public FactoryBeanSupport<T> read(InputStream in) throws JAXBException {
+
+ public FactoryBeanSupport<T> read(InputStream in) throws JAXBException {
Unmarshaller unmarshaller = createJAXBContext().createUnmarshaller();
+ configureUnmarshaller(unmarshaller);
return (FactoryBeanSupport<T>) unmarshaller.unmarshal(in);
}
@@ -78,4 +95,25 @@
return JAXBContext.newInstance(getClass());
}
+ public static void configureMarshaller(Marshaller marshaller) {
+ try {
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapperImpl());
+ }
+ catch (PropertyException e) {
+ // lets not worry about it if the JAXB provider doesn't support
+ // vendor extensions
+ }
+ }
+
+ public static void configureUnmarshaller(Unmarshaller unmarshaller) {
+ try {
+ unmarshaller.setProperty("com.sun.xml.bind.api.ClassResolver", new ClassResolverImpl());
+ }
+ catch (PropertyException e) {
+ // lets not worry about it if the JAXB provider doesn't support
+ // vendor extensions
+ log.warn("This JAXB provider does not support pluggable Class resolving: "+ e, e);
+ }
+ }
}
Added: geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/NamespacePrefixMapperImpl.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/NamespacePrefixMapperImpl.java?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/NamespacePrefixMapperImpl.java (added)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/java/org/apache/xbean/factory/NamespacePrefixMapperImpl.java Fri Oct 13 07:48:58 2006
@@ -0,0 +1,36 @@
+/*
+ * 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.factory;
+
+import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
+
+/**
+ * @version $Revision: $
+ */
+public class NamespacePrefixMapperImpl extends NamespacePrefixMapper {
+
+ public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
+ if ("http://www.springframework/beans/TODO".equals(namespaceUri)) {
+ return "b";
+ }
+ return suggestion;
+ }
+
+ public String[] getPreDeclaredNamespaceUris() {
+ return new String[]{};
+ }
+}
Added: geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/jaxb.index
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/jaxb.index?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/jaxb.index (added)
+++ geronimo/xbean/sandbox/xbean-apt/src/main/resources/org/apache/xbean/factory/jaxb.index Fri Oct 13 07:48:58 2006
@@ -0,0 +1 @@
+Beans
\ No newline at end of file
Modified: geronimo/xbean/sandbox/xbean-factory/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/pom.xml?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/pom.xml (original)
+++ geronimo/xbean/sandbox/xbean-factory/pom.xml Fri Oct 13 07:48:58 2006
@@ -1,10 +1,14 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.xbean</groupId>
+ <parent>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-factory-parent</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
<artifactId>xbean-factory</artifactId>
<packaging>jar</packaging>
- <version>1.0-SNAPSHOT</version>
<name>XBean :: JaxB Factory</name>
<url>http://geronimo.apache.org/xbean</url>
<dependencies>
@@ -23,7 +27,7 @@
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
- <version>2.0.1</version>
+ <version>dev-20060914</version>
<exclusions>
<exclusion>
<groupId>javax.xml</groupId>
@@ -42,7 +46,7 @@
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxb-api</artifactId>
- <version>2.0</version>
+ <version>dev-20060914</version>
<exclusions>
<exclusion>
<groupId>javax.xml</groupId>
Modified: geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/ArrayDataType.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/ArrayDataType.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/ArrayDataType.java (original)
+++ geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/ArrayDataType.java Fri Oct 13 07:48:58 2006
@@ -20,12 +20,12 @@
* @version $Revision: $
*/
public class ArrayDataType extends DataType {
-
+
private int dimensions;
public ArrayDataType() {
}
-
+
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@@ -33,26 +33,26 @@
final ArrayDataType that = (ArrayDataType) o;
if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
- if (dimensions!= that.dimensions ) return false;
+ if (dimensions != that.dimensions) return false;
return true;
}
public int hashCode() {
- return super.hashCode();
+ return super.hashCode();
}
+ public String toString() {
+ return "ArrayDataType[name: " + getName() + ", dimensions: " + dimensions + "]";
+ }
- public int getDimensions() {
- return dimensions;
- }
-
- public void setDimensions(int dimensions) {
- this.dimensions = dimensions;
- }
+ public int getDimensions() {
+ return dimensions;
+ }
- public String toString() {
- return "ArrayDataType[name: " + getName() +", dimensions"+dimensions+"]";
+ public void setDimensions(int dimensions) {
+ this.dimensions = dimensions;
}
+
}
Modified: geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomArrayDataTypeFactory.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomArrayDataTypeFactory.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomArrayDataTypeFactory.java (original)
+++ geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomArrayDataTypeFactory.java Fri Oct 13 07:48:58 2006
@@ -16,51 +16,40 @@
*/
package org.apache.xbean.factory.model.factory;
+import org.apache.xbean.factory.model.ArrayDataType;
+
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.xbean.factory.FactoryBeanSupport;
-import org.apache.xbean.factory.model.ArrayDataType;
/**
* @version $Revision: $
*/
-@XmlRootElement(name="bar")
-//@XmlType(name="bar")
+@XmlRootElement(name = "arrayDataType")
public class CustomArrayDataTypeFactory extends CustomDataTypeFactory {
-
- private int dimensions;
+ private int dimensions;
public CustomArrayDataTypeFactory() {
+ super(ArrayDataType.class);
}
public CustomArrayDataTypeFactory(ArrayDataType value) {
- setName(value.getName());
- setDimensions(value.getDimensions());
+ super(value);
+ dimensions = value.getDimensions();
}
-
- @XmlTransient
- @Override
- public Class get_objectType() {
- return ArrayDataType.class;
- }
-
- @XmlTransient
- @Override
+
public ArrayDataType getObject() {
- ArrayDataType datatype = new ArrayDataType();
+ ArrayDataType datatype = new ArrayDataType();
datatype.setName(getName());
- datatype.setDimensions(getDimensions());
+ datatype.setDimensions(dimensions);
return datatype;
}
@XmlAttribute
- public int getDimensions() {
- return dimensions;
- }
- public void setDimensions(int dimensions) {
- this.dimensions = dimensions;
- }
+ public int getDimensions() {
+ return dimensions;
+ }
+
+ public void setDimensions(int dimensions) {
+ this.dimensions = dimensions;
+ }
}
Modified: geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomColumnFactory.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomColumnFactory.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomColumnFactory.java (original)
+++ geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomColumnFactory.java Fri Oct 13 07:48:58 2006
@@ -16,16 +16,11 @@
*/
package org.apache.xbean.factory.model.factory;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlElementRefs;
-import javax.xml.bind.annotation.XmlIDREF;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-
import org.apache.xbean.factory.FactoryBeanSupport;
import org.apache.xbean.factory.model.Column;
+import org.apache.xbean.factory.model.DataType;
+
+import javax.xml.bind.annotation.*;
/**
* @version $Revision: $
@@ -38,22 +33,18 @@
private CustomDataTypeFactory dataTypeRef;
public CustomColumnFactory() {
+ super(DataType.class);
}
public CustomColumnFactory(Column value) {
- dataType = value.getDataType()!=null ? new CustomDataTypeFactory(value.getDataType()) : null;
- secondDataType = value.getSecondDataType() != null ? new CustomDataTypeFactory(value.getSecondDataType()) : null;
+ super(value.getClass());
+ dataType = CustomDataTypeFactory.convert(value.getDataType());
+
+ // TODO
+ //secondDataType = CustomDataTypeFactory.convert(value.getSecondDataType());
name = value.getName();
}
- @XmlTransient
- @Override
- public Class get_objectType() {
- return Column.class;
- }
-
- @XmlTransient
- @Override
public Column getObject() {
Column column = new Column();
if (dataType != null) {
@@ -67,13 +58,16 @@
}
+ //@XmlElement(required = false)
+ @XmlAnyElement(lax = true)
+ @XmlElementRefs(value = {
+ @XmlElementRef(name = "dataType", type = CustomDataTypeFactory.class),
+ @XmlElementRef(name = "arrayDataType", type = CustomArrayDataTypeFactory.class)
+ })
public CustomDataTypeFactory getDataType() {
return dataType;
}
-// @XmlElement(required = false)
-// @XmlElement
- @XmlElementRef
public void setDataType(CustomDataTypeFactory dataType) {
this.dataType = dataType;
}
@@ -86,7 +80,7 @@
this.name = name;
}
- @XmlElement
+ /*
public CustomDataTypeFactory getSecondDataType() {
return secondDataType;
}
@@ -94,7 +88,7 @@
public void setSecondDataType(CustomDataTypeFactory secondDataType) {
this.secondDataType = secondDataType;
}
-
+ */
@XmlAttribute(required = false)
@XmlIDREF
Modified: geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomDataTypeFactory.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomDataTypeFactory.java?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomDataTypeFactory.java (original)
+++ geronimo/xbean/sandbox/xbean-factory/src/main/java/org/apache/xbean/factory/model/factory/CustomDataTypeFactory.java Fri Oct 13 07:48:58 2006
@@ -16,37 +16,50 @@
*/
package org.apache.xbean.factory.model.factory;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
import org.apache.xbean.factory.FactoryBeanSupport;
+import org.apache.xbean.factory.model.ArrayDataType;
import org.apache.xbean.factory.model.DataType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
/**
* @version $Revision: $
*/
-@XmlRootElement(name = "bar")
-//@XmlType(name="bar")
-public class CustomDataTypeFactory extends FactoryBeanSupport {
+@XmlRootElement(name = "dataType")
+public class CustomDataTypeFactory extends FactoryBeanSupport<DataType> {
private String name;
+ public static CustomDataTypeFactory convert(DataType dataType) {
+ if (dataType == null) {
+ return null;
+ }
+ if (dataType instanceof ArrayDataType) {
+ return new CustomArrayDataTypeFactory((ArrayDataType) dataType);
+ }
+ else {
+ return new CustomDataTypeFactory(dataType);
+ }
+ }
+
public CustomDataTypeFactory() {
}
+
+ public CustomDataTypeFactory(Class _objectType) {
+ super(_objectType);
+ }
+
+ public CustomDataTypeFactory(Class _objectType, String name) {
+ super(_objectType);
+ this.name = name;
+ }
+
public CustomDataTypeFactory(DataType value) {
+ super(value.getClass());
name = value.getName();
}
-
- @XmlTransient
- @Override
- public Class get_objectType() {
- return DataType.class;
- }
- @XmlTransient
- @Override
public DataType getObject() {
DataType datatype = new DataType();
datatype.setName(name);
Added: geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/jaxb.index
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/jaxb.index?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/jaxb.index (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/main/resources/org/apache/xbean/factory/model/factory/jaxb.index Fri Oct 13 07:48:58 2006
@@ -0,0 +1,3 @@
+CustomColumnFactory
+CustomDataTypeFactory
+CustomUserFactory
Added: geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/BeansTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/BeansTest.java?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/BeansTest.java (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/BeansTest.java Fri Oct 13 07:48:58 2006
@@ -0,0 +1,150 @@
+/*
+ * 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.factory;
+
+import org.apache.xbean.factory.model.Column;
+import org.apache.xbean.factory.model.User;
+import org.apache.xbean.factory.model.factory.CustomColumnFactory;
+import org.apache.xbean.factory.model.factory.CustomUserFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @version $Revision: $
+ */
+public class BeansTest extends JaxbColumnTest {
+
+ protected String dir = "target/data";
+ protected String file = dir + "/beans.xml";
+
+ public void testReadUser() throws Exception {
+ InputStream in = getClass().getClassLoader().getResourceAsStream("user-with-ref.xml");
+ assertNotNull("Could not find xml!", in);
+
+ BeanMarshaller marshaller = new BeanMarshaller("org.apache.xbean.factory:org.apache.xbean.factory.model.factory");
+ Beans newBeans = marshaller.read(in);
+
+ List beanList = newBeans.getBeans();
+ System.out.println("Read beans: " + beanList);
+
+ assertTrue("Should have found beans: " + beanList, !beanList.isEmpty());
+
+ FactoryBeanSupport factory = newBeans.getBeanFactory("cheese");
+ assertNotNull(factory);
+
+ Object bean = factory.getObject();
+ assertNotNull(bean);
+
+ System.out.println("bean: " + bean);
+
+ }
+
+
+ public void testReadColumn() throws Exception {
+ Column column = createColumn();
+
+ InputStream in = getClass().getClassLoader().getResourceAsStream("column.xml");
+ assertNotNull("Could not find xml!", in);
+
+ BeanMarshaller marshaller = new BeanMarshaller("org.apache.xbean.factory:org.apache.xbean.factory.model.factory");
+ Beans newBeans = marshaller.read(in);
+
+ List beanList = newBeans.getBeans();
+ System.out.println("Read beans: " + beanList);
+
+ assertTrue("Should have found beans: " + beanList, !beanList.isEmpty());
+
+ // in case there's caching, lets make another
+ CustomColumnFactory factory = (CustomColumnFactory) newBeans.getBeanFactory("cheese");
+ Column answer = factory.getObject();
+
+ System.out.println("Created: " + column);
+ System.out.println("Parsed: " + answer);
+
+ assertNotNull(answer);
+ assertEquals(column, answer);
+ }
+
+ public void testWriteAndRead() throws Exception {
+ new File(dir).mkdirs();
+
+ Column column = createColumn();
+ CustomColumnFactory factory = new CustomColumnFactory(column);
+ factory.set_singleton(Boolean.TRUE);
+ factory.set_id("cheese");
+
+ Beans beans = new Beans();
+ beans.addBean(factory);
+
+ BeanMarshaller marshaller = new BeanMarshaller();
+ marshaller.write(new FileOutputStream(file), beans);
+
+ Beans newBeans = marshaller.read(new FileInputStream(file));
+
+ System.out.println("Read beans: " + newBeans.getBeans());
+
+ // in case there's caching, lets make another
+ factory = (CustomColumnFactory) newBeans.getBeanFactory("cheese");
+ assertNotNull("Should have found a factory for name 'cheese'", factory);
+ Column answer = factory.getObject();
+
+ System.out.println("Created: " + column);
+ System.out.println("Parsed: " + answer);
+
+ assertNotNull(answer);
+ assertEquals(column, answer);
+ }
+
+
+ public void testWriteAndReadUser() throws Exception {
+ new File(dir).mkdirs();
+
+ User testUser = new User(42, "dain", "Dain Sundstrom");
+ testUser.setPhoneNumber("(310) XXX-XXXX");
+ CustomUserFactory factory = new CustomUserFactory(testUser);
+ factory.set_singleton(Boolean.TRUE);
+ factory.set_id("beer");
+
+ Beans beans = new Beans();
+ beans.addBean(factory);
+
+ BeanMarshaller marshaller = new BeanMarshaller();
+ String fileName = dir + "/beans-user.xml";
+ marshaller.write(new FileOutputStream(fileName), beans);
+
+ Beans newBeans = marshaller.read(new FileInputStream(fileName));
+
+ System.out.println("Read beans: " + newBeans.getBeans());
+
+ // in case there's caching, lets make another
+ factory = (CustomUserFactory) newBeans.getBeanFactory("beer");
+ assertNotNull("Should have found a factory for name 'beer'", factory);
+ User answer = factory.getObject();
+
+ System.out.println("Created: " + testUser);
+ System.out.println("Parsed: " + answer);
+
+ assertNotNull(answer);
+ assertEquals(testUser, answer);
+ }
+
+
+}
Added: geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/InheritenceTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/InheritenceTest.java?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/InheritenceTest.java (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/InheritenceTest.java Fri Oct 13 07:48:58 2006
@@ -0,0 +1,75 @@
+/*
+ * 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.factory;
+
+import org.apache.xbean.factory.model.Column;
+import org.apache.xbean.factory.model.ArrayDataType;
+import org.apache.xbean.factory.model.factory.CustomColumnFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+/**
+ * @version $Revision: $
+ */
+public class InheritenceTest extends JaxbColumnTest {
+
+ protected String dir = "target/data";
+ protected String file = dir + "/inheritence.xml";
+
+ public void testWriteAndRead() throws Exception {
+ new File(dir).mkdirs();
+
+ Column column = createColumn();
+ ArrayDataType dataType = new ArrayDataType();
+ dataType.setDimensions(6);
+ dataType.setName("int");
+ column.setDataType(dataType);
+
+ CustomColumnFactory factory = new CustomColumnFactory(column);
+ factory.set_singleton(Boolean.TRUE);
+ factory.set_id("cheese");
+
+ Beans beans = new Beans();
+ beans.addBean(factory);
+
+ BeanMarshaller marshaller = new BeanMarshaller();
+ marshaller.write(new FileOutputStream(file), beans);
+
+ Beans newBeans = marshaller.read(new FileInputStream(file));
+
+ System.out.println("Read beans: " + newBeans.getBeans());
+
+ // in case there's caching, lets make another
+ factory = (CustomColumnFactory) newBeans.getBeanFactory("cheese");
+ assertNotNull("Should have found a factory for name 'cheese'", factory);
+ Column answer = factory.getObject();
+
+ System.out.println("Created: " + column);
+ System.out.println("Created data type: " + column.getDataType());
+
+ System.out.println("Parsed: " + answer);
+ System.out.println("Parsed data type: " + answer.getDataType());
+
+ assertNotNull(answer);
+ assertEquals(column, answer);
+ assertEquals(column.getDataType(), answer.getDataType());
+
+ }
+
+}
Added: geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/ReferenceTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/ReferenceTest.java?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/ReferenceTest.java (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/java/org/apache/xbean/factory/ReferenceTest.java Fri Oct 13 07:48:58 2006
@@ -0,0 +1,58 @@
+/*
+ * 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.factory;
+
+import org.apache.xbean.factory.model.Column;
+import org.apache.xbean.factory.model.factory.CustomColumnFactory;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @version $Revision: $
+ */
+public class ReferenceTest extends JaxbColumnTest {
+
+ public void testReadColumn() throws Exception {
+ Column column = createColumn();
+
+ InputStream in = getClass().getClassLoader().getResourceAsStream("column-with-ref.xml");
+ assertNotNull("Could not find xml!", in);
+
+ BeanMarshaller marshaller = new BeanMarshaller("org.apache.xbean.factory:org.apache.xbean.factory.model.factory");
+ Beans newBeans = marshaller.read(in);
+
+ List beanList = newBeans.getBeans();
+ System.out.println("Read beans: " + beanList);
+
+ assertTrue("Should have found beans: " + beanList, !beanList.isEmpty());
+
+ // in case there's caching, lets make another
+ CustomColumnFactory factory = (CustomColumnFactory) newBeans.getBeanFactory("cheese");
+ Column answer = factory.getObject();
+
+ System.out.println("Created: " + column);
+ System.out.println("Parsed: " + answer);
+
+ assertNotNull(answer);
+ assertEquals(column, answer);
+
+ System.out.println("Parsed data type: " + answer.getDataType());
+ assertEquals(column.getDataType(), answer.getDataType());
+ }
+
+}
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/column
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/column?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/column (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/column Fri Oct 13 07:48:58 2006
@@ -0,0 +1 @@
+org.apache.xbean.factory.model.factory.CustomColumnFactory
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/dataType
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/dataType?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/dataType (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/dataType Fri Oct 13 07:48:58 2006
@@ -0,0 +1 @@
+org.apache.xbean.factory.model.factory.CustomDataTypeFactory
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/user
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/user?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/user (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/META-INF/services/org/apache/xbean/factory/user Fri Oct 13 07:48:58 2006
@@ -0,0 +1 @@
+org.apache.xbean.factory.model.factory.CustomUserFactory
Modified: geronimo/xbean/sandbox/xbean-factory/src/test/resources/column-with-ref.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/column-with-ref.xml?view=diff&rev=463693&r1=463692&r2=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/column-with-ref.xml (original)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/column-with-ref.xml Fri Oct 13 07:48:58 2006
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<b:beans xmlns:b="http://www.springframework/beans/TODO">
- <column b:singleton="true" b:id="cheese">
- <dataType name="String"/>
+ <column b:singleton="true" b:id="cheese" dataTypeRef="foo">
<name>cheeseColumn</name>
</column>
+
+ <dataType name="String" b:id="foo"/>
+
</b:beans>
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/column.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/column.xml?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/column.xml (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/column.xml Fri Oct 13 07:48:58 2006
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<b:beans xmlns:b="http://www.springframework/beans/TODO">
+
+ <column b:singleton="true" b:id="cheese">
+ <dataType name="String"/>
+ <name>cheeseColumn</name>
+ </column>
+
+</b:beans>
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/log4.properties
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/log4.properties?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/log4.properties (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/log4.properties Fri Oct 13 07:48:58 2006
@@ -0,0 +1,37 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, stdout
+
+#log4j.logger.com.opensymphony.able=DEBUG
+
+#log4j.logger.org.apache.activemq.spring=WARN
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/activemq-test.log
+log4j.appender.out.append=true
Added: geronimo/xbean/sandbox/xbean-factory/src/test/resources/user-with-ref.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/sandbox/xbean-factory/src/test/resources/user-with-ref.xml?view=auto&rev=463693
==============================================================================
--- geronimo/xbean/sandbox/xbean-factory/src/test/resources/user-with-ref.xml (added)
+++ geronimo/xbean/sandbox/xbean-factory/src/test/resources/user-with-ref.xml Fri Oct 13 07:48:58 2006
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<b:beans xmlns:b="http://www.springframework/beans/TODO">
+
+ <user b:id="cheese">
+ <fullName>Dain Sundstrom</fullName>
+ <name>dain</name>
+ <phoneNumber>(310) XXX-XXXX</phoneNumber>
+ <pk>42</pk>
+ </user>
+
+</b:beans>