javax.validation.metadata.ElementDescriptor Maven / Gradle / Ivy
// $Id: ElementDescriptor.java 17632 2009-10-06 17:00:53Z epbernard $
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 javax.validation.metadata;
import java.util.Set;
import java.lang.annotation.ElementType;
/**
* Describes a validated element (class, field or property).
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
public interface ElementDescriptor {
/**
* Return true
if at least one constraint declaration is present
* for this element in the class hierarchy, false
otherwise.
*/
boolean hasConstraints();
/**
* @return Statically defined returned type.
*/
Class> getElementClass();
/**
* Return all constraint descriptors for this element in the class hierarchy
* or an empty Set
if none are present.
*
* @return Set
of constraint descriptors for this element
*/
Set> getConstraintDescriptors();
/**
* Find constraints and potentially restricts them to certain criteria.
*
* @return ConstraintFinder object.
*/
ConstraintFinder findConstraints();
/**
* Declare restrictions on retrieved constraints.
* Restrictions are cumulative.
*
* A ConstraintFinder
is not thread-safe. The set of matching
* ConstraintDescriptor
is.
*/
interface ConstraintFinder {
/**
* Restrict to the constraints matching a given set of groups for this element
*
* This method respects group sequences and group inheritance (including
* class-level Default
group overriding) but does not return
* ConstraintDescriptor
s in any particular order.
* Specifically, ordering of the group sequence is not respected.
*
* @param groups groups targeted
*
* @return this
following the chaining method pattern
*/
ConstraintFinder unorderedAndMatchingGroups(Class>... groups);
/**
* Restrict to the constraints matching the provided scope for this element.
*
* Defaults to Scope.HIERARCHY
*
* @param scope expected scope
* @return this
following the chaining method pattern
*/
ConstraintFinder lookingAt(Scope scope);
/**
* Restrict to the constraints hosted on the listed types
* for a given element.
*
* Default to all possible types of the element.
*
* Typically used to restrict to fields (FIELD
)
* or getters (METHOD
)
*
* @param types targeted types
* @return this
following the chaining method pattern
*/
ConstraintFinder declaredOn(ElementType... types);
/**
* Retrieve the constraint descriptors following the defined
* restrictions and hosted on the element described by
* ElementDescriptor
*
* @return matching constraint descriptors
*/
Set> getConstraintDescriptors();
/**
* Returns true
if at least one constraint declaration
* matching the restrictions is present on the element,
* false
otherwise.
*
* @return is there any constraint
*/
boolean hasConstraints();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy