Author: ivaynberg
Date: Sat Mar 8 11:58:11 2008
New Revision: 635062
URL: http://svn.apache.org/viewvc?rev=635062&view=rev
Log:
WICKET-1400: FormComponent.error(ivalidationerror) error needs to show tried
resource keys
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/validation/ValidationError.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?rev=635062&r1=635061&r2=635062&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
Sat Mar 8 11:58:11 2008
@@ -22,9 +22,11 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
import org.apache.wicket.Application;
import org.apache.wicket.Component;
@@ -51,6 +53,8 @@
import org.apache.wicket.validation.IValidatorAddListener;
import org.apache.wicket.validation.ValidationError;
import org.apache.wicket.version.undo.Change;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
@@ -86,6 +90,8 @@
implements
IFormVisitorParticipant
{
+ private static final Logger logger =
LoggerFactory.getLogger(FormComponent.class);
+
/**
* Visitor for traversing form components
*/
@@ -128,6 +134,7 @@
*/
private class MessageSource implements IErrorMessageSource
{
+ private final Set/* <String> */triedKeys = new LinkedHashSet();
/**
* @see
org.apache.wicket.validation.IErrorMessageSource#getMessage(java.lang.String)
@@ -153,7 +160,7 @@
// Note: It is important that the default value of ""
is provided
// to getString() not to throw a
MissingResourceException or to
// return a default string like "[Warning: String ..."
- String message = localizer.getString(resource,
formComponent.getParent(), "");
+ String message = getString(localizer, resource,
formComponent.getParent());
// If not found, than ...
if (Strings.isEmpty(message))
@@ -162,7 +169,7 @@
resource = prefix + key;
- message = localizer.getString(resource,
formComponent.getParent(), "");
+ message = getString(localizer, resource,
formComponent.getParent());
}
if (Strings.isEmpty(message))
@@ -175,7 +182,7 @@
// provided
// to getString() not to throw a
MissingResourceException or to
// return a default string like "[Warning:
String ..."
- message = localizer.getString(resource,
formComponent, "");
+ message = getString(localizer, resource,
formComponent);
// If not found, than ...
if (Strings.isEmpty(message))
@@ -183,8 +190,7 @@
// Try a variation of the resource key
resource = prefix + key;
-
- message = localizer.getString(resource,
formComponent, "");
+ message = getString(localizer,
resource, formComponent);
}
}
@@ -197,6 +203,12 @@
return message;
}
+ private String getString(Localizer localizer, String key,
Component component)
+ {
+ triedKeys.add(key);
+ return localizer.getString(key, component, "");
+ }
+
/**
* @see
org.apache.wicket.validation.IErrorMessageSource#substitute(java.lang.String,
* java.util.Map)
@@ -535,14 +547,31 @@
{
throw new IllegalArgumentException("Argument [[error]]
cannot be null");
}
- String message = error.getErrorMessage(new MessageSource());
+ MessageSource source = new MessageSource();
+ String message = error.getErrorMessage(source);
if (message == null)
{
- // XXX maybe make message source remember tried
resource keys so a
- // more detailed error message can be created - like
show which keys
- // were tried
- message = "Could not locate error message for error: "
+ error.toString();
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("Could not locate error message for
component: ");
+ buffer.append(Classes.simpleName(getClass()));
+ buffer.append("@");
+ buffer.append(getPageRelativePath());
+ buffer.append(" and error: ");
+ buffer.append(error.toString());
+ buffer.append(". Tried keys: ");
+ Iterator/* <String> */keys =
source.triedKeys.iterator();
+ while (keys.hasNext())
+ {
+ buffer.append(keys.next());
+ if (keys.hasNext())
+ {
+ buffer.append(", ");
+ }
+ }
+ buffer.append(".");
+ message = buffer.toString();
+ logger.warn(message);
}
error(new ValidationErrorFeedback(error, message));
}
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/validation/ValidationError.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/validation/ValidationError.java?rev=635062&r1=635061&r2=635062&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/validation/ValidationError.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/validation/ValidationError.java
Sat Mar 8 11:58:11 2008
@@ -25,6 +25,7 @@
import java.util.Map.Entry;
import org.apache.wicket.IClusterable;
+import org.apache.wicket.util.lang.Classes;
/**
* A versatile implementation of [EMAIL PROTECTED] IValidationError} that
supports message resolution from
@@ -97,12 +98,12 @@
if (name == null || name.trim().length() == 0)
{
throw new IllegalArgumentException(
- "Argument [[name]] cannot be null or an
empty string");
+ "Argument [[name]] cannot be null or an empty
string");
}
if (value == null)
{
throw new IllegalArgumentException(
- "Argument [[value]] cannot be null or
an empty string");
+ "Argument [[value]] cannot be null or an empty
string");
}
getVariables().put(name, value);
@@ -159,9 +160,9 @@
}
// ... if no keys matched try the default
- if (errorMessage == null && this.message != null)
+ if (errorMessage == null && message != null)
{
- errorMessage = this.message;
+ errorMessage = message;
}
// if a message was found perform variable substitution
@@ -207,7 +208,7 @@
public String toString()
{
StringBuffer tostring = new StringBuffer();
- tostring.append("[").append(getClass().getName());
+ tostring.append("[").append(Classes.simpleName(getClass()));
tostring.append(" message=[").append(message);
@@ -236,8 +237,11 @@
while (i.hasNext())
{
final Map.Entry e = (Entry)i.next();
-
tostring.append("[").append(e.getKey()).append("=").append(e.getValue())
- .append("]");
+ tostring.append("[")
+ .append(e.getKey())
+ .append("=")
+ .append(e.getValue())
+ .append("]");
if (i.hasNext())
{
tostring.append(",");