From adffaces-commits-return-1184-apmail-incubator-adffaces-commits-archive=incubator.apache.org@incubator.apache.org Wed Nov 01 02:03:50 2006 Return-Path: Delivered-To: apmail-incubator-adffaces-commits-archive@locus.apache.org Received: (qmail 13531 invoked from network); 1 Nov 2006 02:03:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Nov 2006 02:03:50 -0000 Received: (qmail 14419 invoked by uid 500); 1 Nov 2006 02:04:01 -0000 Delivered-To: apmail-incubator-adffaces-commits-archive@incubator.apache.org Received: (qmail 14403 invoked by uid 500); 1 Nov 2006 02:04:01 -0000 Mailing-List: contact adffaces-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: adffaces-dev@incubator.apache.org Delivered-To: mailing list adffaces-commits@incubator.apache.org Received: (qmail 14389 invoked by uid 99); 1 Nov 2006 02:04:01 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 31 Oct 2006 18:04:01 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 31 Oct 2006 18:03:44 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 37DE41A984D; Tue, 31 Oct 2006 18:03:21 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r469750 [2/43] - in /incubator/adffaces/branches/faces-1_2-061031: plugins/maven-faces-plugin/ plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/ plugins/maven-faces-plugin/src/main/java/org/apache/myfac... Date: Wed, 01 Nov 2006 02:03:04 -0000 To: adffaces-commits@incubator.apache.org From: awiner@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061101020321.37DE41A984D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateJspTaglibsMojo.java Tue Oct 31 18:02:55 2006 @@ -28,6 +28,7 @@ import java.lang.reflect.Modifier; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -216,7 +217,7 @@ XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); XMLStreamWriter stream = outputFactory.createXMLStreamWriter(out); - _writeStartTagLibrary(stream, "1.2", shortName, namespaceURI); + _writeStartTagLibrary(stream, _is12() ? "2.1" : "1.2", shortName, namespaceURI); while (components.hasNext()) { ComponentBean component = (ComponentBean)components.next(); @@ -276,9 +277,18 @@ { stream.writeStartDocument("1.0"); stream.writeCharacters("\n"); - stream.writeDTD(dtd); + if (!_is12()) + stream.writeDTD(dtd); stream.writeCharacters("\n"); stream.writeStartElement("taglib"); + if (_is12()) + { + stream.writeNamespace("", "http://java.sun.com/xml/ns/javaee"); + stream.writeNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); + stream.writeAttribute("xsi:schemaLocation", "http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"); + stream.writeAttribute("version", "2.1"); + } + stream.writeCharacters("\n "); } @@ -327,13 +337,6 @@ stream.writeCharacters("\n "); stream.writeStartElement("tag"); stream.writeCharacters("\n "); - stream.writeStartElement("name"); - stream.writeCharacters(component.getTagName().getLocalPart()); - stream.writeEndElement(); - stream.writeCharacters("\n "); - stream.writeStartElement("tag-class"); - stream.writeCharacters(component.getTagClass()); - stream.writeEndElement(); if (component.getDescription() != null) { stream.writeCharacters("\n "); @@ -342,6 +345,14 @@ stream.writeEndElement(); } + stream.writeStartElement("name"); + stream.writeCharacters(component.getTagName().getLocalPart()); + stream.writeEndElement(); + stream.writeCharacters("\n "); + stream.writeStartElement("tag-class"); + stream.writeCharacters(component.getTagClass()); + stream.writeEndElement(); + Iterator properties = component.properties(true); properties = new FilteredIterator(properties, new TagAttributeFilter()); while (properties.hasNext()) @@ -350,7 +361,8 @@ _writeTagAttribute(stream, property.getPropertyName(), property.getDescription(), - property.getUnsupportedAgents()); + property.getUnsupportedAgents(), + property); } stream.writeCharacters("\n "); @@ -367,13 +379,6 @@ stream.writeCharacters("\n "); stream.writeStartElement("tag"); stream.writeCharacters("\n "); - stream.writeStartElement("name"); - stream.writeCharacters(converter.getTagName().getLocalPart()); - stream.writeEndElement(); - stream.writeCharacters("\n "); - stream.writeStartElement("tag-class"); - stream.writeCharacters(converter.getTagClass()); - stream.writeEndElement(); if (converter.getDescription() != null) { stream.writeCharacters("\n "); @@ -382,8 +387,16 @@ stream.writeEndElement(); } + stream.writeStartElement("name"); + stream.writeCharacters(converter.getTagName().getLocalPart()); + stream.writeEndElement(); + stream.writeCharacters("\n "); + stream.writeStartElement("tag-class"); + stream.writeCharacters(converter.getTagClass()); + stream.writeEndElement(); + // converters need an id attribute - _writeTagAttribute(stream, "id", "the identifier for the component", null); + _writeTagAttribute(stream, "id", "the identifier for the converter", null, null); Iterator properties = converter.properties(); properties = new FilteredIterator(properties, new TagAttributeFilter()); @@ -393,7 +406,8 @@ _writeTagAttribute(stream, property.getPropertyName(), property.getDescription(), - property.getUnsupportedAgents()); + property.getUnsupportedAgents(), + property); } stream.writeCharacters("\n "); @@ -404,21 +418,12 @@ XMLStreamWriter stream, String propertyName, String description, - String[] unsupportedAgents) throws XMLStreamException + String[] unsupportedAgents, + PropertyBean property) throws XMLStreamException { stream.writeCharacters("\n "); stream.writeStartElement("attribute"); - stream.writeCharacters("\n "); - stream.writeStartElement("name"); - stream.writeCharacters(propertyName); - stream.writeEndElement(); - - stream.writeCharacters("\n "); - stream.writeStartElement("rtexprvalue"); - stream.writeCharacters("false"); - stream.writeEndElement(); - if (description != null || unsupportedAgents.length > 0) { @@ -444,6 +449,92 @@ stream.writeEndElement(); } + stream.writeCharacters("\n "); + stream.writeStartElement("name"); + + if (property != null) + stream.writeCharacters(property.getJspPropertyName()); + else + stream.writeCharacters(propertyName); + + stream.writeEndElement(); + + if (!_is12()) + { + stream.writeCharacters("\n "); + stream.writeStartElement("rtexprvalue"); + stream.writeCharacters("false"); + stream.writeEndElement(); + } + else + { + if (property != null) + { + if (property.isRequired()) + { + stream.writeCharacters("\n "); + stream.writeStartElement("required"); + stream.writeCharacters("true"); + stream.writeEndElement(); + } + + if (property.isMethodExpression() || property.isMethodBinding()) + { + stream.writeCharacters("\n "); + stream.writeStartElement("deferred-method"); + stream.writeCharacters("\n "); + MethodSignatureBean sig = property.getMethodBindingSignature(); + if (sig != null) + { + stream.writeStartElement("method-signature"); + stream.writeCharacters(sig.getReturnType()); + stream.writeCharacters(" myMethod("); + String[] params = sig.getParameterTypes(); + for (int i = 0; i < params.length; i++) + { + if (i > 0) + stream.writeCharacters(", "); + stream.writeCharacters(params[i]); + } + + stream.writeCharacters(")"); + stream.writeEndElement(); + } + stream.writeEndElement(); + } + else if (!property.isLiteralOnly() || + // "binding" is always a deferred-value + "binding".equals(propertyName)) + { + stream.writeCharacters("\n "); + stream.writeStartElement("deferred-value"); + if (_CAN_COERCE.contains(property.getPropertyClass())) + { + stream.writeCharacters("\n "); + stream.writeStartElement("type"); + stream.writeCharacters(property.getPropertyClass()); + stream.writeEndElement(); + stream.writeCharacters("\n "); + } + + stream.writeEndElement(); + } + else + { + stream.writeCharacters("\n "); + stream.writeStartElement("rtexprvalue"); + // As of JSF 1.2, "id" can be set via an rtexprvalue (but + // *not* by a ValueExpression) - it has to be evaluated + // in the JSP + if ("id".equals(propertyName)) + stream.writeCharacters("true"); + else + stream.writeCharacters("false"); + stream.writeEndElement(); + } + } + } + stream.writeCharacters("\n "); stream.writeEndElement(); } @@ -474,7 +565,7 @@ } // validators need an id attribute - _writeTagAttribute(stream, "id", "the identifier for the component", null); + _writeTagAttribute(stream, "id", "the identifier for the validator", null, null); Iterator properties = validator.properties(); properties = new FilteredIterator(properties, new TagAttributeFilter()); @@ -484,7 +575,8 @@ _writeTagAttribute(stream, property.getPropertyName(), property.getDescription(), - property.getUnsupportedAgents()); + property.getUnsupportedAgents(), + property); } stream.writeCharacters("\n "); @@ -594,8 +686,17 @@ out.println(" * Auto-generated tag class."); out.println(" */"); - out.println("public class " + className + - " extends ConverterTag"); + if (_is12()) + { + out.println("public class " + className + + " extends ConverterELTag"); + } + else + { + out.println("public class " + className + + " extends ConverterTag"); + } + out.println("{"); out.indent(); @@ -633,7 +734,15 @@ { Set imports = new TreeSet(); - imports.add("javax.faces.webapp.ConverterTag"); + if (_is12()) + { + imports.add("javax.faces.webapp.ConverterELTag"); + imports.add("javax.faces.context.FacesContext"); + imports.add("javax.faces.application.Application"); + } + else + imports.add("javax.faces.webapp.ConverterTag"); + imports.add("javax.servlet.jsp.JspException"); imports.add(converter.getConverterClass()); @@ -642,7 +751,10 @@ if (properties.hasNext()) { imports.add("javax.faces.convert.Converter"); - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("org.apache.myfaces.trinidadinternal.taglib.util.TagUtils"); } @@ -706,7 +818,9 @@ { String propName = property.getPropertyName(); String propVar = "_" + Util.getVariableFromName(propName); - out.println("private String " + propVar + ";"); + String jspPropType = _getJspPropertyType(property); + + out.println("private " + jspPropType + " " + propVar + ";"); } private void _writePropertySet( @@ -716,9 +830,10 @@ String propName = property.getPropertyName(); String propVar = Util.getVariableFromName(propName); String setMethod = Util.getPrefixedPropertyName("set", propName); + String jspPropType = _getJspPropertyType(property); // TODO: restore coding standards, and make final - out.println("public void " + setMethod + "(String " + propVar + ")"); + out.println("public void " + setMethod + "(" + jspPropType + " " + propVar + ")"); out.println("{"); out.indent(); out.println("_" + propVar + " = " + propVar + ";"); @@ -730,19 +845,22 @@ PrettyWriter out, ConverterBean converter) throws IOException { - String converterFullClass = converter.getConverterClass(); - String converterClass = Util.getClassFromFullClass(converterFullClass); - - out.println(); - // TODO: restore coding standards, and make final - out.println("@Override"); - out.println("public int doStartTag() throws JspException"); - out.println("{"); - out.indent(); - out.println("super.setConverterId(" + converterClass + ".CONVERTER_ID);"); - out.println("return super.doStartTag();"); - out.unindent(); - out.println("}"); + if (!_is12()) + { + String converterFullClass = converter.getConverterClass(); + String converterClass = Util.getClassFromFullClass(converterFullClass); + + out.println(); + // TODO: restore coding standards, and make final + out.println("@Override"); + out.println("public int doStartTag() throws JspException"); + out.println("{"); + out.indent(); + out.println("super.setConverterId(" + converterClass + ".CONVERTER_ID);"); + out.println("return super.doStartTag();"); + out.unindent(); + out.println("}"); + } } private void _writeCreateConverter( @@ -762,8 +880,18 @@ out.println("protected Converter createConverter() throws JspException"); out.println("{"); out.indent(); - out.println(converterClass + " converter = " + - "(" + converterClass + ")super.createConverter();"); + if (_is12()) + { + out.println("String converterId = " + converterClass + ".CONVERTER_ID;"); + out.println("Application appl = FacesContext.getCurrentInstance().getApplication();"); + out.println(converterClass + " converter = " + + "(" + converterClass + ")appl.createConverter(converterId);"); + } + else + { + out.println(converterClass + " converter = " + + "(" + converterClass + ")super.createConverter();"); + } out.println("_setProperties(converter);"); out.println("return converter;"); out.unindent(); @@ -806,44 +934,89 @@ String propFullClass = property.getPropertyClass(); String propClass = Util.getClassFromFullClass(propFullClass); String propVar = "_" + Util.getVariableFromName(propName); + out.println("if (" + propVar + " != null)"); out.println("{"); out.indent(); - out.println("if (TagUtils.isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = TagUtils.getValueBinding(" + propVar + ");"); - out.println("converter.setValueBinding(\"" + propName + "\", vb);"); - out.unindent(); - out.println("}"); - String propType = _resolveType(propFullClass); - if (propType != null) + + if (_is12()) { - out.println("else"); + out.println("if (!" + propVar + ".isLiteralText())"); out.println("{"); out.indent(); - if ("StringArray".equals(propType)) + out.println("converter.setValueExpression(\"" + propName + "\", " + + propVar + ");"); + out.unindent(); + out.println("}"); + String propType = _resolveType(propFullClass); + if (propType != null) { - out.println("try"); + out.println("else"); out.println("{"); + out.indent(); + if ("StringArray".equals(propType)) + { + out.println("try"); + out.println("{"); + } + + out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ".getValue(null));"); + String setMethod = Util.getPrefixedPropertyName("set", propName); + out.println("converter." + setMethod + "(value);"); + if ("StringArray".equals(propType)) + { + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("throw new JspException("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + } + out.unindent(); + out.println("}"); } - out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ");"); - String setMethod = Util.getPrefixedPropertyName("set", propName); - out.println("converter." + setMethod + "(value);"); - if ("StringArray".equals(propType)) + } + else + { + out.println("if (TagUtils.isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = TagUtils.getValueBinding(" + propVar + ");"); + out.println("converter.setValueBinding(\"" + propName + "\", vb);"); + out.unindent(); + out.println("}"); + String propType = _resolveType(propFullClass); + if (propType != null) { - out.println("}"); - out.println("catch (ParseException pe)"); + out.println("else"); out.println("{"); out.indent(); - out.println("throw new JspException("); - out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + if ("StringArray".equals(propType)) + { + out.println("try"); + out.println("{"); + } + out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ");"); + String setMethod = Util.getPrefixedPropertyName("set", propName); + out.println("converter." + setMethod + "(value);"); + if ("StringArray".equals(propType)) + { + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("throw new JspException("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + } out.unindent(); out.println("}"); } - out.unindent(); - out.println("}"); } + out.unindent(); out.println("}"); } @@ -873,6 +1046,19 @@ out.println("}"); } } + + private String _getJspPropertyType(PropertyBean property) + { + if (property.isMethodExpression()) + return "MethodExpression"; + + if (_is12() && property.isMethodBinding()) + return "MethodExpression"; + + if (_is12() && !property.isLiteralOnly()) + return "ValueExpression"; + return "String"; + } } class ValidatorTagGenerator @@ -910,8 +1096,17 @@ out.println(" * Auto-generated tag class."); out.println(" */"); - out.println("public class " + className + - " extends ValidatorTag"); + if (_is12()) + { + out.println("public class " + className + + " extends ValidatorELTag"); + } + else + { + out.println("public class " + className + + " extends ValidatorTag"); + } + out.println("{"); out.indent(); @@ -949,7 +1144,15 @@ { Set imports = new TreeSet(); - imports.add("javax.faces.webapp.ValidatorTag"); + if (_is12()) + { + imports.add("javax.faces.webapp.ValidatorELTag"); + imports.add("javax.faces.context.FacesContext"); + imports.add("javax.faces.application.Application"); + } + else + imports.add("javax.faces.webapp.ValidatorTag"); + imports.add("javax.servlet.jsp.JspException"); imports.add(validator.getValidatorClass()); @@ -958,7 +1161,10 @@ if (properties.hasNext()) { imports.add("javax.faces.validator.Validator"); - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("org.apache.myfaces.trinidadinternal.taglib.util.TagUtils"); } @@ -1022,7 +1228,9 @@ { String propName = property.getPropertyName(); String propVar = "_" + Util.getVariableFromName(propName); - out.println("private String " + propVar + ";"); + String jspPropType = _getJspPropertyType(property); + + out.println("private " + jspPropType + " " + propVar + ";"); } private void _writePropertySet( @@ -1032,9 +1240,10 @@ String propName = property.getPropertyName(); String propVar = Util.getVariableFromName(propName); String setMethod = Util.getPrefixedPropertyName("set", propName); + String jspPropType = _getJspPropertyType(property); // TODO: restore coding standards, and make final - out.println("public void " + setMethod + "(String " + propVar + ")"); + out.println("public void " + setMethod + "(" + jspPropType + " " + propVar + ")"); out.println("{"); out.indent(); out.println("_" + propVar + " = " + propVar + ";"); @@ -1046,19 +1255,22 @@ PrettyWriter out, ValidatorBean validator) throws IOException { - String validatorFullClass = validator.getValidatorClass(); - String validatorClass = Util.getClassFromFullClass(validatorFullClass); - out.println(); - // TODO: restore coding standards, and make final - out.println("@Override"); - out.println("public int doStartTag() throws JspException"); - out.println("{"); - out.indent(); - out.println("super.setValidatorId(" + validatorClass + ".VALIDATOR_ID);"); - out.println("return super.doStartTag();"); - out.unindent(); - out.println("}"); + if (!_is12()) + { + String validatorFullClass = validator.getValidatorClass(); + String validatorClass = Util.getClassFromFullClass(validatorFullClass); + + // TODO: restore coding standards, and make final + out.println("@Override"); + out.println("public int doStartTag() throws JspException"); + out.println("{"); + out.indent(); + out.println("super.setValidatorId(" + validatorClass + ".VALIDATOR_ID);"); + out.println("return super.doStartTag();"); + out.unindent(); + out.println("}"); + } } private void _writeCreateValidator( @@ -1078,8 +1290,18 @@ out.println("protected Validator createValidator() throws JspException"); out.println("{"); out.indent(); - out.println(validatorClass + " validator = " + - "(" + validatorClass + ")super.createValidator();"); + if (_is12()) + { + out.println("String validatorId = " + validatorClass + ".VALIDATOR_ID;"); + out.println("Application appl = FacesContext.getCurrentInstance().getApplication();"); + out.println(validatorClass + " validator = " + + "(" + validatorClass + ")appl.createValidator(validatorId);"); + } + else + { + out.println(validatorClass + " validator = " + + "(" + validatorClass + ")super.createValidator();"); + } out.println("_setProperties(validator);"); out.println("return validator;"); out.unindent(); @@ -1125,41 +1347,84 @@ out.println("if (" + propVar + " != null)"); out.println("{"); out.indent(); - out.println("if (TagUtils.isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = TagUtils.getValueBinding(" + propVar + ");"); - out.println("validator.setValueBinding(\"" + propName + "\", vb);"); - out.unindent(); - out.println("}"); - String propType = _resolveType(propFullClass); - if (propType != null) + if (_is12()) { - out.println("else"); + out.println("if (!" + propVar + ".isLiteralText())"); out.println("{"); out.indent(); - if ("StringArray".equals(propType)) + out.println("validator.setValueExpression(\"" + propName + "\", " + + propVar + ");"); + out.unindent(); + out.println("}"); + String propType = _resolveType(propFullClass); + if (propType != null) { - out.println("try"); + out.println("else"); out.println("{"); + out.indent(); + if ("StringArray".equals(propType)) + { + out.println("try"); + out.println("{"); + } + + out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ".getValue(null));"); + String setMethod = Util.getPrefixedPropertyName("set", propName); + out.println("validator." + setMethod + "(value);"); + if ("StringArray".equals(propType)) + { + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("throw new JspException("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + } + out.unindent(); + out.println("}"); } - out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ");"); - String setMethod = Util.getPrefixedPropertyName("set", propName); - out.println("validator." + setMethod + "(value);"); - if ("StringArray".equals(propType)) + } + else + { + out.println("if (TagUtils.isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = TagUtils.getValueBinding(" + propVar + ");"); + out.println("validator.setValueBinding(\"" + propName + "\", vb);"); + out.unindent(); + out.println("}"); + String propType = _resolveType(propFullClass); + if (propType != null) { - out.println("}"); - out.println("catch (ParseException pe)"); + out.println("else"); out.println("{"); out.indent(); - out.println("throw new JspException("); - out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + if ("StringArray".equals(propType)) + { + out.println("try"); + out.println("{"); + } + out.println(propClass + " value = TagUtils.get" + propType + "(" + propVar + ");"); + String setMethod = Util.getPrefixedPropertyName("set", propName); + out.println("validator." + setMethod + "(value);"); + if ("StringArray".equals(propType)) + { + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("throw new JspException("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + } out.unindent(); out.println("}"); } - out.unindent(); - out.println("}"); } + out.unindent(); out.println("}"); } @@ -1189,6 +1454,19 @@ out.println("}"); } } + + private String _getJspPropertyType(PropertyBean property) + { + if (property.isMethodExpression()) + return "MethodExpression"; + + if (_is12() && property.isMethodBinding()) + return "MethodExpression"; + + if (_is12() && !property.isLiteralOnly()) + return "ValueExpression"; + return "String"; + } } class ComponentTagGenerator @@ -1321,35 +1599,64 @@ imports.add(propertyClass); } + imports.add("javax.el.ValueExpression"); + if (_isKeyStroke(propertyClass)) { - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("javax.swing.KeyStroke"); } else if (_isAWTKeyStroke(propertyClass)) { - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("java.awt.AWTKeyStroke"); } else if (_isConverter(propertyClass)) { - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("javax.faces.convert.Converter"); } else if (property.isVirtual()) { - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("org.apache.myfaces.trinidadinternal.taglib.util.VirtualAttributeUtils"); } else if (_isColorList(propertyClass, propertyClassParams)) { - imports.add("javax.faces.el.ValueBinding"); + if (_is12()) + imports.add("javax.el.ValueExpression"); + else + imports.add("javax.faces.el.ValueBinding"); imports.add("java.text.ParseException"); imports.add("org.apache.myfaces.trinidadinternal.taglib.util.TagUtils"); } else if (property.isMethodBinding()) { - imports.add("javax.faces.el.MethodBinding"); + if (_is12()) + { + imports.add("javax.el.MethodExpression"); + imports.add("org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding"); + } + else + { + imports.add("javax.faces.el.MethodBinding"); + } + } + else if (property.isMethodExpression()) + { + imports.add("javax.el.MethodExpression"); } // TODO: restore import and make reference to @@ -1483,7 +1790,22 @@ { String propName = property.getPropertyName(); String propVar = "_" + Util.getVariableFromName(propName); - out.println("private String " + propVar + ";"); + String jspPropType = _getJspPropertyType(property); + + out.println("private " + jspPropType + " " + propVar + ";"); + } + + private String _getJspPropertyType(PropertyBean property) + { + if (property.isMethodExpression()) + return "MethodExpression"; + + if (_is12() && property.isMethodBinding()) + return "MethodExpression"; + + if (_is12() && !property.isLiteralOnly()) + return "ValueExpression"; + return "String"; } private void _writePropertySet( @@ -1491,11 +1813,13 @@ PropertyBean property) throws IOException { String propName = property.getPropertyName(); + String jspPropName = property.getJspPropertyName(); String propVar = Util.getVariableFromName(propName); - String setMethod = Util.getPrefixedPropertyName("set", propName); + String setMethod = Util.getPrefixedPropertyName("set", jspPropName); + String jspPropType = _getJspPropertyType(property); // TODO: restore coding standards, and make final - out.println("public void " + setMethod + "(String " + propVar + ")"); + out.println("public void " + setMethod + "(" + jspPropType + " " + propVar + ")"); out.println("{"); out.indent(); out.println("_" + propVar + " = " + propVar + ";"); @@ -1550,6 +1874,10 @@ { _writeSetMethodBinding(out, componentClass, property); } + else if (property.isMethodExpression()) + { + _writeSetMethodExpression(out, componentClass, property); + } else if (_isKeyStroke(propClass)) { _writeSetKeyStroke(out, componentClass, propName); @@ -1646,11 +1974,25 @@ PrettyWriter out, String componentClass, String propName, - String propClass, + String propFullClass, String propVar) { + String propClass = Util.getClassFromFullClass(propFullClass); + String boxedClass = Util.getBoxedClass(propClass); + if ((!_is12() && !boxedClass.equals(propClass)) || + "java.util.Date".equals(propFullClass) || + (boxedClass.indexOf("[]") != -1)) + { // TODO: reject value binding expressions for literal-only - _writeSetProperty(out, componentClass, propName, propClass, propVar); + _writeSetProperty(out, componentClass, propName, propFullClass, propVar); + } + else + { + String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); + out.println("bean.setProperty(" + + componentClass + "." + propKey + ", " + + propVar + ");" ); + } } private void _writeSetProperty( @@ -1664,13 +2006,14 @@ String propClass = Util.getClassFromFullClass(propFullClass); String boxedClass = Util.getBoxedClass(propClass); String setProperty = "setProperty"; - if (!boxedClass.equals(propClass) || + if ((!_is12() && !boxedClass.equals(propClass)) || "java.util.Date".equals(propFullClass) || (boxedClass.indexOf("[]") != -1)) { String propType = boxedClass.replaceAll("\\[\\]", "Array"); setProperty = Util.getPrefixedPropertyName("set", propType + "Property"); } + out.println(setProperty + "(bean, " + componentClass + "." + propKey + ", " + propVar + ");" ); @@ -1698,37 +2041,73 @@ out.println("if (" + propVar + " != null)"); out.println("{"); out.indent(); - out.println("if (isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); - out.println("VirtualAttributeUtils.setAccessKeyAttribute("); - out.indent(); - out.println("bean,"); - out.println("vb,"); - out.println(propKeys[0] + ","); - out.println(propKeys[1] + ");"); - out.unindent(); - out.unindent(); - out.println("}"); - out.println("else"); - out.println("{"); - out.indent(); - out.println("VirtualAttributeUtils.setAccessKeyAttribute("); - out.indent(); - out.println("bean,"); - out.println(propVar + ","); - out.println(propKeys[0] + ","); - out.println(propKeys[1] + ");"); - out.unindent(); - out.unindent(); - out.println("}"); - out.unindent(); - out.println("}"); - } - private void _writeSetMethodBinding( - PrettyWriter out, + if (_is12()) + { + out.println("if (!" + propVar + ".isLiteralText())"); + out.println("{"); + out.indent(); + out.println("VirtualAttributeUtils.setAccessKeyAttribute("); + out.indent(); + out.println("bean,"); + out.println(propVar + ","); + out.println(propKeys[0] + ","); + out.println(propKeys[1] + ");"); + out.unindent(); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("Object o = " + propVar + ".getValue(null);"); + out.println("if (o != null)"); + out.indent(); + out.println("VirtualAttributeUtils.setAccessKeyAttribute("); + out.indent(); + out.println("bean,"); + out.println("o.toString(),"); + out.println(propKeys[0] + ","); + out.println(propKeys[1] + ");"); + out.unindent(); + out.unindent(); + out.unindent(); + out.println("}"); + } + else + { + out.println("if (isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); + out.println("VirtualAttributeUtils.setAccessKeyAttribute("); + out.indent(); + out.println("bean,"); + out.println("vb,"); + out.println(propKeys[0] + ","); + out.println(propKeys[1] + ");"); + out.unindent(); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("VirtualAttributeUtils.setAccessKeyAttribute("); + out.indent(); + out.println("bean,"); + out.println(propVar + ","); + out.println(propKeys[0] + ","); + out.println(propKeys[1] + ");"); + out.unindent(); + out.unindent(); + out.println("}"); + } + + out.unindent(); + out.println("}"); + } + + private void _writeSetMethodBinding( + PrettyWriter out, String componentClass, PropertyBean property) throws IOException { @@ -1736,89 +2115,142 @@ String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); String propVar = "_" + propName; - MethodSignatureBean signature = property.getMethodBindingSignature(); - String[] paramTypes = (signature != null) ? signature.getParameterTypes() : null; - - String classArray; - - if (paramTypes == null || paramTypes.length == 0) + if (_is12()) { - classArray = "new Class[0]"; + out.println("if (" + propVar + " != null)"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ", " + + "new MethodExpressionMethodBinding(" + propVar + "));"); + out.unindent(); } else { - StringBuffer sb = new StringBuffer(); - sb.append("new Class[]{"); - for (int i=0; i < paramTypes.length; i++) + MethodSignatureBean signature = property.getMethodBindingSignature(); + String[] paramTypes = (signature != null) ? signature.getParameterTypes() : null; + + String classArray; + + if (paramTypes == null || paramTypes.length == 0) + { + classArray = "new Class[0]"; + } + else + { + StringBuffer sb = new StringBuffer(); + sb.append("new Class[]{"); + for (int i=0; i < paramTypes.length; i++) + { + if (i > 0) + sb.append(','); + sb.append(paramTypes[i]); + sb.append(".class"); + } + + // TODO: remove trailing comma + sb.append(','); + + sb.append('}'); + classArray = sb.toString(); + } + + out.println("if (" + propVar + " != null)"); + out.println("{"); + out.indent(); + + if (isStringMethodBindingReturnType(signature)) + { + out.println("MethodBinding mb;"); + out.println("if (isValueReference(" + propVar + "))"); + out.indent(); + out.println("mb = createMethodBinding(" + propVar + ", " + classArray + ");"); + out.unindent(); + out.println("else"); + out.indent(); + out.println("mb = new org.apache.myfaces.trinidadinternal.taglib.ConstantMethodBinding(" + propVar + ");"); + out.unindent(); + } + else { - if (i > 0) - sb.append(','); - sb.append(paramTypes[i]); - sb.append(".class"); + // never a literal, no need for ConstantMethodBinding + out.println("MethodBinding mb = createMethodBinding(" + propVar + ", " + + classArray + ");"); } + + out.println("bean.setProperty(" + componentClass + "." + propKey + ", mb);"); + out.unindent(); + out.println("}"); + } + } - // TODO: remove trailing comma - sb.append(','); + private void _writeSetMethodExpression( + PrettyWriter out, + String componentClass, + PropertyBean property) throws IOException + { + String propName = property.getPropertyName(); + String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); + String propVar = "_" + propName; - sb.append('}'); - classArray = sb.toString(); - } + out.println("bean.setProperty(" + componentClass + "." + propKey + ", " + + propVar + ");"); + } + + private void _writeSetKeyStroke( + PrettyWriter out, + String componentClass, + String propName) throws IOException + { + String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); + String propVar = "_" + propName; - out.println("if (" + propVar + " != null)"); - out.println("{"); - out.indent(); - if (isStringMethodBindingReturnType(signature)) + if (_is12()) { - out.println("MethodBinding mb;"); - out.println("if (isValueReference(" + propVar + "))"); + out.println("if (" + propVar + " != null)"); + out.println("{"); out.indent(); - out.println("mb = createMethodBinding(" + propVar + ", " + classArray + ");"); + out.println("if (!" + propVar + ".isLiteralText())"); + out.println("{"); + out.indent(); + out.println("bean.setValueExpression(" + componentClass + "." + propKey + ", " + propVar + ");"); out.unindent(); + out.println("}"); out.println("else"); + out.println("{"); + out.indent(); + out.println("Object val = " + propVar + ".getValue(null);"); + out.println("if (val != null)"); out.indent(); - out.println("mb = new org.apache.myfaces.trinidadinternal.taglib.ConstantMethodBinding(" + propVar + ");"); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println("\tKeyStroke.getKeyStroke(val.toString()));"); out.unindent(); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); } else { - // never a literal, no need for ConstantMethodBinding - out.println("MethodBinding mb = createMethodBinding(" + propVar + ", " + - classArray + ");"); + out.println("if (" + propVar + " != null)"); + out.println("{"); + out.indent(); + out.println("if (isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); + out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println("\tKeyStroke.getKeyStroke(" + propVar + "));"); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); } - - out.println("bean.setProperty(" + componentClass + "." + propKey + ", mb);"); - out.unindent(); - out.println("}"); - } - - private void _writeSetKeyStroke( - PrettyWriter out, - String componentClass, - String propName) throws IOException - { - String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); - String propVar = "_" + propName; - - out.println("if (" + propVar + " != null)"); - out.println("{"); - out.indent(); - out.println("if (isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); - out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); - out.unindent(); - out.println("}"); - out.println("else"); - out.println("{"); - out.indent(); - out.println("bean.setProperty(" + componentClass + "." + propKey + ","); - out.println("\tKeyStroke.getKeyStroke(" + propVar + "));"); - out.unindent(); - out.println("}"); - out.unindent(); - out.println("}"); } @@ -1830,25 +2262,53 @@ String propKey = Util.getConstantNameFromProperty(propName, "_KEY"); String propVar = "_" + propName; - out.println("if (" + propVar + " != null)"); - out.println("{"); - out.indent(); - out.println("if (isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); - out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); - out.unindent(); - out.println("}"); - out.println("else"); - out.println("{"); - out.indent(); - out.println("bean.setProperty(" + componentClass + "." + propKey + ","); - out.println("\tAWTKeyStroke.getAWTKeyStroke(" + propVar + "));"); - out.unindent(); - out.println("}"); - out.unindent(); - out.println("}"); + if (_is12()) + { + out.println("if (" + propVar + " != null)"); + out.println("{"); + out.indent(); + out.println("if (!" + propVar + ".isLiteralText())"); + out.println("{"); + out.indent(); + out.println("bean.setValueExpression(" + componentClass + "." + propKey + ", " + propVar + ");"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("Object val = " + propVar + ".getValue(null);"); + out.println("if (val != null)"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println("\tAWTKeyStroke.getAWTKeyStroke(val.toString()));"); + out.unindent(); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); + } + else + { + out.println("if (" + propVar + " != null)"); + out.println("{"); + out.indent(); + out.println("if (isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); + out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println("\tAWTKeyStroke.getAWTKeyStroke(" + propVar + "));"); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); + } } @@ -1864,32 +2324,69 @@ out.println("if (" + propVar + " != null)"); out.println("{"); out.indent(); - out.println("if (isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); - out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); - out.unindent(); - out.println("}"); - out.println("else"); - out.println("{"); - out.indent(); - out.println("try"); - out.println("{"); - out.indent(); - out.println("bean.setProperty(" + componentClass + "." + propKey + ","); - out.println(" TagUtils.getColorList(" + propVar + "));"); - out.unindent(); - out.println("}"); - out.println("catch (ParseException pe)"); - out.println("{"); - out.indent(); - out.println("setValidationError("); - out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); - out.unindent(); - out.println("}"); - out.unindent(); - out.println("}"); + if (_is12()) + { + out.println("if (!" + propVar + ".isLiteralText())"); + out.println("{"); + out.indent(); + out.println("bean.setValueExpression(" + componentClass + "." + propKey + ", " + propVar + ");"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("Object o = " + propVar + ".getValue(null);"); + out.println("if (o != null)"); + out.indent(); + out.println("{"); + out.println("try"); + out.println("{"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println(" TagUtils.getColorList(o.toString()));"); + out.unindent(); + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("setValidationError("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); + } + else + { + out.println("if (isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); + out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("try"); + out.println("{"); + out.indent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ","); + out.println(" TagUtils.getColorList(" + propVar + "));"); + out.unindent(); + out.println("}"); + out.println("catch (ParseException pe)"); + out.println("{"); + out.indent(); + out.println("setValidationError("); + out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());"); + out.unindent(); + out.println("}"); + out.unindent(); + out.println("}"); + } out.unindent(); out.println("}"); } @@ -1906,23 +2403,54 @@ out.println("if (" + propVar + " != null)"); out.println("{"); out.indent(); - out.println("if (isValueReference(" + propVar + "))"); - out.println("{"); - out.indent(); - out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); - out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); - out.unindent(); - out.println("}"); - out.println("else"); - out.println("{"); - out.indent(); - out.println("Converter converter = getFacesContext().getApplication()."); - out.indent(); - out.println("createConverter(" + propVar + ");"); - out.unindent(); - out.println("bean.setProperty(" + componentClass + "." + propKey + ", converter);"); - out.unindent(); - out.println("}"); + if (_is12()) + { + out.println("if (!" + propVar + ".isLiteralText())"); + out.println("{"); + out.indent(); + out.println("bean.setValueExpression(" + componentClass + "." + propKey + ", " + propVar + ");"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("Object o = " + propVar + ".getValue(null);"); + out.println("if (o != null)"); + out.println("{"); + + out.indent(); + out.println("Converter converter = getFacesContext().getApplication()."); + out.indent(); + out.println("createConverter(o.toString());"); + out.unindent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ", converter);"); + + out.unindent(); + out.println("}"); + + out.unindent(); + out.println("}"); + } + else + { + out.println("if (isValueReference(" + propVar + "))"); + out.println("{"); + out.indent(); + out.println("ValueBinding vb = createValueBinding(" + propVar + ");"); + out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);"); + out.unindent(); + out.println("}"); + out.println("else"); + out.println("{"); + out.indent(); + out.println("Converter converter = getFacesContext().getApplication()."); + out.indent(); + out.println("createConverter(" + propVar + ");"); + out.unindent(); + out.println("bean.setProperty(" + componentClass + "." + propKey + ", converter);"); + out.unindent(); + out.println("}"); + } out.unindent(); out.println("}"); } @@ -1934,6 +2462,11 @@ return (sig != null && "java.lang.String".equals(sig.getReturnType())); } + private boolean _is12() + { + return "1.2".equals(jsfVersion) || "12".equals(jsfVersion); + } + private class IfComponentModifiedFilter extends ComponentFilter { protected boolean accept( @@ -2040,6 +2573,12 @@ */ private boolean force; + + /** + * @parameter + */ + private String jsfVersion; + static private String _resolveType( String className) { @@ -2088,4 +2627,26 @@ " href CDATA #IMPLIED\n" + " xpointer CDATA #IMPLIED>\n" + "]>\n"; + + static final private Set _CAN_COERCE = new HashSet(); + static + { + _CAN_COERCE.add("java.lang.String"); + _CAN_COERCE.add("java.lang.Integer"); + _CAN_COERCE.add("java.lang.Long"); + _CAN_COERCE.add("java.lang.Boolean"); + _CAN_COERCE.add("java.lang.Double"); + _CAN_COERCE.add("java.lang.Float"); + _CAN_COERCE.add("java.lang.Short"); + _CAN_COERCE.add("java.lang.Character"); + _CAN_COERCE.add("java.lang.Byte"); + _CAN_COERCE.add("int"); + _CAN_COERCE.add("long"); + _CAN_COERCE.add("boolean"); + _CAN_COERCE.add("double"); + _CAN_COERCE.add("float"); + _CAN_COERCE.add("short"); + _CAN_COERCE.add("char"); + _CAN_COERCE.add("byte"); + } } Modified: incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java Tue Oct 31 18:02:55 2006 @@ -179,6 +179,8 @@ // faces-config/component/property/property-extension digester.addBeanPropertySetter("faces-config/component/property/property-extension/state-holder", "stateHolder"); + digester.addBeanPropertySetter("faces-config/component/property/property-extension/jsp-property-name", + "jspPropertyName"); // faces-config/component/property/property-extension digester.addBeanPropertySetter("faces-config/component/property/property-extension/list", "list"); Modified: incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/plugins/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/PropertyBean.java Tue Oct 31 18:02:55 2006 @@ -280,6 +280,18 @@ return ("javax.faces.el.MethodBinding".equals(getPropertyClass())); } + + /** + * Returns true if this property is a method binding. + * + * @return true if this property is a method binding, + * otherwise false + */ + public boolean isMethodExpression() + { + return ("javax.el.MethodExpression".equals(getPropertyClass())); + } + /** * Parses the possible values for this property into a String array * using space as the separator between values. @@ -304,8 +316,32 @@ setUnsupportedAgents(unsupportedAgents.split(" ")); } + /** + * Sets the JSP name of this property. + * + * @param jspPropertyName the JSP property name + */ + public void setJspPropertyName( + String jspPropertyName) + { + _jspPropertyName = jspPropertyName; + } + + /** + * Returns the JSP name of this property. + * + * @return the JSP property name + */ + public String getJspPropertyName() + { + if (_jspPropertyName == null) + return getPropertyName(); + + return _jspPropertyName; + } private String _aliasOf; + private String _jspPropertyName; private boolean _required; private boolean _literalOnly; private boolean _stateHolder; Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/pom.xml URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/pom.xml?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/pom.xml (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/pom.xml Tue Oct 31 18:02:55 2006 @@ -22,7 +22,7 @@ trinidad pom Apache Incubator Trinidad Podling - incubator-m1-SNAPSHOT + incubator-1.2-m1-SNAPSHOT Apache Incubator Trinidad Podling @@ -222,7 +222,7 @@ org.apache.myfaces.trinidadbuild maven-faces-plugin - incubator-m1-SNAPSHOT + incubator-1.2-m1-SNAPSHOT true @@ -247,8 +247,10 @@ 1.5 1.5 + @@ -338,16 +340,16 @@ - org.apache.myfaces.core - myfaces-api - 1.1.4 + javax.faces + jsf-api + 1.2-b19 provided - org.apache.myfaces.core - myfaces-impl - 1.1.4 + javax.faces + jsf-impl + 1.2-b19 provided @@ -356,6 +358,26 @@ shale-test 1.0.3 test + + + + + myfaces + myfaces-api + + + + myfaces + myfaces-impl + + + + javax.servlet + jsp-api + + @@ -375,20 +397,20 @@ org.apache.myfaces.trinidad trinidad-build - incubator-m1-SNAPSHOT + ${pom.version} provided org.apache.myfaces.trinidad trinidad-api - incubator-m1-SNAPSHOT + ${pom.version} org.apache.myfaces.trinidad trinidad-api - incubator-m1-SNAPSHOT + ${pom.version} test-jar test @@ -396,7 +418,7 @@ org.apache.myfaces.trinidad trinidad-impl - incubator-m1-SNAPSHOT + ${pom.version} @@ -408,11 +430,18 @@ provided + + jstl + jstl + 1.2 + provided + + com.sun.facelets jsf-facelets - 1.1.6 + 1.1.11 - Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/pom.xml URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/pom.xml?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/pom.xml (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/pom.xml Tue Oct 31 18:02:55 2006 @@ -18,7 +18,7 @@ org.apache.myfaces.trinidad trinidad - incubator-m1-SNAPSHOT + incubator-1.2-m1-SNAPSHOT 4.0.0 @@ -132,8 +132,8 @@ - org.apache.myfaces.core - myfaces-api + javax.faces + jsf-api @@ -146,6 +146,13 @@ org.apache.shale shale-test + test + + + + commons-beanutils + commons-beanutils + 1.7.0 test Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXChartTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXChartTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXChartTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXChartTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,6 +15,8 @@ */ package org.apache.myfaces.trinidad.component; +import javax.el.MethodExpression; + import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; @@ -40,7 +42,7 @@ * @param event * @throws javax.faces.event.AbortProcessingException */ - @Override + @Override public void broadcast(FacesEvent event) throws AbortProcessingException { @@ -48,7 +50,7 @@ // Deliver to the default ChartDrillDownEvent if (event instanceof ChartDrillDownEvent) { - broadcastToMethodBinding(event, getChartDrillDownListener()); + broadcastToMethodExpression(event, getChartDrillDownListener()); } super.broadcast(event); } Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXCommandTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXCommandTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXCommandTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXCommandTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,7 +15,10 @@ */ package org.apache.myfaces.trinidad.component; +import javax.el.MethodExpression; + import javax.faces.component.ActionSource; +import javax.faces.component.ActionSource2; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.faces.event.AbortProcessingException; @@ -35,12 +38,35 @@ * @author The Oracle ADF Faces Team */ abstract public class UIXCommandTemplate extends UIXComponentBase - implements ActionSource, DialogSource + implements ActionSource, ActionSource2, DialogSource { /**/ // Abstract methods implemented by code gen +/**/ abstract public MethodExpression getActionExpression(); +/**/ abstract public MethodExpression setActionExpression(); +/**/ abstract public MethodExpression getLaunchListener(); /**/ abstract public MethodBinding getActionListener(); -/**/ abstract public MethodBinding getReturnListener(); -/**/ abstract public MethodBinding getLaunchListener(); +/**/ abstract public MethodExpression getReturnListener(); +/**/ abstract public MethodExpression getLaunchListener(); + + public MethodBinding getAction() + { + MethodExpression me = getActionExpression(); + if (me == null) + return null; + + if (me instanceof MethodBindingMethodExpression) + return ((MethodBindingMethodExpression) me).getMethodBinding(); + + return new MethodExpressionMethodBinding(me); + } + + public void setAction(MethodBinding binding) + { + if (binding instanceof MethodExpressionMethodBinding) + setActionExpression(((MethodExpressionMethodBinding) binding).getMethodExpression()); + else + setActionExpression(new MethodBindingMethodExpression(binding)); + } /** *

