dmkarr 2002/10/14 20:12:41
Modified: contrib/struts-el/src/share/org/apache/strutsel/taglib/html
ELResetTag.java ELRewriteTag.java
contrib/struts-el/web/exercise-taglib html-button.jsp
Added: contrib/struts-el/src/share/org/apache/strutsel/taglib/html
ELResetTagBeanInfo.java ELRewriteTagBeanInfo.java
Log:
More boolean mapping fixes, and exercise test for reset tag
Revision Changes Path
1.4 +38 -9
jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELResetTag.java
Index: ELResetTag.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELResetTag.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ELResetTag.java 1 Oct 2002 04:25:50 -0000 1.3
+++ ELResetTag.java 15 Oct 2002 03:12:41 -0000 1.4
@@ -62,7 +62,7 @@
import org.apache.struts.taglib.html.ResetTag;
import javax.servlet.jsp.JspException;
-import org.apache.taglibs.standard.tag.el.core.ExpressionUtil;
+import org.apache.strutsel.taglib.utils.EvalHelper;
import org.apache.taglibs.standard.tag.common.core.NullAttributeException;
/**
@@ -80,6 +80,32 @@
public class ELResetTag extends ResetTag {
/**
+ * String value of the "disabled" attribute.
+ */
+ private String disabledExpr;
+
+ /**
+ * Returns the string value of the "disabled" attribute.
+ */
+ public String getDisabledExpr() { return (disabledExpr); }
+
+ /**
+ * Sets the string value of the "disabled" attribute. This attribute is
+ * mapped to this method by the <code>ELResetTagBeanInfo</code> class.
+ */
+ public void setDisabledExpr(String disabledExpr)
+ { this.disabledExpr = disabledExpr; }
+
+ /**
+ * Resets attribute values for tag reuse.
+ */
+ public void release()
+ {
+ super.release();
+ setDisabledExpr(null);
+ }
+
+ /**
* Process the start tag.
*
* @exception JspException if a JSP exception has occurred
@@ -91,7 +117,8 @@
/**
* Evaluates and returns a single attribute value, given the attribute
- * name, attribute value, and attribute type. It uses
+ * name, attribute value, and attribute type. It uses the
+ * <code>EvalHelper</code> class to interface to
* <code>ExpressionUtil.evalNotNull</code> to do the actual evaluation, and
* it passes to this the name of the current tag, the <code>this</code>
* pointer, and the current pageContext.
@@ -99,6 +126,8 @@
* @param attrName attribute name being evaluated
* @param attrValue String value of attribute to be evaluated using EL
* @param attrType Required resulting type of attribute value
+ * @exception NullAttributeException if either the <code>attrValue</code>
+ * was null, or the resulting evaluated value was null.
* @return Resulting attribute value
*/
private Object evalAttr(String attrName,
@@ -106,8 +135,8 @@
Class attrType)
throws JspException, NullAttributeException
{
- return (ExpressionUtil.evalNotNull("reset", attrName, attrValue,
- attrType, this, pageContext));
+ return (EvalHelper.eval("reset", attrName, attrValue, attrType,
+ this, pageContext));
}
/**
@@ -139,7 +168,7 @@
}
try {
- setDisabled(((Boolean) evalAttr("disabled", getDisabled() + "",
+ setDisabled(((Boolean) evalAttr("disabled", getDisabledExpr(),
Boolean.class)).
booleanValue());
} catch (NullAttributeException ex) {
1.4 +38 -9
jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELRewriteTag.java
Index: ELRewriteTag.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELRewriteTag.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ELRewriteTag.java 1 Oct 2002 04:25:50 -0000 1.3
+++ ELRewriteTag.java 15 Oct 2002 03:12:41 -0000 1.4
@@ -62,7 +62,7 @@
import org.apache.struts.taglib.html.RewriteTag;
import javax.servlet.jsp.JspException;
-import org.apache.taglibs.standard.tag.el.core.ExpressionUtil;
+import org.apache.strutsel.taglib.utils.EvalHelper;
import org.apache.taglibs.standard.tag.common.core.NullAttributeException;
/**
@@ -80,6 +80,32 @@
public class ELRewriteTag extends RewriteTag {
/**
+ * String value of the "transaction" attribute.
+ */
+ private String transactionExpr;
+
+ /**
+ * Returns the string value of the "transaction" attribute.
+ */
+ public String getTransactionExpr() { return (transactionExpr); }
+
+ /**
+ * Sets the string value of the "transaction" attribute. This attribute is
+ * mapped to this method by the <code>ELRewriteTagBeanInfo</code> class.
+ */
+ public void setTransactionExpr(String transactionExpr)
+ { this.transactionExpr = transactionExpr; }
+
+ /**
+ * Resets attribute values for tag reuse.
+ */
+ public void release()
+ {
+ super.release();
+ setTransactionExpr(null);
+ }
+
+ /**
* Process the start tag.
*
* @exception JspException if a JSP exception has occurred
@@ -91,7 +117,8 @@
/**
* Evaluates and returns a single attribute value, given the attribute
- * name, attribute value, and attribute type. It uses
+ * name, attribute value, and attribute type. It uses the
+ * <code>EvalHelper</code> class to interface to
* <code>ExpressionUtil.evalNotNull</code> to do the actual evaluation, and
* it passes to this the name of the current tag, the <code>this</code>
* pointer, and the current pageContext.
@@ -99,6 +126,8 @@
* @param attrName attribute name being evaluated
* @param attrValue String value of attribute to be evaluated using EL
* @param attrType Required resulting type of attribute value
+ * @exception NullAttributeException if either the <code>attrValue</code>
+ * was null, or the resulting evaluated value was null.
* @return Resulting attribute value
*/
private Object evalAttr(String attrName,
@@ -106,8 +135,8 @@
Class attrType)
throws JspException, NullAttributeException
{
- return (ExpressionUtil.evalNotNull("rewrite", attrName, attrValue,
- attrType, this, pageContext));
+ return (EvalHelper.eval("rewrite", attrName, attrValue, attrType,
+ this, pageContext));
}
/**
@@ -194,7 +223,7 @@
try {
setTransaction(((Boolean) evalAttr("transaction",
- getTransaction() + "",
+ getTransactionExpr(),
Boolean.class)).
booleanValue());
} catch (NullAttributeException ex) {
1.1
jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELResetTagBeanInfo.java
Index: ELResetTagBeanInfo.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELResetTagBeanInfo.java,v
1.1 2002/10/15 03:12:41 dmkarr Exp $
* $Revision: 1.1 $
* $Date: 2002/10/15 03:12:41 $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.strutsel.taglib.html;
import java.beans.PropertyDescriptor;
import java.beans.IntrospectionException;
import java.beans.SimpleBeanInfo;
/**
* This is the <code>BeanInfo</code> descriptor for the
* <code>org.apache.strutsel.taglib.html.ELResetTag</code> class. It is needed
* to override the default mapping of custom tag attribute names to class
* attribute names.
*<p>
* In particular, it provides for the mapping of the custom tag attribute
* <code>disabled</code> to the instance variable <code>disabledExpr</code>.
*<p>
* This is necessary because the base class,
* <code>org.apache.struts.taglib.html.ResetTag</code> already defines this
* attribute, of type <code>boolean</code>, and the <code>ELResetTag</code>
* class has to be able to see this values as a <code>String</code> type in
* order to evaluate it with the JSTL EL engine.
*<p>
* Unfortunately, if a <code>BeanInfo</code> class needs to be provided to
* change the mapping of one attribute, it has to specify the mappings of ALL
* attributes, even if all the others use the expected mappings of "name" to
* "method".
*/
public class ELResetTagBeanInfo extends SimpleBeanInfo
{
public PropertyDescriptor[] getPropertyDescriptors()
{
PropertyDescriptor[] result = new PropertyDescriptor[25];
try {
result[0] = new PropertyDescriptor("accesskey", ELResetTag.class,
null, "setAccesskey");
result[1] = new PropertyDescriptor("alt", ELResetTag.class,
null, "setAlt");
result[2] = new PropertyDescriptor("altKey", ELResetTag.class,
null, "setAltKey");
// This attribute has a non-standard mapping.
result[3] = new PropertyDescriptor("disabled", ELResetTag.class,
null, "setDisabledExpr");
result[4] = new PropertyDescriptor("onblur", ELResetTag.class,
null, "setOnblur");
result[5] = new PropertyDescriptor("onchange", ELResetTag.class,
null, "setOnchange");
result[6] = new PropertyDescriptor("onclick", ELResetTag.class,
null, "setOnclick");
result[7] = new PropertyDescriptor("ondblclick",
ELResetTag.class,
null, "setOndblclick");
result[8] = new PropertyDescriptor("onfocus", ELResetTag.class,
null, "setOnfocus");
result[9] = new PropertyDescriptor("onkeydown",
ELResetTag.class,
null, "setOnkeydown");
result[10] = new PropertyDescriptor("onkeypress",
ELResetTag.class,
null, "setOnkeypress");
result[11] = new PropertyDescriptor("onkeyup", ELResetTag.class,
null, "setOnkeyup");
result[12] = new PropertyDescriptor("onmousedown",
ELResetTag.class,
null, "setOnmousedown");
result[13] = new PropertyDescriptor("onmousemove",
ELResetTag.class,
null, "setOnmousemove");
result[14] = new PropertyDescriptor("onmouseout",
ELResetTag.class,
null, "setOnmouseout");
result[15] = new PropertyDescriptor("onmouseover",
ELResetTag.class,
null, "setOnmouseover");
result[16] = new PropertyDescriptor("onmouseup",
ELResetTag.class,
null, "setOnmouseup");
result[17] = new PropertyDescriptor("property", ELResetTag.class,
null, "setProperty");
result[18] = new PropertyDescriptor("style", ELResetTag.class,
null, "setStyle");
result[19] = new PropertyDescriptor("styleClass",
ELResetTag.class,
null, "setStyleClass");
result[20] = new PropertyDescriptor("styleId", ELResetTag.class,
null, "setStyleId");
result[21] = new PropertyDescriptor("tabindex", ELResetTag.class,
null, "setTabindex");
result[22] = new PropertyDescriptor("title", ELResetTag.class,
null, "setTitle");
result[23] = new PropertyDescriptor("titleKey", ELResetTag.class,
null, "setTitleKey");
result[24] = new PropertyDescriptor("value", ELResetTag.class,
null, "setValue");
}
catch (IntrospectionException ex) {
ex.printStackTrace();
}
return (result);
}
}
1.1
jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELRewriteTagBeanInfo.java
Index: ELRewriteTagBeanInfo.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-struts/contrib/struts-el/src/share/org/apache/strutsel/taglib/html/ELRewriteTagBeanInfo.java,v
1.1 2002/10/15 03:12:41 dmkarr Exp $
* $Revision: 1.1 $
* $Date: 2002/10/15 03:12:41 $
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.strutsel.taglib.html;
import java.beans.PropertyDescriptor;
import java.beans.IntrospectionException;
import java.beans.SimpleBeanInfo;
/**
* This is the <code>BeanInfo</code> descriptor for the
* <code>org.apache.strutsel.taglib.html.ELRewriteTag</code> class. It is
* needed to override the default mapping of custom tag attribute names to
* class attribute names.
*<p>
* This is necessary because the base class,
* <code>org.apache.struts.taglib.html.RewriteTag</code> defines some
* attributes whose type is not <code>java.lang.String</code>, so the subclass
* needs to define setter methods of a different name, which this class maps
* to.
*<p>
* Unfortunately, if a <code>BeanInfo</code> class needs to be provided to
* change the mapping of one attribute, it has to specify the mappings of ALL
* attributes, even if all the others use the expected mappings of "name" to
* "method".
*/
public class ELRewriteTagBeanInfo extends SimpleBeanInfo
{
public PropertyDescriptor[] getPropertyDescriptors()
{
PropertyDescriptor[] result = new PropertyDescriptor[12];
try {
result[0] = new PropertyDescriptor("anchor", ELRewriteTag.class,
null, "setAnchor");
result[1] = new PropertyDescriptor("forward", ELRewriteTag.class,
null, "setForward");
result[2] = new PropertyDescriptor("href", ELRewriteTag.class,
null, "setHref");
result[3] = new PropertyDescriptor("name", ELRewriteTag.class,
null, "setName");
result[4] = new PropertyDescriptor("page", ELRewriteTag.class,
null, "setPage");
result[5] = new PropertyDescriptor("paramId", ELRewriteTag.class,
null, "setParamId");
result[6] = new PropertyDescriptor("paramName", ELRewriteTag.class,
null, "setParamName");
result[7] = new PropertyDescriptor("paramProperty",
ELRewriteTag.class,
null, "setParamProperty");
result[8] = new PropertyDescriptor("paramScope",
ELRewriteTag.class,
null, "setParamScope");
result[9] = new PropertyDescriptor("property", ELRewriteTag.class,
null, "setProperty");
result[10] = new PropertyDescriptor("scope", ELRewriteTag.class,
null, "setScope");
result[11] = new PropertyDescriptor("transaction",
ELRewriteTag.class,
null, "setTransactionExpr");
}
catch (IntrospectionException ex) {
ex.printStackTrace();
}
return (result);
}
}
1.2 +10 -0
jakarta-struts/contrib/struts-el/web/exercise-taglib/html-button.jsp
Index: html-button.jsp
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/struts-el/web/exercise-taglib/html-button.jsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- html-button.jsp 14 Oct 2002 03:11:09 -0000 1.1
+++ html-button.jsp 15 Oct 2002 03:12:41 -0000 1.2
@@ -60,6 +60,16 @@
<html-el:cancel property="stringProperty" disabled="${!empty pageScope}"/>
</td>
</tr>
+ <tr>
+ <td>
+ <html-el:reset property="stringProperty" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <html-el:reset property="stringProperty" disabled="${!empty pageScope}"/>
+ </td>
+ </tr>
</table>
</html-el:form>
<script>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>