package net.ion.craken.loaders;
import java.io.File;
import java.io.OutputStream;
import junit.framework.TestCase;
import net.ion.craken.util.StringInputStream;
import net.ion.framework.util.Debug;
import net.ion.framework.util.IOUtil;
import org.infinispan.Cache;
import org.infinispan.commands.VisitableCommand;
import org.infinispan.commands.tx.CommitCommand;
import org.infinispan.commands.tx.PrepareCommand;
import org.infinispan.context.InvocationContext;
import org.infinispan.interceptors.base.BaseCustomInterceptor;
import org.infinispan.io.GridFile.Metadata;
import org.infinispan.io.GridFilesystem;
import org.infinispan.manager.DefaultCacheManager;
public class TestGridfilesystem extends TestCase {
public void testInterceptor() throws Exception {
DefaultCacheManager dm = new DefaultCacheManager() ;
Cache<String, Metadata> metadata = dm.getCache("metadata") ;
Cache<String, byte[]> data = dm.getCache("data") ;
data.getAdvancedCache().addInterceptor(new BaseCustomInterceptor(){
protected Object handleDefault(InvocationContext ctx, VisitableCommand command) throws Throwable {
switch(command.getCommandId()){
case CommitCommand.COMMAND_ID :
Debug.line("commit", command.getParameters()) ;
break ;
case PrepareCommand.COMMAND_ID :
Debug.line("prepare" ,command.getParameters().length, command.getParameters(), ((PrepareCommand)command).getModifications()) ;
break ;
default :
Debug.line("other", command, command.getParameters());
break ;
}
return invokeNextInterceptor(ctx, command);
}
}, 0);
GridFilesystem gfs = new GridFilesystem(data, metadata) ;
File file = gfs.getFile("/bleuijn") ;
file.mkdirs() ;
OutputStream output = gfs.getOutput("/bleuijn/data.node") ;
IOUtil.copyNClose(new StringInputStream("Hello World"), output);
dm.stop();
}
}