incubator-adffaces-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bara...@apache.org
Subject svn commit: r479151 - in /incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces: ./ generator/ generator/component/ generator/taglib/ util/
Date Sat, 25 Nov 2006 17:41:12 GMT
Author: baranda
Date: Sat Nov 25 09:41:05 2006
New Revision: 479151

URL: http://svn.apache.org/viewvc?view=rev&rev=479151
Log:
Applied ADFFACES-303 patch by Andreas Berger

Modified:
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateComponentsMojo.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/ClassGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/ComponentGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/ComponentTagGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesComponentTagGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
    incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/util/SourceTemplate.java

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateComponentsMojo.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateComponentsMojo.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateComponentsMojo.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateComponentsMojo.java
Sat Nov 25 09:41:05 2006
@@ -140,8 +140,8 @@
 
       if (componentFamily == null)
       {
-        getLog().error("Missing <component-family> for \"" +
-                       fullClassName + "\"");
+        getLog().warn("Missing <component-family> for \"" +
+                       fullClassName + "\", generation of this Component is skipped");
       }
       else
       {
@@ -212,7 +212,12 @@
 
         generator.writeFacetMethods(out, component);
 
-        generator.writePropertyMethods(out, component);
+        if (template == null)
+        {
+			generator.writePropertyMethods(out, component);
+		} else {
+			generator.writePropertyMethods(out, component, template.getIgnoreMethods());
+		}
 
         if (!suppressListenerMethods)
           generator.writeListenerMethods(out, component);

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java
Sat Nov 25 09:41:05 2006
@@ -1468,99 +1468,102 @@
     }
   }
 
