myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gabrielle Crawford <gabrielle.crawf...@oracle.com>
Subject Re: [Trinidad] add method to get an application scoped concurrentMap to RequestContext (TRINIDAD-926)
Date Tue, 29 Jan 2008 19:08:12 GMT
Oops, and _getClassLoader

  private ClassLoader _getClassLoader()
  {
    return Thread.currentThread().getContextClassLoader();  
  }

Gabrielle Crawford wrote:
> Here's the implementation I have so far  in 
> org.apache.myfaces.trinidadinternal.context.RequestContextImpl
>
>   @Override
>   public ConcurrentMap<String, Object> getApplicationScopedConcurrentMap()
>   {
>     ClassLoader cl = _getClassLoader();
>   
>     ConcurrentMap<String, Object> classMap = _applicationMaps.get(cl);
>
>     if (classMap == null)
>     {
>       ConcurrentMap<String, Object> newClassMap = new 
> ConcurrentHashMap<String, Object>();
>       ConcurrentMap<String, Object> oldClassMap = 
> _applicationMaps.putIfAbsent(cl, newClassMap);
>
>       classMap = ((oldClassMap != null)? oldClassMap : newClassMap);
>
>       assert(classMap != null);
>     }
>    
>     return classMap;
>   }
>
>
>   @SuppressWarnings({"CollectionWithoutInitialCapacity"})
>   private static final ConcurrentMap<ClassLoader, 
> ConcurrentMap<String, Object>> _applicationMaps =
>        new ConcurrentHashMap<ClassLoader, ConcurrentMap<String, 
> Object>>();
>
> Martin Marinschek wrote:
>> where will this map be stored?
>>
>> regards,
>>
>> Martin
>>
>> On Jan 29, 2008 6:38 AM, Matthias Wessendorf <matzew@apache.org 
>> <mailto:matzew@apache.org>> wrote:
>>
>>     +1
>>
>>     On Jan 29, 2008 2:48 AM, Blake Sullivan
>>     <blake.sullivan@oracle.com <mailto:blake.sullivan@oracle.com>> wrote:
>>     > I'm, of course, in favor.
>>     >
>>     > -- Blake Sullivan
>>     >
>>     >
>>     > Gabrielle Crawford wrote:
>>     > > Hi,
>>     > >
>>     > > In case anyone filtered away the [jira] message.....
>>     > >
>>     > > I'd like to add the method described below to the requestContext.
>>     > >
>>     > > Comments? Objections?
>>     > >
>>     > > Thanks,
>>     > >
>>     > > Gab
>>     > >
>>     > > -------- Original Message --------
>>     > >
>>     > > add method to get an application scoped concurrentMap to
>>     RequestContext
>>     > >
>>     -----------------------------------------------------------------------
>>     > >
>>     > >                 Key: TRINIDAD-926
>>     > >                 URL:
>>     https://issues.apache.org/jira/browse/TRINIDAD-926
>>     > >             Project: MyFaces Trinidad
>>     > >          Issue Type: Improvement
>>     > >    Affects Versions: 1.2.5-core, 1.0.5-core
>>     > >            Reporter: Gabrielle Crawford
>>     > >            Assignee: Gabrielle Crawford
>>     > >            Priority: Minor
>>     > >
>>     > >
>>     > > This started with Trin Issue 891
>>     > > https://issues.apache.org/jira/browse/TRINIDAD-891
>>     > >
>>     > > To avoid the locking in the class loader we'd like to store a
>>     map of
>>     > > name->class per app. However the external context app map calls
>>     > > through to the ServletContext. The Servlet specification doesn't
>>     > > specify whether the ServletContext performs any locking on the
>>     > > ServletContext attributes and the ServletContext doesn't
>>     expose the
>>     > > necessary methods for efficient concurrent access
>>     (essentially the
>>     > > operations exposed on ConcurrentMap) necessary to work
>>     efficiently in
>>     > > many cases even if the ServletContext didn't need to perform
>>     locking
>>     > > on reads.  The result is that the ExternalContext's
>>     ApplicationMap
>>     > > can't implement ConcurrentMap.
>>     > > We'd like to add a method to the RequestContext to get an
>>     application
>>     > > scoped concurrent map. This would not call through to the servlet
>>     > > context. The api proposed is this:
>>     > >
>>     > >
>>     > > /**
>>     > >   * Gets a per application concurrent map. There is no
>>     synchronization
>>     > >   * with ServletContext attributes.
>>     > >   */
>>     > >  public abstract ConcurrentMap<String, Object>
>>     > > getApplicationScopedConcurrentMap();
>>     > >
>>     > >
>>     >
>>     >
>>
>>
>>
>>     --
>>     Matthias Wessendorf
>>
>>     further stuff:
>>     blog: http://matthiaswessendorf.wordpress.com/
>>     sessions: http://www.slideshare.net/mwessendorf
>>     mail: matzew-at-apache-dot-org
>>
>>
>>
>>
>> -- 
>>
>> http://www.irian.at
>>
>> Your JSF powerhouse -
>> JSF Consulting, Development and
>> Courses in English and German
>>
>> Professional Support for Apache MyFaces 

Mime
View raw message