Intercept queueEvent and mark the phaseId for the @@ -107,7 +133,7 @@ if (event instanceof LaunchEvent) { - broadcastToMethodBinding(event, getLaunchListener()); + broadcastToMethodExpression(event, getLaunchListener()); boolean useWindow = Boolean.TRUE.equals(getAttributes().get("useWindow")); @@ -115,7 +141,7 @@ } else if (event instanceof ReturnEvent) { - broadcastToMethodBinding(event, getReturnListener()); + broadcastToMethodExpression(event, getReturnListener()); // =-=AEW: always jump to render response??? Seems the safest // option, because we don't want to immediately update a model // or really perform any validation. Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXDecorateCollectionTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXDecorateCollectionTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXDecorateCollectionTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXDecorateCollectionTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,6 +15,7 @@ */ package org.apache.myfaces.trinidad.component; +import javax.faces.context.FacesContext; import javax.faces.component.NamingContainer; /** @@ -61,9 +62,9 @@ * @return the local clientId */ @Override - protected final String getLocalClientId() + public final String getContainerClientId(FacesContext context) { - String id = super.getLocalClientId(); + String id = getClientId(context); String key = getCurrencyString(); if (key != null) { Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXEditableValueTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXEditableValueTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXEditableValueTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXEditableValueTemplate.java Tue Oct 31 18:02:55 2006 @@ -17,6 +17,8 @@ import java.util.Iterator; +import javax.el.ValueExpression; + import javax.faces.application.Application; import javax.faces.application.FacesMessage; import javax.faces.component.EditableValueHolder; @@ -25,7 +27,6 @@ import javax.faces.convert.ConverterException; import javax.faces.el.EvaluationException; import javax.faces.el.MethodBinding; -import javax.faces.el.ValueBinding; import javax.faces.event.AbortProcessingException; import javax.faces.event.FacesEvent; import javax.faces.event.ValueChangeEvent; @@ -111,6 +112,7 @@ // Submitted value == null means "the component was not submitted // at all"; validation should not continue + Object submittedValue = getSubmittedValue(); if (submittedValue == null) return; @@ -239,21 +241,21 @@ if (!isValid() || !isLocalValueSet()) return; - ValueBinding binding = getFacesBean().getValueBinding(VALUE_KEY); - if (binding == null) + ValueExpression expression = getFacesBean().getValueExpression(VALUE_KEY); + if (expression == null) return; try { Object localValue = getLocalValue(); - binding.setValue(context, localValue); + expression.setValue(context.getELContext(), localValue); setValue(null); setLocalValueSet(false); if (_LOG.isFiner()) { _LOG.finer("Wrote value {0} to model {1} in component {2}", new Object[]{localValue, - binding.getExpressionString(), + expression.getExpressionString(), this}); } } @@ -263,8 +265,8 @@ // bean attribute level validation: if (_LOG.isFine()) { - _LOG.fine("Error updating binding ({0})", - binding.getExpressionString()); + _LOG.fine("Error updating expression ({0})", + expression.getExpressionString()); _LOG.fine(e); } @@ -381,7 +383,6 @@ { newValue = renderer.getConvertedValue(context, this, submittedValue); - if (_LOG.isFine()) { _LOG.fine("Renderer " + renderer + " returned value " + newValue + "(" + @@ -466,7 +467,7 @@ { Object o = getAttributes().get("label"); if (o == null) - o = getValueBinding("label"); + o = getValueExpression("label"); return o; } @@ -475,7 +476,7 @@ { Object o = getAttributes().get("requiredMessageDetail"); if (o == null) - o = getValueBinding("requiredMessageDetail"); + o = getValueExpression("requiredMessageDetail"); return o; } @@ -527,13 +528,13 @@ return converter; } - ValueBinding valueBinding = getValueBinding("value"); - if (valueBinding == null) + ValueExpression valueExpression = getValueExpression("value"); + if (valueExpression == null) { return null; } - Class converterType = valueBinding.getType(context); + Class converterType = valueExpression.getType(context.getELContext()); // if converterType is null, String, or Object, assume // no conversion is needed if (converterType == null || Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXPollTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXPollTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXPollTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXPollTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,6 +15,8 @@ */ package org.apache.myfaces.trinidad.component; +import javax.el.MethodExpression; + import javax.faces.el.MethodBinding; import javax.faces.event.AbortProcessingException; import javax.faces.event.FacesEvent; @@ -32,7 +34,7 @@ /**/ // Abstract methods implemented by code gen /**/ abstract public boolean isImmediate(); -/**/ abstract public MethodBinding getPollListener(); +/**/ abstract public MethodExpression getPollListener(); // // Abstract methods implemented by subclass. @@ -45,7 +47,7 @@ // Notify the specified Poll listener method (if any) if (event instanceof PollEvent) { - broadcastToMethodBinding(event, getPollListener()); + broadcastToMethodExpression(event, getPollListener()); } } Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectInputTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectInputTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectInputTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectInputTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,7 +15,10 @@ */ package org.apache.myfaces.trinidad.component; +import javax.el.MethodExpression; + import javax.faces.component.ActionSource; +import javax.faces.component.ActionSource2; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.faces.event.AbortProcessingException; @@ -36,12 +39,35 @@ * @author The Oracle ADF Faces Team */ abstract public class UIXSelectInputTemplate extends UIXEditableValue - implements ActionSource + implements ActionSource, ActionSource2 { /**/ // Abstract methods implemented by code gen +/**/ abstract public MethodExpression getActionExpression(); +/**/ abstract public MethodExpression setActionExpression(); /**/ abstract public MethodBinding getActionListener(); -/**/ abstract public MethodBinding getReturnListener(); +/**/ abstract public MethodExpression getReturnListener(); + + + public MethodBinding getAction() + { + MethodExpression me = getActionExpression(); + if (me == null) + return null; + + if (me instanceof MethodBindingMethodExpression) + return ((MethodBindingMethodExpression) me).getMethodBinding(); + + return new MethodExpressionMethodBinding(me); + } + + public void setAction(MethodBinding binding) + { + if (binding instanceof MethodExpressionMethodBinding) + setActionExpression(((MethodExpressionMethodBinding) binding).getMethodExpression()); + else + setActionExpression(new MethodBindingMethodExpression(binding)); + } /** *

Intercept queueEvent and mark the phaseId for any @@ -113,7 +139,7 @@ { super.broadcast(event); - broadcastToMethodBinding(event, getReturnListener()); + broadcastToMethodExpression(event, getReturnListener()); Object returnValue = ((ReturnEvent) event).getReturnValue(); if (returnValue != null) { Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectRangeTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectRangeTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectRangeTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXSelectRangeTemplate.java Tue Oct 31 18:02:55 2006 @@ -16,6 +16,7 @@ package org.apache.myfaces.trinidad.component; import java.io.IOException; +import javax.el.MethodExpression; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.faces.event.AbortProcessingException; @@ -36,7 +37,7 @@ public abstract class UIXSelectRangeTemplate extends UIXComponentBase { /**/ // Abstract methods implemented by code gen -/**/ abstract public MethodBinding getRangeChangeListener(); +/**/ abstract public MethodExpression getRangeChangeListener(); /**/ abstract public void setFirst(int first); /**/ abstract public boolean isImmediate(); /**/ abstract public Object getValue(); @@ -58,7 +59,7 @@ // update first when the event is delivered setFirst(gtEvent.getNewStart()); - broadcastToMethodBinding(event, getRangeChangeListener()); + broadcastToMethodExpression(event, getRangeChangeListener()); } // Perform standard superclass processing Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXShowDetailTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXShowDetailTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXShowDetailTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXShowDetailTemplate.java Tue Oct 31 18:02:55 2006 @@ -15,6 +15,7 @@ */ package org.apache.myfaces.trinidad.component; +import javax.el.MethodExpression; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.faces.event.AbortProcessingException; @@ -34,7 +35,7 @@ /**/ abstract public boolean isDisclosed(); /**/ abstract public void setDisclosed(boolean setDisclosed); /**/ abstract public boolean isImmediate(); -/**/ abstract public MethodBinding getDisclosureListener(); +/**/ abstract public MethodExpression getDisclosureListener(); @Override public void processDecodes(FacesContext context) @@ -81,7 +82,7 @@ getFacesContext().renderResponse(); // Notify the specified disclosure listener method (if any) - broadcastToMethodBinding(event, getDisclosureListener()); + broadcastToMethodExpression(event, getDisclosureListener()); } } Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTableTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTableTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTableTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTableTemplate.java Tue Oct 31 18:02:55 2006 @@ -19,6 +19,8 @@ import java.util.Iterator; import java.util.List; +import javax.el.MethodExpression; + import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; @@ -101,7 +103,7 @@ // since the range is now different we can clear the currency cache: clearCurrencyStringCache(); - broadcastToMethodBinding(event, getRangeChangeListener()); + broadcastToMethodExpression(event, getRangeChangeListener()); } else if (event instanceof RowDisclosureEvent) { @@ -109,20 +111,20 @@ RowKeySet set = getDisclosedRowKeys(); set.addAll(eEvent.getAddedSet()); set.removeAll(eEvent.getRemovedSet()); - broadcastToMethodBinding(event, getRowDisclosureListener()); + broadcastToMethodExpression(event, getRowDisclosureListener()); } else if (event instanceof SortEvent) { SortEvent sEvent = (SortEvent) event; setSortCriteria(sEvent.getSortCriteria()); - broadcastToMethodBinding(event, getSortListener()); + broadcastToMethodExpression(event, getSortListener()); } else if (event instanceof SelectionEvent) { //pu: Implicitly record a Change for 'selectionState' attribute addAttributeChange("selectedRowKeys", getSelectedRowKeys()); - broadcastToMethodBinding(event, getSelectionListener()); + broadcastToMethodExpression(event, getSelectionListener()); } super.broadcast(event); @@ -137,10 +139,10 @@ /**/ abstract public void setShowAll(boolean showAll); /**/ abstract public boolean isShowAll(); /**/ abstract public UIComponent getDetailStamp(); -/**/ public abstract MethodBinding getRangeChangeListener(); -/**/ public abstract MethodBinding getSortListener(); -/**/ public abstract MethodBinding getRowDisclosureListener(); -/**/ public abstract MethodBinding getSelectionListener(); +/**/ public abstract MethodExpression getRangeChangeListener(); +/**/ public abstract MethodExpression getSortListener(); +/**/ public abstract MethodExpression getRowDisclosureListener(); +/**/ public abstract MethodExpression getSelectionListener(); /**/ public abstract boolean isImmediate(); @Override Modified: incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTreeTableTemplate.java URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTreeTableTemplate.java?view=diff&rev=469750&r1=469749&r2=469750 ============================================================================== --- incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTreeTableTemplate.java (original) +++ incubator/adffaces/branches/faces-1_2-061031/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXTreeTableTemplate.java Tue Oct 31 18:02:55 2006 @@ -21,6 +21,8 @@ import java.util.List; import java.util.Map; +import javax.el.MethodExpression; + import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; @@ -44,7 +46,7 @@ abstract public class UIXTreeTableTemplate extends UIXTree { /**/ public abstract int[] getRowsByDepth(); -/**/ abstract public MethodBinding getRangeChangeListener(); +/**/ abstract public MethodExpression getRangeChangeListener(); /** * Gets the maximum number of rows to show. @@ -180,7 +182,7 @@ // it is nice to expand the focused item: getDisclosedRowKeys().add(); - broadcastToMethodBinding(event, getFocusListener()); + broadcastToMethodExpression(event, getFocusListener()); } else if (event instanceof RangeChangeEvent) { @@ -190,7 +192,7 @@ //=-=pu: This ain't getting restored. Check with Arj or file a bug. addAttributeChange("first", new Integer(rce.getNewStart())); - broadcastToMethodBinding(event, getRangeChangeListener()); + broadcastToMethodExpression(event, getRangeChangeListener()); } // Perform standard superclass processing