ClientBehaviorHolder interface should be tracked by myfaces-builder-plugin 
metadata
-----------------------------------------------------------------------------------

                 Key: MYFACES-2455
                 URL: https://issues.apache.org/jira/browse/MYFACES-2455
             Project: MyFaces Core
          Issue Type: Task
          Components: JSR-314
    Affects Versions: 2.0.0-alpha
            Reporter: Leonardo Uribe
            Assignee: Leonardo Uribe


Actually we use something like this:

@JSFComponent
(name = "h:commandButton",
clazz = "javax.faces.component.html.HtmlCommandButton",template=true,
tagClass = "org.apache.myfaces.taglib.html.HtmlCommandButtonTag",
defaultRendererType = "javax.faces.Button",
implementz = "javax.faces.component.behavior.ClientBehaviorHolder",
defaultEventName = "action"
)

Look the part that says implementz. In this way we notice if the component is 
implementing ClientBehaviorHolder interface and the method:

java.util.Collection<String> getEventNames()

is override properly in a similar way saveState and restoreState methods are 
generated in 1.2 or earlier. 

Note that in myfaces core we don't have a hierarchy of components that 
implements ClientBehaviorHolder, so we have to deal in this method properly. 
The typical case looks like this:

    static private final java.util.Collection<String> CLIENT_EVENTS_LIST = 
        java.util.Collections.unmodifiableCollection(
            java.util.Arrays.asList(
             "change"
            , "select"
            , "click"
            , "dblclick"
            , "keydown"
            , "keypress"
            , "keyup"
            , "mousedown"
            , "mousemove"
            , "mouseout"
            , "mouseover"
            , "mouseup"
            , "blur"
            , "focus"
            , "action"
        ));

    public java.util.Collection<String> getEventNames()
    {
        return CLIENT_EVENTS_LIST;
    }

If the child component adds one behavior, a new Collection<String> should be 
generated and the method should be override again.

There is another problem related, the method:

public String getDefaultEventName()

is override if defaultEventName is set.

In myfaces-builder-plugin we also have a small bug (or todo) with 
defaultEventName. This attribute is merged for all child components, so in the 
velocity template that generates component classes, this method is override 
many times as "levels" in the hierarchy from the component that defines this 
method. We have to keep track if the current component define this property or 
not.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to