Skip to content

Commit

Permalink
HV-1445 Remove the metadata cache in AnnotationMetaDataProvider
Browse files Browse the repository at this point in the history
We only keep the Object metadata handy.
  • Loading branch information
gsmet committed Aug 3, 2017
1 parent 9fca907 commit 158cae4
Showing 1 changed file with 14 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import static org.hibernate.validator.internal.util.CollectionHelper.newArrayList;
import static org.hibernate.validator.internal.util.CollectionHelper.newHashMap;
import static org.hibernate.validator.internal.util.CollectionHelper.newHashSet;
import static org.hibernate.validator.internal.util.ConcurrentReferenceHashMap.ReferenceType.SOFT;
import static org.hibernate.validator.internal.util.logging.Messages.MESSAGES;

import java.lang.annotation.Annotation;
Expand Down Expand Up @@ -64,7 +63,6 @@
import org.hibernate.validator.internal.metadata.raw.ConstrainedParameter;
import org.hibernate.validator.internal.metadata.raw.ConstrainedType;
import org.hibernate.validator.internal.util.CollectionHelper;
import org.hibernate.validator.internal.util.ConcurrentReferenceHashMap;
import org.hibernate.validator.internal.util.ExecutableHelper;
import org.hibernate.validator.internal.util.ReflectionHelper;
import org.hibernate.validator.internal.util.TypeResolutionHelper;
Expand All @@ -82,19 +80,17 @@
*
* @author Gunnar Morling
* @author Hardy Ferentschik
* @author Guillaume Smet
*/
public class AnnotationMetaDataProvider implements MetaDataProvider {
private static final Log log = LoggerFactory.make();
/**
* The default initial capacity for this cache.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;

protected final ConstraintHelper constraintHelper;
protected final TypeResolutionHelper typeResolutionHelper;
protected final ConcurrentReferenceHashMap<Class<?>, BeanConfiguration<?>> configuredBeans;
protected final AnnotationProcessingOptions annotationProcessingOptions;
protected final ValueExtractorManager valueExtractorManager;
private final ConstraintHelper constraintHelper;
private final TypeResolutionHelper typeResolutionHelper;
private final AnnotationProcessingOptions annotationProcessingOptions;
private final ValueExtractorManager valueExtractorManager;

private final BeanConfiguration<Object> objectBeanConfiguration;

public AnnotationMetaDataProvider(ConstraintHelper constraintHelper,
TypeResolutionHelper typeResolutionHelper,
Expand All @@ -104,11 +100,8 @@ public AnnotationMetaDataProvider(ConstraintHelper constraintHelper,
this.typeResolutionHelper = typeResolutionHelper;
this.valueExtractorManager = valueExtractorManager;
this.annotationProcessingOptions = annotationProcessingOptions;
this.configuredBeans = new ConcurrentReferenceHashMap<>(
DEFAULT_INITIAL_CAPACITY,
SOFT,
SOFT
);

this.objectBeanConfiguration = retrieveBeanConfiguration( Object.class );
}

@Override
Expand All @@ -117,12 +110,13 @@ public AnnotationProcessingOptions getAnnotationProcessingOptions() {
}

@Override
@SuppressWarnings("unchecked")
public <T> BeanConfiguration<T> getBeanConfiguration(Class<T> beanClass) {
@SuppressWarnings("unchecked")
BeanConfiguration<T> configuration = (BeanConfiguration<T>) configuredBeans.
computeIfAbsent( beanClass, bc -> retrieveBeanConfiguration( beanClass ) );
if ( Object.class.equals( beanClass ) ) {
return (BeanConfiguration<T>) objectBeanConfiguration;
}

return configuration;
return retrieveBeanConfiguration( beanClass );
}

/**
Expand Down

0 comments on commit 158cae4

Please sign in to comment.