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/12/13 10:38:37 UTC

svn commit: r486564 - in /geronimo/xbean/trunk: maven-xbean-plugin/src/main/java/org/apache/xbean/maven/ xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/ xbean-spring-itests/2.0/

Author: gnodet
Date: Wed Dec 13 01:38:36 2006
New Revision: 486564

URL: http://svn.apache.org/viewvc?view=rev&rev=486564
Log:
XBEAN-65: The maven plugin does not use the classpath, so that properties from parent classes are ignored if they are not in this module

Modified:
    geronimo/xbean/trunk/maven-xbean-plugin/src/main/java/org/apache/xbean/maven/XBeanMojo.java
    geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java
    geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/Utils.java
    geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java
    geronimo/xbean/trunk/xbean-spring-itests/2.0/   (props changed)

Modified: geronimo/xbean/trunk/maven-xbean-plugin/src/main/java/org/apache/xbean/maven/XBeanMojo.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/maven-xbean-plugin/src/main/java/org/apache/xbean/maven/XBeanMojo.java?view=diff&rev=486564&r1=486563&r2=486564
==============================================================================
--- geronimo/xbean/trunk/maven-xbean-plugin/src/main/java/org/apache/xbean/maven/XBeanMojo.java (original)
+++ geronimo/xbean/trunk/maven-xbean-plugin/src/main/java/org/apache/xbean/maven/XBeanMojo.java Wed Dec 13 01:38:36 2006
@@ -18,14 +18,19 @@
 
 import java.beans.PropertyEditorManager;
 import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 import java.util.StringTokenizer;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -49,6 +54,7 @@
  * @goal mapping
  * @description Creates xbean mapping file
  * @phase generate-sources
+ * @requiresDependencyResolution compile
  */
 public class XBeanMojo extends AbstractMojo implements LogFacade {
 
@@ -150,6 +156,7 @@
             };
 
             // load the mappings
+            Thread.currentThread().setContextClassLoader(getClassLoader());
             Set namespaces = mappingLoader.loadNamespaces();
             if (namespaces.isEmpty()) {
                 System.out.println("Warning: no namespaces found!");
@@ -195,4 +202,38 @@
     public void log(String message, int level) {
         getLog().info(message);
     }
+
+    protected URLClassLoader getClassLoader() throws MojoExecutionException {
+        try {
+            Set urls = new HashSet();
+
+            URL mainClasses = new File(project.getBuild().getOutputDirectory())
+                    .toURL();
+            getLog().debug("Adding to classpath : " + mainClasses);
+            urls.add(mainClasses);
+
+            URL testClasses = new File(project.getBuild()
+                    .getTestOutputDirectory()).toURL();
+            getLog().debug("Adding to classpath : " + testClasses);
+            urls.add(testClasses);
+
+            Set dependencies = project.getArtifacts();
+            Iterator iter = dependencies.iterator();
+            while (iter.hasNext()) {
+                Artifact classPathElement = (Artifact) iter.next();
+                getLog().debug(
+                        "Adding artifact: " + classPathElement.getFile()
+                                + " to classpath");
+                urls.add(classPathElement.getFile().toURL());
+            }
+            URLClassLoader appClassloader = new URLClassLoader((URL[]) urls
+                    .toArray(new URL[urls.size()]), this.getClass()
+                    .getClassLoader());
+            return appClassloader;
+        } catch (MalformedURLException e) {
+            throw new MojoExecutionException(
+                    "Error during setting up classpath", e);
+        }
+    }
+
 }

Modified: geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java?view=diff&rev=486564&r1=486563&r2=486564
==============================================================================
--- geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java (original)
+++ geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/QdoxMappingLoader.java Wed Dec 13 01:38:36 2006
@@ -477,15 +477,18 @@
     }
 
     private org.apache.xbean.spring.generator.Type toMappingType(Type type, String nestedType) {
-        if (type.isArray()) {
-            return org.apache.xbean.spring.generator.Type.newArrayType(type.getValue(), type.getDimensions());
-        } else if (type.isA(listType)) {
-            if (nestedType == null) nestedType = "java.lang.Object";
-            return org.apache.xbean.spring.generator.Type.newCollectionType(type.getValue(),
-                    org.apache.xbean.spring.generator.Type.newSimpleType(nestedType));
-        } else {
-            return org.apache.xbean.spring.generator.Type.newSimpleType(type.getValue());
+        try {
+            if (type.isArray()) {
+                return org.apache.xbean.spring.generator.Type.newArrayType(type.getValue(), type.getDimensions());
+            } else if (type.isA(listType)) {
+                if (nestedType == null) nestedType = "java.lang.Object";
+                return org.apache.xbean.spring.generator.Type.newCollectionType(type.getValue(),
+                        org.apache.xbean.spring.generator.Type.newSimpleType(nestedType));
+            }
+        } catch (Throwable t){ 
+            log.debug("Could not load type mapping", t);
         }
+        return org.apache.xbean.spring.generator.Type.newSimpleType(type.getValue());
     }
 
     private static String toMethodLocator(JavaMethod method) {

Modified: geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/Utils.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/Utils.java?view=diff&rev=486564&r1=486563&r2=486564
==============================================================================
--- geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/Utils.java (original)
+++ geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/Utils.java Wed Dec 13 01:38:36 2006
@@ -64,13 +64,13 @@
         Class theClass;
         try {
             theClass = loadClass(type);
-        } catch (ClassNotFoundException e) {
-            System.out.println("Warning, could not load class: " + type);
+            // lets see if we can find a property editor for this type
+            PropertyEditor editor = PropertyEditorManager.findEditor(theClass);
+            return editor != null;
+        } catch (Throwable e) {
+            System.out.println("Warning, could not load class: " + type + ": " + e);
             return false;
         }
-        // lets see if we can find a property editor for this type
-        PropertyEditor editor = PropertyEditorManager.findEditor(theClass);
-        return editor != null;
     }
 
     /**

Modified: geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java?view=diff&rev=486564&r1=486563&r2=486564
==============================================================================
--- geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java (original)
+++ geronimo/xbean/trunk/xbean-spring-common/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java Wed Dec 13 01:38:36 2006
@@ -99,6 +99,7 @@
                     generateElementMappingComplexProperty(out, namespaceMapping, attributeMapping);
                 }
             }
+            out.println("        <xs:any namespace='##other'/>");
             out.println("      </xs:sequence>");
         }
 
@@ -188,14 +189,14 @@
         }
         out.println("          <xs:complexType>");
         if (types.isEmpty()) {
-            out.println("            <xs:sequence minOccurs='0' maxOccurs='" + maxOccurs + "'><xs:any/></xs:sequence>");
+            out.println("            <xs:sequence minOccurs='0' maxOccurs='" + maxOccurs + "'><xs:any namespace='##other'/></xs:sequence>");
         } else {
             out.println("            <xs:choice minOccurs='0' maxOccurs='" + maxOccurs + "'>");
             for (Iterator iterator = types.iterator(); iterator.hasNext();) {
                 ElementMapping element = (ElementMapping) iterator.next();
                 out.println("              <xs:element ref='tns:" + element.getElementName() + "'/>");
             }
-            out.println("              <xs:any/>");
+            out.println("              <xs:any namespace='##other'/>");
             out.println("            </xs:choice>");
         }
         out.println("          </xs:complexType>");

Propchange: geronimo/xbean/trunk/xbean-spring-itests/2.0/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Dec 13 01:38:36 2006
@@ -1 +1,3 @@
 target
+.classpath
+.project