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 <[EMAIL PROTECTED]> 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, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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 = "/**///";
> }
>
>
>


Reply via email to