Skip to content

Commit

Permalink
HV-1446 Remove UnconstrainedEntityMetaDataSingleton
Browse files Browse the repository at this point in the history
We can't use it as it prevents to return proper errors when a property
or a method doesn't exist in a bean.
  • Loading branch information
gsmet authored and gunnarmorling committed Aug 3, 2017
1 parent 51ca465 commit 9fca907
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 133 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.hibernate.validator.internal.metadata.aggregated.BeanMetaData;
import org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataImpl;
import org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataImpl.BeanMetaDataBuilder;
import org.hibernate.validator.internal.metadata.aggregated.UnconstrainedEntityMetaDataSingleton;
import org.hibernate.validator.internal.metadata.core.AnnotationProcessingOptions;
import org.hibernate.validator.internal.metadata.core.AnnotationProcessingOptionsImpl;
import org.hibernate.validator.internal.metadata.core.ConstraintHelper;
Expand Down Expand Up @@ -153,8 +152,14 @@ public BeanMetaDataManager(ConstraintHelper constraintHelper,
this.metaDataProviders.add( defaultProvider );
}

@SuppressWarnings("unchecked")
public <T> BeanMetaData<T> getBeanMetaData(Class<T> beanClass) {
return getOrCreateBeanMetaData( beanClass, false );
Contracts.assertNotNull( beanClass, MESSAGES.beanTypeCannotBeNull() );

BeanMetaData<T> beanMetaData = (BeanMetaData<T>) beanMetaDataCache.computeIfAbsent( beanClass,
bc -> createBeanMetaData( bc ) );

return beanMetaData;
}

public void clear() {
Expand Down Expand Up @@ -199,39 +204,6 @@ private AnnotationProcessingOptions getAnnotationProcessingOptionsFromNonDefault
return options;
}

@SuppressWarnings("unchecked")
private <T> BeanMetaData<T> getOrCreateBeanMetaData(Class<T> beanClass, boolean allowUnconstrainedTypeSingleton) {
Contracts.assertNotNull( beanClass, MESSAGES.beanTypeCannotBeNull() );

BeanMetaData<T> beanMetaData = (BeanMetaData<T>) beanMetaDataCache.get( beanClass );

// create a new BeanMetaData in case none is cached
if ( beanMetaData == null ) {
beanMetaData = createBeanMetaData( beanClass );
if ( !beanMetaData.hasConstraints() && allowUnconstrainedTypeSingleton ) {
beanMetaData = (BeanMetaData<T>) UnconstrainedEntityMetaDataSingleton.getSingleton();
}

final BeanMetaData<T> cachedBeanMetaData = (BeanMetaData<T>) beanMetaDataCache.putIfAbsent(
beanClass,
beanMetaData
);
if ( cachedBeanMetaData != null ) {
beanMetaData = cachedBeanMetaData;
}
}

if ( beanMetaData instanceof UnconstrainedEntityMetaDataSingleton && !allowUnconstrainedTypeSingleton ) {
beanMetaData = createBeanMetaData( beanClass );
beanMetaDataCache.put(
beanClass,
beanMetaData
);
}

return beanMetaData;
}

/**
* Returns a list with the configurations for all types contained in the given type's hierarchy (including
* implemented interfaces) starting at the specified type.
Expand Down

This file was deleted.

0 comments on commit 9fca907

Please sign in to comment.