You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sk...@apache.org on 2008/06/17 22:57:16 UTC

svn commit: r668825 - in /myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src: main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/ test/resources/builder/complex/ test/resources/builder/generation/

Author: skitching
Date: Tue Jun 17 13:57:16 2008
New Revision: 668825

URL: http://svn.apache.org/viewvc?rev=668825&view=rev
Log:
QdoxModelBuilder changes:
* use JavaClass.getFullyQualifiedName everywhere for consistency
* centralise common initialisation into initAncestry method
* remove support for "parent" and "superClass" elements in doclet annotations
* make sourceClassParentClassName always match code.
  IMPORTANT: This means that the logic to determine what the parent of a
  generated class is must now be done in the template files!

Modified:
    myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java
    myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile-flat.xml
    myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile.xml
    myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile-flat.xml
    myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile.xml

Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java?rev=668825&r1=668824&r2=668825&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java Tue Jun 17 13:57:16 2008
@@ -83,7 +83,7 @@
             JavaClass c0 = (JavaClass) arg0;
             JavaClass c1 = (JavaClass) arg1;
 
-            return (c0.getName().compareTo(c1.getName()));
+            return (c0.getFullyQualifiedName().compareTo(c1.getFullyQualifiedName()));
         }
     }
 
@@ -238,7 +238,7 @@
         // ok, now we can mark this class as processed.
         processedClasses.add(clazz);
 
-        log.info("processed class:" + clazz.getName());
+        log.info("processed class:" + clazz.getFullyQualifiedName());
 
         DocletTag tag;
         Annotation anno;
@@ -457,17 +457,36 @@
      * Set the parentClassName and interfaceClassNames properties of the
      * provided modelItem object.
      */
-    private void initAncestry(Model model, JavaClass clazz, ClassMeta modelItem)
+    private void initAncestry(Model model, JavaClass clazz,
+    		ClassMeta modelItem, String classNameOverride)
     {
-        // self
-        modelItem.setClassName(clazz.getName());
-
-        // parent
+        modelItem.setSourceClassName(clazz.getFullyQualifiedName());
+        JavaClass realParentClass = clazz.getSuperJavaClass();
+        if (realParentClass != null)
+        {
+        	String fqn = realParentClass.getFullyQualifiedName();
+        	if ((fqn != null) && !fqn.startsWith("java.lang"))
+        	{
+        		modelItem.setSourceClassParentClassName(fqn);
+        	}
+        }
+                
+        // JSF Entity class.
+        if (StringUtils.isEmpty(classNameOverride))
+    	{
+        	modelItem.setClassName(clazz.getFullyQualifiedName());
+    	}
+        else
+        {
+        	modelItem.setClassName(classNameOverride);
+        }
+        
+        // logical parent (one metadata is inherited from)
         JavaClass parentClazz = clazz.getSuperJavaClass();
         while (parentClazz != null)
         {
             ComponentMeta parentComponent = model
-                    .findComponentByClassName(parentClazz.getName());
+                    .findComponentByClassName(parentClazz.getFullyQualifiedName());
             if (parentComponent != null)
             {
                 modelItem.setParentClassName(parentComponent.getClassName());
@@ -476,7 +495,7 @@
             parentClazz = parentClazz.getSuperJavaClass();
         }
 
-        // interfaces
+        // interfaces metadata is inherited from
         JavaClass[] classes = clazz.getImplementedInterfaces();
         List ifaceNames = new ArrayList();
         for (int i = 0; i < classes.length; ++i)
@@ -513,9 +532,11 @@
             converterIdDflt = clean(value.substring(value.indexOf('"')));
         }        
         String converterId = getString(clazz, "id", props, converterIdDflt);
-        String converterClass = getString(clazz, "class", props, clazz
-                .getFullyQualifiedName());
-        converterClass = getString(clazz,"clazz",props,converterClass);
+
+        // Check for both "class" and "clazz" in order to support
+        // doclet and real annotations.
+        String classNameOverride = getString(clazz, "class", props, null);
+        classNameOverride = getString(clazz,"clazz",props,classNameOverride);
         
         String componentName = getString(clazz, "name", props, null);
         String bodyContent = getString(clazz, "bodyContent", props, null);
@@ -523,40 +544,18 @@
         String tagSuperclass = getString(clazz, "tagSuperclass", props, null);
         String serialuidtag = getString(clazz, "serialuidtag", props, null);
         Boolean configExcluded = getBoolean(clazz,"configExcluded",props,null);   
-        
-        String componentParentClass = getString(clazz, "parent", props, 
-                clazz.getSuperJavaClass()!= null?
-                        clazz.getSuperJavaClass().getFullyQualifiedName():null);
-        
-        String superClassName = getString(clazz,"superClass",props,null);
-        
-        if (componentParentClass != null && componentParentClass.startsWith("java.lang"))
-        {
-            componentParentClass = null;
-        }
-        
-        if (componentParentClass != null)
-        {
-            if (componentParentClass.equals(""))
-            {
-                componentParentClass = null;
-            }
-        }
-                
+
         ConverterMeta converter = new ConverterMeta();
+        initAncestry(model, clazz, converter, classNameOverride);
         converter.setName(componentName);
         converter.setBodyContent(bodyContent);
         converter.setTagClass(tagClass);
         converter.setTagSuperclass(tagSuperclass);
-        converter.setSourceClassName(clazz.getFullyQualifiedName());
-        converter.setClassName(converterClass);
         converter.setConverterId(converterId);
         converter.setDescription(shortDescription);
         converter.setLongDescription(longDescription);
         converter.setSerialuidtag(serialuidtag);
         converter.setConfigExcluded(configExcluded);
-        converter.setSourceClassParentClassName(superClassName);
-        converter.setParentClassName(componentParentClass);
         
         // Now here walk the component looking for property annotations.
         processComponentProperties(clazz, converter);
@@ -584,9 +583,11 @@
             validatorIdDflt = clean(value.substring(value.indexOf('"')));
         }        
         String validatorId = getString(clazz, "id", props, validatorIdDflt);
