Hey Dennis,

interesting. Yesterday evening I assigned that guy to me

http://issues.apache.org/jira/browse/MYFACES-1240

I started to implement it and I was about to commit,
and now I see your commit.

I think when two are doing the same, it is a waste of effort :-)

We should cordinate it a bit better, right?

For JSF 1.2 there is special component

http://tinyurl.com/qjd6y

Regards,
Matthias

On 6/18/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Author: dennisbyrne
Date: Sun Jun 18 11:39:08 2006
New Revision: 415171

URL: http://svn.apache.org/viewvc?rev=415171&view=rev
Log:
created SetPropertyActionListenerTag and it's ActionListener.
placed f:setPropertyActionListener in TLD
added Java 5 to DebugUtils

Added:
    
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListener.java
    
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListenerTag.java
Modified:
    
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/util/DebugUtils.java
    myfaces/core/branches/jsf12/impl/src/main/tld/myfaces_core.tld

Added: 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListener.java
URL: 
http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListener.java?rev=415171&view=auto
==============================================================================
--- 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListener.java
 (added)
+++ 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListener.java
 Sun Jun 18 11:39:08 2006
@@ -0,0 +1,103 @@
+package org.apache.myfaces.taglib.core;
+
+import javax.el.ELContext;
+import javax.el.ValueExpression;
+import javax.faces.component.StateHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+/**
+ * TODO this really needs to be under javax.faces.*
+ *
+ * @author Dennis Byrne
+ * @since 1.2
+ */
+
+public class SetPropertyActionListener implements ActionListener, StateHolder
+{
+
+    private ValueExpression target;
+
+    private ValueExpression value;
+
+    private boolean _transient ;
+
+    public SetPropertyActionListener(){}
+
+    public SetPropertyActionListener(ValueExpression target, ValueExpression 
value)
+    {
+        this.target = target;
+        this.value = value;
+    }
+
+    public void processAction(ActionEvent actionEvent) throws 
AbortProcessingException
+    {
+
+        if( target == null )
+            throw new AbortProcessingException("@target has not been set");
+
+        if( value == null )
+            throw new AbortProcessingException("@value has not been set");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+
+        if( ctx == null )
+            throw new AbortProcessingException("FacesContext ctx is null");
+
+        ELContext ectx = ctx.getELContext();
+
+        if( ectx == null )
+            throw new AbortProcessingException("ELContext ectx is null");
+
+        target.setValue(ectx, value.getValue(ectx));
+
+    }
+
+    public Object saveState(FacesContext context)
+    {
+        Object[] state = new Object[2];
+        state[0] = target;
+        state[1] = value;
+        return state;
+    }
+
+    public void restoreState(FacesContext context, Object state)
+    {
+        Object[] values = new Object[2];
+        target = (ValueExpression) values[0];
+        value = (ValueExpression) values[1];
+    }
+
+    public boolean isTransient()
+    {
+        return _transient;
+    }
+
+    public void setTransient(boolean _transient)
+    {
+        this._transient = _transient;
+    }
+
+    public ValueExpression getTarget()
+    {
+        return target;
+    }
+
+    public void setTarget(ValueExpression target)
+    {
+        this.target = target;
+    }
+
+    public ValueExpression getValue()
+    {
+        return value;
+    }
+
+    public void setValue(ValueExpression value)
+    {
+        this.value = value;
+    }
+
+}

Added: 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListenerTag.java
URL: 
http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListenerTag.java?rev=415171&view=auto
==============================================================================
--- 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListenerTag.java
 (added)
+++ 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/taglib/core/SetPropertyActionListenerTag.java
 Sun Jun 18 11:39:08 2006
