You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2007/12/01 23:51:42 UTC
svn commit: r600207 - in /myfaces/core/trunk_1.2.x/api/src:
main/java/javax/faces/component/ main/java/javax/faces/convert/
main/java/javax/faces/validator/ test/java/javax/faces/validator/
Author: lu4242
Date: Sat Dec 1 14:51:41 2007
New Revision: 600207
URL: http://svn.apache.org/viewvc?rev=600207&view=rev
Log:
fixes MYFACES-1729 label attribute does not resolve EL expresion (JSR 252 Issue 6 related)
Added:
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java (with props)
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java (with props)
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java (with props)
Modified:
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_MessageUtils.java
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_MessageUtils.java
myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_MessageUtils.java
myfaces/core/trunk_1.2.x/api/src/test/java/javax/faces/validator/_MessageUtilsTest.java
Added: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java?rev=600207&view=auto
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java (added)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java Sat Dec 1 14:51:41 2007
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.faces.component;
+
+import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+
+/**
+ * This class encapsulates a FacesMessage to evaluate the label
+ * expression on render response, where f:loadBundle is available
+ *
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+class _LabeledFacesMessage extends FacesMessage{
+
+ public _LabeledFacesMessage() {
+ super();
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail, Object args[]) {
+ super(severity, summary, detail);
+
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail) {
+ super(severity, summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary, String detail) {
+ super(summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary) {
+ super(summary);
+ }
+
+ @Override
+ public String getDetail() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getDetail(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+ @Override
+ public String getSummary() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getSummary(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+}
+
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_MessageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_MessageUtils.java?rev=600207&r1=600206&r2=600207&view=diff
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_MessageUtils.java (original)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/component/_MessageUtils.java Sat Dec 1 14:51:41 2007
@@ -18,6 +18,7 @@
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
+
import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
@@ -131,7 +132,7 @@
}
}
- return new FacesMessage(severity, summary, detail);
+ return new _LabeledFacesMessage(severity, summary, detail);
}
@@ -205,7 +206,8 @@
ValueExpression expression = component.getValueExpression("label");
if(expression != null)
- return (String)expression.getValue(facesContext.getELContext());
+ return expression.getExpressionString();
+ //return (String)expression.getValue(facesContext.getELContext());
//If no label is not specified, use clientId
return component.getClientId( facesContext );
Added: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java?rev=600207&view=auto
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java (added)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java Sat Dec 1 14:51:41 2007
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.faces.convert;
+
+import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+
+/**
+ * This class encapsulates a FacesMessage to evaluate the label
+ * expression on render response, where f:loadBundle is available
+ *
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+class _LabeledFacesMessage extends FacesMessage{
+
+ public _LabeledFacesMessage() {
+ super();
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail, Object args[]) {
+ super(severity, summary, detail);
+
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail) {
+ super(severity, summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary, String detail) {
+ super(summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary) {
+ super(summary);
+ }
+
+ @Override
+ public String getDetail() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getDetail(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+ @Override
+ public String getSummary() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getSummary(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+}
+
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_MessageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_MessageUtils.java?rev=600207&r1=600206&r2=600207&view=diff
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_MessageUtils.java (original)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/convert/_MessageUtils.java Sat Dec 1 14:51:41 2007
@@ -19,6 +19,7 @@
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+
import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
@@ -109,7 +110,7 @@
}
}
- return new FacesMessage(severity, summary, detail);
+ return new _LabeledFacesMessage(severity, summary, detail);
}
@@ -184,7 +185,8 @@
ValueExpression expression = component.getValueExpression("label");
if(expression != null)
- return (String)expression.getValue(facesContext.getELContext());
+ return expression.getExpressionString();
+ //return (String)expression.getValue(facesContext.getELContext());
//If no label is not specified, use clientId
return component.getClientId( facesContext );
Added: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java?rev=600207&view=auto
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java (added)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java Sat Dec 1 14:51:41 2007
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.faces.validator;
+
+import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+
+/**
+ * This class encapsulates a FacesMessage to evaluate the label
+ * expression on render response, where f:loadBundle is available
+ *
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+class _LabeledFacesMessage extends FacesMessage{
+
+ public _LabeledFacesMessage() {
+ super();
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail, Object args[]) {
+ super(severity, summary, detail);
+
+ }
+
+ public _LabeledFacesMessage(Severity severity, String summary,
+ String detail) {
+ super(severity, summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary, String detail) {
+ super(summary, detail);
+ }
+
+ public _LabeledFacesMessage(String summary) {
+ super(summary);
+ }
+
+ @Override
+ public String getDetail() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getDetail(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+ @Override
+ public String getSummary() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ValueExpression value = facesContext.getApplication().getExpressionFactory().
+ createValueExpression(facesContext.getELContext(), super.getSummary(), String.class);
+ return (String) value.getValue(facesContext.getELContext());
+ }
+
+}
+
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_LabeledFacesMessage.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_MessageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_MessageUtils.java?rev=600207&r1=600206&r2=600207&view=diff
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_MessageUtils.java (original)
+++ myfaces/core/trunk_1.2.x/api/src/main/java/javax/faces/validator/_MessageUtils.java Sat Dec 1 14:51:41 2007
@@ -17,6 +17,7 @@
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import java.text.MessageFormat;
@@ -115,7 +116,7 @@
}
}
- return new FacesMessage(severity, summary, detail);
+ return new _LabeledFacesMessage(severity, summary, detail);
}
@@ -190,7 +191,8 @@
ValueExpression expression = component.getValueExpression("label");
if(expression != null)
- return (String)expression.getValue(facesContext.getELContext());
+ return expression.getExpressionString();
+ //return (String)expression.getValue(facesContext.getELContext());
//If no label is not specified, use clientId
return component.getClientId( facesContext );
Modified: myfaces/core/trunk_1.2.x/api/src/test/java/javax/faces/validator/_MessageUtilsTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk_1.2.x/api/src/test/java/javax/faces/validator/_MessageUtilsTest.java?rev=600207&r1=600206&r2=600207&view=diff
==============================================================================
--- myfaces/core/trunk_1.2.x/api/src/test/java/javax/faces/validator/_MessageUtilsTest.java (original)
+++ myfaces/core/trunk_1.2.x/api/src/test/java/javax/faces/validator/_MessageUtilsTest.java Sat Dec 1 14:51:41 2007
@@ -18,17 +18,22 @@
*/
package javax.faces.validator;
-import org.apache.shale.test.mock.MockFacesContext12;
import static org.easymock.EasyMock.expect;
-import org.easymock.classextension.EasyMock;
-import org.easymock.classextension.IMocksControl;
import static org.testng.Assert.assertEquals;
-import org.testng.annotations.Test;
+import java.util.Locale;
+
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
import javax.faces.application.Application;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
-import java.util.Locale;
+
+import org.apache.shale.test.mock.MockFacesContext12;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+import org.testng.annotations.Test;
/**
* @author Mathias Broekelmann (latest modification by $Author$)
@@ -49,12 +54,20 @@
IMocksControl mocksControl = EasyMock.createControl();
Application application = mocksControl.createMock(Application.class);
ViewHandler viewHandler = mocksControl.createMock(ViewHandler.class);
+ ELContext elContext = mocksControl.createMock(ELContext.class);
+ ExpressionFactory expressionFactory = mocksControl.createMock(ExpressionFactory.class);
+ ValueExpression valueExpression = mocksControl.createMock(ValueExpression.class);
facesContext.setApplication(application);
facesContext.setViewRoot(root);
-
+ facesContext.setELContext(elContext);
+
expect(application.getViewHandler()).andReturn(viewHandler);
expect(viewHandler.calculateLocale(facesContext)).andReturn(Locale.ENGLISH);
expect(application.getMessageBundle()).andReturn("javax.faces.Messages");
+ expect(application.getExpressionFactory()).andReturn(expressionFactory);
+ String s = "xxx: Validation Error: Value is greater than allowable maximum of \"xyz\"";
+ expect(expressionFactory.createValueExpression(elContext,s,String.class)).andReturn(valueExpression);
+ expect(valueExpression.getValue(elContext)).andReturn(s);
mocksControl.replay();
assertEquals(_MessageUtils.getErrorMessage(facesContext, "javax.faces.validator.DoubleRangeValidator.MAXIMUM",