-  class ComponentTagHandlerGenerator
-  {
-    public void generateTagHandler(
-      ComponentBean component)
-    {
-      String fullClassName = component.getTagClass();
-
-        ComponentTagGenerator generator;
-
-        if (component.isTrinidadComponent())
-        {
-            generator = new TrinidadComponentTagGenerator(_is12());
-        }
-        else
-        {
-            generator = new MyFacesComponentTagGenerator(_is12());
-        }
-
-      try
-      {
-        getLog().debug("Generating " + fullClassName);
-
-        String sourcePath = Util.convertClassToSourcePath(fullClassName, ".java");
-        File targetFile = new File(generatedSourceDirectory, sourcePath);
-
-        targetFile.getParentFile().mkdirs();
-        StringWriter sw = new StringWriter();
-        PrettyWriter out = new PrettyWriter(sw);
-
-        String className = Util.getClassFromFullClass(fullClassName);
-        String packageName = Util.getPackageFromFullClass(fullClassName);
-        String fullSuperclassName = component.findJspTagSuperclass();
-        if (fullSuperclassName == null)
-        {
-          getLog().error("Missing JSP Tag superclass for component: "+component.getComponentClass());
-          return;
-        }
-        String superclassName = Util.getClassFromFullClass(fullSuperclassName);
-        if (superclassName.equals(className))
-          superclassName = fullSuperclassName;
-        String componentFullClass = component.getComponentClass();
-        String componentClass = Util.getClassFromFullClass(componentFullClass);
-
-        // header/copyright
-        writePreamble(out);
-
-        // package
-        out.println("package " + packageName + ";");
-
-        out.println();
-
-
-        generator.writeImports(out, null, packageName, fullSuperclassName, superclassName,
-                       component);
-
-        generator.writeClassBegin(out, className, superclassName, component, null);
-
-        int modifiers = component.getTagClassModifiers();
-        generator.writeConstructor(out, component, modifiers);
-
-
-        if (!Modifier.isAbstract(modifiers))
-        {
-          generator.writeGetComponentType(out, component);
-          generator.writeGetRendererType(out, component);
-        }
-        generator.writePropertyMembers(out, component);
-        generator.writeSetPropertiesMethod(out, componentClass, component);
-        generator.writeReleaseMethod(out, component);
-
-        generator.writeClassEnd(out);
-        out.close();
-
-        // delay write in case of error
-        // timestamp should not be updated when an error occurs
-        // delete target file first, because it is readonly
-        targetFile.delete();
-        FileWriter fw = new FileWriter(targetFile);
-        StringBuffer buf = sw.getBuffer();
-        fw.write(buf.toString());
-        fw.close();
-        targetFile.setReadOnly();
-      }
-      catch (Throwable e)
-      {
-        getLog().error("Error generating " + fullClassName, e);
-      }
-    }
+	class ComponentTagHandlerGenerator {
 
-    
-  }
+		private Set initComponentList(ComponentBean component, String fullSuperclassName) {
+			Set _componentList = new HashSet();
+			_componentList.add(component);
+			ComponentBean lBean = component;
+			while ((lBean = lBean.resolveSupertype()) != null && !fullSuperclassName.equals(lBean.getTagClass()))
{
+				getLog().debug(component.getComponentType()+": Add additional Tags from: " + lBean.getComponentType());
+				_componentList.add(lBean);
+			}
+			return _componentList;
+		}
+
+		public void generateTagHandler(ComponentBean component) {
+			ComponentTagGenerator generator;
+			Set componentList;
+
+			String fullSuperclassName = component.findJspTagSuperclass();
+			if (fullSuperclassName == null) {
+				getLog().warn("Missing JSP Tag superclass for component: " + component.getComponentClass()
+						+ ", generation of this Tag is skipped");
+				return;
+			}
+			componentList = initComponentList(component, fullSuperclassName);
+
+			String fullClassName = component.getTagClass();
+			try {
+				getLog().debug("Generating " + fullClassName);
+
+				String sourcePath = Util.convertClassToSourcePath(fullClassName, ".java");
+				File targetFile = new File(generatedSourceDirectory, sourcePath);
+
+				targetFile.getParentFile().mkdirs();
+				StringWriter sw = new StringWriter();
+				PrettyWriter out = new PrettyWriter(sw);
+
+				if (component.isTrinidadComponent()) {
+					generator = new TrinidadComponentTagGenerator(_is12());
+				} else {
+					generator = new MyFacesComponentTagGenerator(_is12());
+				}
+
+				String className = Util.getClassFromFullClass(fullClassName);
+				String packageName = Util.getPackageFromFullClass(fullClassName);
+
+				// header/copyright
+				writePreamble(out);
+
+				// package
+				out.println("package " + packageName + ";");
+
+				out.println();
+
+				String superclassName = Util.getClassFromFullClass(fullSuperclassName);
+				if (superclassName.equals(className)) {
+					superclassName = fullSuperclassName;
+				}
+				String componentFullClass = component.getComponentClass();
+				String componentClass = Util.getClassFromFullClass(componentFullClass);
+
+				generator.writeImports(out, null, packageName, fullSuperclassName, superclassName, componentList);
+
+				generator.writeClassBegin(out, className, superclassName, component, null);
+
+				int modifiers = component.getTagClassModifiers();
+				generator.writeConstructor(out, component, modifiers);
+
+
+				if (!Modifier.isAbstract(modifiers)) {
+					generator.writeGetComponentType(out, component);
+					generator.writeGetRendererType(out, component);
+				}
+				generator.writePropertyMembers(out, componentList);
+				generator.writeSetPropertiesMethod(out, componentClass, componentList);
+				generator.writeReleaseMethod(out, componentList);
+
+				generator.writeClassEnd(out);
+				out.close();
+
+				// delay write in case of error
+				// timestamp should not be updated when an error occurs
+				// delete target file first, because it is readonly
+				targetFile.delete();
+				FileWriter fw = new FileWriter(targetFile);
+				StringBuffer buf = sw.getBuffer();
+				fw.write(buf.toString());
+				fw.close();
+				targetFile.setReadOnly();
+			}
+			catch (Throwable e) {
+				getLog().error("Error generating " + fullClassName, e);
+			}
+		}
+	}
 
