https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=183
On 6/18/06, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
I create an issue on that. It is a "bug" to me. Thought the same ;) -Matthias On 6/18/06, Dennis Byrne <[EMAIL PROTECTED]> wrote: > Matthias, > > Sorry about this. I'll make an effort to pay more attention to the issue tracker from now on. > > Yes, the RI places the implementation w/ the tags. I have pinged their list about moving this under javax.faces.* ( see the TODO at the top of the class ). I'm not sure the idea will fly too far. > > Dennis Byrne > > >-----Original Message----- > >From: Matthias Wessendorf [mailto:[EMAIL PROTECTED] > >Sent: Sunday, June 18, 2006 03:06 PM > >To: 'MyFaces Development' > >Subject: Re: svn commit: r415171 - in /myfaces/core/branches/jsf12/impl/src/main: java/org/apache/myfaces/taglib/core/ java/org/apache/myfaces/util/ tld/ > > > >the RI has the pattern that the ActionListener inside the taglib_core package. > > > >I don't like this. I'll remove the SetPropertyActionListener clazz to > >o.a.m.event. > > > >-Matthias > > > >On 6/18/06, Matthias Wessendorf <[EMAIL PROTECTED]> wrote: > >> 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 > >> > > > > > >-- > >Matthias Wessendorf > >Aechterhoek 18 > >48282 Emsdetten > >blog: http://jroller.com/page/mwessendorf > >mail: mwessendorf-at-gmail-dot-com > > > > > -- Matthias Wessendorf Aechterhoek 18 48282 Emsdetten blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com
-- Matthias Wessendorf Aechterhoek 18 48282 Emsdetten blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com
