add method to clear cache
This commit is contained in:
		
							parent
							
								
									6002e9b892
								
							
						
					
					
						commit
						0d8c2d6014
					
				@ -18,17 +18,36 @@
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.ptql;
 | 
			
		||||
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import org.hyperic.sigar.util.ReferenceMap;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
 | 
			
		||||
public class ProcessQueryFactory {
 | 
			
		||||
    
 | 
			
		||||
    private static Map cache =
 | 
			
		||||
        ReferenceMap.synchronizedMap();
 | 
			
		||||
    private static ProcessQueryFactory instance = null;
 | 
			
		||||
 | 
			
		||||
    private Map cache = new HashMap();
 | 
			
		||||
 | 
			
		||||
    public ProcessQueryFactory() {}
 | 
			
		||||
 | 
			
		||||
    public static ProcessQuery getInstance(String query)
 | 
			
		||||
    public void clear() {
 | 
			
		||||
        for (Iterator it=this.cache.values().iterator();
 | 
			
		||||
             it.hasNext();)
 | 
			
		||||
        {
 | 
			
		||||
            SigarProcessQuery query = (SigarProcessQuery)it.next();
 | 
			
		||||
            query.destroy();
 | 
			
		||||
        }
 | 
			
		||||
        this.cache.clear();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static ProcessQueryFactory getInstance() {
 | 
			
		||||
        if (instance == null) {
 | 
			
		||||
            instance = new ProcessQueryFactory();
 | 
			
		||||
        }
 | 
			
		||||
        return instance;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ProcessQuery getQuery(String query)
 | 
			
		||||
        throws MalformedQueryException {
 | 
			
		||||
 | 
			
		||||
        if (query == null) {
 | 
			
		||||
@ -39,7 +58,7 @@ public class ProcessQueryFactory {
 | 
			
		||||
            throw new MalformedQueryException("empty query");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ProcessQuery pQuery = (ProcessQuery)cache.get(query);
 | 
			
		||||
        ProcessQuery pQuery = (ProcessQuery)this.cache.get(query);
 | 
			
		||||
 | 
			
		||||
        if (pQuery != null) {
 | 
			
		||||
            return pQuery;
 | 
			
		||||
@ -47,7 +66,17 @@ public class ProcessQueryFactory {
 | 
			
		||||
 | 
			
		||||
        pQuery = new SigarProcessQuery();
 | 
			
		||||
        ((SigarProcessQuery)pQuery).create(query);
 | 
			
		||||
        cache.put(query, pQuery);
 | 
			
		||||
        this.cache.put(query, pQuery);
 | 
			
		||||
        return pQuery;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @deprecated
 | 
			
		||||
     * @see getQuery
 | 
			
		||||
     */
 | 
			
		||||
    public static ProcessQuery getInstance(String query)
 | 
			
		||||
        throws MalformedQueryException {
 | 
			
		||||
 | 
			
		||||
        return getInstance().getQuery(query);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user