On May 13, 2014, at 11:34 AM, Seán Coffey <sean.cof...@oracle.com> wrote:

> thanks for the comments. I hit a build issue when introducing some lambda 
> syntax to the corba repo : https://bugs.openjdk.java.net/browse/JDK-8042932
> 
> That's fixed now and I can continue with the corba push. I've cleaned up the 
> ORB class to make better use of generics and the diamond operator. Removed 
> some unused package imports also. Taken Daniel's suggestion to use 
> ConcurrentHashMap on board (and removed the sync block)
> 
> http://cr.openjdk.java.net/~coffeys/webrev.8042906.v2/webrev/
> 

There are also some compute-if-absent patterns that might be applicable:

 503     public LogWrapperBase getLogWrapper(String logDomain,
 504         String exceptionGroup, LogWrapperFactory factory)
 505     {
 506         StringPair key = new StringPair(logDomain, exceptionGroup);
 507 
 508         LogWrapperBase logWrapper = wrapperMap.get(key);
 509         if (logWrapper == null) {
 510             logWrapper = factory.create(getLogger(logDomain));
 511             wrapperMap.put(key, logWrapper);
 512         }
 513 
 514         return logWrapper;
 515     }
 516 
 517     /** get the log wrapper class (its type is dependent on the 
exceptionGroup) for the
 518      * given log domain and exception group in this ORB instance.
 519      */
 520     public static LogWrapperBase staticGetLogWrapper(String logDomain,
 521         String exceptionGroup, LogWrapperFactory factory)
 522     {
 523         StringPair key = new StringPair(logDomain, exceptionGroup);
 524 
 525         LogWrapperBase logWrapper = staticWrapperMap.get(key);
 526         if (logWrapper == null) {
 527             logWrapper = factory.create( staticGetLogger(logDomain));
 528             staticWrapperMap.put(key, logWrapper);
 529         }
 530 
 531         return logWrapper;
 532     }

  return wrapperMap.computeIfAbsent(new StringPair(...), 
      x -> factory.create(....));

Paul.

Reply via email to