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;
>     }
> 

Reply via email to