Please also review this one because I have other similar upcoming. Thanks,
Jacopo On May 28, 2012, at 5:32 PM, jaco...@apache.org wrote: > Author: jacopoc > Date: Mon May 28 15:32:28 2012 > New Revision: 1343287 > > URL: http://svn.apache.org/viewvc?rev=1343287&view=rev > Log: > Improved code that manages the cache: > * replaced putIfAbsent + get with putIfAbsentAndGet to avoid the risk of a > NPE if the cache entry is removed (or expired) between the two calls > > > Modified: > > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java > > Modified: > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java?rev=1343287&r1=1343286&r2=1343287&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java > (original) > +++ > ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelFieldTypeReader.java > Mon May 28 15:32:28 2012 > @@ -89,10 +89,8 @@ public class ModelFieldTypeReader implem > throw new IllegalStateException("Error loading field type > file " + fieldTypeResourceHandler.getLocation()); > } > Map<String, ModelFieldType> fieldTypeMap = > createFieldTypeCache(document.getDocumentElement(), > fieldTypeResourceHandler.getLocation()); > - reader = new ModelFieldTypeReader(fieldTypeMap); > - readers.putIfAbsent(tempModelName, reader); > + reader = readers.putIfAbsentAndGet(tempModelName, new > ModelFieldTypeReader(fieldTypeMap)); > > utilTimer.timerString("[ModelFieldTypeReader.getModelFieldTypeReader] Read " > + fieldTypeMap.size() + " field types"); > - reader = readers.get(tempModelName); > } > return reader; > } >