http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/JsrFeatures.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/JsrFeatures.java b/bval-jsr/src/main/java/org/apache/bval/jsr/JsrFeatures.java deleted file mode 100644 index 91687f9..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/JsrFeatures.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.model.Features; - -/** - * Description: Contains MetaBean feature keys of additional features used in the implementation - * of JSR303<br/> - * - * @see org.apache.bval.model.FeaturesCapable - * @see org.apache.bval.model.Features - */ -public interface JsrFeatures { - interface Method extends Features.Property { - String MethodDescriptor = "MethodDescriptor"; - } - - interface Constructor extends Features.Property { - String ConstructorDescriptor = "ConstructorDescriptor"; - } - - /** - * JSR303 Property features - */ - interface Property extends Features.Property { - /** INFO: cached PropertyDescriptorImpl of the property */ - String PropertyDescriptor = "PropertyDescriptor"; - /** - * INFO: Class[] with the groups to validate a REF_CASCADE - */ - String REF_GROUPS = "refGroups"; - - // Collection<Annotation> - String ANNOTATIONS_TO_PROCESS = "annotationToProcess"; - } - - /** - * JSR303 bean features - */ - interface Bean extends Features.Bean { - /** - * INFO: List of Group(Class) for {@link javax.validation.GroupSequence#value()} - * (redefined default group) - **/ - String GROUP_SEQUENCE = "GroupSequence"; - - /** - * INFO: cached BeanDescriptorImpl of the bean - */ - String BEAN_DESCRIPTOR = "BeanDescriptor"; - } -}
http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java b/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java deleted file mode 100644 index 97eece1..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/JsrMetaBeanFactory.java +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.MetaBeanFactory; -import org.apache.bval.jsr.groups.Group; -import org.apache.bval.jsr.util.ClassHelper; -import org.apache.bval.jsr.xml.MetaConstraint; -import org.apache.bval.model.Features.Property; -import org.apache.bval.model.Meta; -import org.apache.bval.model.MetaBean; -import org.apache.bval.model.MetaConstructor; -import org.apache.bval.model.MetaMethod; -import org.apache.bval.model.MetaParameter; -import org.apache.bval.model.MetaProperty; -import org.apache.bval.util.AccessStrategy; -import org.apache.bval.util.FieldAccess; -import org.apache.bval.util.MethodAccess; -import org.apache.bval.util.reflection.Reflection; -import org.apache.commons.weaver.privilizer.Privilizing; -import org.apache.commons.weaver.privilizer.Privilizing.CallTo; - -import javax.validation.ConstraintDeclarationException; -import javax.validation.GroupDefinitionException; -import javax.validation.GroupSequence; -import javax.validation.groups.ConvertGroup; -import javax.validation.groups.Default; - -import java.lang.annotation.Annotation; -import java.lang.annotation.ElementType; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Description: process the class annotations for JSR303 constraint validations to build the MetaBean with information - * from annotations and JSR303 constraint mappings (defined in xml)<br/> - */ -@Privilizing(@CallTo(Reflection.class)) -public class JsrMetaBeanFactory implements MetaBeanFactory { - /** Shared log instance */ - // of dubious utility as it's static :/ - protected static final Logger log = Logger.getLogger(JsrMetaBeanFactory.class.getName()); - - /** {@link javax.validation.ValidatorFactory} used */ - protected final ApacheValidatorFactory factory; - - /** - * {@link AnnotationProcessor} used. - */ - protected AnnotationProcessor annotationProcessor; - - /** - * Create a new Jsr303MetaBeanFactory instance. - * - * @param factory the validator factory. - */ - public JsrMetaBeanFactory(ApacheValidatorFactory factory) { - this.factory = factory; - this.annotationProcessor = new AnnotationProcessor(factory); - } - - /** - * {@inheritDoc} Add the validation features to the metabean that come from JSR303 annotations in the beanClass. - */ - @Override - public void buildMetaBean(MetaBean metabean) { - try { - final Class<?> beanClass = metabean.getBeanClass(); - processGroupSequence(beanClass, metabean); - - // process class, superclasses and interfaces - final List<Class<?>> classSequence = - ClassHelper.fillFullClassHierarchyAsList(new ArrayList<Class<?>>(), beanClass); - - // start with superclasses and go down the hierarchy so that - // the child classes are processed last to have the chance to - // overwrite some declarations - // of their superclasses and that they see what they inherit at the - // time of processing - for (int i = classSequence.size() - 1; i >= 0; i--) { - Class<?> eachClass = classSequence.get(i); - processClass(eachClass, metabean); - processGroupSequence(eachClass, metabean, "{GroupSequence:" + eachClass.getCanonicalName() + "}"); - } - - } catch (IllegalAccessException e) { - throw new IllegalArgumentException(e); - } catch (InvocationTargetException e) { - throw new IllegalArgumentException(e.getTargetException()); - } - } - - /** - * Process class annotations, field and method annotations. - * - * @param beanClass - * @param metabean - * @throws IllegalAccessException - * @throws InvocationTargetException - */ - private void processClass(Class<?> beanClass, MetaBean metabean) - throws IllegalAccessException, InvocationTargetException { - - // if NOT ignore class level annotations - if (!factory.getAnnotationIgnores().isIgnoreAnnotations(beanClass)) { - annotationProcessor.processAnnotations(null, beanClass, beanClass, null, - new AppendValidationToMeta(metabean)); - } - - final Collection<String> missingValid = new ArrayList<String>(); - - final Field[] fields = Reflection.getDeclaredFields(beanClass); - for (final Field field : fields) { - MetaProperty metaProperty = metabean.getProperty(field.getName()); - // create a property for those fields for which there is not yet a - // MetaProperty - if (!factory.getAnnotationIgnores().isIgnoreAnnotations(field)) { - AccessStrategy access = new FieldAccess(field); - boolean create = metaProperty == null; - if (create) { - metaProperty = addMetaProperty(metabean, access); - } - if (!annotationProcessor.processAnnotations(metaProperty, beanClass, field, access, - new AppendValidationToMeta(metaProperty)) && create) { - metabean.putProperty(metaProperty.getName(), null); - } - - if (field.getAnnotation(ConvertGroup.class) != null) { - missingValid.add(field.getName()); - } - } - } - final Method[] methods = Reflection.getDeclaredMethods(beanClass); - for (final Method method : methods) { - if (method.isSynthetic() || method.isBridge()) { - continue; - } - String propName = null; - if (method.getParameterTypes().length == 0) { - propName = MethodAccess.getPropertyName(method); - } - if (propName != null) { - if (!factory.getAnnotationIgnores().isIgnoreAnnotations(method)) { - AccessStrategy access = new MethodAccess(propName, method); - MetaProperty metaProperty = metabean.getProperty(propName); - boolean create = metaProperty == null; - // create a property for those methods for which there is - // not yet a MetaProperty - if (create) { - metaProperty = addMetaProperty(metabean, access); - } - if (!annotationProcessor.processAnnotations(metaProperty, beanClass, method, access, - new AppendValidationToMeta(metaProperty)) && create) { - metabean.putProperty(propName, null); - } - } - } - } - - addXmlConstraints(beanClass, metabean); - - for (final String name : missingValid) { - final MetaProperty metaProperty = metabean.getProperty(name); - if (metaProperty != null && metaProperty.getFeature(Property.REF_CASCADE) == null) { - throw new ConstraintDeclarationException("@ConvertGroup needs @Valid"); - } - } - missingValid.clear(); - } - - /** - * Add cascade validation and constraints from xml mappings - * - * @param beanClass - * @param metabean - * @throws IllegalAccessException - * @throws InvocationTargetException - */ - private void addXmlConstraints(Class<?> beanClass, MetaBean metabean) - throws IllegalAccessException, InvocationTargetException { - for (final MetaConstraint<?, ? extends Annotation> metaConstraint : factory.getMetaConstraints(beanClass)) { - Meta meta; - AccessStrategy access = metaConstraint.getAccessStrategy(); - boolean create = false; - if (access == null) { // class level - meta = null; - } else if (access.getElementType() == ElementType.METHOD - && !metaConstraint.getMember().getName().startsWith("get")) { // TODO: better getter test - final Method method = Method.class.cast(metaConstraint.getMember()); - meta = metabean.getMethod(method); - final MetaMethod metaMethod; - if (meta == null) { - meta = new MetaMethod(metabean, method); - metaMethod = MetaMethod.class.cast(meta); - metabean.addMethod(method, metaMethod); - } else { - metaMethod = MetaMethod.class.cast(meta); - } - final Integer index = metaConstraint.getIndex(); - if (index != null && index >= 0) { - MetaParameter param = metaMethod.getParameter(index); - if (param == null) { - param = new MetaParameter(metaMethod, index); - metaMethod.addParameter(index, param); - } - param.addAnnotation(metaConstraint.getAnnotation()); - } else { - metaMethod.addAnnotation(metaConstraint.getAnnotation()); - } - continue; - } else if (access.getElementType() == ElementType.CONSTRUCTOR) { - final Constructor<?> constructor = Constructor.class.cast(metaConstraint.getMember()); - meta = metabean.getConstructor(constructor); - final MetaConstructor metaConstructor; - if (meta == null) { - meta = new MetaConstructor(metabean, constructor); - metaConstructor = MetaConstructor.class.cast(meta); - metabean.addConstructor(constructor, metaConstructor); - } else { - metaConstructor = MetaConstructor.class.cast(meta); - } - final Integer index = metaConstraint.getIndex(); - if (index != null && index >= 0) { - MetaParameter param = metaConstructor.getParameter(index); - if (param == null) { - param = new MetaParameter(metaConstructor, index); - metaConstructor.addParameter(index, param); - } - param.addAnnotation(metaConstraint.getAnnotation()); - } else { - metaConstructor.addAnnotation(metaConstraint.getAnnotation()); - } - continue; - } else { // property level - meta = metabean.getProperty(access.getPropertyName()); - create = meta == null; - if (create) { - meta = addMetaProperty(metabean, access); - } - } - if (!annotationProcessor.processAnnotation(metaConstraint.getAnnotation(), meta, beanClass, - metaConstraint.getAccessStrategy(), new AppendValidationToMeta(meta == null ? metabean : meta), false) - && create) { - metabean.putProperty(access.getPropertyName(), null); - } - } - for (final AccessStrategy access : factory.getValidAccesses(beanClass)) { - if (access.getElementType() == ElementType.PARAMETER) { - continue; - } - - MetaProperty metaProperty = metabean.getProperty(access.getPropertyName()); - boolean create = metaProperty == null; - if (create) { - metaProperty = addMetaProperty(metabean, access); - } - if (!annotationProcessor.addAccessStrategy(metaProperty, access) && create) { - metabean.putProperty(access.getPropertyName(), null); - } - } - } - - private void processGroupSequence(Class<?> beanClass, MetaBean metabean) { - processGroupSequence(beanClass, metabean, JsrFeatures.Bean.GROUP_SEQUENCE); - } - - private void processGroupSequence(Class<?> beanClass, MetaBean metabean, String key) { - GroupSequence annotation = beanClass.getAnnotation(GroupSequence.class); - List<Group> groupSeq = metabean.getFeature(key); - if (groupSeq == null) { - groupSeq = - metabean.initFeature(key, new ArrayList<Group>(annotation == null ? 1 : annotation.value().length)); - } - Class<?>[] groupClasses = factory.getDefaultSequence(beanClass); - if (groupClasses == null || groupClasses.length == 0) { - if (annotation == null) { - groupSeq.add(Group.DEFAULT); - return; - } else { - groupClasses = annotation.value(); - } - } - boolean containsDefault = false; - for (final Class<?> groupClass : groupClasses) { - if (groupClass.getName().equals(beanClass.getName())) { - groupSeq.add(Group.DEFAULT); - containsDefault = true; - } else if (groupClass.getName().equals(Default.class.getName())) { - throw new GroupDefinitionException("'Default.class' must not appear in @GroupSequence! Use '" - + beanClass.getSimpleName() + ".class' instead."); - } else { - groupSeq.add(new Group(groupClass)); - } - } - if (!containsDefault) { - throw new GroupDefinitionException("Redefined default group sequence must contain " + beanClass.getName()); - } - log.log(Level.FINEST, - String.format("Default group sequence for bean %s is: %s", beanClass.getName(), groupSeq)); - } - - /** - * Add a {@link MetaProperty} to a {@link MetaBean}. - * @param parentMetaBean - * @param access - * @return the created {@link MetaProperty} - */ - public static MetaProperty addMetaProperty(MetaBean parentMetaBean, AccessStrategy access) { - final MetaProperty result = new MetaProperty(); - final String name = access.getPropertyName(); - result.setName(name); - result.setType(access.getJavaType()); - parentMetaBean.putProperty(name, result); - return result; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptor.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptor.java b/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptor.java deleted file mode 100644 index 99bc31d..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptor.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr; - -import javax.validation.metadata.ElementDescriptor; -import javax.validation.metadata.ParameterDescriptor; -import java.util.List; - -/** - * Description: This class will disappear when such - * functionality is part of the JSR303 specification.<br/> - */ -public interface MethodDescriptor extends ElementDescriptor { - /** - * Get the {@link javax.validation.metadata.ParameterDescriptor}s for this {@link org.apache.bval.jsr.MethodDescriptor}. - * @return {@link java.util.List} of {@link javax.validation.metadata.ParameterDescriptor} - */ - List<ParameterDescriptor> getParameterDescriptors(); //index aligned - - /** - * Learn whether the referenced method should be validated. - * @return boolean - */ - boolean isCascaded(); - -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptorImpl.java deleted file mode 100644 index f9b0247..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/MethodDescriptorImpl.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr; - -import org.apache.bval.model.MetaBean; -import org.apache.bval.model.MetaMethod; -import org.apache.bval.model.Validation; - -import java.lang.reflect.Method; - -/** - * Description: {@link MethodDescriptor} implementation.<br/> - */ -public class MethodDescriptorImpl extends InvocableElementDescriptor - implements javax.validation.metadata.MethodDescriptor, ProcedureDescriptor { - private static final Validation[] EMPTY_VALIDATION = new Validation[0]; - - private final String name; - - protected MethodDescriptorImpl(final MetaBean metaBean, final Validation[] validations, final Method method) { - super(metaBean, method.getReturnType(), validations); - name = method.getName(); - } - - public MethodDescriptorImpl(final MetaBean bean, final MetaMethod metaMethod) { - super(bean, metaMethod.getMethod().getReturnType(), EMPTY_VALIDATION); - setCascaded(false); - this.name = metaMethod.getMethod().getName(); - } - - @Override - public String getName() { - return name; - } - - @Override - public boolean hasConstrainedParameters() { - return super.hasConstrainedParameters(); - } - - @Override - public boolean hasConstrainedReturnValue() { - return super.hasConstrainedReturnValue(); - } - - @Override - public boolean hasConstraints() { - return false; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterAccess.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterAccess.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterAccess.java deleted file mode 100644 index a9c16bb..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterAccess.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.util.AccessStrategy; - -import java.lang.annotation.ElementType; -import java.lang.reflect.Type; - -/** - * Implementation of {@link org.apache.bval.util.AccessStrategy} for method parameters. - * - * @author Carlos Vara - */ -public class ParameterAccess extends AccessStrategy { - - private Type paramType; - private int paramIdx; - - /** - * Create a new ParameterAccess instance. - * @param paramType - * @param paramIdx - */ - public ParameterAccess(Type paramType, int paramIdx) { - this.paramType = paramType; - this.paramIdx = paramIdx; - } - - /** - * {@inheritDoc} - */ - @Override - public Object get(Object instance) { - throw new UnsupportedOperationException("Obtaining a parameter value not yet implemented"); - } - - /** - * {@inheritDoc} - */ - @Override - public ElementType getElementType() { - return ElementType.PARAMETER; - } - - /** - * {@inheritDoc} - */ - @Override - public Type getJavaType() { - return this.paramType; - } - - /** - * {@inheritDoc} - */ - @Override - public String getPropertyName() { - return "" + paramIdx; - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - final ParameterAccess that = (ParameterAccess) o; - return paramIdx == that.paramIdx && paramType.equals(that.paramType); - } - - @Override - public int hashCode() { - int result = paramType.hashCode(); - result = 31 * result + paramIdx; - return result; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterDescriptorImpl.java deleted file mode 100644 index 65f3ecc..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ParameterDescriptorImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr; - -import org.apache.bval.jsr.groups.Group; -import org.apache.bval.jsr.groups.GroupConversionDescriptorImpl; -import org.apache.bval.model.MetaBean; -import org.apache.bval.model.Validation; - -import javax.validation.metadata.ContainerElementTypeDescriptor; -import javax.validation.metadata.GroupConversionDescriptor; -import javax.validation.metadata.ParameterDescriptor; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * Description: {@link javax.validation.metadata.ParameterDescriptor} implementation.<br/> - */ -public class ParameterDescriptorImpl extends ElementDescriptorImpl implements ParameterDescriptor { - private final Set<GroupConversionDescriptor> groupConversions = - new CopyOnWriteArraySet<GroupConversionDescriptor>(); - private final String name; - private int index; - - /** - * Create a new ParameterDescriptorImpl instance. - * @param metaBean - * @param validations - */ - public ParameterDescriptorImpl(MetaBean metaBean, Validation[] validations, String name) { - super(metaBean, metaBean.getBeanClass(), validations); - this.name = name; - } - - /** - * Create a new ParameterDescriptorImpl instance. - * @param elementClass - * @param validations - */ - public ParameterDescriptorImpl(Class<?> elementClass, Validation[] validations, String name) { - super(elementClass, validations); - this.name = name; - } - - @Override - public Set<GroupConversionDescriptor> getGroupConversions() { - return groupConversions; - } - - /** - * {@inheritDoc} - */ - @Override - public int getIndex() { - return index; - } - - @Override - public String getName() { - return name; - } - - /** - * Set the index of the referenced parameter. - * @param index - */ - public void setIndex(int index) { - this.index = index; - } - - @Override - public void addGroupMapping(final Group from, final Group to) { - groupConversions.add(new GroupConversionDescriptorImpl(from, to)); - super.addGroupMapping(from, to); - } - - @Override - public Set<ContainerElementTypeDescriptor> getConstrainedContainerElementTypes() { - // TODO Auto-generated method stub - return null; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ParametersAccess.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ParametersAccess.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ParametersAccess.java deleted file mode 100644 index 2490dbc..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ParametersAccess.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.util.AccessStrategy; - -import java.lang.annotation.ElementType; -import java.lang.reflect.Type; - -public class ParametersAccess extends AccessStrategy { - @Override - public Object get(final Object instance) { - throw new UnsupportedOperationException(); - } - - @Override - public ElementType getElementType() { - return ElementType.PARAMETER; - } - - @Override - public Type getJavaType() { - return Object[].class; - } - - @Override - public String getPropertyName() { - return null; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ProcedureDescriptor.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ProcedureDescriptor.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ProcedureDescriptor.java deleted file mode 100644 index d85c703..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ProcedureDescriptor.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr; - -import org.apache.bval.jsr.groups.Group; -import org.apache.bval.model.MetaBean; - -import javax.validation.metadata.ParameterDescriptor; -import java.util.List; - -/** - * Description: superinterface of {@link javax.validation.metadata.ConstructorDescriptor} and {@link org.apache.bval.jsr.MethodDescriptor}.<br/> - */ -public interface ProcedureDescriptor { - /** - * Get the owning metabean. - * @return MetaBean - */ - MetaBean getMetaBean(); - - /** - * Set whether this procedure should be validated. - * @param b - */ - void setCascaded(boolean b); - - /** - * Get the parameter descriptors of this procedure. - * @return {@link java.util.List} of {@link javax.validation.metadata.ParameterDescriptor} - */ - List<ParameterDescriptor> getParameterDescriptors(); - - void addGroupMapping(Group from, Group to); - - Group mapGroup(Group current); -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/PropertyDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/PropertyDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/PropertyDescriptorImpl.java deleted file mode 100644 index 03cf5de..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/PropertyDescriptorImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.model.Features; -import org.apache.bval.model.MetaProperty; - -import java.util.Set; - -import javax.validation.metadata.ContainerElementTypeDescriptor; -import javax.validation.metadata.PropertyDescriptor; - -/** - * Description: {@link PropertyDescriptor} implementation.<br/> - * - * TODO: use it instead of MetaProperty! - */ -class PropertyDescriptorImpl extends ElementDescriptorImpl implements PropertyDescriptor { - private String propertyPath; - - /** - * Create a new PropertyDescriptorImpl instance. - * - * @param property - */ - PropertyDescriptorImpl(MetaProperty property) { - super(property.getParentMetaBean(), property.getTypeClass(), property.getValidations()); - setCascaded(property.getMetaBean() != null || property.getFeature(Features.Property.REF_CASCADE) != null); - setPropertyPath(property.getName()); - } - - /** - * Set the referenced property path. - * - * @param propertyPath - */ - public void setPropertyPath(String propertyPath) { - this.propertyPath = propertyPath; - } - - /** - * {@inheritDoc} - */ - @Override - public String getPropertyName() { - return propertyPath; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "PropertyDescriptorImpl{" + "returnType=" + elementClass + ", propertyPath='" + propertyPath + '\'' - + '}'; - } - - @Override - public Set<ContainerElementTypeDescriptor> getConstrainedContainerElementTypes() { - // TODO Auto-generated method stub - return null; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnAccess.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnAccess.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnAccess.java deleted file mode 100644 index b973b3f..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnAccess.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import org.apache.bval.util.AccessStrategy; - -import java.lang.annotation.ElementType; -import java.lang.reflect.Type; - -/** - * Implementation of {@link org.apache.bval.util.AccessStrategy} for method return values. - * - * @author Carlos Vara - */ -public class ReturnAccess extends AccessStrategy { - - private Type returnType; - - /** - * Create a new ReturnAccess instance. - * @param returnType - */ - public ReturnAccess(Type returnType) { - this.returnType = returnType; - } - - /** - * {@inheritDoc} - */ - @Override - public Object get(Object instance) { - throw new UnsupportedOperationException("Obtaining a method return value not yet implemented"); - } - - /** - * {@inheritDoc} - */ - @Override - public ElementType getElementType() { - return ElementType.METHOD; - } - - /** - * {@inheritDoc} - */ - @Override - public Type getJavaType() { - return this.returnType; - } - - /** - * {@inheritDoc} - */ - @Override - public String getPropertyName() { - return "Return value"; - } - -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnValueDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnValueDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnValueDescriptorImpl.java deleted file mode 100644 index a6faa9b..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/ReturnValueDescriptorImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr; - -import org.apache.bval.model.MetaBean; - -import javax.validation.metadata.ContainerElementTypeDescriptor; -import javax.validation.metadata.ReturnValueDescriptor; -import java.util.Collection; -import java.util.Set; - -public class ReturnValueDescriptorImpl extends ElementDescriptorImpl implements ReturnValueDescriptor { - public ReturnValueDescriptorImpl(final MetaBean metaBean, Class<?> returnType, - final Collection<ConstraintValidation<?>> list, boolean cascaded) { - super(metaBean, returnType, list.toArray(new ConstraintValidation<?>[list.size()])); - setCascaded(cascaded); - } - - @Override - public boolean hasConstraints() { - return false; - } - - @Override - public Set<ContainerElementTypeDescriptor> getConstrainedContainerElementTypes() { - // TODO Auto-generated method stub - return null; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/UnknownPropertyException.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/UnknownPropertyException.java b/bval-jsr/src/main/java/org/apache/bval/jsr/UnknownPropertyException.java deleted file mode 100644 index c771050..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/UnknownPropertyException.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr; - -import javax.validation.ValidationException; - -/** - * Internal exception thrown when trying to access a property that doesn't exist - * in a bean. - * - * @version $Rev: 1166451 $ $Date: 2011-09-08 00:32:26 +0200 (jeu., 08 sept. 2011) $ - * - * @author Carlos Vara - */ -public class UnknownPropertyException extends ValidationException { - - private static final long serialVersionUID = 1L; - - /** - * Create a new UnknownPropertyException instance. - * @param message - */ - public UnknownPropertyException(String message) { - super(message); - } - - /** - * Create a new UnknownPropertyException instance. - */ - public UnknownPropertyException() { - super(); - } - - /** - * Create a new UnknownPropertyException instance. - * @param message - * @param cause - */ - public UnknownPropertyException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Create a new UnknownPropertyException instance. - * @param cause - */ - public UnknownPropertyException(Throwable cause) { - super(cause); - } - -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/CascadableContainerD.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/CascadableContainerD.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/CascadableContainerD.java index 8e6410a..7404278 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/CascadableContainerD.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/CascadableContainerD.java @@ -29,6 +29,7 @@ import javax.validation.metadata.ContainerElementTypeDescriptor; import javax.validation.metadata.GroupConversionDescriptor; import org.apache.bval.jsr.GraphContext; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.util.ToUnmodifiable; import org.apache.bval.util.Validate; import org.apache.bval.util.reflection.TypeUtils; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java index e90527e..01a1b5c 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/DescriptorManager.java @@ -62,6 +62,10 @@ public class DescriptorManager { return Optional.ofNullable(beanDescriptors.putIfAbsent(beanClass, beanD)).orElse(beanD); } + public void clear() { + beanDescriptors.clear(); + } + private MetadataBuilder.ForBean builder(Class<?> beanClass) { final MetadataBuilder.ForBean primaryBuilder = new HierarchyBuilder(reflectionBuilder::forBean).forBean(beanClass); http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/GroupConversion.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/GroupConversion.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/GroupConversion.java deleted file mode 100644 index 9ef724e..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/GroupConversion.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you 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.apache.bval.jsr.descriptor; - -import java.util.Objects; -import java.util.Optional; - -import javax.validation.metadata.GroupConversionDescriptor; - -import org.apache.bval.util.Lazy; -import org.apache.bval.util.LazyInt; -import org.apache.bval.util.Validate; - -public class GroupConversion implements GroupConversionDescriptor { - public static class Builder { - private final Class<?> from; - - private Builder(Class<?> from) { - this.from = from; - } - - public GroupConversion to(Class<?> to) { - return new GroupConversion(from, to); - } - } - - public static Builder from(Class<?> from) { - return new Builder(from); - } - - private final Class<?> from; - private final Class<?> to; - private final LazyInt hashCode; - private final Lazy<String> toString; - - private GroupConversion(Class<?> from, Class<?> to) { - super(); - this.from = Validate.notNull(from, "from"); - this.to = Validate.notNull(to, "to"); - this.hashCode = new LazyInt(() -> Objects.hash(this.from, this.to)); - this.toString = new Lazy<>( - () -> String.format("%s from %s to %s", GroupConversion.class.getSimpleName(), this.from, this.to)); - } - - @Override - public Class<?> getFrom() { - return from; - } - - @Override - public Class<?> getTo() { - return to; - } - - @Override - public boolean equals(Object obj) { - return obj == this - || Optional.ofNullable(obj).filter(GroupConversion.class::isInstance).map(GroupConversion.class::cast) - .filter(gc -> Objects.equals(from, gc.from) && Objects.equals(to, gc.to)).isPresent(); - } - - @Override - public int hashCode() { - return hashCode.getAsInt(); - } - - @Override - public String toString() { - return toString.get(); - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java index ba49ed4..6f00495 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java @@ -47,6 +47,7 @@ import javax.validation.metadata.PropertyDescriptor; import javax.validation.metadata.Scope; import org.apache.bval.jsr.ApacheValidatorFactory; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.metadata.ContainerElementKey; import org.apache.bval.jsr.metadata.EmptyBuilder; import org.apache.bval.jsr.metadata.MetadataBuilder; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversion.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversion.java b/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversion.java new file mode 100644 index 0000000..68babdf --- /dev/null +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversion.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to you 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.apache.bval.jsr.groups; + +import java.util.Objects; +import java.util.Optional; + +import javax.validation.metadata.GroupConversionDescriptor; + +import org.apache.bval.util.Lazy; +import org.apache.bval.util.LazyInt; +import org.apache.bval.util.Validate; + +public class GroupConversion implements GroupConversionDescriptor { + public static class Builder { + private final Class<?> from; + + private Builder(Class<?> from) { + this.from = from; + } + + public GroupConversion to(Class<?> to) { + return new GroupConversion(from, to); + } + } + + public static Builder from(Class<?> from) { + return new Builder(from); + } + + private final Class<?> from; + private final Class<?> to; + private final LazyInt hashCode; + private final Lazy<String> toString; + + private GroupConversion(Class<?> from, Class<?> to) { + super(); + this.from = Validate.notNull(from, "from"); + this.to = Validate.notNull(to, "to"); + this.hashCode = new LazyInt(() -> Objects.hash(this.from, this.to)); + this.toString = new Lazy<>( + () -> String.format("%s from %s to %s", GroupConversion.class.getSimpleName(), this.from, this.to)); + } + + @Override + public Class<?> getFrom() { + return from; + } + + @Override + public Class<?> getTo() { + return to; + } + + @Override + public boolean equals(Object obj) { + return obj == this + || Optional.ofNullable(obj).filter(GroupConversion.class::isInstance).map(GroupConversion.class::cast) + .filter(gc -> Objects.equals(from, gc.from) && Objects.equals(to, gc.to)).isPresent(); + } + + @Override + public int hashCode() { + return hashCode.getAsInt(); + } + + @Override + public String toString() { + return toString.get(); + } +} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversionDescriptorImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversionDescriptorImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversionDescriptorImpl.java deleted file mode 100644 index 6d45ced..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupConversionDescriptorImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.bval.jsr.groups; - -import javax.validation.ConstraintDeclarationException; -import javax.validation.GroupSequence; -import javax.validation.metadata.GroupConversionDescriptor; - -public class GroupConversionDescriptorImpl implements GroupConversionDescriptor { - private final Class<?> to; - private final Class<?> from; - - public GroupConversionDescriptorImpl(final Group from, final Group to) { - this.from = from.getGroup(); - if (this.from.isAnnotationPresent(GroupSequence.class)) { - throw new ConstraintDeclarationException("from() can't get a group sequence"); - } - this.to = to.getGroup(); - } - - @Override - public Class<?> getFrom() { - return from; - } - - @Override - public Class<?> getTo() { - return to; - } -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java index 54ff0f8..0090790 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java @@ -38,7 +38,7 @@ import java.util.stream.Stream; import javax.validation.metadata.Scope; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.util.ToUnmodifiable; import org.apache.bval.util.Validate; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/DualBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/DualBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/DualBuilder.java index 269d953..9524889 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/DualBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/DualBuilder.java @@ -36,7 +36,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.util.ToUnmodifiable; import org.apache.bval.util.Validate; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/EmptyBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/EmptyBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/EmptyBuilder.java index c95f6d7..7321784 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/EmptyBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/EmptyBuilder.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.util.Lazy; import org.apache.bval.util.ObjectUtils; import org.apache.bval.util.Validate; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilder.java index 7dbdcbc..ac6cc1a 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilder.java @@ -31,7 +31,7 @@ import java.util.Set; import javax.validation.metadata.Scope; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; /** * Common interface for populating the Bean Validation descriptors from various sources. Most implementations should http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java index 12f62da..ea1a9bf 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java @@ -48,7 +48,7 @@ import javax.validation.groups.ConvertGroup; import org.apache.bval.jsr.ApacheValidatorFactory; import org.apache.bval.jsr.ConstraintAnnotationAttributes; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.util.AnnotationsManager; import org.apache.bval.jsr.util.Methods; import org.apache.bval.jsr.util.ToUnmodifiable; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java index bd71ccc..aef162d 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java @@ -48,7 +48,7 @@ import javax.validation.ValidationException; import javax.xml.bind.JAXBElement; import org.apache.bval.jsr.ConstraintAnnotationAttributes; -import org.apache.bval.jsr.descriptor.GroupConversion; +import org.apache.bval.jsr.groups.GroupConversion; import org.apache.bval.jsr.util.AnnotationsManager; import org.apache.bval.jsr.util.ToUnmodifiable; import org.apache.bval.jsr.xml.AnnotationProxyBuilder; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java deleted file mode 100644 index 73c82a6..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ClassHelper.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr.util; - -import java.io.Serializable; -import java.security.AccessController; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * Common operations on classes that do not require an {@link AccessController}. - * - * @author Carlos Vara - */ -public class ClassHelper { - private static final Set<Class<?>> IGNORED_TYPES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(null,Object.class,Serializable.class,Cloneable.class))); - - private ClassHelper() { - // No instances please - } - - /** - * Fill the list with the full class/interface hierarchy of the given class. - * List is ordered from the most to less specific. - * - * @param allClasses - * The current list of classes in the hierarchy. - * @param clazz - */ - public static List<Class<?>> fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?> clazz) { - if (IGNORED_TYPES.contains(clazz) || allClasses.contains(clazz)) { - return allClasses; - } - allClasses.add(clazz); - fillFullClassHierarchyAsList(allClasses, clazz.getSuperclass()); - for (Class<?> subClass : clazz.getInterfaces()) { - fillFullClassHierarchyAsList(allClasses, subClass); - } - return allClasses; - } - -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/util/ContainerElementNodeBuilderCustomizableContextImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ContainerElementNodeBuilderCustomizableContextImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ContainerElementNodeBuilderCustomizableContextImpl.java index 13c3365..7459fdc 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ContainerElementNodeBuilderCustomizableContextImpl.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ContainerElementNodeBuilderCustomizableContextImpl.java @@ -74,5 +74,4 @@ public class ContainerElementNodeBuilderCustomizableContextImpl context.addError(template, path); return context; } - } http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/util/EnumerationConverter.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/EnumerationConverter.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/EnumerationConverter.java deleted file mode 100644 index 159fc43..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/EnumerationConverter.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr.util; - -import org.apache.commons.beanutils.Converter; - -/** - * A {@code org.apache.commons.beanutils.Converter} implementation to handle - * Enumeration type. - */ -@Deprecated -public final class EnumerationConverter implements Converter { - - /** - * The static converter instance. - */ - private static final EnumerationConverter INSTANCE = new EnumerationConverter(); - - /** - * Returns this converter instance. - * - * @return this converter instance. - */ - public static EnumerationConverter getInstance() { - return INSTANCE; - } - - /** - * This class can't be instantiated. - */ - private EnumerationConverter() { - // do nothing - } - - /** - * {@inheritDoc} - */ - @Override - @SuppressWarnings({ "unchecked", "rawtypes" }) - public Object convert(Class type, Object value) { - if (!type.isEnum()) { - throw new RuntimeException("Only enum types supported in this version!"); - } - - if (value == null) { - throw new RuntimeException("Null values not supported in this version!"); - } - - if (String.class != value.getClass()) { - throw new RuntimeException("Only java.lang.String values supported in this version!"); - } - - String stringValue = (String) value; - - final Class<Enum> enumClass = type; - return Enum.valueOf(enumClass, stringValue); - } - -} http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java index f695e84..5a20e08 100644 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java +++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java @@ -28,7 +28,7 @@ import org.apache.bval.jsr.job.ConstraintValidatorContextImpl; */ public final class NodeBuilderDefinedContextImpl implements ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderDefinedContext { - private final ConstraintValidatorContextImpl context; + private final ConstraintValidatorContextImpl<?> context; private final String template; private final PathImpl path; @@ -38,7 +38,7 @@ public final class NodeBuilderDefinedContextImpl * @param template * @param path */ - public NodeBuilderDefinedContextImpl(ConstraintValidatorContextImpl contextImpl, String template, PathImpl path) { + public NodeBuilderDefinedContextImpl(ConstraintValidatorContextImpl<?> contextImpl, String template, PathImpl path) { this.context = contextImpl; this.template = template; this.path = path; http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/util/ValidationContextTraversal.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ValidationContextTraversal.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ValidationContextTraversal.java deleted file mode 100644 index f6e19c0..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ValidationContextTraversal.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to you 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.apache.bval.jsr.util; - -import org.apache.bval.DynamicMetaBean; -import org.apache.bval.jsr.JsrMetaBeanFactory; -import org.apache.bval.jsr.UnknownPropertyException; -import org.apache.bval.jsr.util.PathNavigation.CallbackProcedure; -import org.apache.bval.model.MetaBean; -import org.apache.bval.model.MetaProperty; -import org.apache.bval.model.ValidationContext; -import org.apache.bval.util.AccessStrategy; -import org.apache.bval.util.IndexedAccess; -import org.apache.bval.util.KeyedAccess; -import org.apache.bval.util.PropertyAccess; -import org.apache.bval.util.ObjectUtils; -import org.apache.bval.util.reflection.TypeUtils; - -import java.lang.annotation.ElementType; -import java.lang.reflect.Type; - -/** - * {@link ValidationContext} traversal {@link CallbackProcedure}. - * - * @version $Rev: 1137074 $ $Date: 2011-06-17 18:20:30 -0500 (Fri, 17 Jun 2011) $ - */ -public class ValidationContextTraversal extends CallbackProcedure { - private static class NullSafePropertyAccess extends AccessStrategy { - private final PropertyAccess wrapped; - - /** - * Create a new NullSafePropertyAccess instance. - * - * @param clazz - * @param propertyName - */ - public NullSafePropertyAccess(Class<?> clazz, String propertyName) { - wrapped = PropertyAccess.getInstance(clazz, propertyName); - } - - /** - * {@inheritDoc} - */ - @Override - public Object get(Object bean) { - return bean == null ? null : wrapped.get(bean); - } - - @Override - public ElementType getElementType() { - return wrapped.getElementType(); - } - - @Override - public Type getJavaType() { - return wrapped.getJavaType(); - } - - @Override - public String getPropertyName() { - return wrapped.getPropertyName(); - } - } - - private final ValidationContext<?> validationContext; - private Type type; - private Class<?> rawType; - - /** - * Create a new {@link ValidationContextTraversal} instance. - * - * @param validationContext - */ - public ValidationContextTraversal(ValidationContext<?> validationContext) { - this.validationContext = validationContext; - init(); - } - - /** - * Initialize from {@link ValidationContext}. - */ - public void init() { - this.rawType = validationContext.getMetaBean().getBeanClass(); - this.type = this.rawType; - } - - /** - * {@inheritDoc} - */ - @Override - public void handleIndexOrKey(String token) { - moveDownIfNecessary(); - - AccessStrategy access; - if (IndexedAccess.getJavaElementType(type) != null) { - try { - Integer index = token == null ? null : Integer.valueOf(token); - access = new IndexedAccess(type, index); - validationContext.setCurrentIndex(index); - } catch (NumberFormatException e) { - throw new UnknownPropertyException(String.format("Cannot parse %s as an array/iterable index", token), - e); - } - } else if (KeyedAccess.getJavaElementType(type) != null) { - access = new KeyedAccess(type, token); - validationContext.setCurrentKey(token); - } else { - throw new UnknownPropertyException(String.format("Cannot determine index/key type for %s", type)); - } - Object value = validationContext.getBean(); - Object child = value == null ? null : access.get(value); - setType(child == null ? access.getJavaType() : child.getClass()); - validationContext.setBean(child, - validationContext.getMetaBean().resolveMetaBean(child == null ? rawType : child)); - } - - /** - * {@inheritDoc} - */ - @Override - public void handleProperty(String token) { - moveDownIfNecessary(); - - MetaBean metaBean = validationContext.getMetaBean(); - - if (metaBean instanceof DynamicMetaBean) { - metaBean = metaBean.resolveMetaBean(ObjectUtils.defaultIfNull(validationContext.getBean(), rawType)); - validationContext.setMetaBean(metaBean); - } - MetaProperty mp = metaBean.getProperty(token); - if (mp == null) { - // TODO this could indicate a property hosted on a superclass; should we shunt the context traversal down a path based on that type? - - PropertyAccess access = PropertyAccess.getInstance(rawType, token); - if (access.isKnown()) { - // add heretofore unknown, but valid, property on the fly: - mp = JsrMetaBeanFactory.addMetaProperty(metaBean, access); - } else { - throw new UnknownPropertyException("unknown property '" + token + "' in " + metaBean.getId()); - } - } - validationContext.setMetaProperty(mp); - setType(mp.getType()); - } - - /** - * If we currently have a property, navigate the context such that the property becomes the bean, in preparation for - * another property. - */ - public void moveDownIfNecessary() { - MetaProperty mp = validationContext.getMetaProperty(); - if (mp != null) { - if (mp.getMetaBean() == null) { - throw new UnknownPropertyException( - String.format("Property %s.%s is not cascaded", mp.getParentMetaBean().getId(), mp.getName())); - } - validationContext.moveDown(mp, - new NullSafePropertyAccess(validationContext.getMetaBean().getBeanClass(), mp.getName())); - } - } - - /** - * Set the type of the expression processed thus far. - * - * @param type - */ - protected void setType(Type type) { - this.rawType = TypeUtils.getRawType(type, this.type); - this.type = type; - } - - /** - * {@inheritDoc} - */ - @Override - public void handleGenericInIterable() { - throw new UnsupportedOperationException("Cannot navigate a ValidationContext to []"); - } - - /** - * @return the type - */ - public Type getType() { - return type; - } - - /** - * @return the rawType - */ - public Class<?> getRawType() { - return rawType; - } - - /** - * {@inheritDoc} - */ - @Override - protected void complete() { - super.complete(); - if (validationContext.getMetaProperty() != null) { - return; - } - if (validationContext.getMetaBean() instanceof DynamicMetaBean) { - validationContext.setMetaBean(validationContext.getMetaBean() - .resolveMetaBean(ObjectUtils.defaultIfNull(validationContext.getBean(), rawType))); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/bval/blob/92c64b3c/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationIgnores.java ---------------------------------------------------------------------- diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationIgnores.java b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationIgnores.java deleted file mode 100644 index 3ac39c4..0000000 --- a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationIgnores.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.bval.jsr.xml; - -import java.lang.reflect.Field; -import java.lang.reflect.Member; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Description: This class instantiated during the parsing of the XML configuration - * data and keeps track of the annotations which should be ignored.<br/> - */ -public final class AnnotationIgnores { - - private static final Logger log = Logger.getLogger(AnnotationIgnores.class.getName()); - - /** - * Keeps track whether the 'ignore-annotations' flag is set on bean level in the - * xml configuration. - * If 'ignore-annotations' is not specified: default = true - */ - private final Map<Class<?>, Boolean> ignoreAnnotationDefaults = new HashMap<Class<?>, Boolean>(); - - /** - * Keeps track of explicitly excluded members (fields and properties) for a given class. - * If a member appears in - * the list mapped to a given class 'ignore-annotations' was explicitly set to - * <code>true</code> in the configuration - * for this class. - */ - private final Map<Class<?>, Map<Member, Boolean>> ignoreAnnotationOnMember = - new HashMap<Class<?>, Map<Member, Boolean>>(); - - private final Map<Class<?>, Boolean> ignoreAnnotationOnClass = new HashMap<Class<?>, Boolean>(); - - private final Map<Class<?>, Map<Member, Map<Integer, Boolean>>> ignoreAnnotationOnParameter = - new HashMap<Class<?>, Map<Member, Map<Integer, Boolean>>>(); - private final Map<Member, Boolean> ignoreAnnotationOnReturn = new HashMap<Member, Boolean>(); - private final Map<Member, Boolean> ignoreAnnotationOnCrossParameter = new HashMap<Member, Boolean>(); - - /** - * Record the ignore state for a particular annotation type. - * @param clazz - * @param b, default true if null - */ - public void setDefaultIgnoreAnnotation(Class<?> clazz, Boolean b) { - ignoreAnnotationDefaults.put(clazz, b == null || b.booleanValue()); - } - - /** - * Learn whether the specified annotation type should be ignored. - * @param clazz - * @return boolean - */ - public boolean getDefaultIgnoreAnnotation(Class<?> clazz) { - return ignoreAnnotationDefaults.containsKey(clazz) && ignoreAnnotationDefaults.get(clazz); - } - - /** - * Ignore annotations on a particular {@link Member} of a class. - * @param member - */ - public void setIgnoreAnnotationsOnMember(Member member, boolean value) { - Class<?> beanClass = member.getDeclaringClass(); - Map<Member, Boolean> memberList = ignoreAnnotationOnMember.get(beanClass); - if (memberList == null) { - memberList = new HashMap<Member, Boolean>(); - ignoreAnnotationOnMember.put(beanClass, memberList); - } - memberList.put(member, value); - } - - /** - * Learn whether annotations should be ignored on a particular {@link Member} of a class. - * @param member - * @return boolean - */ - public boolean isIgnoreAnnotations(final Member member) { - final Class<?> clazz = member.getDeclaringClass(); - final Map<Member, Boolean> ignoreAnnotationForMembers = ignoreAnnotationOnMember.get(clazz); - if (ignoreAnnotationForMembers != null && ignoreAnnotationForMembers.containsKey(member)) { - final boolean value = ignoreAnnotationForMembers.get(member); - if (value) { - logMessage(member, clazz); - } - return value; - } - - final boolean ignoreAnnotation = getDefaultIgnoreAnnotation(clazz); - if (ignoreAnnotation) { - logMessage(member, clazz); - } - return ignoreAnnotation; - } - - public void setIgnoreAnnotationsOnParameter(final Member method, final int i, final boolean value) { - final Class<?> beanClass = method.getDeclaringClass(); - Map<Member, Map<Integer, Boolean>> memberList = ignoreAnnotationOnParameter.get(beanClass); - if (memberList == null) { - memberList = new HashMap<Member, Map<Integer, Boolean>>(); - ignoreAnnotationOnParameter.put(beanClass, memberList); - } - Map<Integer, Boolean> indexes = memberList.get(method); - if (indexes == null) { - indexes = new HashMap<Integer, Boolean>(); - memberList.put(method, indexes); - } - indexes.put(i, value); - } - - public boolean isIgnoreAnnotationOnParameter(final Member m, final int i) { - final Map<Member, Map<Integer, Boolean>> members = ignoreAnnotationOnParameter.get(m.getDeclaringClass()); - if (members != null) { - final Map<Integer, Boolean> indexes = members.get(m); - if (indexes != null && indexes.containsKey(i)) { - return indexes.get(i); - } - } - return false; - } - - private void logMessage(Member member, Class<?> clazz) { - String type; - if (member instanceof Field) { - type = "Field"; - } else { - type = "Property"; - } - log.log(Level.FINEST, String.format("%s level annotations are getting ignored for %s.%s", type, clazz.getName(), - member.getName())); - } - - /** - * Record the ignore state of a particular class. - * @param clazz - * @param b - */ - public void setIgnoreAnnotationsOnClass(Class<?> clazz, boolean b) { - ignoreAnnotationOnClass.put(clazz, b); - } - - /** - * Learn whether annotations should be ignored for a given class. - * @param clazz to check - * @return boolean - */ - public boolean isIgnoreAnnotations(Class<?> clazz) { - boolean ignoreAnnotation; - if (ignoreAnnotationOnClass.containsKey(clazz)) { - ignoreAnnotation = ignoreAnnotationOnClass.get(clazz); - } else { - ignoreAnnotation = getDefaultIgnoreAnnotation(clazz); - } - if (ignoreAnnotation) { - log.log(Level.FINEST, String.format("Class level annotation are getting ignored for %s", clazz.getName())); - } - return ignoreAnnotation; - } - - public void setIgnoreAnnotationOnReturn(final Member method, final boolean value) { - ignoreAnnotationOnReturn.put(method, value); - } - - public boolean isIgnoreAnnotationOnReturn(final Member m) { - final Boolean value = ignoreAnnotationOnReturn.get(m); - if (value != null) { - return value; - } - return false; - } - - public void setIgnoreAnnotationOnCrossParameter(final Member method, final boolean value) { - ignoreAnnotationOnCrossParameter.put(method, value); - } - - public boolean isIgnoreAnnotationOnCrossParameter(final Member m) { - final Boolean value = ignoreAnnotationOnCrossParameter.get(m); - if (value != null) { - return value; - } - return false; - } -}
