You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ba...@apache.org on 2006/11/27 21:01:51 UTC

svn commit: r479743 [1/2] - in /myfaces: core/branches/jsf12/api/src/main/java-templates/javax/faces/component/ core/branches/jsf12/api/src/main/java/javax/faces/component/ core/branches/jsf12/api/src/main/java/javax/faces/event/ core/branches/jsf12/bu...

Author: baranda
Date: Mon Nov 27 12:01:47 2006
New Revision: 479743

URL: http://svn.apache.org/viewvc?view=rev&rev=479743
Log:
Patch  XML_NR3.patch for MYFACES-1444 applied. This patch adds most of the XML files to autogenerate the UI components for faces 1.2. Thanks to Andreas Berger

Added:
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIInputTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UINamingContainerTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectBooleanTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectManyTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectOneTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIViewRootTemplate.java
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesImmediateProperty.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesLableProperty.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesRequiredProperty.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_MessageProperties.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIColumn.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIInput.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessage.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessages.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UINamingContainer.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIPanel.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIParameter.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UISelectBoolean.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UISelectItem.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UISelectItems.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UISelectMany.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UISelectOne.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIViewRoot.xml
Removed:
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIInput.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIMessage.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIMessages.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UINamingContainer.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIPanel.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIParameter.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UISelectBoolean.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UISelectItem.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UISelectItems.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UISelectMany.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UISelectOne.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/UIViewRoot.java
Modified:
    myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UICommandTemplate.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionActionListener.java
    myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_CommandProperties.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_ComponentProperties.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_DataProperties.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIData.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIOutput.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/events/javax/faces/Action.xml
    myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/events/javax/faces/ValueChange.xml
    myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagUtils.java
    myfaces/shared/branches/3_0_0/core/src/main/java/org/apache/myfaces/shared/taglib/core/ConvertDateTimeTagBase.java

Modified: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UICommandTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UICommandTemplate.java?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UICommandTemplate.java (original)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UICommandTemplate.java Mon Nov 27 12:01:47 2006
@@ -60,6 +60,7 @@
         return new _MethodExpressionToMethodBinding(actionExpression);
     }
 
+    @Override
     public void broadcast(FacesEvent event)
             throws AbortProcessingException
     {
@@ -83,6 +84,7 @@
         }
     }
 
