You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2017/09/17 18:05:26 UTC

[myfaces-trinidad-maven] 02/04: Merge revision 1026414

This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch 1.2.12.1-branch
in repository https://gitbox.apache.org/repos/asf/myfaces-trinidad-maven.git

commit 7f8dfcb796301ad911360869094ad083f8f03c72
Author: Andrew Robinson <ar...@apache.org>
AuthorDate: Thu Nov 4 23:08:56 2010 +0000

    Merge revision 1026414
---
 maven-faces-plugin/pom.xml                         |  2 +-
 .../plugin/faces/AbstractFacesMojo.java            | 28 +++++++----
 .../component/AbstractComponentGenerator.java      | 15 ++++++
 .../component/TrinidadComponentGenerator.java      |  2 +
 .../taglib/AbstractComponentTagGenerator.java      | 47 ++++++++++++++----
 .../taglib/TrinidadComponentTagGenerator.java      | 57 +++++++++++++---------
 .../plugin/faces/parse/ComponentBean.java          | 44 ++++++++---------
 .../plugin/faces/parse/FacesConfigBean.java        | 51 ++++++++++++++++---
 .../plugin/faces/parse/PropertyBean.java           | 19 ++++++++
 maven-i18n-plugin/pom.xml                          |  2 +-
 maven-javacc-plugin/pom.xml                        |  2 +-
 maven-javascript-plugin/pom.xml                    |  2 +-
 maven-jdev-plugin/pom.xml                          |  2 +-
 maven-tagdoc-plugin/pom.xml                        |  2 +-
 maven-xrts-plugin/pom.xml                          |  2 +-
 pom.xml                                            |  2 +-
 16 files changed, 198 insertions(+), 81 deletions(-)

diff --git a/maven-faces-plugin/pom.xml b/maven-faces-plugin/pom.xml
index b40adca..5102bc7 100644
--- a/maven-faces-plugin/pom.xml
+++ b/maven-faces-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId> 
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/AbstractFacesMojo.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/AbstractFacesMojo.java
index f40fd26..6aabc6f 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/AbstractFacesMojo.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/AbstractFacesMojo.java
@@ -19,10 +19,12 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.net.URLConnection;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -56,10 +58,13 @@ import org.apache.myfaces.trinidadbuild.plugin.faces.util.ConverterFilter;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.Util;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.ValidatorFilter;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.XIncludeFilter;
+
 import org.codehaus.plexus.util.FileUtils;
