masonjm     2005/01/21 12:44:15

  Modified:    src/stores/org/apache/slide/store/txjndi
                        JNDIPrincipalStore.java
  Log:
  Allow a separate cache for each JNDIPrincipalStore instead of a shared cache 
for all.
  
  Revision  Changes    Path
  1.10      +40 -17    
jakarta-slide/src/stores/org/apache/slide/store/txjndi/JNDIPrincipalStore.java
  
  Index: JNDIPrincipalStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/txjndi/JNDIPrincipalStore.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JNDIPrincipalStore.java   27 Oct 2004 05:12:39 -0000      1.9
  +++ JNDIPrincipalStore.java   21 Jan 2005 20:44:15 -0000      1.10
  @@ -107,6 +107,15 @@
    * Parameters used in Domain.xml when setting up the Store.
    * </p>
    * <dl>
  + * <dt>cache.name</dt>
  + * <dd>
  + * The name of the EHCache cache that should be used for this Store. If more
  + * than one JNDIPrincipalStore is used in a single Namespace this parameter
  + * can be used to make each one use a different cache. The default value is
  + * <em>org.apache.slide.store.txjndi.JNDIPrincipalStore</em>.
  + * See <a href="#cacherefreshing">Caching</a> for more information.
  + * </dd>
  + * 
    * <dt>cache.refresh.checkrate</dt>
    * <dd>
    * How often, in <em>seconds</em>, the cache refresh thread should check for 
Uris in the cache
  @@ -177,10 +186,10 @@
    * 
    * <h3><a name="caching">Caching</a></h3>
    * <p>
  - * This Store makes use of <a 
href="http://ehcache.sourceforge.net/";>EHCache</a>. You will
  - * need ehcache.jar in order to use this Store. When initialized the default 
CacheManager is
  - * used to find a Cache named 
"org.apache.slide.store.txjndi.JNDIPrincipalStore". If there is
  - * no Cache found with this name then a Cache is created with these default 
values:
  + * This Store makes use of <a 
href="http://ehcache.sourceforge.net/";>EHCache</a>. 
  + * When initialized the default CacheManager is used to find the Cache named
  + * in the <em>cache.name</em> parameter. If there is no Cache found with this
  + * name then a Cache is created with these default values:
    * </p>
    * <ul>
    *   <li>name = org.apache.slide.store.txjndi.JNDIPrincipalStore</li>
  @@ -191,8 +200,8 @@
    *   <li>overflowToDisk = true</li>
    * </ul>
    * <p>
  - * To override these values you will need to create a configuration file for 
EHCache with a
  - * cache named "org.apache.slide.store.txjndi.JNDIPrincipalStore" that has 
the settings you
  + * To override these values you will need to create a configuration file for 
EHCache with
  + * the cache named by the <em>cache.name</em> parameter that has the 
settings you
    * wish. See the documentation at the <a 
href="http://ehcache.sourceforge.net/";>EHCache website</a>
    * for instructions.
    * </p>
  @@ -238,13 +247,13 @@
                implements ContentStore, LockStore, NodeStore, 
RevisionDescriptorStore,
                        RevisionDescriptorsStore, SecurityStore {
   
  -     public static final String CACHE_NAME              = 
JNDIPrincipalStore.class.getName();
        public static final String CACHE_OBJECT_PREFIX     = "object: ";
        public static final String CACHE_DESCRIPTOR_PREFIX = "descriptor: ";
        
        public static final String JNDI_PROPERTY_PREFIX = "java.naming";
   
        // Parameter keys
  +    public static final String PARAM_CACHE_NAME               = "cache.name";
        public static final String PARAM_CACHE_REFRESH_CHECK_RATE = 
"cache.refresh.checkrate";
        public static final String PARAM_CACHE_REFRESH_RATE       = 
"cache.refresh.rate";
        public static final String PARAM_CACHE_REFRESH_THRESHOLD  = 
"cache.refresh.threshold";
  @@ -260,6 +269,7 @@
        public static final String PARAM_LOG_VALIDATION_ERRORS = 
"log.validationerrors";
       
        // Default values
  +    public static final String  DEFAULT_CACHE_NAME               = 
JNDIPrincipalStore.class.getName();
        public static final int     DEFAULT_CACHE_SIZE               = 200;
        public static final boolean DEFAULT_CACHE_OVERFLOW_TO_DISK   = true;
        public static final boolean DEFAULT_CACHE_ETERNAL            = false;
  @@ -296,6 +306,7 @@
        protected int searchScope;
        protected String principalNameAttribute;
   
  +    private String cacheName = DEFAULT_CACHE_NAME;
        private String name;
        private String usersPath;
        private Map objectNameMap; // Uri-String -> LDAP lookup name
  @@ -303,7 +314,6 @@
        
        public JNDIPrincipalStore() {
                ctxParameters = new Hashtable();
  -             cache = getCache();
                name = "";
                refreshList = new TreeSet();
                refresher = new RefreshThread();
  @@ -427,6 +437,15 @@
   
                //Set attribute which contains the user principal name for 
authentication
                principalNameAttribute = 
(String)parameters.get(PARAM_JNDI_USERPRINCIPALNAME);
  +
  +        // Set cacheName
  +        temp = (String)parameters.get( PARAM_CACHE_NAME );
  +        if ( temp != null ) {
  +            cacheName = temp;
  +        } else {
  +            cacheName = DEFAULT_CACHE_NAME;
  +        }
  +        cache = getCache();
        }
        
        public boolean cacheResults() {
  @@ -658,7 +677,11 @@
         */
        public Enumeration enumeratePermissions(Uri uri) throws 
ServiceAccessException {
                Vector permissions = new Vector();
  -             permissions.add( new NodePermission( uri.toString(), "all", 
"/actions/read" ) );
  +             permissions.add(
  +            new NodePermission(
  +                uri.toString(),
  +                "all",
  +                
uri.getNamespace().getConfig().getReadObjectAction().getUri() ) );
                return permissions.elements();
        }
        
  @@ -1126,10 +1149,10 @@
                                Logger.ERROR );
                        return null;
                }
  -             cache = cacheManager.getCache( CACHE_NAME );
  +             cache = cacheManager.getCache( cacheName );
                if ( cache == null ) {
                        cache = new Cache(
  -                             CACHE_NAME,
  +                cacheName,
                                DEFAULT_CACHE_SIZE,
                                DEFAULT_CACHE_OVERFLOW_TO_DISK,
                                DEFAULT_CACHE_ETERNAL,
  @@ -1139,19 +1162,19 @@
                                cacheManager.addCache(cache);
                        } catch ( IllegalStateException e ) {
                                getLogger().log(
  -                                     name + ": Error adding cache \"" + 
CACHE_NAME + "\" to CacheManager.",
  +                                     name + ": Error adding cache \"" + 
cacheName + "\" to CacheManager.",
                                        e,
                                        LOG_CHANNEL,
                                        Logger.ERROR);
                        } catch ( ObjectExistsException e ) {
                                getLogger().log(
  -                                     name + ": Error adding cache \"" + 
CACHE_NAME + "\" to CacheManager.",
  +                                     name + ": Error adding cache \"" + 
cacheName + "\" to CacheManager.",
                                        e,
                                        LOG_CHANNEL,
                                        Logger.ERROR);
                        } catch ( CacheException e ) {
                                getLogger().log(
  -                                     name + ": Error adding cache \"" + 
CACHE_NAME + "\" to CacheManager.",
  +                                     name + ": Error adding cache \"" + 
cacheName + "\" to CacheManager.",
                                        e,
                                        LOG_CHANNEL,
                                        Logger.ERROR);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to