+    @Override
     public void queueEvent(FacesEvent event)
     {
         if (event != null && event instanceof ActionEvent)

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIInputTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIInputTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIInputTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIInputTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,365 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+import javax.faces.validator.Validator;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.ValueBinding;
+import javax.faces.context.FacesContext;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.render.Renderer;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.application.FacesMessage;
+
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UIInputTemplate extends UIOutput implements EditableValueHolder
+{
+    public static final String CONVERSION_MESSAGE_ID = "javax.faces.component.UIInput.CONVERSION";
+    public static final String REQUIRED_MESSAGE_ID = "javax.faces.component.UIInput.REQUIRED";
+    public static final String UPDATE_MESSAGE_ID = "javax.faces.component.UIInput.UPDATE";
+
+    /**
+     * Store the specified object as the "local value" of this component.
+     * The value-binding named "value" (if any) is ignored; the object is
+     * only stored locally on this component. During the "update model"
+     * phase, if there is a value-binding named "value" then this local
+     * value will be stored via that value-binding and the "local value"
+     * reset to null.
+     */
+    /**///setValue
+    public void setValue(Object value)
+    {
+        setLocalValueSet(true);
+        super.setValue(value);
+    }
+
+    /**
+     * Set the "submitted value" of this component from the relevant data
+     * in the current servet request object.
+     * <p>
+     * If this component is not rendered, then do nothing; no output would
+     * have been sent to the client so no input is expected.
+     * <p>
+     * Invoke the inherited functionality, which typically invokes the
+     * renderer associated with this component to extract and set this
+     * component's "submitted value".
+     * <p>
+     * If this component is marked "immediate", then immediately apply
+     * validation to the submitted value found. On error, call context
+     * method "renderResponse" which will force processing to leap to
+     * the "render response" phase as soon as the "decode" step has
+     * completed for all other components.
+     */
+    public void processDecodes(FacesContext context)
+    {
+        if (context == null) throw new NullPointerException("context");
+        if (!isRendered()) return;
+        super.processDecodes(context);
+        if (isImmediate())
+        {
+            try
+            {
+                validate(context);
+            }
+            catch (RuntimeException e)
+            {
+                context.renderResponse();
+                throw e;
+            }
+            if (!isValid())
+            {
+                context.renderResponse();
+            }
+        }
+    }
+
+    public void processValidators(FacesContext context)
+    {
+        if (context == null) throw new NullPointerException("context");
+        if (!isRendered()) return;
+
+        super.processValidators(context);
+
+        if (!isImmediate())
+        {
+            try
+            {
+                validate(context);
+            }
+            catch (RuntimeException e)
+            {
+                context.renderResponse();
+                throw e;
+            }
+            if (!isValid())
+            {
+                context.renderResponse();
+            }
+        }
+    }
+
+    public void processUpdates(FacesContext context)
+    {
+        if (context == null) throw new NullPointerException("context");
+        if (!isRendered()) return;
+
+        super.processUpdates(context);
+
+        try
+        {
+            updateModel(context);
+        }
+        catch (RuntimeException e)
+        {
+            context.renderResponse();
+            throw e;
+        }
+        if (!isValid())
+        {
+            context.renderResponse();
+        }
+    }
+
+    public void decode(FacesContext context)
+    {
+        //We (re)set to valid, so that component automatically gets (re)validated
+        setValid(true);
+        super.decode(context);
+    }
+
+    public void broadcast(FacesEvent event)
+            throws AbortProcessingException
+    {
+        if (!(event instanceof ValueChangeEvent))
+        {
+            throw new IllegalArgumentException("FacesEvent of class " + event.getClass().getName() + " not supported by UIInput");
+        }
+
+        // invoke standard listeners attached to this component first
+        super.broadcast(event);
+
+        // invoke the single listener defined directly on the component
+        MethodBinding valueChangeListenerBinding = getValueChangeListener();
+        if (valueChangeListenerBinding != null)
+        {
+            try
+            {
+                valueChangeListenerBinding.invoke(getFacesContext(),
+                                                  new Object[]{event});
+            }
+            catch (EvaluationException e)
+            {
+                Throwable cause = e.getCause();
+                if (cause != null && cause instanceof AbortProcessingException)
+                {
+                    throw (AbortProcessingException)cause;
+                }
+                else
+                {
+                    throw e;
+                }
+            }
+        }
+    }
+
+    public void updateModel(FacesContext context)
+    {
+        if (!isValid()) return;
+        if (!isLocalValueSet()) return;
+        ValueBinding vb = getValueBinding("value");
+        if (vb == null) return;
+        try
+        {
+            vb.setValue(context, getLocalValue());
+            setValue(null);
+            setLocalValueSet(false);
+        }
+        catch (EvaluationException ee)
+        {
+            String exceptionMessage = ee.getMessage();
+            if (exceptionMessage == null)
+            {
+                _MessageUtils.addErrorMessage(context, this,
+                        CONVERSION_MESSAGE_ID, new Object[] { getId() });
+            }
+            else
+            {
+                _MessageUtils.addErrorMessage(context, this, ee);
+            }
+        }
+        catch (RuntimeException e)
+        {
+        	//Object[] args = {getId()};
+            context.getExternalContext().log(e.getMessage(), e);
+            _MessageUtils.addErrorMessage(context, this,CONVERSION_MESSAGE_ID,new Object[]{getId()});
+            setValid(false);
+        }
+    }
+
+    protected void validateValue(FacesContext context,Object convertedValue)
+    {
+        boolean empty = convertedValue == null ||
+                        (convertedValue instanceof String
+                         && ((String)convertedValue).length() == 0);
+
+        if (isRequired() && empty)
+        {
+            _MessageUtils.addErrorMessage(context, this, REQUIRED_MESSAGE_ID,new Object[]{getId()});
+            setValid(false);
+            return;
+        }
+
+        if (!empty)
+        {
+            _ComponentUtils.callValidators(context, this, convertedValue);
+        }
+
+    }
+
+    /**
+     * Determine whether the new value is valid, and queue a ValueChangeEvent
+     * if necessary.
+     * <p>
+     * The "submitted value" is converted to the necessary type; conversion
+     * failure is reported as an error and validation processing terminates
+     * for this component. See documentation for method getConvertedValue
+     * for details on the conversion process.
+     * <p>
+     * Any validators attached to this component are then run, passing
+     * the converted value.
+     * <p>
+     * The old value of this component is then fetched (possibly involving
+     * the evaluation of a value-binding expression, ie invoking a method
+     * on a user object). The old value is compared to the new validated
+     * value, and if they are different then a ValueChangeEvent is queued
+     * for later processing.
+     * <p>
+     * On successful completion of this method:
+     * <ul>
+     * <li> isValid() is true
+     * <li> isLocalValueSet() is true
+     * <li> submittedValue is reset to null
+     * <li> a ValueChangeEvent is queued if the new value != old value
+     * </ul>
+     */
+    public void validate(FacesContext context)
+    {
+        if (context == null) throw new NullPointerException("context");
+        Object submittedValue = getSubmittedValue();
+        if (submittedValue == null) return;
+
+        Object convertedValue = getConvertedValue(context, submittedValue);
+
+        if (!isValid()) return;
+
+        validateValue(context, convertedValue);
+
+        if (!isValid()) return;
+
+        Object previousValue = getValue();
+        setValue(convertedValue);
+        setSubmittedValue(null);
+        if (compareValues(previousValue, convertedValue))
+        {
+            queueEvent(new ValueChangeEvent(this, previousValue, convertedValue));
+        }
+    }
+
+    /**
+     * Convert the provided object to the desired value.
+     * <p>
+     * If there is a renderer for this component, then call the renderer's
+     * getConvertedValue method. While this can of course be implemented in
+     * any way the renderer desires, it typically performs exactly the same
+     * processing that this method would have done anyway (ie that described
+     * below for the no-renderer case).
+     * <p>
+     * Otherwise:
+     * <ul>
+     * <li>If the submittedValue is not a String then just return the
+     *   submittedValue unconverted.
+     * <li>If there is no "value" value-binding then just return the
+     *   submittedValue unconverted.
+     * <li>Use introspection to determine the type of the target
+     *   property specified by the value-binding, and then use
+     *   Application.createConverter to find a converter that can
+     *   map from String to the required type. Apply the converter
+     *   to the submittedValue and return the result.
+     * </ul>
+     */
+    protected Object getConvertedValue(FacesContext context, Object submittedValue)
+    {
+        try
+        {
+            Renderer renderer = getRenderer(context);
+            if (renderer != null)
+            {
+                return renderer.getConvertedValue(context, this, submittedValue);
+            }
+            else if (submittedValue instanceof String)
+            {
+                Converter converter = _SharedRendererUtils.findUIOutputConverter(context, this);
+                if (converter != null)
+                {
+                    return converter.getAsObject(context, this, (String)submittedValue);
+                }
+            }
+        }
+        catch (ConverterException e)
+        {
+            FacesMessage facesMessage = e.getFacesMessage();
+            if (facesMessage != null)
+            {
+                context.addMessage(getClientId(context), facesMessage);
+            }
+            else
+            {
+                _MessageUtils.addErrorMessage(context, this, CONVERSION_MESSAGE_ID,new Object[]{getId()});
+            }
+            setValid(false);
+        }
+        return submittedValue;
+    }
+
+
+
+    protected boolean compareValues(Object previous,
+                                      Object value)
+    {
+        return previous==null?(value!=null):(!previous.equals(value));
+    }
+
+
+    /**
+     * @since 1.2
+     */
+    public void resetValue()
+    {
+        setValue(null);
+        setSubmittedValue(null);
+        setLocalValueSet(false);
+        setValid(true);
+    }
+}

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UINamingContainerTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UINamingContainerTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UINamingContainerTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UINamingContainerTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,27 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UINamingContainerTemplate
+        extends UIComponentBase
+        implements NamingContainer
+{
+}

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectBooleanTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectBooleanTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectBooleanTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectBooleanTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,102 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+import javax.faces.el.ValueBinding;
+import javax.el.ValueExpression;
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UISelectBooleanTemplate extends UIInput
+{
+
+    public void setSelected(boolean selected)
+    {
+        setValue(Boolean.valueOf(selected));
+    }
+
+    public boolean isSelected()
+    {
+        Boolean value = (Boolean)getSubmittedValue();
+        if( value == null )
+            value = (Boolean)getValue();
+
+        return value != null ? value.booleanValue() : false;
+    }
+
+    /**
+     * @deprecated Use getValueExpression instead
+     */
+    public ValueBinding getValueBinding(String name)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (name.equals("selected"))
+        {
+            return super.getValueBinding("value");
+        }
+        else
+        {
+            return super.getValueBinding(name);
+        }
+    }
+
+    /**
+     * @deprecated Use setValueExpression instead
+     */
+    public void setValueBinding(String name,
+                                ValueBinding binding)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (name.equals("selected"))
+        {
+            super.setValueBinding("value", binding);
+        }
+        else
+        {
+            super.setValueBinding(name, binding);
+        }
+    }
+
+    public ValueExpression getValueExpression(String name)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (name.equals("selected"))
+        {
+            return super.getValueExpression("value");
+        }
+        else
+        {
+            return super.getValueExpression(name);
+        }
+    }
+
+    public void setValueExpression(String name,
+                                   ValueExpression binding)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (name.equals("selected"))
+        {
+            super.setValueExpression("value", binding);
+        }
+        else
+        {
+            super.setValueExpression(name, binding);
+        }
+    }    
+}
\ No newline at end of file

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectManyTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectManyTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectManyTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectManyTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,413 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
+import javax.faces.el.ValueBinding;
+import javax.faces.render.Renderer;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UISelectManyTemplate
+        extends UIInput
+{
+    public static final String INVALID_MESSAGE_ID = "javax.faces.component.UISelectMany.INVALID";
+
+
+    public Object[] getSelectedValues()
+    {
+        return (Object[]) getValue();
+    }
+
+    public void setSelectedValues(Object[] selectedValues)
+    {
+        setValue(selectedValues);
+    }
+
+    /**
+     * @deprecated Use getValueExpression instead
+     */
+    public ValueBinding getValueBinding(String name)
+    {
+        if (name == null)
+        {
+            throw new NullPointerException("name");
+        }
+        if (name.equals("selectedValues"))
+        {
+            return super.getValueBinding("value");
+        } else
+        {
+            return super.getValueBinding(name);
+        }
+    }
+
+    /**
+     * @deprecated Use setValueExpression instead
+     */
+    public void setValueBinding(String name, ValueBinding binding)
+    {
+        if (name == null)
+        {
+            throw new NullPointerException("name");
+        }
+        if (name.equals("selectedValues"))
+        {
+            super.setValueBinding("value", binding);
+        } else
+        {
+            super.setValueBinding(name, binding);
+        }
+    }
+
+    public ValueExpression getValueExpression(String name)
+    {
+        if (name == null)
+        {
+            throw new NullPointerException("name");
+        }
+        if (name.equals("selectedValues"))
+        {
+            return super.getValueExpression("value");
+        } else
+        {
+            return super.getValueExpression(name);
+        }
+    }
+
+    public void setValueExpression(String name, ValueExpression binding)
+    {
+        if (name == null)
+        {
+            throw new NullPointerException("name");
+        }
+        if (name.equals("selectedValues"))
+        {
+            super.setValueExpression("value", binding);
+        } else
+        {
+            super.setValueExpression(name, binding);
+        }
+    }
+
+    /**
+     * @return true if Objects are different (!)
+     */
+    protected boolean compareValues(Object previous, Object value)
+    {
+        if (previous == null)
+        {
+            // one is null, the other not
+            return value != null;
+        } else if (value == null)
+        {
+            // one is null, the other not
+            return previous != null;
+        } else
+        {
+            if (previous instanceof Object[] && value instanceof Object[])
+            {
+                return compareObjectArrays((Object[]) previous,
+                        (Object[]) value);
+            } else if (previous instanceof List && value instanceof List)
+            {
+                return compareLists((List) previous, (List) value);
+            } else if (previous.getClass().isArray()
+                    && value.getClass().isArray())
+            {
+                return comparePrimitiveArrays(previous, value);
+            } else
+            {
+                //Objects have different classes
+                return true;
+            }
+        }
+    }
+
+    private boolean compareObjectArrays(Object[] previous, Object[] value)
+    {
+        int length = value.length;
+        if (previous.length != length)
+        {
+            //different length
+            return true;
+        }
+
+        boolean[] scoreBoard = new boolean[length];
+        for (int i = 0; i < length; i++)
+        {
+            Object p = previous[i];
+            boolean found = false;
+            for (int j = 0; j < length; j++)
+            {
+                if (scoreBoard[j] == false)
+                {
+                    Object v = value[j];
+                    if ((p == null && v == null)
+                            || (p != null && v != null && p.equals(v)))
+                    {
+                        scoreBoard[j] = true;
+                        found = true;
+                        break;
+                    }
+                }
+            }
+            if (!found)
+            {
+                return true; //current element of previous array not found in new array
+            }
+        }
+
+        return false; // arrays are identical
+    }
+
+    private boolean compareLists(List previous, List value)
+    {
+        int length = value.size();
+        if (previous.size() != length)
+        {
+            //different length
+            return true;
+        }
+
+        boolean[] scoreBoard = new boolean[length];
+        for (int i = 0; i < length; i++)
+        {
+            Object p = previous.get(i);
+            boolean found = false;
+            for (int j = 0; j < length; j++)
+            {
+                if (scoreBoard[j] == false)
+                {
+                    Object v = value.get(j);
+                    if ((p == null && v == null)
+                            || (p != null && v != null && p.equals(v)))
+                    {
+                        scoreBoard[j] = true;
+                        found = true;
+                        break;
+                    }
+                }
+            }
+            if (!found)
+            {
+                return true; //current element of previous List not found in new List
+            }
+        }
+
+        return false; // Lists are identical
+    }
+
+    private boolean comparePrimitiveArrays(Object previous, Object value)
+    {
+        int length = Array.getLength(value);
+        if (Array.getLength(previous) != length)
+        {
+            //different length
+            return true;
+        }
+
+        boolean[] scoreBoard = new boolean[length];
+        for (int i = 0; i < length; i++)
+        {
+            Object p = Array.get(previous, i);
+            boolean found = false;
+            for (int j = 0; j < length; j++)
+            {
+                if (scoreBoard[j] == false)
+                {
+                    Object v = Array.get(value, j);
+                    if ((p == null && v == null)
+                            || (p != null && v != null && p.equals(v)))
+                    {
+                        scoreBoard[j] = true;
+                        found = true;
+                        break;
+                    }
+                }
+            }
+            if (!found)
+            {
+                return true; //current element of previous array not found in new array
+            }
+        }
+
+        return false; // arrays are identical
+    }
+
+    protected void validateValue(FacesContext context, Object convertedValue)
+    {
+        Iterator itemValues = _createItemValuesIterator(convertedValue);
+
+        // verify that iterator was successfully created for convertedValue type
+        if (itemValues == null)
+        {
+            _MessageUtils.addErrorMessage(context, this,
+                    INVALID_MESSAGE_ID,
+                    new Object[]{getId()});
+            setValid(false);
+            return;
+        }
+
+        boolean hasValues = itemValues.hasNext();
+
+        // if UISelectMany is required, then there must be some selected values
+        if (isRequired() && !hasValues)
+        {
+            _MessageUtils.addErrorMessage(context, this, REQUIRED_MESSAGE_ID,
+                    new Object[]{getId()});
+            setValid(false);
+            return;
+        }
+
+        // run the validators only if there are item values to validate
+        if (hasValues)
+        {
+            _ComponentUtils.callValidators(context, this, convertedValue);
+        }
+
+        if (isValid() && hasValues)
+        {
+            // all selected values must match to the values of the available options
+
+            _SelectItemsUtil._ValueConverter converter = new _SelectItemsUtil._ValueConverter()
+            {
+                public Object getConvertedValue(FacesContext context, String value)
+                {
+                    Object convertedValue = UISelectMany.this.getConvertedValue(context, new String[]{value});
+                    if (convertedValue instanceof Collection)
+                    {
+                        Iterator iter = ((Collection) convertedValue).iterator();
+                        if (iter.hasNext())
+                        {
+                            return iter.next();
+                        }
+                        return null;
+                    }
+                    return ((Object[]) convertedValue)[0];
+                }
+            };
+
+            Collection items = new ArrayList();
+            for (Iterator iter = new _SelectItemsIterator(this); iter.hasNext();)
+            {
+                items.add(iter.next());
+            }
+            while (itemValues.hasNext())
+            {
+                Object itemValue = itemValues.next();
+
+                if (!_SelectItemsUtil.matchValue(context, itemValue,
+                        items.iterator(), converter))
+                {
+                    _MessageUtils.addErrorMessage(context, this,
+                            INVALID_MESSAGE_ID,
+                            new Object[]{getId()});
+                    setValid(false);
+                    return;
+                }
+            }
+        }
+    }
+
+    /**
+     * First part is identical to super.validate except the empty condition.
+     * Second part: iterate through UISelectItem and UISelectItems and check
+     * current values against these items
+     */
+    public void validate(FacesContext context)
+    {
+        // TODO : Setting the submitted value to null in the super class causes a bug, if set to null, you'll get the following error :
+        // java.lang.NullPointerException at org.apache.myfaces.renderkit._SharedRendererUtils.getConvertedUISelectManyValue(_SharedRendererUtils.java:118)
+        super.validate(context);
+    }
+
+    protected Object getConvertedValue(FacesContext context,
+                                       Object submittedValue)
+    {
+        try
+        {
+            Renderer renderer = getRenderer(context);
+            if (renderer != null)
+            {
+                return renderer
+                        .getConvertedValue(context, this,
+                                submittedValue);
+            } else if (submittedValue == null)
+            {
+                return null;
+            } else if (submittedValue instanceof String[])
+            {
+                return _SharedRendererUtils.getConvertedUISelectManyValue(
+                        context, this, (String[]) submittedValue);
+            }
+        }
+        catch (ConverterException e)
+        {
+            FacesMessage facesMessage = e.getFacesMessage();
+            if (facesMessage != null)
+            {
+                context.addMessage(getClientId(context), facesMessage);
+            } else
+            {
+                _MessageUtils.addErrorMessage(context, this,
+                        CONVERSION_MESSAGE_ID, new Object[]{getId()});
+            }
+            setValid(false);
+        }
+        return submittedValue;
+    }
+
+    private Iterator _createItemValuesIterator(Object convertedValue)
+    {
+        if (convertedValue == null)
+        {
+            return Collections.EMPTY_LIST.iterator();
+        } else
+        {
+            Class valueClass = convertedValue.getClass();
+            if (valueClass.isArray())
+            {
+                return new _PrimitiveArrayIterator(convertedValue);
+            } else if (convertedValue instanceof Object[])
+            {
+                Object[] values = (Object[]) convertedValue;
+                return Arrays.asList(values).iterator();
+            } else if (convertedValue instanceof List)
+            {
+                List values = (List) convertedValue;
+                return values.iterator();
+            } else
+            {
+                // unsupported type for iteration
+                return null;
+            }
+        }
+    }
+}

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectOneTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectOneTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectOneTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UISelectOneTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,61 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UISelectOneTemplate extends UIInput
+{
+    public static final String INVALID_MESSAGE_ID = "javax.faces.component.UISelectOne.INVALID";
+
+    /**
+     * Verify that the result of converting the newly submitted value is
+     * <i>equal</i> to the value property of one of the child SelectItem
+     * objects. If this is not true, a validation error is reported.
+     *
+     * @see javax.faces.component.UIInput#validateValue(javax.faces.context.FacesContext,java.lang.Object)
+     */
+    protected void validateValue(FacesContext context, Object value)
+    {
+        super.validateValue(context, value);
+
+        if (!isValid() || value == null)
+        {
+            return;
+        }
+
+        _SelectItemsUtil._ValueConverter converter = new _SelectItemsUtil._ValueConverter()
+        {
+            public Object getConvertedValue(FacesContext context, String value)
+            {
+                return UISelectOne.this.getConvertedValue(context, value);
+            }
+        };
+
+        // selected value must match to one of the available options
+        if (!_SelectItemsUtil.matchValue(context, value, new _SelectItemsIterator(this), converter))
+        {
+            _MessageUtils.addErrorMessage(context, this, INVALID_MESSAGE_ID,
+                    new Object[]{getId()});
+            setValid(false);
+        }
+    }
+}