-        String validatorClass = getString(clazz, "class", props, clazz
-                .getFullyQualifiedName());
-        validatorClass = getString(clazz,"clazz",props,validatorClass);
+
+        // Check for both "class" and "clazz" in order to support
+        // doclet and real annotations.
+        String classNameOverride = getString(clazz, "class", props, null);
+        classNameOverride = getString(clazz,"clazz",props,classNameOverride);
         
         String componentName = getString(clazz, "name", props, null);
         String bodyContent = getString(clazz, "bodyContent", props, null);
@@ -595,48 +596,17 @@
         String serialuidtag = getString(clazz, "serialuidtag", props, null);
         Boolean configExcluded = getBoolean(clazz,"configExcluded",props,null);   
         
-        String componentParentClass = getString(clazz, "parent", props, 
-                clazz.getSuperJavaClass()!= null?
-                        clazz.getSuperJavaClass().getFullyQualifiedName():null);
-        
-        String superClassName = getString(clazz,"superClass",props,null);
-        
-        if (componentParentClass != null && componentParentClass.startsWith("java.lang"))
-        {
-            componentParentClass = null;
-        }
-        
-        if (componentParentClass != null)
-        {
-            if (componentParentClass.equals(""))
-            {
-                componentParentClass = null;
-            }
-        }
-        
-        // If the validatorClass is not the same as the class with
-        // @JSFValidator annotation, the validator class is generated 
-        if (!clazz.getFullyQualifiedName().equals(validatorClass)){
-            //There is only one type of generation for validators
-            //(use abstract pattern), so this sets automatically the
-            //superClass
-            superClassName = getString(clazz,"superClass",props,clazz.getFullyQualifiedName());
-        }
-
         ValidatorMeta validator = new ValidatorMeta();
+        initAncestry(model, clazz, validator, classNameOverride);
         validator.setName(componentName);
         validator.setBodyContent(bodyContent);
         validator.setTagClass(tagClass);
         validator.setTagSuperclass(tagSuperclass);
-        validator.setSourceClassName(clazz.getFullyQualifiedName());
-        validator.setClassName(validatorClass);
         validator.setValidatorId(validatorId);
         validator.setDescription(shortDescription);
         validator.setLongDescription(longDescription);
         validator.setSerialuidtag(serialuidtag);
         validator.setConfigExcluded(configExcluded);
-        validator.setSourceClassParentClassName(superClassName);
-        validator.setParentClassName(componentParentClass);
         
         // Now here walk the component looking for property annotations.
         processComponentProperties(clazz, validator);
@@ -766,44 +736,13 @@
         }
 
         String componentName = getString(clazz, "name", props, null);
-        String componentClass = getString(clazz, "class", props, clazz
-                .getFullyQualifiedName());
-        componentClass = getString(clazz,"clazz",props,componentClass);
-        
-        //The parent class is always what is indicated or the
-        //superclass of the class that has the @JSFComponent class
-        String componentParentClass = getString(clazz, "parent", props, 
-                clazz.getSuperJavaClass()!= null?
-                        clazz.getSuperJavaClass().getFullyQualifiedName():null);
-        
-        String superClassName = getString(clazz,"superClass",props,null);
-        
-        if (componentParentClass != null && componentParentClass.startsWith("java.lang"))
-        {
-            componentParentClass = null;
-        }
-        
-        if (componentParentClass != null)
-        {
-            if (componentParentClass.equals(""))
-            {
-                componentParentClass = null;
-            }
-        }
- 
+
+        // Check for both "class" and "clazz" in order to support
+        // doclet and real annotations.
+        String classNameOverride = getString(clazz, "class", props, null);
+        classNameOverride = getString(clazz,"clazz",props,classNameOverride);
+                
         Boolean template = getBoolean(clazz,"template",props, null);
