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 = "/**///";
> > }
> >
> >
> >
>
>