+
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 
+
 abstract public class AbstractFacesMojo extends AbstractMojo
 {
   protected List getCompileDependencyResources(
@@ -117,7 +122,7 @@ abstract public class AbstractFacesMojo extends AbstractMojo
       } catch (MalformedURLException e) {
         getLog().error("", e);
       }
-      return urls;  
+      return urls;
     }
     else
     {
@@ -218,7 +223,7 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     {
       return _DEFAULT_LICENSE_HEADER;
     }
-    
+
     if (!licenseHeaderFile.exists())
     {
       throw new MojoExecutionException("License header file not found: "
@@ -232,12 +237,12 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     }
 
     StringBuffer sb = new StringBuffer();
-    
+
     try
     {
       BufferedReader reader = new BufferedReader(new FileReader(licenseHeaderFile));
       String line;
-      
+
       while ((line = reader.readLine()) != null)
       {
         sb.append(line+"\n");
@@ -247,17 +252,17 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     {
       throw new MojoExecutionException("Exception reading license header file", e);
     }
-    
+
     return sb.toString();
   }
-  
+
   protected String getLicenseHeader() throws MojoExecutionException
   {
     if (_licenseHeader == null)
     {
       _licenseHeader = readLicenseHeader();
     }
-    
+
     return _licenseHeader;
   }
 
@@ -286,6 +291,9 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     {
       processIndexEntry(index[i]);
     }
+
+    // Perform any post-processing
+    _facesConfig.performPostProcessing();
   }
 
   protected void processIndexEntry(
@@ -408,7 +416,7 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     protected boolean accept(
       ComponentBean component)
     {
-      String componentType = component.getComponentType();        
+      String componentType = component.getComponentType();
       return (componentType.startsWith(_typePrefix));
     }
      private final String _typePrefix;
@@ -498,7 +506,7 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     private final String _packageContains;
   }
 
-  
+
 
   static final protected class ComponentTagFilter extends ComponentFilter
   {
@@ -680,4 +688,4 @@ abstract public class AbstractFacesMojo extends AbstractMojo
     " * under the License.\n" +
     "*/\n";
 }
-  
+
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
index 58de9be..a06aa85 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
@@ -583,6 +583,11 @@ public abstract class AbstractComponentGenerator implements ComponentGenerator
   {
     Iterator properties = component.properties();
     properties = new FilteredIterator(properties, new NonVirtualFilter());
+    if (isAccessorMethodFinal())
+    {
+      // Do not generate property methods if they are final and the properties are overrides
+      properties = new FilteredIterator(properties, new NonOverriddenFilter());
+    }
     while (properties.hasNext())
     {
       PropertyBean property = (PropertyBean) properties.next();
@@ -1046,6 +1051,16 @@ public abstract class AbstractComponentGenerator implements ComponentGenerator
     }
   }
 
+  protected static class NonOverriddenFilter
+    extends PropertyFilter
+  {
+    protected boolean accept(
+      PropertyBean property)
+    {
+      return (!property.isOverride());
+    }
+  }
+
   static protected String resolveType(
       String className)
   {
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/TrinidadComponentGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/TrinidadComponentGenerator.java
index a1b9970..58b3274 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/TrinidadComponentGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/TrinidadComponentGenerator.java
@@ -94,6 +94,8 @@ public class TrinidadComponentGenerator extends AbstractComponentGenerator
     //  component property keys
     Iterator properties = component.properties();
     properties = new FilteredIterator(properties, new NonVirtualFilter());
+    properties = new FilteredIterator(properties, new NonOverriddenFilter());
+
     while (properties.hasNext())
     {
       PropertyBean property = (PropertyBean) properties.next();
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
index 433ae8c..6ce9669 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractComponentTagGenerator.java
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,21 +18,25 @@
  */
 package org.apache.myfaces.trinidadbuild.plugin.faces.generator.taglib;
 
+import java.io.IOException;
+
+import java.lang.reflect.Modifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
 import org.apache.myfaces.trinidadbuild.plugin.faces.generator.GeneratorHelper;
 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.parse.PropertyBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.FilteredIterator;
+import org.apache.myfaces.trinidadbuild.plugin.faces.util.PropertyFilter;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.SourceTemplate;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.Util;
 
-import java.io.IOException;
-import java.lang.reflect.Modifier;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.TreeSet;
 
 /**
  * TODO: comment this!
@@ -197,6 +201,11 @@ public abstract class AbstractComponentTagGenerator implements ComponentTagGener
   {
     Iterator properties = component.properties();
     properties = new FilteredIterator(properties, new TagAttributeFilter());
+    if (isSetterMethodFinal())
+    {
+      // Do not generate property methods if they are final and the properties are overrides
+      properties = new FilteredIterator(properties, new NonOverriddenFilter());
+    }
 
     while (properties.hasNext())
     {
@@ -206,6 +215,15 @@ public abstract class AbstractComponentTagGenerator implements ComponentTagGener
     }
   }
 
+  /**
+   * Whether the tag setter methods have the final modifier
+   *
+   * @return true if the setter methods are final
+   */
+  protected boolean isSetterMethodFinal()
+  {
+    return false;
+  }
 
   public void writePropertyMembers(PrettyWriter out, Collection components) throws IOException
   {
@@ -243,6 +261,8 @@ public abstract class AbstractComponentTagGenerator implements ComponentTagGener
 
     Iterator properties = all.iterator();
     properties = new FilteredIterator(properties, new TagAttributeFilter());
+    properties = new FilteredIterator(properties, new NonOverriddenFilter());
+
     if (properties.hasNext() || special)
     {
       out.println();
@@ -292,4 +312,13 @@ public abstract class AbstractComponentTagGenerator implements ComponentTagGener
                                                      String componentClass,
                                                      Iterator properties) throws IOException;
 
+  protected static class NonOverriddenFilter
+    extends PropertyFilter
+  {
+    protected boolean accept(
+      PropertyBean property)
+    {
+      return (!property.isOverride());
+    }
+  }
 }
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
index ae3f791..468d6cd 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,6 +18,13 @@
  */
 package org.apache.myfaces.trinidadbuild.plugin.faces.generator.taglib;
 
+import java.io.IOException;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
 import org.apache.myfaces.trinidadbuild.plugin.faces.generator.GeneratorHelper;
 import org.apache.myfaces.trinidadbuild.plugin.faces.io.PrettyWriter;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.ComponentBean;
@@ -26,11 +33,6 @@ import org.apache.myfaces.trinidadbuild.plugin.faces.parse.PropertyBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.FilteredIterator;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.Util;
 
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
 
 /**
  * TODO: comment this!
@@ -135,11 +137,11 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
       {
         imports.add(propertyClass);
       }
-      
+
       if (property.isNoOp())
       {
         imports.add("org.apache.myfaces.trinidad.logging.TrinidadLogger");
-      }  
+      }
     }
   }
 
@@ -179,10 +181,10 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
     out.indent();
     if (property.isNoOp())
     {
-      out.println("TrinidadLogger log = TrinidadLogger.createTrinidadLogger(this.getClass());");  
+      out.println("TrinidadLogger log = TrinidadLogger.createTrinidadLogger(this.getClass());");
       out.print("log.warning(\"property \\\"" + propName + "\\\" setter is ");
       out.print("using a no-op implementation. Used in extreme cases when the property value, beyond the default value, results in unwanted behavior.");
-      out.println("\");");  
+      out.println("\");");
     }
     else
     {
@@ -218,6 +220,7 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
 
     Iterator properties = all.iterator();
     properties = new FilteredIterator(properties, new TagAttributeFilter());
+    properties = new FilteredIterator(properties, new NonOverriddenFilter());
 
     if (properties.hasNext())
     {
@@ -250,6 +253,12 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
     }
   }
 
+  @Override
+  protected boolean isSetterMethodFinal()
+  {
+    return true;
+  }
+
   private void _writeSetPropertiesCase(
       PrettyWriter out,
       String componentClass,
@@ -258,7 +267,7 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
     String propName = property.getPropertyName();
     String propClass = property.getPropertyClass();
     String propVar = "_" + propName;
-   
+
     if (property.isVirtual())
     {
       _writeVirtualSetMethod(out, componentClass, propName);
@@ -291,16 +300,16 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
     {
       _writeSetColor(out, componentClass, propName, false);
     }
-    else if (GeneratorHelper.isKnownTypeList(propClass,  
+    else if (GeneratorHelper.isKnownTypeList(propClass,
                                     property.getPropertyClassParameters()))
     {
-      _writeSetKnownTypeList (out, componentClass, propName, 
+      _writeSetKnownTypeList (out, componentClass, propName,
                      property.getPropertyClassParameters()[0]);
     }
-    else if (GeneratorHelper.isKnownTypeSet(propClass,  
+    else if (GeneratorHelper.isKnownTypeSet(propClass,
                                     property.getPropertyClassParameters()))
     {
-      _writeSetKnownTypeSet (out, componentClass, propName, 
+      _writeSetKnownTypeSet (out, componentClass, propName,
                      property.getPropertyClassParameters()[0]);
     }
     else if (GeneratorHelper.isConverter(propClass))
@@ -869,17 +878,17 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
   {
     String propKey = Util.getConstantNameFromProperty(propName, "_KEY");
     String propVar = "_" + propName;
-    
+
     String propClass = Util.getClassFromFullClass(propFullClass);
     String boxedClass = Util.getBoxedClass(propClass);
 
     System.out.println ("_writeSetList: propFullClass = " + propFullClass +
-                        " propClass= " + propClass + 
+                        " propClass= " + propClass +
                         " boxedClass=" + boxedClass);
     if (_is12)
     {
-      out.println("set" + boxedClass + "ListProperty" + 
-                  "(bean, " + componentClass + "." + propKey + 
+      out.println("set" + boxedClass + "ListProperty" +
+                  "(bean, " + componentClass + "." + propKey +
                   ", " + propVar + ");");
     }
     else
@@ -926,17 +935,17 @@ public class TrinidadComponentTagGenerator extends AbstractComponentTagGenerator
   {
     String propKey = Util.getConstantNameFromProperty(propName, "_KEY");
     String propVar = "_" + propName;
-    
+
     String propClass = Util.getClassFromFullClass(propFullClass);
     String boxedClass = Util.getBoxedClass(propClass);
 
     System.out.println ("_writeSetSet: propFullClass = " + propFullClass +
-                        " propClass= " + propClass + 
+                        " propClass= " + propClass +
                         " boxedClass=" + boxedClass);
     if (_is12)
     {
-      out.println("set" + boxedClass + "SetProperty" + 
-                  "(bean, " + componentClass + "." + propKey + 
+      out.println("set" + boxedClass + "SetProperty" +
+                  "(bean, " + componentClass + "." + propKey +
                   ", " + propVar + ");");
     }
     else
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/ComponentBean.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/ComponentBean.java
index c67a6ed..31a72c4 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/ComponentBean.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/ComponentBean.java
@@ -722,9 +722,9 @@ public class ComponentBean extends AbstractTagBean
    * Parses the string of satisfied contracts into a String array
    * using space as the separator between values.
    * In the component metadata file, the satisfied contracts are noted
-   * with satisfied-contracts markup.  As an example, af:popup 
+   * with satisfied-contracts markup.  As an example, af:popup
    * (oracle.adf.view.rich.component.rich.RichPopup) supports
-   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder, 
+   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder,
    * oracle-adf-richnotewindow-holder, and oracle-adf-richpanelwindow-holder
    * contracts.  The satisfied contracts of a given component are matched
    * with the required ancestor contracts of other components to determine
@@ -741,14 +741,14 @@ public class ComponentBean extends AbstractTagBean
   /**
    * Sets the possible values for this property.
    * In the component metadata file, the satisfied contracts are noted
-   * with satisfied-contracts markup.  As an example, af:popup 
+   * with satisfied-contracts markup.  As an example, af:popup
    * (oracle.adf.view.rich.component.rich.RichPopup) supports
-   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder, 
+   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder,
    * oracle-adf-richnotewindow-holder, and oracle-adf-richpanelwindow-holder
    * contracts.  The satisfied contracts of a given component are matched
    * with the required ancestor contracts of other components to determine
    * if a component hierarchy is legally assembled.
-   * 
+   *
    * @param satisfiedContracts  a string array of the satisfied contracts
    */
   public void setSatisfiedContracts(
@@ -760,22 +760,22 @@ public class ComponentBean extends AbstractTagBean
   /**
    * Returns an iterator of the satisfied contracts for this component.
    * In the component metadata file, the satisfied contracts are noted
-   * with satisfied-contracts markup.  As an example, af:popup 
+   * with satisfied-contracts markup.  As an example, af:popup
    * (oracle.adf.view.rich.component.rich.RichPopup) supports
-   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder, 
+   * oracle-adf-richmenu-holder, oracle-adf-richdialog-holder,
    * oracle-adf-richnotewindow-holder, and oracle-adf-richpanelwindow-holder
    * contracts.  The satisfied contracts of a given component are matched
    * with the required ancestor contracts of other components to determine
    * if a component hierarchy is legally assembled.
-   * 
-   * @return  a java.util.Iterator of Strings, where each string is the name of a 
+   *
+   * @return  a java.util.Iterator of Strings, where each string is the name of a
    *          satisfied contract
    */
   public Iterator<String> satisfiedContracts()
   {
     return _satisfiedContracts.iterator();
-  }  
-  
+  }
+
   /**
    * Returns true if this component has any satisfied contracts.
    *
@@ -786,17 +786,17 @@ public class ComponentBean extends AbstractTagBean
   {
     return (!_satisfiedContracts.isEmpty());
   }
-  
+
   /**
    * Parses the string of required ancestor contracts into a String array
    * using space as the separator between values.
    * In the component metadata file, the required ancestors are noted
    * with required-ancestor-contracts markup. This indicates that an
-   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts 
+   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts
    * metadata matching the required-ancestor-contracts metadata of this tag.
    * As an example, af:dialog
    * (oracle.adf.view.rich.component.rich.RichDialog) lists
-   * oracle-adf-richdialog-holder as a required ancestor contract, and 
+   * oracle-adf-richdialog-holder as a required ancestor contract, and
    * af:popup (oracle.adf.view.rich.component.rich.RichPopup) lists
    * oracle-adf-richdialog-holder as a satisified contract.
    *
@@ -812,14 +812,14 @@ public class ComponentBean extends AbstractTagBean
    * Sets the possible values for this property.
    * In the component metadata file, the required ancestors are noted
    * with required-ancestor-contracts markup. This indicates that an
-   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts 
+   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts
    * metadata matching the required-ancestor-contracts metadata of this tag.
    * As an example, af:dialog
    * (oracle.adf.view.rich.component.rich.RichDialog) lists
-   * oracle-adf-richdialog-holder as a required ancestor contract, and 
+   * oracle-adf-richdialog-holder as a required ancestor contract, and
    * af:popup (oracle.adf.view.rich.component.rich.RichPopup) lists
    * oracle-adf-richdialog-holder as a satisified contract.
-   * 
+   *
    * @param requiredAncestorContracts  a string array of the required ancestor contracts
    */
   public void setRequiredAncestorContracts(
@@ -832,21 +832,21 @@ public class ComponentBean extends AbstractTagBean
    * Returns the required ancestor contracts for this component.
    * In the component metadata file, the required ancestors are noted
    * with required-ancestor-contracts markup. This indicates that an
-   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts 
+   * ancestor (e.g. parent or grandparent) tag must be have satisfied-contracts
    * metadata matching the required-ancestor-contracts metadata of this tag.
    * As an example, af:dialog
    * (oracle.adf.view.rich.component.rich.RichDialog) lists
-   * oracle-adf-richdialog-holder as a required ancestor contract, and 
+   * oracle-adf-richdialog-holder as a required ancestor contract, and
    * af:popup (oracle.adf.view.rich.component.rich.RichPopup) lists
    * oracle-adf-richdialog-holder as a satisified contract.
-   * 
+   *
    * @return  a java.util.Iterator of strings, where each string is the name
    *          of a required ancestor contract
    */
   public Iterator<String> requiredAncestorContracts()
   {
     return _requiredAncestorContracts.iterator();
-  }  
+  }
 
   /**
    * Returns true if this component has any required ancestor contracts.
@@ -858,7 +858,7 @@ public class ComponentBean extends AbstractTagBean
   {
     return (!_requiredAncestorContracts.isEmpty());
   }
-  
+
   /**
    * Adds a Java Language class modifier to the tag class.
    *
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigBean.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigBean.java
index 5e75106..38f8bed 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigBean.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigBean.java
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -19,11 +19,13 @@
 package org.apache.myfaces.trinidadbuild.plugin.faces.parse;
 
 import java.net.URL;
+
 import java.util.Iterator;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.logging.Logger;
 
+
 /**
  * FacesConfigBean is a Java representation of the faces-config XML element.
  */
@@ -296,7 +298,7 @@ public class FacesConfigBean extends ObjectBean
   {
     return _currentResource;
   }
-  
+
   public URL setCurrentResource(URL resource)
   {
     URL _cur = _currentResource;
@@ -304,11 +306,44 @@ public class FacesConfigBean extends ObjectBean
     return _cur;
   }
 
-  private Map _converters = new TreeMap();
-  private Map _validators = new TreeMap();
-  private Map _components = new TreeMap();
-  private Map _events = new TreeMap();
-  private Map _renderKits = new TreeMap();
+  /**
+   * Performs any processing of the meta-data that must be performed after all of the
+   * meta-data has been collected. This includes processing on super-class data and other
+   * inter-related computations that cannot be done as the data is being parsed.
+   */
+  public void performPostProcessing()
+  {
+    _identifyOverriddenProperies();
+  }
+
+  private void _identifyOverriddenProperies()
+  {
+    for (ComponentBean component : _components.values())
+    {
+      ComponentBean parentComponent = component.resolveSupertype();
+      if (parentComponent == null)
+      {
+        continue;
+      }
+
+      for (Iterator<PropertyBean> iter = component.properties(); iter.hasNext();)
+      {
+        PropertyBean property = iter.next();
+        PropertyBean parentProperty = parentComponent.findProperty(property.getPropertyName(),
+                                        true);
+        if (parentProperty != null)
+        {
+          property.setOverride(true);
+        }
+      }
+    }
+  }
+
+  private Map<String, ConverterBean> _converters = new TreeMap<String, ConverterBean>();
+  private Map<String, ValidatorBean> _validators = new TreeMap<String, ValidatorBean>();
+  private Map<String, ComponentBean> _components = new TreeMap<String, ComponentBean>();
+  private Map<String, EventBean> _events = new TreeMap<String, EventBean>();
+  private Map<String, RenderKitBean> _renderKits = new TreeMap<String, RenderKitBean>();
   private URL _currentResource = null;
 
   static private final Logger _LOG = Logger.getLogger(FacesConfigBean.class.getName());
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java
index 2f7c6f0..1372f71 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java
@@ -524,6 +524,24 @@ public class PropertyBean extends AttributeBean
     return _valueExpression;
   }
 
+  /**
+   * Set if this property is overridding a property in an ancestor class.
+   * @param override if overridding a property
+   */
+  public void setOverride(boolean override)
+  {
+    this._override = override;
+  }
+
+  /**
+   * Get if this property is overridding a property in an ancestor class.
+   * @return If the property is an overide
+   */
+  public boolean isOverride()
+  {
+    return _override;
+  }
+
   private String  _aliasOf;
   private String  _jspPropertyName;
   private String  _fieldPropertyName;
@@ -537,6 +555,7 @@ public class PropertyBean extends AttributeBean
   private boolean _enum;
   private boolean _useMaxTime;
   private boolean _hidden;
+  private boolean _override;
   private String[] _propertyValues;
   private String[] _unsupportedAgents = _EMPTY_ARRAY;
   private String[] _unsupportedRenderKits = _EMPTY_ARRAY;
diff --git a/maven-i18n-plugin/pom.xml b/maven-i18n-plugin/pom.xml
index d0ea7e0..cfb7aef 100644
--- a/maven-i18n-plugin/pom.xml
+++ b/maven-i18n-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-javacc-plugin/pom.xml b/maven-javacc-plugin/pom.xml
index 90c6b93..641f2fd 100644
--- a/maven-javacc-plugin/pom.xml
+++ b/maven-javacc-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-javascript-plugin/pom.xml b/maven-javascript-plugin/pom.xml
index 3036373..e1da814 100644
--- a/maven-javascript-plugin/pom.xml
+++ b/maven-javascript-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-jdev-plugin/pom.xml b/maven-jdev-plugin/pom.xml
index bb9227b..de91396 100644
--- a/maven-jdev-plugin/pom.xml
+++ b/maven-jdev-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-tagdoc-plugin/pom.xml b/maven-tagdoc-plugin/pom.xml
index b935bfd..90f8228 100644
--- a/maven-tagdoc-plugin/pom.xml
+++ b/maven-tagdoc-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/maven-xrts-plugin/pom.xml b/maven-xrts-plugin/pom.xml
index e72967f..baefdda 100644
--- a/maven-xrts-plugin/pom.xml
+++ b/maven-xrts-plugin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.myfaces.trinidadbuild</groupId>
     <artifactId>maven-plugin-parent</artifactId>
-    <version>1.2.12</version>
+    <version>1.2.12.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
diff --git a/pom.xml b/pom.xml
index e01fa93..583d73e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
 
   <groupId>org.apache.myfaces.trinidadbuild</groupId>
   <artifactId>maven-plugin-parent</artifactId>
-  <version>1.2.12</version>
+  <version>1.2.12.1-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Apache Trinidad Maven Plugin Parent</name>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@myfaces.apache.org" <co...@myfaces.apache.org>.