You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/08/11 14:49:06 UTC
svn commit: r564909 - in /myfaces/tobago/trunk:
contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/
core/src/main/java/org/apache/myfaces/tobago/
core/src/main/java/org/apache/myfaces/tobago/component/
Author: bommel
Date: Sat Aug 11 05:49:05 2007
New Revision: 564909
URL: http://svn.apache.org/viewvc?view=rev&rev=564909
Log:
minor cleanup
added support for setting actions in a composition
Modified:
myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AttributeHandler.java
myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
Modified: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AttributeHandler.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AttributeHandler.java?view=diff&rev=564909&r1=564908&r2=564909
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AttributeHandler.java (original)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AttributeHandler.java Sat Aug 11 05:49:05 2007
@@ -20,9 +20,9 @@
import javax.el.ELException;
import javax.el.MethodExpression;
import javax.faces.FacesException;
-import javax.faces.context.FacesContext;
import javax.faces.component.UIComponent;
import javax.faces.component.EditableValueHolder;
+import javax.faces.component.ActionSource;
import com.sun.facelets.FaceletContext;
import com.sun.facelets.el.ELAdaptor;
@@ -38,7 +38,6 @@
import org.apache.myfaces.tobago.component.SupportsMarkup;
public final class AttributeHandler extends TagHandler {
- private static final Class [] VALIDATOR = new Class[] {FacesContext.class, UIComponent.class, Object.class};
private final TagAttribute name;
@@ -46,24 +45,24 @@
public AttributeHandler(TagConfig config) {
super(config);
- this.name = getRequiredAttribute("name");
- this.value = getRequiredAttribute("value");
+ this.name = getRequiredAttribute(TobagoConstants.ATTR_NAME);
+ this.value = getRequiredAttribute(TobagoConstants.ATTR_VALUE);
}
- public void apply(FaceletContext ctx, UIComponent parent)
+ public void apply(FaceletContext faceletContext, UIComponent parent)
throws FacesException, ELException {
if (parent == null) {
throw new TagException(tag, "Parent UIComponent was null");
}
if (ComponentSupport.isNew(parent)) {
- String nameValue = name.getValue(ctx);
- if ("rendered".equals(nameValue)) {
+ String nameValue = name.getValue(faceletContext);
+ if (TobagoConstants.ATTR_RENDERED.equals(nameValue)) {
// TODO expression
if (value.isLiteral()) {
- parent.setRendered(value.getBoolean(ctx));
+ parent.setRendered(value.getBoolean(faceletContext));
} else {
- ELAdaptor.setExpression(parent, nameValue, value.getValueExpression(ctx, Object.class));
+ ELAdaptor.setExpression(parent, nameValue, value.getValueExpression(faceletContext, Object.class));
}
} else if (TobagoConstants.ATTR_RENDERED_PARTIALLY.equals(nameValue) && parent instanceof UICommand) {
// TODO test expression
@@ -75,15 +74,42 @@
// TODO test expression
ComponentUtil.setMarkup(parent, value.getValue());
} else if (parent instanceof EditableValueHolder && TobagoConstants.ATTR_VALIDATOR.equals(nameValue)) {
- MethodExpression methodExpression = value.getMethodExpression(ctx, null, VALIDATOR);
+ MethodExpression methodExpression =
+ value.getMethodExpression(faceletContext, null, ComponentUtil.VALIDATOR_ARGS);
((EditableValueHolder) parent).setValidator(new LegacyMethodBinding(methodExpression));
+ } else if (parent instanceof ActionSource && TobagoConstants.ATTR_ACTION.equals(nameValue)) {
+ MethodExpression action = getActionMethodExpression(faceletContext, ComponentUtil.ACTION_ARGS, String.class);
+ if (action != null) {
+ // TODO jsf 1.2
+ ((ActionSource)parent).setAction(new LegacyMethodBinding(action));
+ }
+ } else if (parent instanceof ActionSource && TobagoConstants.ATTR_ACTION_LISTENER.equals(nameValue)) {
+ MethodExpression action = getActionMethodExpression(faceletContext, ComponentUtil.ACTION_LISTENER_ARGS, null);
+ if (action != null) {
+ // TODO jsf 1.2
+ ((ActionSource)parent).setActionListener(new LegacyMethodBinding(action));
+ }
} else if (!parent.getAttributes().containsKey(nameValue)) {
if (value.isLiteral()) {
parent.getAttributes().put(nameValue, value.getValue());
} else {
- ELAdaptor.setExpression(parent, nameValue, value.getValueExpression(ctx, Object.class));
+ ELAdaptor.setExpression(parent, nameValue, value.getValueExpression(faceletContext, Object.class));
}
}
}
+ }
+
+ private MethodExpression getActionMethodExpression(FaceletContext faceletContext, Class [] args, Class returnType) {
+ if (value.getValue().startsWith("$")) {
+ Object obj = value.getValueExpression(faceletContext, String.class).getValue(faceletContext);
+ if (obj != null && obj instanceof String && ((String)obj).length() > 0) {
+ TagAttribute attribute = new TagAttribute(value.getLocation(), value.getNamespace(),
+ value.getLocalName(), value.getQName(), (String) obj);
+ return attribute.getMethodExpression(faceletContext, returnType, args);
+ }
+ } else {
+ return value.getMethodExpression(faceletContext, returnType, args);
+ }
+ return null;
}
}
Modified: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java?view=diff&rev=564909&r1=564908&r2=564909
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java (original)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java Sat Aug 11 05:49:05 2007
@@ -31,6 +31,7 @@
import java.io.IOException;
import org.apache.myfaces.tobago.event.PopupActionListener;
+import org.apache.myfaces.tobago.TobagoConstants;
/*
* User: bommel
@@ -43,7 +44,7 @@
public PopupReferenceHandler(TagConfig config) {
super(config);
- forComponent = getAttribute("for");
+ forComponent = getAttribute(TobagoConstants.ATTR_FOR);
}
public void apply(FaceletContext faceletContext, UIComponent parent)
Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java?view=diff&rev=564909&r1=564908&r2=564909
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/TobagoConstants.java Sat Aug 11 05:49:05 2007
@@ -22,6 +22,7 @@
public static final String SUBCOMPONENT_SEP = "::";
// public static final String ATTR_ACCESS_KEY = "accessKey";
+ public static final String ATTR_ACTION = "action";
public static final String ATTR_ACTION_ONCLICK = "onclick";
public static final String ATTR_ACTION_LINK = "link";
public static final String ATTR_ACTION_LISTENER = "actionListener";
Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java?view=diff&rev=564909&r1=564908&r2=564909
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java Sat Aug 11 05:49:05 2007
@@ -101,11 +101,11 @@
private static final String RENDER_KEY_PREFIX
= "org.apache.myfaces.tobago.component.ComponentUtil.RendererKeyPrefix_";
-
- private static final Class[] ACTION_LISTENER_ARGS = {ActionEvent.class};
- private static final Class[] VALUE_CHANGE_LISTENER_ARGS = {ValueChangeEvent.class};
- private static final Class[] VALIDATOR_ARGS =
- {FacesContext.class, UIComponent.class, Object.class};
+
+ public static final Class[] ACTION_ARGS = {};
+ public static final Class[] ACTION_LISTENER_ARGS = {ActionEvent.class};
+ public static final Class[] VALUE_CHANGE_LISTENER_ARGS = {ValueChangeEvent.class};
+ public static final Class[] VALIDATOR_ARGS = {FacesContext.class, UIComponent.class, Object.class};
private ComponentUtil() {
}