Package org.apache.bval.jsr.groups

Examples of org.apache.bval.jsr.groups.Groups


     * {@inheritDoc}
     */
    public ElementDescriptor.ConstraintFinder unorderedAndMatchingGroups(Class<?>... groups) {
        Set<ConstraintValidation<?>> matchingDescriptors =
            new HashSet<ConstraintValidation<?>>(constraintDescriptors.size());
        Groups groupChain = new GroupsComputer().computeGroups(groups);
        for (Group group : groupChain.getGroups()) {
            if (group.isDefault()) {
                // If group is default, check if it gets redefined
                List<Group> expandedDefaultGroup = metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE);
                for (Group defaultGroupMember : expandedDefaultGroup) {
                    for (ConstraintValidation<?> descriptor : constraintDescriptors) {
View Full Code Here


                mappedGroup = group;
            }


            if (group != mappedGroup) {
                final Groups propertyGroup = groupsComputer.computeGroups(new Class<?>[]{ mappedGroup.getGroup() });
                validateCascadedBean(context, prop, propertyGroup);
            } else {
                validateCascadedBean(context, prop, null);
            }
View Full Code Here

        final ConstraintValidationListener<T> listener = new ConstraintValidationListener<T>(object, objectClass);
        final GroupValidationContextImpl<T> context =
                new GroupValidationContextImpl<T>(listener, this.factoryContext.getMessageInterpolator(),
                        this.factoryContext.getTraversableResolver(), factoryContext.getParameterNameProvider(), metaBean);
        context.setBean(object, metaBean);
        final Groups computedGroup = groupsComputer.computeGroups(groups);
        if (computedGroup.getGroups().size() == 1 && Group.DEFAULT.equals(computedGroup.getGroups().iterator().next()) && metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE) != null) {
            final Groups sequence = new Groups();
            sequence.getGroups().addAll(List.class.cast(metaBean.getFeature(JsrFeatures.Bean.GROUP_SEQUENCE)));
            context.setGroups(sequence);
        } else {
            context.setGroups(computedGroup);
        }
        return context;
View Full Code Here

            final Constructor<?> m = Constructor.class.cast(invocable);
            parametersContext.setConstructor(m);
            crossParameterContext.setConstructor(m);
        }

        final Groups groups = parametersContext.getGroups();

        final List<ParameterDescriptor> parameterDescriptors = constructorDescriptor.getParameterDescriptors();
        final ElementDescriptorImpl crossParamDescriptor = ElementDescriptorImpl.class.cast(constructorDescriptor.getCrossParameterDescriptor());
        final Set<ConstraintDescriptor<?>> crossParamConstraints = crossParamDescriptor.getConstraintDescriptors();

        crossParameterContext.setBean(parameterValues);
        crossParameterContext.moveDown(rootNode);
        crossParameterContext.moveDown("<cross-parameter>");
        crossParameterContext.setKind(ElementKind.CROSS_PARAMETER);

        parametersContext.moveDown(rootNode);
        parametersContext.setParameters(parameterValues);

        for (final Group current : groups.getGroups()) {
            for (int i = 0; i < parameterValues.length; i++) {
                final ParameterDescriptorImpl paramDesc = ParameterDescriptorImpl.class.cast(parameterDescriptors.get(i));
                parametersContext.setBean(parameterValues[i]);
                parametersContext.moveDown(new NodeImpl.ParameterNodeImpl(paramDesc.getName(), i));
                for (final ConstraintDescriptor<?> constraintDescriptor : paramDesc.getConstraintDescriptors()) {
                    final ConstraintValidation<?> validation = ConstraintValidation.class.cast(constraintDescriptor);
                    parametersContext.setCurrentGroup(paramDesc.mapGroup(current));
                    validation.validateGroupContext(parametersContext);
                }
                parametersContext.moveUp(null, null);
            }

            for (final ConstraintDescriptor<?> d : crossParamConstraints) {
                final ConstraintValidation<?> validation = ConstraintValidation.class.cast(d);
                crossParameterContext.setCurrentGroup(crossParamDescriptor.mapGroup(current));
                validation.validateGroupContext(crossParameterContext);
            }

            if (gps.length == 0 && parametersContext.getListener().getConstraintViolations().size() + crossParameterContext.getListener().getConstraintViolations().size() > 0) {
                break;
            }
        }

        for (final Group current : groups.getGroups()) {
            for (int i = 0; i < parameterValues.length; i++) {
                final ParameterDescriptorImpl paramDesc = ParameterDescriptorImpl.class.cast(parameterDescriptors.get(i));
                if (paramDesc.isCascaded() && parameterValues[i] != null) {
                    parametersContext.setBean(parameterValues[i]);
                    parametersContext.moveDown(new NodeImpl.ParameterNodeImpl(paramDesc.getName(), i));
                    initMetaBean(parametersContext, factoryContext.getMetaBeanFinder(), parameterValues[i].getClass());
                    parametersContext.setCurrentGroup(paramDesc.mapGroup(current));
                    ValidationHelper.validateContext(parametersContext, new JsrValidationCallback(parametersContext), isTreatMapsLikeBeans());
                    parametersContext.moveUp(null, null);
                }
            }
        }

        for (final List<Group> eachSeq : groups.getSequences()) {
            for (final Group current : eachSeq) {
                for (int i = 0; i < parameterValues.length; i++) {
                    final ParameterDescriptorImpl paramDesc = ParameterDescriptorImpl.class.cast(parameterDescriptors.get(i));
                    parametersContext.setBean(parameterValues[i]);
                    parametersContext.moveDown(new NodeImpl.ParameterNodeImpl(paramDesc.getName(), i));
                    for (final ConstraintDescriptor<?> constraintDescriptor : paramDesc.getConstraintDescriptors()) {
                        final ConstraintValidation<?> validation = ConstraintValidation.class.cast(constraintDescriptor);
                        parametersContext.setCurrentGroup(paramDesc.mapGroup(current));
                        validation.validateGroupContext(parametersContext);
                    }
                    parametersContext.moveUp(null, null);
                }

                for (final ConstraintDescriptor<?> d : crossParamConstraints) {
                    final ConstraintValidation<?> validation = ConstraintValidation.class.cast(d);
                    crossParameterContext.setCurrentGroup(crossParamDescriptor.mapGroup(current));
                    validation.validateGroupContext(crossParameterContext);
                }

                if (parametersContext.getListener().getConstraintViolations().size() + crossParameterContext.getListener().getConstraintViolations().size() > 0) {
                    break;
                }
            }

            for (final Group current : eachSeq) {
                for (int i = 0; i < parameterValues.length; i++) {
                    final ParameterDescriptorImpl paramDesc = ParameterDescriptorImpl.class.cast(parameterDescriptors.get(i));
                    if (paramDesc.isCascaded() && parameterValues[i] != null) {
                        parametersContext.setBean(parameterValues[i]);
                        parametersContext.moveDown(new NodeImpl.ParameterNodeImpl(paramDesc.getName(), i));
                        initMetaBean(parametersContext, factoryContext.getMetaBeanFinder(), parameterValues[i].getClass());
                        parametersContext.setCurrentGroup(paramDesc.mapGroup(current));
                        ValidationHelper.validateContext(parametersContext, new JsrValidationCallback(parametersContext), isTreatMapsLikeBeans());
                        parametersContext.moveUp(null, null);
                    }
                }
            }
        }
        if (constructorDescriptor.isCascaded()) {
            if (parametersContext.getValidatedValue() != null) {
                initMetaBean(parametersContext, factoryContext.getMetaBeanFinder(), parametersContext.getValidatedValue().getClass());

                for (final Group current : groups.getGroups()) {
                    parametersContext.setCurrentGroup(constructorDescriptor.mapGroup(current));
                    ValidationHelper.validateContext(parametersContext, new JsrValidationCallback(parametersContext), isTreatMapsLikeBeans());
                }
                for (final List<Group> eachSeq : groups.getSequences()) {
                    for (final Group current : eachSeq) {
                        parametersContext.setCurrentGroup(constructorDescriptor.mapGroup(current));
                        ValidationHelper.validateContext(parametersContext, new JsrValidationCallback(parametersContext), isTreatMapsLikeBeans());
                        if (!parametersContext.getListener().isEmpty()) {
                            break;
                        }
                    }
                }
            }
            if (crossParameterContext.getValidatedValue() != null) {
                initMetaBean(crossParameterContext, factoryContext.getMetaBeanFinder(), crossParameterContext.getValidatedValue().getClass());

                for (final Group current : groups.getGroups()) {
                    crossParameterContext.setCurrentGroup(constructorDescriptor.mapGroup(current));
                    ValidationHelper.validateContext(crossParameterContext, new JsrValidationCallback(crossParameterContext), isTreatMapsLikeBeans());
                }
                for (final List<Group> eachSeq : groups.getSequences()) {
                    for (final Group current : eachSeq) {
                        crossParameterContext.setCurrentGroup(constructorDescriptor.mapGroup(current));
                        ValidationHelper.validateContext(crossParameterContext, new JsrValidationCallback(crossParameterContext), isTreatMapsLikeBeans());
                        if (!crossParameterContext.getListener().isEmpty()) {
                            break;
View Full Code Here

        final GroupValidationContext<T> context = createInvocableContext(methodDescriptor.getMetaBean(), createdObject, Class.class.cast(Proxies.classFor(clazz)), gps);
        context.moveDown(rootNode);
        context.moveDown(new NodeImpl.ReturnValueNodeImpl());
        context.setReturnValue(rootBean);

        final Groups groups = context.getGroups();

        for (final Group current : groups.getGroups()) {
            for (final ConstraintDescriptor<?> d : returnedValueConstraints) {
                final ConstraintValidation<?> validation = ConstraintValidation.class.cast(d);
                context.setCurrentGroup(returnedValueDescriptor.mapGroup(current));
                validation.validateGroupContext(context);
            }

            if (gps.length == 0 && !context.getListener().getConstraintViolations().isEmpty()) {
                break;
            }
        }

        int currentViolationNumber = context.getListener().getConstraintViolations().size();
        for (final Group current : groups.getGroups()) {
            if (returnedValueDescriptor.isCascaded() && context.getValidatedValue() != null) {
                context.setBean(createdObject);
                initMetaBean(context, factoryContext.getMetaBeanFinder(), context.getValidatedValue().getClass());

                context.setCurrentGroup(methodDescriptor.mapGroup(current));
                ValidationHelper.validateContext(context, new JsrValidationCallback(context), isTreatMapsLikeBeans());

                if (currentViolationNumber < context.getListener().getConstraintViolations().size()) {
                    break;
                }
            }
        }

        for (final List<Group> eachSeq : groups.getSequences()) {
            for (final Group current : eachSeq) {
                for (final ConstraintDescriptor<?> d : returnedValueConstraints) {
                    final ConstraintValidation<?> validation = ConstraintValidation.class.cast(d);
                    // context.setCurrentGroup(returnedValueDescriptor.mapGroup(current)); // mapping is only relevant for cascaded validations
                    context.setCurrentGroup(current);
View Full Code Here

    private <T> Group validateElementInContext(final GroupValidationContext<T> context,
                                              final ElementDescriptor eltDescriptor) {

        final ElementDescriptorImpl impl = ElementDescriptorImpl.class.cast(eltDescriptor);

        final Groups groups = context.getGroups();

        Group breakOnGroup = null;

        for (final ConstraintDescriptor<?> consDesc : eltDescriptor.getConstraintDescriptors()) {
            final ConstraintValidation<?> validation = (ConstraintValidation<?>) consDesc;

            // 1. process groups
            for (final Group current : groups.getGroups()) {
                context.setCurrentGroup(current);
                validation.validateGroupContext(context);
            }
            // 2. process sequences
            for (final List<Group> eachSeq : groups.getSequences()) {
                for (final Group current : eachSeq) {
                    context.setCurrentGroup(current);
                    validation.validateGroupContext(context);
                    /**
                     * if one of the group process in the sequence leads to one
                     * or more validation failure, the groups following in the
                     * sequence must not be processed
                     */
                    if (!context.getListener().isEmpty()) {
                        breakOnGroup = current;
                        break;
                    }
                }
            }
        }
        if (impl.isCascaded() && context.getValidatedValue() != null) {
            initMetaBean(context, factoryContext.getMetaBeanFinder(), context.getValidatedValue().getClass());

            // 1. process groups
            for (final Group current : groups.getGroups()) {
                context.setCurrentGroup(impl.mapGroup(current));
                ValidationHelper.validateContext(context, new JsrValidationCallback(context), isTreatMapsLikeBeans());
            }
            // 2. process sequences
            for (final List<Group> eachSeq : groups.getSequences()) {
                for (final Group current : eachSeq) {
                    context.setCurrentGroup(impl.mapGroup(current));
                    ValidationHelper.validateContext(context, new JsrValidationCallback(context), isTreatMapsLikeBeans());
                    /**
                     * if one of the group process in the sequence leads to one
View Full Code Here

            boolean doCascade = cascade && (prop == null || prop.getMetaBean() != null);

            Object bean = context.getBean();

            ConstraintValidationListener<T> result = context.getListener();
            Groups sequence = context.getGroups();

            // 1. process groups

            for (Group current : sequence.getGroups()) {
                context.setCurrentGroup(current);

                if (!doCascade || prop != null) {
                    validatePropertyInGroup(context);
                }
                if (doCascade) {
                    contextTraversal.moveDownIfNecessary();
                    if (context.getMetaBean() instanceof DynamicMetaBean) {
                        context.setMetaBean(context.getMetaBean().resolveMetaBean(
                            ObjectUtils.defaultIfNull(context.getBean(), contextTraversal.getRawType())));
                    }
                    validateBeanNet(context);
                    if (prop != null) {
                        context.moveUp(bean, prop.getParentMetaBean());
                        context.setMetaProperty(prop);
                        if (fixed) {
                            context.setFixedValue(value);
                        }
                    }
                }
            }

            // 2. process sequences

            int groupViolations = result.getConstraintViolations().size();

            outer: for (List<Group> eachSeq : sequence.getSequences()) {
                for (Group current : eachSeq) {
                    context.setCurrentGroup(current);

                    if (!doCascade || prop != null) {
                        validatePropertyInGroup(context);
View Full Code Here

TOP

Related Classes of org.apache.bval.jsr.groups.Groups

Copyright © 2018 www.massapicom. 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.