Author: jeromy
Date: Sun Apr 13 19:10:42 2008
New Revision: 647647
URL: http://svn.apache.org/viewvc?rev=647647&view=rev
Log:
Added useful WARNs to the TextProviderHelper when a message resource is not
found and the default value is
used/evaluated
WW-2592
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java?rev=647647&r1=647646&r2=647647&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
Sun Apr 13 19:10:42 2008
@@ -83,8 +83,8 @@
if (value != null) {
addParameter("nameValue", findString(value));
} else if (key != null) {
- // get the label from a TextProvider
- String providedLabel = TextProviderHelper.getText(key, "", stack);
+ // get the label from a TextProvider (default value is the key)
+ String providedLabel = TextProviderHelper.getText(key, key, stack);
addParameter("nameValue", providedLabel);
} else if (name != null) {
String expr = name;
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java?rev=647647&r1=647646&r2=647647&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
Sun Apr 13 19:10:42 2008
@@ -626,8 +626,8 @@
}
if(this.label == null) {
- // lookup the label from a TextProvider
- providedLabel = TextProviderHelper.getText(key, "", stack);
+ // lookup the label from a TextProvider (default value is the
key)
+ providedLabel = TextProviderHelper.getText(key, key, stack);
}
}
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java?rev=647647&r1=647646&r2=647647&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java
Sun Apr 13 19:10:42 2008
@@ -1,6 +1,8 @@
package org.apache.struts2.util;
import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
import com.opensymphony.xwork2.TextProvider;
import java.util.Iterator;
@@ -12,6 +14,8 @@
*/
public class TextProviderHelper {
+ private static final Logger LOG =
LoggerFactory.getLogger(TextProviderHelper.class);
+
/**
* <p>Get a message from the first TextProvider encountered in the stack.
* If the first TextProvider doesn't provide the message the default
message is returned.</p>
@@ -19,23 +23,46 @@
* <p>This method was refactored from [EMAIL PROTECTED]
org.apache.struts2.components.Text} to use a
* consistent implementation across UIBean components.</p>
* @param key the message key in the resource bundle
- * @param defaultMessage the message to return if not found
+ * @param defaultMessage the message to return if not found (evaluated
for OGNL)
* @param args an array args to be used in a [EMAIL PROTECTED]
java.text.MessageFormat} message
* @param stack the value stack to use for finding the text
*
* @return the message if found, otherwise the defaultMessage
*/
public static String getText(String key, String defaultMessage,
List<String> args, ValueStack stack) {
- String msg = defaultMessage;
+ String msg = null;
+ TextProvider tp = null;
for (Iterator iterator = stack.getRoot().iterator();
iterator.hasNext();) {
Object o = iterator.next();
if (o instanceof TextProvider) {
- TextProvider tp = (TextProvider) o;
- msg = tp.getText(key, defaultMessage, args, stack);
+ tp = (TextProvider) o;
+ msg = tp.getText(key, null, args, stack);
break;
+ }
+ }
+
+ if (msg == null) {
+ // evaluate the defaultMesage as an OGNL expression
+ msg = stack.findString(defaultMessage);
+ if (msg == null) {
+ // use the defaultMessage literal value
+ msg = defaultMessage;
+ }
+
+ if (LOG.isWarnEnabled()) {
+ if (tp != null) {
+ LOG.warn("The first TextProvider in the ValueStack
("+tp.getClass().getName()+") could not locate the message resource with key
'"+key+"'");
+ } else {
+ LOG.warn("Could not locate the message resource '"+key+"'
as there is no TextProvider in the ValueStack.");
+ }
+ if (msg.equals(defaultMessage)) {
+ LOG.warn("The default value expression
'"+defaultMessage+"' was evaluated and did not match a property. The literal
value '"+defaultMessage+"' will be used.");
+ } else {
+ LOG.warn("The default value expression
'"+defaultMessage+"' evaluated to '"+msg+"'");
+ }
}
}
return msg;