-        
-        // If the componentClass is not the same as the class with
-        // @JSFComponent annotation, the component class is generated 
-        if (!clazz.getFullyQualifiedName().equals(componentClass)){
-            if (!(template != null && template.booleanValue()))
-            {
-                //If template is false or null, the superClass of the generated
-                //class is the same class, otherwise is the same as the parent
-                //class.
-                superClassName = getString(clazz,"superClass",props,clazz.getFullyQualifiedName());
-            }
-        }
                 
         String longDescription = clazz.getComment();
         String descDflt = getFirstSentence(longDescription);
@@ -832,13 +771,9 @@
         implementsValue = getString(clazz, "implementz", props, implementsValue);
 
         ComponentMeta component = new ComponentMeta();
-        initAncestry(model, clazz, component);
+        initAncestry(model, clazz, component, classNameOverride);
         component.setName(componentName);
         component.setBodyContent(bodyContent);
-        component.setClassName(componentClass);
-        component.setParentClassName(componentParentClass);
-        component.setSourceClassName(clazz.getFullyQualifiedName());
-        component.setSourceClassParentClassName(superClassName);
         component.setDescription(shortDescription);
         component.setLongDescription(longDescription);
         component.setConfigExcluded(configExcluded);
@@ -854,7 +789,8 @@
         for (int i = 0; i < interfaces.length; ++i)
         {
             JavaClass iface = interfaces[i];
-            if (iface.getName().equals("javax.faces.component.NamingContainer"))
+            if (iface.getFullyQualifiedName().equals(
+            		"javax.faces.component.NamingContainer"))
             {
                 component.setNamingContainer(Boolean.TRUE);
                 break;

Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile-flat.xml
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile-flat.xml?rev=668825&r1=668824&r2=668825&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile-flat.xml (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile-flat.xml Tue Jun 17 13:57:16 2008
@@ -60,6 +60,7 @@
     <className>ComponentChild</className>
     <parentClassName>ComponentBase</parentClassName>
     <sourceClassName>ComponentChild</sourceClassName>
+    <sourceClassParentClassName>ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="ComponentInterface"/>
     </interfaces>

Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile.xml
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile.xml?rev=668825&r1=668824&r2=668825&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile.xml (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/complex/goodfile.xml Tue Jun 17 13:57:16 2008
@@ -60,6 +60,7 @@
     <className>ComponentChild</className>
     <parentClassName>ComponentBase</parentClassName>
     <sourceClassName>ComponentChild</sourceClassName>
+    <sourceClassParentClassName>ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="ComponentInterface"/>
     </interfaces>

Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile-flat.xml
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile-flat.xml?rev=668825&r1=668824&r2=668825&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile-flat.xml (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile-flat.xml Tue Jun 17 13:57:16 2008
@@ -60,7 +60,7 @@
     <className>testpkg.SubclassComponent</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentGenSubclass</sourceClassName>
-    <sourceClassParentClassName>testpkg.ComponentGenSubclass</sourceClassParentClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>
@@ -103,6 +103,7 @@
     <className>testpkg.TemplateComponent</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentGenTemplate</sourceClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>
@@ -158,6 +159,7 @@
     <className>testpkg.ComponentManual</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentManual</sourceClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>

Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile.xml
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile.xml?rev=668825&r1=668824&r2=668825&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile.xml (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-builder-plugin/src/test/resources/builder/generation/goodfile.xml Tue Jun 17 13:57:16 2008
@@ -60,7 +60,7 @@
     <className>testpkg.SubclassComponent</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentGenSubclass</sourceClassName>
-    <sourceClassParentClassName>testpkg.ComponentGenSubclass</sourceClassParentClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>
@@ -76,6 +76,7 @@
     <className>testpkg.TemplateComponent</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentGenTemplate</sourceClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>
@@ -104,6 +105,7 @@
     <className>testpkg.ComponentManual</className>
     <parentClassName>testpkg.ComponentBase</parentClassName>
     <sourceClassName>testpkg.ComponentManual</sourceClassName>
+    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
     <interfaces>
       <interface name="testpkg.ComponentInterface"/>
     </interfaces>