File tree Expand file tree Collapse file tree 1 file changed +14
-2
lines changed
engine/src/main/java/org/hibernate/validator/internal/metadata Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -146,8 +146,20 @@ public BeanMetaDataManagerImpl(ConstraintCreationContext constraintCreationConte
146146 public <T > BeanMetaData <T > getBeanMetaData (Class <T > beanClass ) {
147147 Contracts .assertNotNull ( beanClass , MESSAGES .beanTypeCannotBeNull () );
148148
149- BeanMetaData <T > beanMetaData = (BeanMetaData <T >) beanMetaDataCache .computeIfAbsent ( beanClass ,
150- bc -> createBeanMetaData ( bc ) );
149+ // First, let's do a simple lookup as it's the default case
150+ BeanMetaData <T > beanMetaData = (BeanMetaData <T >) beanMetaDataCache .get ( beanClass );
151+
152+ if ( beanMetaData != null ) {
153+ return beanMetaData ;
154+ }
155+
156+ beanMetaData = createBeanMetaData ( beanClass );
157+ BeanMetaData <T > previousBeanMetaData = (BeanMetaData <T >) beanMetaDataCache .putIfAbsent ( beanClass , beanMetaData );
158+
159+ // we return the previous value if not null
160+ if ( previousBeanMetaData != null ) {
161+ return previousBeanMetaData ;
162+ }
151163
152164 return beanMetaData ;
153165 }
You can’t perform that action at this time.
0 commit comments