You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-dev@incubator.apache.org by Adam Winer <aw...@gmail.com> on 2006/11/26 23:38:13 UTC

Re: 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/

Bruno,

Any idea how/when we're going to merge these changes back?
(Excellent work, by the way!)  I'd really like to keep us all
on one branch of the code, instead of getting some huge
code divergence.

-- Adam




On 11/25/06, baranda@apache.org <ba...@apache.org> wrote:
>
> 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 = "/**///";
> }
>
>
>

Re: When I commit to my branch, it goes to trunk

Posted by Bruno Aranda <br...@gmail.com>.
Maybe you only had switched the root dir or a few dirs of the whole
structure, and when you commit outside these you commit to the trunk
(you could check with 'svn info' for that dir'). I normally do as
Matthias though, checking out in a clean place and working there...

Cheers,

Bruno

On 28/11/06, Jeanne Waldman <je...@oracle.com> wrote:
> I just checked the branch out and retried and that works.
> I don't know how it got in the state that it is in. I wonder if something
> is wrong with the Switch function.
>
> - Jeanne
>
> Matthias Wessendorf wrote:
>
> > hrm.
> >
> > my commits from branch go never to trunk.
> > What I do is checking the branch out and working on those files.
> > Perhaps the *relocate* or what ever is sorta wrong in your case?
> >
> > -M
> >
> > On 11/28/06, Jeanne Waldman <je...@oracle.com> wrote:
> >
> >> I'm wondering what I'm doing wrong.
> >> I created a branch, but when I commit to it, it commits to trunk.
> >> This is the branch.
> >>
> >> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal
> >>
> >>
> >> I think I'm on the branch, cuz I say Repro-Browser, and this branch
> >> shows up.
> >> I made sure I did a Switch to this branch after I created it.
> >> When I say Commit, at the top of the Enter Log Message box it says:
> >> Commit to:
> >> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal
> >>
> >>
> >> But... I see the commit in Trunk, not my branch.
> >>
> >> Does anyone know what I'm doing wrong?
> >>
> >> Thanks!
> >> Jeanne
> >>
> >>
> >>
> >>
> >
> >
>
>

Re: When I commit to my branch, it goes to trunk

Posted by Jeanne Waldman <je...@oracle.com>.
I just checked the branch out and retried and that works.
I don't know how it got in the state that it is in. I wonder if something
is wrong with the Switch function.

- Jeanne

Matthias Wessendorf wrote:

> hrm.
>
> my commits from branch go never to trunk.
> What I do is checking the branch out and working on those files.
> Perhaps the *relocate* or what ever is sorta wrong in your case?
>
> -M
>
> On 11/28/06, Jeanne Waldman <je...@oracle.com> wrote:
>
>> I'm wondering what I'm doing wrong.
>> I created a branch, but when I commit to it, it commits to trunk.
>> This is the branch.
>>
>> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal 
>>
>>
>> I think I'm on the branch, cuz I say Repro-Browser, and this branch
>> shows up.
>> I made sure I did a Switch to this branch after I created it.
>> When I say Commit, at the top of the Enter Log Message box it says:
>> Commit to:
>> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal 
>>
>>
>> But... I see the commit in Trunk, not my branch.
>>
>> Does anyone know what I'm doing wrong?
>>
>> Thanks!
>> Jeanne
>>
>>
>>
>>
>
>


Re: When I commit to my branch, it goes to trunk

Posted by Matthias Wessendorf <ma...@apache.org>.
hrm.

my commits from branch go never to trunk.
What I do is checking the branch out and working on those files.
Perhaps the *relocate* or what ever is sorta wrong in your case?

-M

On 11/28/06, Jeanne Waldman <je...@oracle.com> wrote:
> I'm wondering what I'm doing wrong.
> I created a branch, but when I commit to it, it commits to trunk.
> This is the branch.
>
> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal
>
> I think I'm on the branch, cuz I say Repro-Browser, and this branch
> shows up.
> I made sure I did a Switch to this branch after I created it.
> When I say Commit, at the top of the Enter Log Message box it says:
> Commit to:
> https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal
>
> But... I see the commit in Trunk, not my branch.
>
> Does anyone know what I'm doing wrong?
>
> Thanks!
> Jeanne
>
>
>
>


-- 
Matthias Wessendorf
http://tinyurl.com/fmywh

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

When I commit to my branch, it goes to trunk

Posted by Jeanne Waldman <je...@oracle.com>.
I'm wondering what I'm doing wrong.
I created a branch, but when I commit to it, it commits to trunk.
This is the branch.

https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal

I think I'm on the branch, cuz I say Repro-Browser, and this branch 
shows up.
I made sure I did a Switch to this branch after I created it.
When I say Commit, at the top of the Enter Log Message box it says:
Commit to:
https://svn.apache.org/repos/asf/incubator/adffaces/branches/jwaldman-portal

But... I see the commit in Trunk, not my branch.

Does anyone know what I'm doing wrong?

Thanks!
Jeanne




Re: Re: 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/

Posted by Bruno Aranda <br...@gmail.com>.
Ah ok, I will merge with that branch....

Cheers,

Bruno

On 28/11/06, Adam Winer <aw...@gmail.com> wrote:
> Bruno,
>
> I'm afraid that I've made things too confusing with the branch
> names. The current 1.2 branch isn't the obvious one - it's actually:
>
> https://svn.apache.org/repos/asf/incubator/adffaces/branches/faces-1_2-061113
>
> Sorry about the confusion...  could you merge into that branch?  I should
> really rename the old faces-1_2 branch to something less tempting.
>
> -- Adam
>
>
>
> On 11/27/06, Bruno Aranda <br...@gmail.com> wrote:
> > Ok, I have just merged the development in that branch with the current
> > 12 branch for the plugin. Trinidad seems to build fine for me. It
> > shouldn't be affected in any way as the changes are mostly to
> > autogenerate the components for MyFaces.
> >
> > The branch https://svn.apache.org/repos/asf/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin
> > could be removed now and it shouldn't be used for further development.
> >
> > Cheers!
> >
> > Bruno
> >
> > On 27/11/06, Bruno Aranda <br...@gmail.com> wrote:
> > > Thanks Adam. There is one patch by Andreas Berger that remains to be
> > > applied to the branch. After that, hopefully today, I will test that
> > > trinidad builds well with the branched version and then I will try to
> > > merge it with the current faces 1.2 branch. I agree with you that we
> > > have to avoid a huge code divergence but there were a big amount of
> > > changes, hence the creation of the branch.
> > >
> > > Cheers,
> > >
> > > Bruno
> > >
> > > On 26/11/06, Adam Winer <aw...@gmail.com> wrote:
> > > > Bruno,
> > > >
> > > > Any idea how/when we're going to merge these changes back?
> > > > (Excellent work, by the way!)  I'd really like to keep us all
> > > > on one branch of the code, instead of getting some huge
> > > > code divergence.
> > > >
> > > > -- Adam
> > > >
> > > >
> > > >
> > > >
> > > > On 11/25/06, baranda@apache.org <ba...@apache.org> wrote:
> > > > >
> > > > > 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 = "/**///";
> > > > > }
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> >
>