-  private boolean _is12()
+	private boolean _is12()
   {
     return "1.2".equals(jsfVersion) || "12".equals(jsfVersion);
   }

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/ClassGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/ClassGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/ClassGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/ClassGenerator.java
Sat Nov 25 09:41:05 2006
@@ -20,6 +20,7 @@
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.SourceTemplate;
 
 import java.io.IOException;
+import java.util.Collection;
 
 /**
  * Generator
@@ -36,6 +37,14 @@
             String fullSuperclassName,
             String superclassName,
             ComponentBean component);
+
+	void writeImports(
+			PrettyWriter out,
+			SourceTemplate template,
+			String packageName,
+			String fullSuperclassName,
+			String superclassName,
+			Collection components);
 
     void writeClassBegin(
             PrettyWriter out,

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
Sat Nov 25 09:41:05 2006
@@ -67,10 +67,10 @@
                 && property.getJspPropertyName().equals("action"));
     }
 
-    public static boolean isActionListener(PropertyBean property)
+    public static boolean isActionListener(PropertyBean property, boolean is12)
     {
-        return (property.getClass().equals("javax.el.MethodExpression")
-                && property.getJspPropertyName().equals("actionListener"));
+		return (property.getJspPropertyName().equals("actionListener") &&
+				(property.isMethodExpression()) || (is12 && property.isMethodBinding()));
     }
 
     static public void writeImports(

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
Sat Nov 25 09:41:05 2006
@@ -38,6 +38,7 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.Collection;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -200,7 +201,13 @@
         out.println("}");
     }
 
-    public void writeImports(
+
+	public void writeImports(PrettyWriter out, SourceTemplate template, String packageName,
String fullSuperclassName,
+							 String superclassName, Collection components) {
+		throw new UnsupportedOperationException("not implemented");
+	}
+
+	public void writeImports(
             PrettyWriter out,
             SourceTemplate template,
             String packageName,
@@ -525,7 +532,13 @@
             PrettyWriter out,
             ComponentBean component) throws IOException
     {
-        Iterator properties = component.properties();
+        writePropertyMethods(out, component, null);
+    }
+
+
+	public void writePropertyMethods(PrettyWriter out, ComponentBean component, Collection ignoreList)
+			throws IOException {
+		Iterator properties = component.properties();
         properties = new FilteredIterator(properties, new NonVirtualFilter());
         while (properties.hasNext())
         {
@@ -534,14 +547,14 @@
                 writePropertyListMethods(out, property);
             else
             {
-                writePropertyDeclaration(out, property);
-                writePropertyGet(out, property);
-                writePropertySet(out, property);
+				writePropertyDeclaration(out, property);
+                writePropertyGet(out, property, ignoreList);
+                writePropertySet(out, property, ignoreList);
             }
         }
-    }
+	}
 
-    abstract protected void writePropertyListMethods(
+	abstract protected void writePropertyListMethods(
             PrettyWriter out,
             PropertyBean property) throws IOException;
 
@@ -558,28 +571,32 @@
 
     protected void writePropertySet(
             PrettyWriter out,
-            PropertyBean property) throws IOException
+            PropertyBean property,
+			Collection ignoreList) throws IOException
     {
         String propertyClass = Util.getPropertyClass(property);
-        writePropertySet(out, property, propertyClass);
+        writePropertySet(out, property, propertyClass, ignoreList);
 
         if (property.getAlternateClass() != null)
         {
             String alternateClass = Util.getAlternatePropertyClass(property);
-            writePropertySet(out, property, alternateClass);
+            writePropertySet(out, property, alternateClass, ignoreList);
         }
     }
 
     protected void writePropertySet(
             PrettyWriter out,
             PropertyBean property,
-            String propertyClass) throws IOException
+            String propertyClass,
+			Collection ignoreList) throws IOException
     {
         String propName = property.getPropertyName();
         String propVar = Util.getVariableFromName(propName);
         String description = property.getDescription();
         String setMethod = Util.getPrefixedPropertyName("set", propName);
-
+		if (ignoreList != null && ignoreList.contains(setMethod)){
+			return;
+		}
         out.println();
         out.println("/**");
         if (description != null)
@@ -616,14 +633,17 @@
 
     protected void writePropertyGet(
             PrettyWriter out,
-            PropertyBean property) throws IOException
+            PropertyBean property,
+			Collection ignoreList) throws IOException
     {
         String propName = property.getPropertyName();
         String propertyFullClass = property.getPropertyClass();
         String propertyClass = Util.getClassFromFullClass(propertyFullClass);
         String description = property.getDescription();
         String getMethod = Util.getMethodReaderFromProperty(propName, propertyClass);
-
+		if (ignoreList != null && ignoreList.contains(getMethod)){
+			return;
+		}
         boolean isUnchecked = false;
         String[] genericTypes = property.getPropertyClassParameters();
         if (genericTypes != null && genericTypes.length > 0)

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/ComponentGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/ComponentGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/ComponentGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/ComponentGenerator.java
Sat Nov 25 09:41:05 2006
@@ -18,8 +18,10 @@
 import org.apache.myfaces.trinidadbuild.plugin.faces.generator.ClassGenerator;
 import org.apache.myfaces.trinidadbuild.plugin.faces.io.PrettyWriter;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.ComponentBean;
+import org.apache.myfaces.trinidadbuild.plugin.faces.util.SourceTemplate;
 
 import java.io.IOException;
+import java.util.Collection;
 
 /**
  * Generates component classes
@@ -69,4 +71,9 @@
 
     void writeOther(
             PrettyWriter out, ComponentBean component) throws IOException;
+
+
+	void writePropertyMethods(PrettyWriter out,
+			ComponentBean component,
+			Collection ignoreList) throws IOException;
 }

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
Sat Nov 25 09:41:05 2006
@@ -28,6 +28,8 @@
 import java.util.Iterator;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.Collection;
+import java.util.HashSet;
 
 /**
  * TODO: comment this!
@@ -38,70 +40,72 @@
 public abstract class AbstractComponentTagGenerator implements ComponentTagGenerator
 {
 
-    public void writeImports(PrettyWriter out,
+	public void writeImports(PrettyWriter out,
                              SourceTemplate template,
                              String packageName,
                              String fullSuperclassName,
                              String superclassName,
                              ComponentBean component)
     {
-        String componentFullClass = component.getComponentClass();
-
-        Set imports = new TreeSet();
-
-      Iterator properties = component.properties();
-      properties = new FilteredIterator(properties, new TagAttributeFilter());
-      //if (properties.hasNext())
-      //{
-      //  imports.add(componentFullClass);
-      //}
-
-      // TODO: remove these imports
-      // FIXME: Actually last 2 can be kept when not abstract
-      //imports.add("javax.faces.component.UIComponent");
-
-      // superclassName is fully qualified if it collides
-      // with the generated class name and should not be
-      // imported when such a collision would occur
-      if (!superclassName.equals(fullSuperclassName))
-        imports.add(fullSuperclassName);
-
-      while (properties.hasNext())
-      {
-        PropertyBean property = (PropertyBean)properties.next();
-
-        String   propertyClass = property.getPropertyClass();
-        String[] propertyClassParams = property.getPropertyClassParameters();
-
-        if (propertyClass != null && property.isLiteralOnly())
-        {
-          // Import the property class only if only litterals are supported
-          // otherwise the class will be a String inside the tag to support
-          // ValueBinding
-          imports.add(propertyClass);
-        }
-
-
-
-        // TODO: restore import and make reference to
-        //       ConstantMethodBinding relative rather
-        //       than absolute
-        //if (property.isMethodBinding() &&
-        //    isStringMethodBindingReturnType(property))
-        //{
-        //  imports.add("org.apache.myfaces.trinidadinternal.taglib.ConstantMethodBinding");
-        //}
-      }
+		Collection components = new HashSet();
+		components.add(component);
+		writeImports(out, template, packageName, fullSuperclassName, superclassName, components);
+    }
 
-        addSpecificImports(imports, component);
 
-      // do not import implicit!
-      imports.removeAll(Util.PRIMITIVE_TYPES);
+	public void writeImports(PrettyWriter out, SourceTemplate template, String packageName,
String fullSuperclassName,
+							 String superclassName, Collection components) {
+		Set imports = new TreeSet();
+
+		for (Iterator lIterator = components.iterator(); lIterator.hasNext();) {
+			ComponentBean component = (ComponentBean) lIterator.next();
+			Iterator properties = component.properties();
+			properties = new FilteredIterator(properties, new TagAttributeFilter());
+
+			// TODO: remove these imports
+			// FIXME: Actually last 2 can be kept when not abstract
+			//imports.add("javax.faces.component.UIComponent");
+
+			// superclassName is fully qualified if it collides
+			// with the generated class name and should not be
+			// imported when such a collision would occur
+			if (!superclassName.equals(fullSuperclassName)) {
+				imports.add(fullSuperclassName);
+			}
+
+			while (properties.hasNext()) {
+				PropertyBean property = (PropertyBean) properties.next();
+
+				String propertyClass = property.getPropertyClass();
+				String[] propertyClassParams = property.getPropertyClassParameters();
+
+				if (propertyClass != null && property.isLiteralOnly()) {
+					// Import the property class only if only litterals are supported
+					// otherwise the class will be a String inside the tag to support
+					// ValueBinding
+					imports.add(propertyClass);
+				}
+
+				// TODO: restore import and make reference to
+				//       ConstantMethodBinding relative rather
+				//       than absolute
+				//if (property.isMethodBinding() &&
+				//    isStringMethodBindingReturnType(property))
+				//{
+				//  imports.add("org.apache.myfaces.trinidadinternal.taglib.ConstantMethodBinding");
+				//}
+				addSpecificImports(imports, component);
+
+			}
+
+		}
+		// do not import implicit!
+		imports.removeAll(Util.PRIMITIVE_TYPES);
 
-      GeneratorHelper.writeImports(out, packageName, imports);
-    }
+		GeneratorHelper.writeImports(out, packageName, imports);
+	}
 
-    public void writeClassBegin(PrettyWriter out,
+	public void writeClassBegin(PrettyWriter out,
                                 String className,
                                 String superclassName,
                                 ComponentBean component,
@@ -194,14 +198,38 @@
         }
     }
 
-    public void writeReleaseMethod(PrettyWriter out,
+
+	public void writePropertyMembers(PrettyWriter out, Collection components) throws IOException
{
+		for (Iterator lIterator = components.iterator(); lIterator.hasNext();) {
+			writePropertyMembers(out, (ComponentBean) lIterator.next());
+		}
+	}
+
+	public void writeReleaseMethod(PrettyWriter out,
                                    ComponentBean component) throws IOException
     {
-        Iterator properties = component.properties();
-        properties = new FilteredIterator(properties, new TagAttributeFilter());
-        // TODO: remove special case for UIXFormTag
-        if (properties.hasNext() ||
-                "org.apache.myfaces.trinidadinternal.taglib.UIXFormTag".equals(component.getTagClass()))
+		Collection components = new HashSet();
+		components.add(component);
+		writeReleaseMethod(out, components);
+    }
+
+
+	public void writeReleaseMethod(PrettyWriter out, Collection components) throws IOException
{
+		Collection all = new HashSet();
+		boolean special = false;
+		for (Iterator lIterator = components.iterator(); lIterator.hasNext();) {
+			ComponentBean component = (ComponentBean) lIterator.next();
+			Iterator prop = component.properties();
+			// TODO: remove special case for UIXFormTag
+			special |= "org.apache.myfaces.trinidadinternal.taglib.UIXFormTag".equals(component.getTagClass());
+			while (prop.hasNext()) {
+				all.add(prop.next());
+			}
+		}		
+
+		Iterator properties = all.iterator();
+		properties = new FilteredIterator(properties, new TagAttributeFilter());
+        if (properties.hasNext() || special)
         {
             out.println();
             out.println("@Override");
@@ -219,11 +247,7 @@
             out.unindent();
             out.println("}");
         }
-    }
-
-    public abstract void writeSetPropertiesMethod(PrettyWriter out,
-                                         String componentClass,
-                                         ComponentBean component) throws IOException;
+	}
 
     protected void addSpecificImports(
             Set imports,

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/ComponentTagGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/ComponentTagGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/ComponentTagGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/ComponentTagGenerator.java
Sat Nov 25 09:41:05 2006
@@ -20,6 +20,7 @@
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.ComponentBean;
 
 import java.io.IOException;
+import java.util.Collection;
 
 /**
  * Generates tag classes
@@ -34,9 +35,16 @@
                                   String componentClass,
                                   ComponentBean component) throws IOException;
 
+    void writeSetPropertiesMethod(PrettyWriter out,
+                                  String componentClass,
+                                  Collection components) throws IOException;
+
     void writeReleaseMethod(PrettyWriter out,
                             ComponentBean component) throws IOException;
 
+    void writeReleaseMethod(PrettyWriter out,
+                            Collection components) throws IOException;
+
     void writeGetComponentType(PrettyWriter out,
                             ComponentBean component) throws IOException;
 
@@ -45,4 +53,7 @@
 
     void writePropertyMembers(PrettyWriter out,
                             ComponentBean component) throws IOException;
+
+    void writePropertyMembers(PrettyWriter out,
+                            Collection components) throws IOException;
 }

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesComponentTagGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesComponentTagGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesComponentTagGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesComponentTagGenerator.java
Sat Nov 25 09:41:05 2006
@@ -26,6 +26,8 @@
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.Collection;
+import java.util.HashSet;
 
 /**
  * Component tag generator for myfaces
@@ -74,7 +76,11 @@
                 if (_is12)
                 {
                     imports.add("javax.el.MethodExpression");
-                }
+					if (GeneratorHelper.isActionListener(property, _is12))
+					{
+						imports.add("javax.faces.event.MethodExpressionActionListener");
+					}
+				}
                 else
                 {
                     imports.add("javax.faces.el.MethodBinding");
@@ -84,7 +90,7 @@
             {
                 imports.add("javax.el.MethodExpression");
             }
-            else if (GeneratorHelper.isActionListener(property))
+            else if (GeneratorHelper.isActionListener(property, _is12))
             {
                 imports.add("javax.faces.event.MethodExpressionActionListener");
             }
@@ -124,7 +130,25 @@
                                          String componentClass,
                                          ComponentBean component) throws IOException
     {
-        Iterator properties = component.properties();
+        Collection components = new HashSet();
+		components.add(component);
+		writeSetPropertiesMethod(out, componentClass, components);
+    }
+
+
+	public void writeSetPropertiesMethod(PrettyWriter out, String componentClass, Collection
components)
+			throws IOException {
+
+		Collection all = new HashSet();
+		for (Iterator lIterator = components.iterator(); lIterator.hasNext();) {
+			ComponentBean component = (ComponentBean) lIterator.next();
+			Iterator prop = component.properties();
+			while (prop.hasNext()) {
+				all.add(prop.next());
+			}
+		}
+
+		Iterator properties = all.iterator();
         properties = new FilteredIterator(properties, new TagAttributeFilter());
 
         out.println();
@@ -141,10 +165,9 @@
         writeSetPropertyMethodBody(out, componentClass, properties);
         out.unindent();
         out.println("}");
-        //    }
-    }
+	}
 
-    protected void writeSetPropertyMethodBody(PrettyWriter out,
+	protected void writeSetPropertyMethodBody(PrettyWriter out,
                                               String componentClass,
                                               Iterator properties) throws IOException
     {
@@ -257,12 +280,19 @@
 
         if (_is12)
         {
-            out.println("if (" + propVar + " != null)");
+			out.println("if (" + propVar + " != null)");
+			out.println("{");
             out.indent();
-            out.println("bean.setProperty(" + componentClass + "." + propKey + ", " +
-                    "new MethodExpressionMethodBinding(" + propVar + "));");
+			if (GeneratorHelper.isActionListener(property, _is12))
+			{
+				out.println("comp.addActionListener(new MethodExpressionActionListener(" + propVar +
"));");
+			} else {
+				out.println("bean.setProperty(" + componentClass + "." + propKey + ", " +
+						"new MethodExpressionMethodBinding(" + propVar + "));");
+			}
             out.unindent();
-        }
+			out.println("}");
+		}
         else
         {
             MethodSignatureBean signature = property.getMethodBindingSignature();
@@ -338,7 +368,7 @@
         {
             out.println("comp.setActionExpression("+propVar+");");
         }
-        else if (GeneratorHelper.isActionListener(property))
+        else if (GeneratorHelper.isActionListener(property, _is12))
         {
             out.println("comp.addActionListener(new MethodExpressionActionListener(" + propVar
+ "));");
         }

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
Sat Nov 25 09:41:05 2006
@@ -26,6 +26,8 @@
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.Collection;
+import java.util.HashSet;
 
 /**
  * TODO: comment this!
@@ -164,7 +166,24 @@
                                          String componentClass,
                                          ComponentBean component) throws IOException
     {
-        Iterator properties = component.properties();
+        Collection components = new HashSet();
+		components.add(component);
+		writeSetPropertiesMethod(out, componentClass, components);
+    }
+
+
+	public void writeSetPropertiesMethod(PrettyWriter out, String componentClass, Collection
components)
+			throws IOException {
+		Collection all = new HashSet();
+		for (Iterator lIterator = components.iterator(); lIterator.hasNext();) {
+			ComponentBean component = (ComponentBean) lIterator.next();
+			Iterator prop = component.properties();
+			while (prop.hasNext()) {
+				all.add(prop.next());
+			}
+		}
+
+		Iterator properties = all.iterator();
         properties = new FilteredIterator(properties, new TagAttributeFilter());
         // TODO: only write out setProperties when properties exist
         //    if (properties.hasNext())
@@ -182,9 +201,9 @@
         out.unindent();
         out.println("}");
         //    }
-    }
+	}
 
-    protected void writeSetPropertyMethodBody(PrettyWriter out,
+	protected void writeSetPropertyMethodBody(PrettyWriter out,
                                               String componentClass,
                                               Iterator properties) throws IOException
     {

Modified: incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/util/SourceTemplate.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/util/SourceTemplate.java?view=diff&rev=479151&r1=479150&r2=479151
==============================================================================
--- incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/util/SourceTemplate.java
(original)
+++ incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/util/SourceTemplate.java
Sat Nov 25 09:41:05 2006
@@ -27,6 +27,7 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+import java.util.Collection;
 
 public class SourceTemplate
 {
@@ -100,8 +101,15 @@
       if (line == null)
         throw new EOFException("File " + _file + " ended prematurely");
 
-      if (line.trim().startsWith(_IGNORE_PREFIX))
-        continue;
+      if (line.trim().startsWith(_IGNORE_PREFIX)){
+		  if (line.trim().startsWith(_IGNORE_PREFIX2)){
+			  String method = line.trim().substring(_IGNORE_PREFIX2.length()).trim();
+			  if (method.length() > 0 ){
+				  _ignoreMethods.add(method);
+			  }
+		  }
+		  continue;
+	  }
 
       if (line.equals("}"))
         break;
@@ -146,13 +154,19 @@
     return buffer.toString();
   }
 
-  private File           _file;
+	public Collection getIgnoreMethods() {
+		return _ignoreMethods;
+	}
+
+	private File           _file;
   private BufferedReader _reader;
   private Set            _imports = new HashSet();
   private Map            _fqcnMap = new HashMap();
   private Set            _implements = new HashSet();
   private Map            _substitutions = new HashMap();
+  private Set            _ignoreMethods = new HashSet();
 
   // Magic syntax indicating "please ignore this line"
   static private final String _IGNORE_PREFIX = "/**/";
+  static private final String _IGNORE_PREFIX2 = "/**///";
 }



Mime
View raw message