CdbCacheListener.java

package sk.iway.iwcm.system.fulltext.cdb;

import io.github.duckasteroid.cdb.Cdb;
import sk.iway.iwcm.Cache;
import sk.iway.iwcm.CacheBean;
import sk.iway.iwcm.CacheListener;
import sk.iway.iwcm.Logger;

public class CdbCacheListener implements CacheListener {

    static {
        CdbCacheListener listener = new CdbCacheListener();
        Cache.subscribe(listener);
    }

    public static void init() {
        //just to make sure the class is loaded
    }


    @Override
    public void objectAdded(CacheBean theObject) {
        //not needed
    }

    @Override
    public void objectRemoved(CacheBean cacheBean) {
        try {
            if (cacheBean.getName().startsWith("Lucene.") && cacheBean.getObject() instanceof Cdb) {
                Logger.debug(CdbCacheListener.class, "Closing CDB object "+cacheBean.getName());
                Cdb cdb = (Cdb) cacheBean.getObject();
                cdb.close();
            }
        } catch (Exception e) {
            Logger.error(CdbCacheListener.class, e);
        }
    }

}