@@ -0,0 +1,97 @@
+package org.apache.myfaces.taglib.core;
+
+import javax.el.ValueExpression;
+import javax.faces.component.ActionSource;
+import javax.faces.component.UIComponent;
+import javax.faces.event.ActionListener;
+import javax.faces.webapp.UIComponentClassicTagBase;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author Dennis Byrne
+ * @since 1.2
+ */
+
+public class SetPropertyActionListenerTag extends TagSupport
+{
+
+    private static final Log log = 
LogFactory.getLog(SetPropertyActionListenerTag.class);
+
+    private ValueExpression target;
+
+    private ValueExpression value;
+
+    public int doStartTag() throws JspException
+    {
+
+        if(log.isDebugEnabled())
+            log.debug("JSF 1.2 Spec : Create a new instance of the 
ActionListener");
+
+        ActionListener actionListener = new SetPropertyActionListener(target, 
value);
+
+        UIComponentClassicTagBase tag = 
UIComponentClassicTagBase.getParentUIComponentClassicTagBase(pageContext);
+
+        if(tag == null)
+            throw new JspException("Could not find a " +
+                    "parent UIComponentClassicTagBase ... is this " +
+                    "tag in a child of a UIComponentClassicTagBase?");
+
+        if(tag.getCreated())
+        {
+
+            UIComponent component = tag.getComponentInstance();
+
+            if(component == null)
+                throw new JspException(" Could not locate a UIComponent " +
+                        "for a UIComponentClassicTagBase w/ a " +
+                        "JSP id of " + tag.getJspId());
+
+            if( ! ( component instanceof ActionSource ) )
+                throw new JspException("Component w/ id of " + 
component.getId()
+                        + " is associated w/ a tag w/ JSP id of " + 
tag.getJspId()
+                        + ". This component is of type " + component.getClass()
+                        + ", which is not an " + ActionSource.class );
+
+            if(log.isDebugEnabled())
+                log.debug(" ... register it with the UIComponent " +
+                        "instance associated with our most immediately " +
+                        "surrounding UIComponentTagBase");
+
+            ((ActionSource)component).addActionListener(actionListener);
+
+        }
+
+        return SKIP_BODY;
+    }
+
+    public ValueExpression getTarget()
+    {
+        return target;
+    }
+
+    public void setTarget(ValueExpression target)
+    {
+        this.target = target;
+    }
+
+    public ValueExpression getValue()
+    {
+        return value;
+    }
+
+    public void setValue(ValueExpression value)
+    {
+        this.value = value;
+    }
+
+    public void release()
+    {
+        target = null;
+        value = null;
+    }
+
+}

Modified: 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/util/DebugUtils.java
URL: 
http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/util/DebugUtils.java?rev=415171&r1=415170&r2=415171&view=diff
==============================================================================
--- 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/util/DebugUtils.java
 (original)
+++ 
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/util/DebugUtils.java
 Sun Jun 18 11:39:08 2006
@@ -48,10 +48,10 @@
     private static final Log log = LogFactory.getLog(DebugUtils.class);

     //Attributes that should not be printed
-    private static final HashSet IGNORE_ATTRIBUTES;
+    private static final HashSet<String> IGNORE_ATTRIBUTES;
     static
     {
-        IGNORE_ATTRIBUTES = new HashSet();
+        IGNORE_ATTRIBUTES = new HashSet<String>();
         IGNORE_ATTRIBUTES.add("attributes");
         IGNORE_ATTRIBUTES.add("children");
         IGNORE_ATTRIBUTES.add("childCount");

Modified: myfaces/core/branches/jsf12/impl/src/main/tld/myfaces_core.tld
URL: 
http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/tld/myfaces_core.tld?rev=415171&r1=415170&r2=415171&view=diff
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/tld/myfaces_core.tld (original)
+++ myfaces/core/branches/jsf12/impl/src/main/tld/myfaces_core.tld Sun Jun 18 
11:39:08 2006
@@ -601,5 +601,20 @@
         </attribute>
     </tag>

+    <!-- setPropertyActionListener -->
+
+    <tag>
+        <name>setPropertyActionListener</name>
+        
<tag-class>org.apache.myfaces.taglib.core.SetPropertyActionListenerTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>target</name>
+            <required>true</required>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+        </attribute>
+       </tag>

 </taglib>





--
Matthias Wessendorf
Aechterhoek 18
48282 Emsdetten
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

Reply via email to