Added: myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIViewRootTemplate.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIViewRootTemplate.java?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIViewRootTemplate.java (added)
+++ myfaces/core/branches/jsf12/api/src/main/java-templates/javax/faces/component/UIViewRootTemplate.java Mon Nov 27 12:01:47 2006
@@ -0,0 +1,279 @@
+/*
+* Copyright 2004-2006 The Apache Software Foundation.
+*
+* Licensed 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 KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.faces.component;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.el.ValueExpression;
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Locale;
+
+/**
+ * @author Andreas Berger (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ * @since 1.2
+ */
+public class UIViewRootTemplate
+        extends UIComponentBase
+{
+    private static final int ANY_PHASE_ORDINAL = PhaseId.ANY_PHASE.getOrdinal();
+    public static final String UNIQUE_ID_PREFIX = "_id";
+
+    // todo: is it right to save the state of _events and _phaseListeners?
+    /**/ // removes the generated methods so only state saving stays
+    /**///getEvents
+    /**///setEvents
+    /**///getUniqueIdCounter
+    /**///setUniqueIdCounter
+    /**/private List<FacesEvent> _events = null;
+    /**/private long _uniqueIdCounter = 0;
+    /**/private Locale _locale;
+
+    public void queueEvent(FacesEvent event)
+    {
+        if (event == null)
+        {
+            throw new NullPointerException("event");
+        }
+        if (_events == null)
+        {
+            _events = new ArrayList<FacesEvent>();
+        }
+        _events.add(event);
+    }
+
+    private void _broadcastForPhase(PhaseId phaseId)
+    {
+        if (_events == null)
+        {
+            return;
+        }
+
+        boolean abort = false;
+
+        int phaseIdOrdinal = phaseId.getOrdinal();
+        for (ListIterator<FacesEvent> listiterator = _events.listIterator(); listiterator.hasNext();)
+        {
+            FacesEvent event = listiterator.next();
+            int ordinal = event.getPhaseId().getOrdinal();
+            if (ordinal == ANY_PHASE_ORDINAL ||
+                    ordinal == phaseIdOrdinal)
+            {
+                UIComponent source = event.getComponent();
+                try
+                {
+                    source.broadcast(event);
+                }
+                catch (AbortProcessingException e)
+                {
+                    // abort event processing
+                    // Page 3-30 of JSF 1.1 spec: "Throw an AbortProcessingException, to tell the JSF implementation
+                    //  that no further broadcast of this event, or any further events, should take place."
+                    abort = true;
+                    break;
+                } finally
+                {
+
+                    try
+                    {
+                        listiterator.remove();
+                    }
+                    catch (ConcurrentModificationException cme)
+                    {
+                        int eventIndex = listiterator.previousIndex();
+                        _events.remove(eventIndex);
+                        listiterator = _events.listIterator();
+                    }
+                }
+            }
+        }
+
+        if (abort)
+        {
+            // TODO: abort processing of any event of any phase or just of any event of the current phase???
+            clearEvents();
+        }
+    }
+
+
+    private void clearEvents()
+    {
+        _events = null;
+    }
+
+
+    public void processDecodes(FacesContext context)
+    {
+        if (context == null)
+        {
+            throw new NullPointerException("context");
+        }
+        super.processDecodes(context);
+        _broadcastForPhase(PhaseId.APPLY_REQUEST_VALUES);
+        if (context.getRenderResponse() || context.getResponseComplete())
+        {
+            clearEvents();
+        }
+    }
+
+    public void processValidators(FacesContext context)
+    {
+        if (context == null)
+        {
+            throw new NullPointerException("context");
+        }
+        super.processValidators(context);
+        _broadcastForPhase(PhaseId.PROCESS_VALIDATIONS);
+        if (context.getRenderResponse() || context.getResponseComplete())
+        {
+            clearEvents();
+        }
+    }
+
+    public void processUpdates(FacesContext context)
+    {
+        if (context == null)
+        {
+            throw new NullPointerException("context");
+        }
+        super.processUpdates(context);
+        _broadcastForPhase(PhaseId.UPDATE_MODEL_VALUES);
+        if (context.getRenderResponse() || context.getResponseComplete())
+        {
+            clearEvents();
+        }
+    }
+
+    public void processApplication(FacesContext context)
+    {
+        if (context == null)
+        {
+            throw new NullPointerException("context");
+        }
+        _broadcastForPhase(PhaseId.INVOKE_APPLICATION);
+        if (context.getRenderResponse() || context.getResponseComplete())
+        {
+            clearEvents();
+        }
+    }
+
+    public void encodeBegin(FacesContext context)
+            throws java.io.IOException
+    {
+        clearEvents();
+        super.encodeBegin(context);
+    }
+
+    /* Provides a unique id for this component instance.
+    */
+    public String createUniqueId()
+    {
+        ExternalContext extCtx = FacesContext.getCurrentInstance().getExternalContext();
+        return extCtx.encodeNamespace(UNIQUE_ID_PREFIX + _uniqueIdCounter++);
+    }
+
+    /**
+     * Gets The locale for this ViewRoot.
+     *
+     * @return the new locale value
+     */
+    /**///getLocale
+    public Locale getLocale()
+    {
+        if (_locale != null)
+        {
+            return _locale;
+        }
+        ValueExpression expression = getValueExpression("locale");
+        FacesContext facesContext = getFacesContext();
+        if (expression == null)
+        {
+            return facesContext.getApplication().getViewHandler().calculateLocale(facesContext);
+        }
+        Object locale = expression.getValue(getFacesContext().getELContext());
+        if (locale == null)
+        {
+            return facesContext.getApplication().getViewHandler().calculateLocale(facesContext);
+        }
+        if (locale instanceof Locale)
+        {
+            return (Locale) locale;
+        } else if (locale instanceof String)
+        {
+            return getLocale((String) locale);
+        } else
+        {
+            //TODO: not specified!?
+            throw new IllegalArgumentException("locale binding");
+        }
+    }
+
+
+    /**
+     * Create Locale from String representation.
+     * <p/>
+     * http://java.sun.com/j2se/1.4.2/docs/api/java/util/Locale.html
+     *
+     * @param locale locale representation in String.
+     * @return Locale instance
+     */
+    private static Locale getLocale(String locale)
+    {
+        int cnt = 0;
+        int pos = 0;
+        int prev = 0;
+
+        // store locale variation.
+        // ex. "ja_JP_POSIX"
+        //  lv[0] : language(ja)
+        //  lv[1] : country(JP)
+        //  lv[2] : variant(POSIX)
+        String[] lv = new String[3];
+        Locale l = null;
+
+        while ((pos = locale.indexOf('_', prev)) != -1)
+        {
+            lv[cnt++] = locale.substring(prev, pos);
+            prev = pos + 1;
+        }
+
+        lv[cnt++] = locale.substring(prev, locale.length());
+
+        switch (cnt)
+        {
+            case 1:
+                // create Locale from language.
+                l = new Locale(lv[0]);
+                break;
+            case 2:
+                // create Locale from language and country.
+                l = new Locale(lv[0], lv[1]);
+                break;
+            case 3:
+                // create Locale from language, country and variant.
+                l = new Locale(lv[0], lv[1], lv[2]);
+                break;
+        }
+        return l;
+    }   
+}

