package org.infinispan.remoting.rpc; import java.util.HashMap; import java.util.Map; import org.infinispan.Cache; import org.infinispan.commands.ReplicableCommand; import org.infinispan.commands.module.ModuleCommandExtensions; import org.infinispan.commands.module.ModuleCommandFactory; import org.infinispan.commands.module.ModuleCommandInitializer; import org.infinispan.commands.remote.CacheRpcCommand; import org.infinispan.factories.annotations.Inject; import org.infinispan.util.ByteString; /** * @author anistor@redhat.com * @since 5.3 */ public class TestModuleCommandExtensions implements ModuleCommandExtensions { @Override public ModuleCommandFactory getModuleCommandFactory() { return new ModuleCommandFactory() { @Override public Map<Byte, Class<? extends ReplicableCommand>> getModuleCommands() { Map<Byte, Class<? extends ReplicableCommand>> map = new HashMap<>(2); map.put(CustomReplicableCommand.COMMAND_ID, CustomReplicableCommand.class); map.put(CustomCacheRpcCommand.COMMAND_ID, CustomCacheRpcCommand.class); map.put(SleepingCacheRpcCommand.COMMAND_ID, SleepingCacheRpcCommand.class); return map; } @Override public ReplicableCommand fromStream(byte commandId) { ReplicableCommand c; switch (commandId) { case CustomReplicableCommand.COMMAND_ID: c = new CustomReplicableCommand(); break; default: throw new IllegalArgumentException("Not registered to handle command id " + commandId); } return c; } @Override public CacheRpcCommand fromStream(byte commandId, ByteString cacheName) { CacheRpcCommand c; switch (commandId) { case CustomCacheRpcCommand.COMMAND_ID: c = new CustomCacheRpcCommand(cacheName); break; case SleepingCacheRpcCommand.COMMAND_ID: c = new SleepingCacheRpcCommand(cacheName); break; default: throw new IllegalArgumentException("Not registered to handle command id " + commandId); } return c; } }; } @Override public ModuleCommandInitializer getModuleCommandInitializer() { return new ModuleCommandInitializer() { @Inject public void injectDependencies(Cache cache) { // test that everything works when we inject the cache, see ISPN-5957 } @Override public void initializeReplicableCommand(ReplicableCommand c, boolean isRemote) { // nothing to do here } }; } }