All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.faces.validator.MultiFieldValidationUtils Maven / Gradle / Ivy

There is a newer version: 8.0.1
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

package javax.faces.validator;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.faces.context.FacesContext;
import static javax.faces.validator.BeanValidator.ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME;
import static javax.faces.validator.BeanValidator.VALIDATOR_ID;
import javax.validation.groups.Default;

class MultiFieldValidationUtils {
    
    static final String MULTI_FIELD_VALIDATION_CANDIDATES =
            VALIDATOR_ID + ".MULTI_FIELD_VALIDATION_CANDIDATES";
    
    /**
     * 

Special value to indicate the proposed value * for a property failed field-level validation. This prevents any attempt * to perform class level validation.

*/ static final String FAILED_FIELD_LEVEL_VALIDATION = VALIDATOR_ID + ".FAILED_FIELD_LEVEL_VALIDATION"; /* *

Returns a data structure that stores * the information necessary to perform class-level validation by * <f:validateWholeBean > components elsewhere in * the tree. The lifetime of this data structure does not extend * beyond the current {@code FacesContext}. The data structure must * conform to the following specification.

* *
* *
    * *
  • It is a non-thread-safe {@code Map}.

  • * *
  • Keys are CDI bean instances that are referenced by the * {@code value} attribute of <f:validateWholeBean * > components.

  • * *
  • * *

    Values are {@code Map}s that represent the properties to be stored * on the CDI bean instance that is the current key. The inner {@code Map} * must conform to the following specification.

    * *
      * *
    • It is a non-thread-safe {@code Map}.

    • * *
    • Keys are property names.

    • * *
    • Values are {@code Map} instances. In this innermost map, the following keys are supported.

      * *

      component: Object that is the EditableValueHolder

      *

      value: Object that is the value of the property

      * *
    • * *
    * *
  • * * * *
* *
* * @param context the {@link FacesContext} for this request * * @param create if {@code true}, the data structure must be created if not present. * If {@code false} the data structure must not be created and {@code Collections.emptyMap()} * must be returned. * * @return the data structure representing the multi-field validation candidates * * @since 2.3 */ static Map>> getMultiFieldValidationCandidates(FacesContext context, boolean create) { Map attrs = context.getAttributes(); Map>> result; result = (Map>>) attrs.get(MULTI_FIELD_VALIDATION_CANDIDATES); if (null == result) { if (create) { result = new HashMap<>(); attrs.put(MULTI_FIELD_VALIDATION_CANDIDATES, result); } else { result = Collections.emptyMap(); } } return result; } static boolean wholeBeanValidationEnabled(FacesContext context, Class [] validationGroupsArray) { boolean result; Map attrs = context.getAttributes(); if (!(attrs.containsKey(ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME) && (Boolean)attrs.get(ENABLE_VALIDATE_WHOLE_BEAN_PARAM_NAME))) { // NOPMD return false; } result = !(1 == validationGroupsArray.length && Default.class == validationGroupsArray[0]); return result; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy