Add constructor to GwtMessageInterpolator that accepts a UserValidationMessagesResolver so applications can use more that one MessageInterploator. Review at http://gwt-code-reviews.appspot.com/1515803 Review by: rchandia@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10514 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java index 2bd7100..286d11f 100644 --- a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java +++ b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
@@ -36,7 +36,7 @@ /** * Implementation of {@link Context}. */ - public static class ContextImpl implements Context { + public static final class ContextImpl implements Context { private final ConstraintDescriptor<?> constraintDescriptor; private final Object value; @@ -55,7 +55,7 @@ } } - // local version because guava is included. + // local version because guava is not included. private static interface Function<F, T> { T apply(F from); } @@ -98,15 +98,18 @@ /** * Replaces keys using the Validation User custom properties. */ - private final Function<String, String> userReplacer = - createReplacer((ValidationMessageResolver) - GWT.create(UserValidationMessagesResolver.class)); + private final Function<String, String> userReplacer; - public String interpolate(String messageTemplate, Context context) { + protected BaseMessageInterpolator( + UserValidationMessagesResolver userValidationMessagesResolver) { + userReplacer = createReplacer(userValidationMessagesResolver); + } + + public final String interpolate(String messageTemplate, Context context) { return gwtInterpolate(messageTemplate, context, null); } - protected String gwtInterpolate(String message, Context context, + protected final String gwtInterpolate(String message, Context context, GwtLocale locale) { // see Section 4.3.1.1 String resolvedMessage = message; @@ -140,7 +143,7 @@ return resolvedMessage; } - protected String replaceParameters(String message, + protected final String replaceParameters(String message, Function<String, String> replacer) { StringBuffer sb = new StringBuffer(); int index = 0; @@ -159,7 +162,7 @@ return sb.toString(); } - private String removeCurlyBrace(String parameter) { + private final String removeCurlyBrace(String parameter) { return parameter.substring(1, parameter.length() - 1); } }
diff --git a/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java b/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java index ce3717d..7bd6bd2 100644 --- a/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java +++ b/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
@@ -15,6 +15,8 @@ */ package com.google.gwt.validation.client; +import com.google.gwt.core.client.GWT; + import java.util.Locale; /** @@ -26,8 +28,31 @@ public class GwtMessageInterpolator extends BaseMessageInterpolator { // This class only has the parts the need to overridden for GWT - public String interpolate(String messageTemplate, Context context, + /** + * Creates a {@link javax.validation.MessageInterpolator MessageInterpolator} + * MessageInterpolator that uses the default + * {@link UserValidationMessagesResolver}. + */ + public GwtMessageInterpolator() { + this((UserValidationMessagesResolver) GWT + .create(UserValidationMessagesResolver.class)); + } + + /** + * Creates a {@link javax.validation.MessageInterpolator MessageInterpolator} + * using the supplie{@link UserValidationMessagesResolver}. + * + * @param userValidationMessagesResolver + */ + public GwtMessageInterpolator( + UserValidationMessagesResolver userValidationMessagesResolver) { + super(userValidationMessagesResolver); + } + + public final String interpolate(String messageTemplate, Context context, Locale locale) { + // The super sourced GWT version of this calls + // gwtInterpolate return messageTemplate; } }
diff --git a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java index f180b17..3460fad 100644 --- a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java +++ b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java
@@ -15,17 +15,42 @@ */ package com.google.gwt.validation.client; +import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.shared.GwtLocale; import javax.validation.MessageInterpolator.Context; /** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> * Simple GWT {@link javax.validation.MessageInterpolator}. */ public class GwtMessageInterpolator extends BaseMessageInterpolator { // This class only has the parts the need to overridden for GWT - public String interpolate(String messageTemplate, Context context, + /** + * Creates a {@link javax.validation.MessageInterpolator MessageInterpolator} + * MessageInterpolator that uses the default + * {@link UserValidationMessagesResolver}. + */ + public GwtMessageInterpolator() { + this((UserValidationMessagesResolver) GWT + .create(UserValidationMessagesResolver.class)); + } + + /** + * Creates a {@link javax.validation.MessageInterpolator MessageInterpolator} + * using the supplie{@link UserValidationMessagesResolver}. + * + * @param userValidationMessagesResolver + */ + public GwtMessageInterpolator( + UserValidationMessagesResolver userValidationMessagesResolver) { + super(userValidationMessagesResolver); + } + + public final String interpolate(String messageTemplate, Context context, GwtLocale locale) { return gwtInterpolate(messageTemplate,context,locale); }