Modified: myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionActionListener.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionActionListener.java?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionActionListener.java (original)
+++ myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionActionListener.java Mon Nov 27 12:01:47 2006
@@ -54,7 +54,7 @@
     }
     
     public void restoreState(FacesContext context, Object state) {
-        methodExpression = (MethodExpression)methodExpression;
+        methodExpression = (MethodExpression)state;
     }
 
     public Object saveState(FacesContext context) {

Modified: myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java (original)
+++ myfaces/core/branches/jsf12/api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java Mon Nov 27 12:01:47 2006
@@ -54,7 +54,7 @@
     }
     
     public void restoreState(FacesContext context, Object state) {
-        methodExpression = (MethodExpression)methodExpression;
+        methodExpression = (MethodExpression)state;
     }
 
     public Object saveState(FacesContext context) {

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesImmediateProperty.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesImmediateProperty.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesImmediateProperty.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesImmediateProperty.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,16 @@
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+		xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+		xmlns:xi="http://www.w3.org/2001/XInclude">
+	<component>
+        <property>
+            <description><![CDATA[A boolean value that identifies the phase during which action events
+        should fire. During normal event processing, action methods and
+        action listener methods are fired during the "invoke application"
+        phase of request processing. If this attribute is set to "true",
+        these methods are fired instead at the end of the "apply request
+        values" phase.]]></description>
+            <property-name>immediate</property-name>
+            <property-class>boolean</property-class>
+        </property>
+	</component>
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesLableProperty.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesLableProperty.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesLableProperty.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesLableProperty.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,13 @@
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin">
+    <component>
+        <property>
+            <description>A diplay name for this component.</description>
+            <property-name>label</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+            </property-extension>
+        </property>
+    </component>
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesRequiredProperty.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesRequiredProperty.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesRequiredProperty.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/FacesRequiredProperty.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,12 @@
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+		xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+		xmlns:xi="http://www.w3.org/2001/XInclude">
+	<component>
+        <property>
+            <description>A boolean value that indicates whether a value is required. Default value: false.</description>
+            <property-name>required</property-name>
+            <property-class>boolean</property-class>
+            <default-value>false</default-value>
+        </property>
+	</component>
+</faces-config>
\ No newline at end of file

Modified: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_CommandProperties.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_CommandProperties.xml?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_CommandProperties.xml (original)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_CommandProperties.xml Mon Nov 27 12:01:47 2006
@@ -1,9 +1,11 @@
-<!-- UICommand attributes -->
 <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
               xmlns:xi="http://www.w3.org/2001/XInclude">
     <component>
         <!--value, actionListener, action, immediate-->
+
+        <xi:include href="../../includes/ui/FacesImmediateProperty.xml" xpointer="/faces-config/component/*"/>
+
         <property>
             <description><![CDATA[The initial value of this component.]]></description>
             <property-name>value</property-name>
@@ -55,17 +57,5 @@
                 <mfp:state-holder>yes</mfp:state-holder>
             </property-extension>
         </property>
-
-        <property>
-            <description><![CDATA[A boolean value that identifies the phase during which action events
-        should fire. During normal event processing, action methods and
-        action listener methods are fired during the "invoke application"
-        phase of request processing. If this attribute is set to "true",
-        these methods are fired instead at the end of the "apply request
-        values" phase.]]></description>
-            <property-name>immediate</property-name>
-            <property-class>boolean</property-class>
-        </property>
-
     </component>
 </faces-config>

Modified: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_ComponentProperties.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_ComponentProperties.xml?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_ComponentProperties.xml (original)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_ComponentProperties.xml Mon Nov 27 12:01:47 2006
@@ -1,10 +1,8 @@
-<!-- UIComponent attributes -->
 <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 		xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
 		xmlns:xi="http://www.w3.org/2001/XInclude">
 	<component>
-        <!-- UIComponent attributes -->
-        <xi:include href="FacesIdOptionalProperty.xml" xpointer="/faces_config/component/*" />
+		<xi:include href="FacesIdOptionalProperty.xml" xpointer="/faces_config/component/*" />
 		<xi:include href="FacesBindingProperty.xml" xpointer="/faces_config/component/*" />
 	    <xi:include href="FacesRenderedProperty.xml" xpointer="/faces_config/component/*" />
 	</component>

Modified: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_DataProperties.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_DataProperties.xml?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_DataProperties.xml (original)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_DataProperties.xml Mon Nov 27 12:01:47 2006
@@ -1,4 +1,3 @@
-<!-- UICommand attributes -->
 <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
               xmlns:xi="http://www.w3.org/2001/XInclude">

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_MessageProperties.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_MessageProperties.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_MessageProperties.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/includes/ui/_MessageProperties.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,20 @@
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xi="http://www.w3.org/2001/XInclude">
+    <component>
+        <!--showDetail, showSummary-->
+        <property>
+            <description>Indicates that details are shown.</description>
+            <property-name>showDetail</property-name>
+            <property-class>boolean</property-class>
+            <default-value>true</default-value>
+        </property>
+
+        <property>
+            <description>Indicates that the summary should be included into the Message.</description>
+            <property-name>showSummary</property-name>
+            <property-class>boolean</property-class>
+            <default-value>false</default-value>
+        </property>
+    </component>
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIColumn.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIColumn.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIColumn.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIColumn.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xi="http://www.w3.org/2001/XInclude"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <!-- ################################ defined Properties ################################ -->
+        <!-- # from super classes:                                                              # -->
+        <!-- #     id, binding, rendered, transient                                             # -->
+        <!-- #################################################################################### -->
+        <component-type>javax.faces.Column</component-type>
+        <component-class>javax.faces.component.UIColumn</component-class>
+        <description></description>
+
+        <component-extension>
+            <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+        </component-extension>
+    </component>
+
+</faces-config>
+

Modified: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIData.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIData.xml?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIData.xml (original)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIData.xml Mon Nov 27 12:01:47 2006
@@ -19,6 +19,12 @@
               xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
               xmlns:xhtml="http://www.w3.org/1999/xhtml">
     <component>
+        <!-- ################################ defined Properties ################################ -->
+        <!-- # from super classes:                                                              # -->
+        <!-- #     id, binding, rendered, transient                                             # -->
+        <!-- # ******************************************************************************** # -->
+        <!-- # value, var, rows, first                                                          # -->
+        <!-- #################################################################################### -->
         <description><![CDATA[UIData is a base abstraction for components that holds Data.]]></description>
         <component-type>javax.faces.Data</component-type>
         <component-class>javax.faces.component.UIData</component-class>
@@ -29,6 +35,7 @@
         <component-extension>
             <mfp:component-family>javax.faces.Data</mfp:component-family>
             <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+            <mfp:renderer-type>javax.faces.Table</mfp:renderer-type>
         </component-extension>
     </component>
 </faces-config>

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIInput.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIInput.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIInput.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIInput.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xi="http://www.w3.org/2001/XInclude"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <!-- ################################ defined Properties ################################ -->
+        <!-- # from super classes:                                                              # -->
+        <!-- #     id, binding, rendered, transient                                             # -->
+        <!-- #     value, converter                                                             # -->
+        <!-- # ******************************************************************************** # -->
+        <!-- # immediate, required, converterMessage, requiredMessage, validatorMessage,        # -->
+        <!-- # validator, valueChangeListener                                                   # -->
+        <!-- #################################################################################### -->
+        <component-type>javax.faces.Input</component-type>
+        <component-class>javax.faces.component.UIInput</component-class>
+        <description>UICommand is a base abstraction for components that implement ActionSource.</description>
+
+        <xi:include href="../../includes/ui/FacesImmediateProperty.xml" xpointer="/faces-config/component/*"/>
+        <xi:include href="../../includes/ui/FacesRequiredProperty.xml" xpointer="/faces-config/component/*"/>
+
+        <property>
+            <description>Text of the converter message.</description>
+            <property-name>converterMessage</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+            </property-extension>
+        </property>
+        <property>
+            <description>Text which will be shown if a required value is not submitted.</description>
+            <property-name>requiredMessage</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+            </property-extension>
+        </property>
+        <property>
+            <description>Validator Method, which should be invoked for validation.</description>
+            <property-name>validator</property-name>
+            <property-class>javax.faces.el.MethodBinding</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+                <mfp:method-binding-signature>
+                    <mfp:parameter-type>javax.faces.context.FacesContext</mfp:parameter-type>
+                    <mfp:parameter-type>javax.faces.component.UIComponent</mfp:parameter-type>
+                    <mfp:parameter-type>java.lang.Object</mfp:parameter-type>
+                    <mfp:return-type>void</mfp:return-type>
+                </mfp:method-binding-signature>
+                <mfp:state-holder>yes</mfp:state-holder>
+            </property-extension>
+        </property>
+        <property>
+            <description>Text which will be shown, if validation fails.</description>
+            <property-name>validatorMessage</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+            </property-extension>
+        </property>
+        <property>
+            <description>A Method which is called when the value changed.</description>
+            <property-name>valueChangeListener</property-name>
+            <property-class>javax.faces.el.MethodBinding</property-class>
+            <property-extension>
+                <mfp:required>false</mfp:required>
+                <mfp:method-binding-signature>
+                    <mfp:parameter-type>javax.faces.event.ValueChangeEvent</mfp:parameter-type>
+                    <mfp:return-type>void</mfp:return-type>
+                </mfp:method-binding-signature>
+                <mfp:state-holder>yes</mfp:state-holder>
+            </property-extension>
+        </property>
+
+        <property>
+            <description><![CDATA[whether the component's value is currently valid]]></description>
+            <property-name>valid</property-name>
+            <property-class>boolean</property-class>
+            <default-value>true</default-value>
+            <property-extension>
+                <mfp:tag-attribute-excluded>true</mfp:tag-attribute-excluded>
+            </property-extension>
+        </property>
+
+        <property>
+            <description>
+                <![CDATA[whether a local value is currently set.  If false, values are being retrieved from any attached ValueBinding]]>
+            </description>
+            <property-name>localValueSet</property-name>
+            <property-class>boolean</property-class>
+            <default-value>false</default-value>
+            <property-extension>
+                <mfp:tag-attribute-excluded>true</mfp:tag-attribute-excluded>
+            </property-extension>
+        </property>
+
+        <property>
+            <description><![CDATA[the current submitted value.  This value,
+if non-null, is set by the Renderer to store a possibly invalid value
+for later conversion or redisplay, and has not yet been converted
+into the proper type for this component instance.   This method
+should only be used by the decode() and validate() method
+of this component, or its corresponding Renderer;  however, user code
+may manually set it to null to erase any submitted value.]]>
+            </description>
+            <property-name>submittedValue</property-name>
+            <property-class>java.lang.Object</property-class>
+            <property-extension>
+                <mfp:tag-attribute-excluded>true</mfp:tag-attribute-excluded>
+            </property-extension>
+        </property>
+
+        <component-extension>
+            <mfp:component-family>javax.faces.Input</mfp:component-family>
+            <mfp:component-supertype>javax.faces.Output</mfp:component-supertype>
+            <mfp:renderer-type>javax.faces.Text</mfp:renderer-type>
+
+            <mfp:event>
+                <mfp:description>The valueChange event is delivered when the value
+attribute is changed.
+                </mfp:description>
+                <mfp:event-type>javax.faces.ValueChange</mfp:event-type>
+            </mfp:event>
+        </component-extension>
+    </component>
+</faces-config>
+

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessage.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessage.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessage.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessage.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xi="http://www.w3.org/2001/XInclude"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <!-- ################################ defined Properties ################################ -->
+        <!-- # from super classes:                                                              # -->
+        <!-- #     id, binding, rendered, transient                                             # -->
+        <!-- # ******************************************************************************** # -->
+        <!-- # for, showDetail, showSummary                                                     # -->
+        <!-- #################################################################################### -->
+        <component-type>javax.faces.Message</component-type>
+        <component-class>javax.faces.component.UIMessage</component-class>
+        <description>UIMessage is the base component class for components
+that display a single message on behalf of a component.</description>
+
+        <property>
+            <description>The ID of the component the Message should be diplayed for.</description>
+            <property-name>for</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+                <mfp:required>true</mfp:required>
+            </property-extension>
+        </property>
+
+        <xi:include href="../../includes/ui/_MessageProperties.xml" xpointer="/faces-config/component/*"/>
+
+        <component-extension>
+            <mfp:component-family>javax.faces.Message</mfp:component-family>
+            <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+            <mfp:renderer-type>javax.faces.Message</mfp:renderer-type>
+        </component-extension>
+    </component>
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessages.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessages.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessages.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIMessages.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xi="http://www.w3.org/2001/XInclude"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <!-- ################################ defined Properties ################################ -->
+        <!-- # from super classes:                                                              # -->
+        <!-- #     id, binding, rendered, transient                                             # -->
+        <!-- # ******************************************************************************** # -->
+        <!-- # globalOnly, showDetail, showSummary                                              # -->
+        <!-- #################################################################################### -->
+        <component-type>javax.faces.Messages</component-type>
+        <component-class>javax.faces.component.UIMessages</component-class>
+        <description>UIMessage is the base component class for components
+that display a multiple messages on behalf of a component.</description>
+
+        <property>
+            <description>Indicates that only global messages should be diplayed</description>
+            <property-name>globalOnly</property-name>
+            <property-class>boolean</property-class>
+            <default-value>false</default-value>
+        </property>
+
+        <xi:include href="../../includes/ui/_MessageProperties.xml" xpointer="/faces-config/component/*"/>
+
+        <component-extension>
+            <mfp:component-family>javax.faces.Messages</mfp:component-family>
+            <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+            <mfp:renderer-type>javax.faces.Messages</mfp:renderer-type>
+        </component-extension>
+    </component>
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UINamingContainer.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UINamingContainer.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UINamingContainer.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UINamingContainer.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,29 @@
+<?xml version="1.0" ?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:f="http://java.sun.com/jsf/core"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <component-type>javax.faces.NamingContainer</component-type>
+        <component-class>javax.faces.component.UINamingContainer</component-class>
+        <component-extension>
+            <mfp:component-family>javax.faces.NamingContainer</mfp:component-family>
+            <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+        </component-extension>
+    </component>
+</faces-config>

Modified: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIOutput.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIOutput.xml?view=diff&rev=479743&r1=479742&r2=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIOutput.xml (original)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIOutput.xml Mon Nov 27 12:01:47 2006
@@ -27,7 +27,7 @@
         <!-- #################################################################################### -->
         <component-type>javax.faces.Output</component-type>
         <component-class>javax.faces.component.UIOutput</component-class>
-        <description>UICommand is a base abstraction for components that implement ActionSource.</description>
+        <description>UIOutput displays a value to the user</description>
 
         <property>
             <description>The initial value of this component.</description>
@@ -53,5 +53,4 @@
             <mfp:renderer-type>javax.faces.Text</mfp:renderer-type>
         </component-extension>
     </component>
-</faces-config>
-
+</faces-config>
\ No newline at end of file

Added: myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIPanel.xml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIPanel.xml?view=auto&rev=479743
==============================================================================
--- myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIPanel.xml (added)
+++ myfaces/core/branches/jsf12/build/src/main/resources/META-INF/maven-faces-plugin/components/javax/faces/UIPanel.xml Mon Nov 27 12:01:47 2006
@@ -0,0 +1,29 @@
+<?xml version="1.0" ?>
+<!--
+  Copyright 2006 The Apache Software Foundation.
+
+  Licensed 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 KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:f="http://java.sun.com/jsf/core"
+              xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+              xmlns:xhtml="http://www.w3.org/1999/xhtml">
+    <component>
+        <component-type>javax.faces.Panel</component-type>
+        <component-class>javax.faces.component.UIPanel</component-class>
+        <component-extension>
+            <mfp:component-family>javax.faces.Panel</mfp:component-family>
+            <mfp:component-supertype>javax.faces.ComponentBase</mfp:component-supertype>
+        </component-extension>
+    </component>
+</faces-config>
\ No newline at end of file