Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * #%L
   * Wikitty :: api
   * %%
   * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin
   * %%
   * This program is free software: you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as 
   * published by the Free Software Foundation, either version 3 of the 
  * License, or (at your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Lesser Public License for more details.
  * 
  * You should have received a copy of the GNU General Lesser Public 
  * License along with this program.  If not, see
  * <http://www.gnu.org/licenses/lgpl-3.0.html>.
  * #L%
  */
 
 package org.nuiton.wikitty.services;
 
 import java.util.List;
 import java.util.Set;
 
 import  org.apache.jcs.access.GroupCacheAccess;
 import  org.apache.jcs.access.exception.CacheException;
 import  org.apache.jcs.engine.control.CompositeCacheManager;
Implantation du cache base sur le projet apache JCS

Author(s):
poussin
Version:
$Revision$ Last update: $Date$ by : $Author$
 
 public class WikittyCacheJCS implements WikittyCache {
 
     static private Log log = LogFactory.getLog(WikittyCacheJCS.class);
 
     protected Set<StringpriorityExtensions = new HashSet<String>();

    
cache ou sont stocke les objects qui doivent rester le plus possible en memoire
 
     protected GroupCacheAccess priorityCache;
    
cache pour les autres wikitties
 
     protected GroupCacheAccess wikittyCache;

    
cache pour les extensions
 
     protected GroupCacheAccess extensionCache;

    

Parameters:
config not used currently but necessary in futur to configure the cache Create a soft cache.
 
     public WikittyCacheJCS(ApplicationConfig config) {
         try {
             List<StringpriorityExtensions = config.getOptionAsList(
                     ..getKey()).getOption();
             getPriorityExtensions().addAll(priorityExtensions);
 
             CompositeCacheManager cacheMgr = CompositeCacheManager.getUnconfiguredInstance();
             cacheMgr.configure(config.getFlatOptions());
              = new GroupCacheAccess(cacheMgr.getCache("priority"));
              = new GroupCacheAccess(cacheMgr.getCache("wikitty"));
              = new GroupCacheAccess(cacheMgr.getCache("extension"));
             
             // JCS ne permet pas de passer un Properties mais seulement un nom de fichier :(
 //            JCS.setConfigFilename(config.getConfigFileName());
 //            wikittyCache = JCS.getInstance("wikitty");
         } catch (Exception eee) {
             throw new WikittyException("Can't initialise JCS cache"eee);
         }
     }

    
Liste des extensions a conserver prioritairement

Returns:
    public Set<StringgetPriorityExtensions() {
        return ;
    }
    @Override
    public boolean existsWikitty(String id) {
        Object o = .get(id);
        boolean result = (o != null);
        if (!result) {
            o = .get(id);
            result = (o != null);
        }
        return result;
    }

    
Return wikitty object if is in the cache, null otherwize.

Parameters:
id
Returns:
wikitty object or null
    @Override
    public Wikitty getWikitty(String id) {
        if (id == null) {
            return null;
        }
        Wikitty result = (Wikitty).get(id);
        if (result == null) {
            result = (Wikitty.get(id);
        }
        return result;
    }

    
Only realy put wikitty in cache, if not in cache or version is newer than one in cache

Parameters:
e
    @Override
    public void putWikitty(Wikitty e) {
        if (e != null) {
            try {
                if (Collections.disjoint(,e.getExtensionNames())) {
                    // le wikitty ne contient pas d'extension prioritaire
                    // on le met dans le cache commun
                    .put(e.getWikittyId(), e);
                } else {
                    .put(e.getWikittyId(), e);
                }
            } catch (CacheException eee) {
                .error(String.format("Can't put wikitty %s in cache"e), eee);
            }
        }
    }

    
Remove wikitty from cache.

Parameters:
id wikitty id to remove
    @Override
    public void removeWikitty(String id) {
        try {
            .remove(id);
            .remove(id);
        } catch (CacheException eee) {
            .error(String.format("Can't remove wikitty %s in cache"id), eee);
        }
    }

    
Clear all cache.
    @Override
    public void clearWikitty() {
        try {
            .clear();
            .clear();
        } catch (CacheException eee) {
            .error(String.format("Can't clear wikitty cache"), eee);
        }
    }
    @Override
    public boolean existsExtension(String id) {
        Object o = .get(id);
        boolean result = (o != null);
        return result;
    }

    
Return wikitty object if is in the cache, null otherwise.

Parameters:
extId extension id
Returns:
wikitty object or null
    @Override
    public WikittyExtension getExtension(String extId) {
        WikittyExtension result = (WikittyExtension).get(extId);
        return result;
    }

    
Only realy put wikitty in cache, if not in cache or version is newer than one in cache

Parameters:
e
    @Override
    public void putExtension(WikittyExtension e) {
        if (e != null) {
            try {
                .put(e.getId(), e);
            } catch (CacheException eee) {
                .error(String.format("Can't put extension %s in cache"e), eee);
            }
        }
    }

    
Remove wikitty from cache.

Parameters:
extId wikitty id to remove
    @Override
    public void removeExtension(String extId) {
        try {
            .remove(extId);
            
            if (.isDebugEnabled()) {
                .debug("Remove extension from JCS cache " + extId);
            }
        } catch (CacheException eee) {
            .error(String.format("Can't remove extensions %s in cache"extId), eee);
        }
    }

    
Clear all cache.
    @Override
    public void clearExtension() {
        try {
            .clear();
        } catch (CacheException eee) {
            .error(String.format("Can't clear extension cache"), eee);
        }
    }
New to GrepCode? Check out our FAQ X