001package gwt.material.design.client.base.validator;
002
003/*
004 * #%L
005 * GwtBootstrap3
006 * %%
007 * Copyright (C) 2015 GwtBootstrap3
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import com.google.gwt.core.client.GWT;
024
025import java.util.MissingResourceException;
026
027/**
028 * Default implementation of the validator message mixin. This can be replaced with your own version by using
029 * a "replace-with" statment in the gwt module file.
030 * 
031 * Example:
032 * 
033 * <pre>
034 * {@code
035 * <replace-with class="...CustomValidatorMessageMixin">
036 *     <when-type-is class="gwt.material.design.client.base.validator.ValidatorMessageMixin" />
037 * </replace-with>
038 * }
039 * </pre>
040 * 
041 * @author Steven Jardine
042 */
043public class DefaultValidatorMessageMixin implements ValidatorMessageMixin {
044
045    protected ValidationMessages messages = GWT.create(ValidationMessages.class);
046
047    public String lookup(String key) {
048        try {
049            // Replace "." with "_" in the key.
050            return key == null ? null : messages.getString(key.replace(".", "_"));
051        } catch (MissingResourceException e) {
052            return null;
053        }
054    }
055
056    @Override
057    public String lookup(String key, Object[] msgValues) {
058        String msg = lookup(key);
059        if (msg != null) {
060            msg = MessageFormat.format(msg, msgValues);
061        }
062        return msg;
063    }
064}