Package org.springmodules.validation.valang.javascript.taglib

Source Code of org.springmodules.validation.valang.javascript.taglib.ValangJavaScriptTagUtils

/*
* Copyright 2004-2005 the original author or authors.
*
* 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 org.springmodules.validation.valang.javascript.taglib;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

import org.springframework.util.Assert;
import org.springframework.validation.Validator;
import org.springframework.web.servlet.mvc.BaseCommandController;
import org.springmodules.validation.valang.ValangValidator;

/**
* Static helper methods that place a <code>ValangValidator</code> into a model so that is is accessible to the JSP
* custom tag {@link ValangValidateTag}.
*
* @author Oliver Hutchison
* @author Uri Boness
*/
public abstract class ValangJavaScriptTagUtils {

    /**
     * Inserts the valang validator from the provided controller into the model using the controller's name as the
     * validation rule's key.
     *
     * @param controller
     *            the controller that will provide the command name and validator
     * @param model
     *            the model into which the validation rules will be placed
     * @throws IllegalArgumentException
     *             if the controller does not specify a command name
     * @throws IllegalArgumentException
     *             if the controller's validator is not an instance of
     *             {@link org.springmodules.validation.valang.ValangValidator}
     */
    public static void addValangRulesToModel(BaseCommandController controller, Map model) {
        Assert.hasText(controller.getCommandName(), "controller must define a command name");
        Validator validator = controller.getValidator();
        Assert.isInstanceOf(ValangValidator.class, validator, "controller's validator of class '"
                + (validator != null ? validator.getClass().getName() : "[null]")
                + "' must be an instance of 'ValangValidator'");
        ValangValidator vv = (ValangValidator) validator;
        addValangRulesToModel(controller.getCommandName(), vv.getRules(), model);
    }

    /**
     * Inserts the provided validator into the model using the provided command name as the validation rule's key. If
     * there some rules that are already associated with the given command, the new rules will be added to them.
     *
     * @param commandName
     *            the command name
     * @param validator
     *            the valang validator
     * @param model
     *            the model into which the validation rules will be placed
     */
    public static void addValangRulesToModel(String commandName, Collection ruleSet, Map model) {
        Assert.notNull(commandName, "commandName is required.");
        String key = ValangValidateTag.VALANG_RULES_KEY_PREFIX + commandName;
        Collection rules = (Collection) model.get(key);
        if (rules == null) {
            rules = new ArrayList();
        }
        rules.addAll(ruleSet);
        model.put(key, rules);
    }

}
TOP

Related Classes of org.springmodules.validation.valang.javascript.taglib.ValangJavaScriptTagUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.