package org.infinispan.lucene; import java.util.HashMap; import java.util.Map; import org.infinispan.commons.marshall.AdvancedExternalizer; import org.infinispan.configuration.global.GlobalConfiguration; import org.infinispan.factories.GlobalComponentRegistry; import org.infinispan.lifecycle.AbstractModuleLifecycle; import org.infinispan.lucene.impl.AddOperation; import org.infinispan.lucene.impl.DeleteOperation; import org.infinispan.lucene.impl.FileListCacheValue; import org.infinispan.lucene.impl.FileListCacheValueDelta; /** * Module lifecycle callbacks implementation that enables module specific * {@link org.infinispan.commons.marshall.AdvancedExternalizer} implementations to be registered. * * @author Galder ZamarreƱo * @author Sanne Grinovero * @since 5.0 */ public class LifecycleCallbacks extends AbstractModuleLifecycle { @Override public void cacheManagerStarting(GlobalComponentRegistry gcr, GlobalConfiguration globalCfg) { Map<Integer,AdvancedExternalizer<?>> externalizerMap = globalCfg.serialization().advancedExternalizers(); externalizerMap.putAll( moduleExternalizers() ); } /** * Static helper to allow for explicit registration of Externalizers: * service discovery is not always an option. * @return the map of Id and Externalizer implementations for this module */ public static Map<Integer,AdvancedExternalizer<?>> moduleExternalizers() { Map<Integer,AdvancedExternalizer<?>> externalizerMap = new HashMap<>(); externalizerMap.put(ExternalizerIds.CHUNK_CACHE_KEY, new ChunkCacheKey.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_CACHE_KEY, new FileCacheKey.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_LIST_CACHE_KEY, new FileListCacheKey.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_METADATA, new FileMetadata.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_READLOCK_KEY, new FileReadLockKey.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_LIST_CACHE_VALUE, new FileListCacheValue.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_LIST_VALUE_DELTA, new FileListCacheValueDelta.Externalizer()); externalizerMap.put(ExternalizerIds.FILE_LIST_DELTA_ADD, new AddOperation.AddOperationExternalizer()); externalizerMap.put(ExternalizerIds.FILE_LIST_DELTA_DEL, new DeleteOperation.DeleteElementOperationExternalizer()); return externalizerMap; } }