Re: Re: 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/

Posted by Adam Winer <aw...@gmail.com>.
Bruno,

I'm afraid that I've made things too confusing with the branch
names. The current 1.2 branch isn't the obvious one - it's actually:

https://svn.apache.org/repos/asf/incubator/adffaces/branches/faces-1_2-061113

Sorry about the confusion...  could you merge into that branch?  I should
really rename the old faces-1_2 branch to something less tempting.

-- Adam



On 11/27/06, Bruno Aranda <br...@gmail.com> wrote:
> Ok, I have just merged the development in that branch with the current
> 12 branch for the plugin. Trinidad seems to build fine for me. It
> shouldn't be affected in any way as the changes are mostly to
> autogenerate the components for MyFaces.
>
> The branch https://svn.apache.org/repos/asf/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin
> could be removed now and it shouldn't be used for further development.
>
> Cheers!
>
> Bruno
>
> On 27/11/06, Bruno Aranda <br...@gmail.com> wrote:
> > Thanks Adam. There is one patch by Andreas Berger that remains to be
> > applied to the branch. After that, hopefully today, I will test that
> > trinidad builds well with the branched version and then I will try to
> > merge it with the current faces 1.2 branch. I agree with you that we
> > have to avoid a huge code divergence but there were a big amount of
> > changes, hence the creation of the branch.
> >
> > Cheers,
> >
> > Bruno
> >
> > On 26/11/06, Adam Winer <aw...@gmail.com> wrote:
> > > Bruno,
> > >
> > > Any idea how/when we're going to merge these changes back?
> > > (Excellent work, by the way!)  I'd really like to keep us all
> > > on one branch of the code, instead of getting some huge
> > > code divergence.
> > >
> > > -- Adam
> > >
> > >
> > >
> > >
> > > On 11/25/06, baranda@apache.org <ba...@apache.org> wrote:
> > > >
> > > > 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 = "/**///";
> > > > }
> > > >
> > > >
> > > >
> > >
> > >
> >
>

Re: 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/

Posted by Bruno Aranda <br...@gmail.com>.
Ok, I have just merged the development in that branch with the current
12 branch for the plugin. Trinidad seems to build fine for me. It
shouldn't be affected in any way as the changes are mostly to
autogenerate the components for MyFaces.

The branch https://svn.apache.org/repos/asf/incubator/adffaces/branches/myfaces-1_2-maven-faces-plugin
could be removed now and it shouldn't be used for further development.

Cheers!

Bruno

On 27/11/06, Bruno Aranda <br...@gmail.com> wrote:
> Thanks Adam. There is one patch by Andreas Berger that remains to be
> applied to the branch. After that, hopefully today, I will test that
> trinidad builds well with the branched version and then I will try to
> merge it with the current faces 1.2 branch. I agree with you that we
> have to avoid a huge code divergence but there were a big amount of
> changes, hence the creation of the branch.
>
> Cheers,
>
> Bruno
>
> On 26/11/06, Adam Winer <aw...@gmail.com> wrote:
> > Bruno,
> >
> > Any idea how/when we're going to merge these changes back?
> > (Excellent work, by the way!)  I'd really like to keep us all
> > on one branch of the code, instead of getting some huge
> > code divergence.
> >
> > -- Adam
> >
> >
> >
> >
> > On 11/25/06, baranda@apache.org <ba...@apache.org> wrote:
> > >
> > > 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 = "/**///";
> > > }
> > >
> > >
> > >
> >
> >
>

Re: 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/

Posted by Bruno Aranda <br...@gmail.com>.
Thanks Adam. There is one patch by Andreas Berger that remains to be
applied to the branch. After that, hopefully today, I will test that
trinidad builds well with the branched version and then I will try to
merge it with the current faces 1.2 branch. I agree with you that we
have to avoid a huge code divergence but there were a big amount of
changes, hence the creation of the branch.

Cheers,

Bruno

On 26/11/06, Adam Winer <aw...@gmail.com> wrote:
> Bruno,
>
> Any idea how/when we're going to merge these changes back?
> (Excellent work, by the way!)  I'd really like to keep us all
> on one branch of the code, instead of getting some huge
> code divergence.
>
> -- Adam
>
>
>
>
> On 11/25/06, baranda@apache.org <ba...@apache.org> wrote:
> >
> > 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 = "/**///";
> > }
> >
> >
> >
>
>