    001    // Copyright 2009 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    //     http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014    package org.apache.tapestry5.beanvalidator;
    015
    016    import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
    017
    018    import java.util.Set;
    019
    020    import org.apache.tapestry5.json.JSONObject;
    021
    022    /**
    023     * Describes a single client-side constraint.
    024     *
    025     */
    026    public final class ClientConstraintDescriptor
    027    {
    028       private final Class annotationClass;
    029       private final String validatorName;
    030       private final Set<String> attributes;
    031
    032       /**
    033        * Creates a {@link ClientConstraintDescriptor}.
    034        *
    035        * @param annotationClass Type of the constraint annotation
    036        * @param validatorName Name of the client-side validator
    037        * @param attributes Attribute names of the constraint annotation to be passed (along with their values) to the JavaScript validator
    038        * function as an {@link JSONObject}.
    039        */
    040       public ClientConstraintDescriptor(final Class annotationClass,
    041             final String validatorName, final String... attributes)
    042       {
    043         this.annotationClass = annotationClass;
    044         this.validatorName = validatorName;
    045         this.attributes = newSet(attributes);
    046       }
    047
    048       /**
    049        * Returns the annotation describing the constraint declaration.
    050        */
    051       public Class getAnnotationClass()
    052       {
    053         return this.annotationClass;
    054       }
    055
    056       /**
    057        * Returns the name of the client-side validator.
    058        */
    059       public String getValidatorName()
    060       {
    061         return this.validatorName;
    062       }
    063
    064       /**
    065        * Attribute names of the constraint annotation to be passed (along with their values) to the JavaScript validator
    066        * function as an {@link JSONObject}.
    067        */
    068       public Set<String> getAttributes()
    069       {
    070         return this.attributes;
    071       }
    072    }