package org.infinispan.marshall; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; import java.io.ObjectOutput; import java.io.OutputStream; import org.infinispan.commons.io.ByteBuffer; import org.infinispan.commons.marshall.AbstractMarshaller; import org.infinispan.commons.marshall.StreamingMarshaller; import org.infinispan.factories.annotations.Stop; import org.infinispan.factories.scopes.Scope; import org.infinispan.factories.scopes.Scopes; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; /** * A dummy marshaller impl. Under the hood instantiates an {@link StreamingMarshaller}. * N.B.: When an instance of this class is no longer needed please invoke TestObjectStreamMarshaller.stop on it. * * @author Manik Surtani */ @Scope(Scopes.GLOBAL) public class TestObjectStreamMarshaller extends AbstractMarshaller implements StreamingMarshaller { private static Log log = LogFactory.getLog(TestObjectStreamMarshaller.class); private final StreamingMarshaller marshaller; public final EmbeddedCacheManager cacheManager; public TestObjectStreamMarshaller() { cacheManager = TestCacheManagerFactory.createCacheManager(); marshaller = cacheManager.getCache().getAdvancedCache().getComponentRegistry().getCacheMarshaller(); } @Override public ObjectOutput startObjectOutput(OutputStream os, boolean isReentrant, int expectedByteSize) throws IOException { return marshaller.startObjectOutput(os, isReentrant, expectedByteSize); } @Override public void finishObjectOutput(ObjectOutput oo) { marshaller.finishObjectOutput(oo); } @Override public void objectToObjectStream(Object obj, ObjectOutput out) throws IOException { marshaller.objectToObjectStream(obj, out); } @Override public Object objectFromObjectStream(ObjectInput in) throws IOException, ClassNotFoundException, InterruptedException { return marshaller.objectFromObjectStream(in); } @Override public ObjectInput startObjectInput(InputStream is, boolean isReentrant) throws IOException { return marshaller.startObjectInput(is, isReentrant); } @Override public void finishObjectInput(ObjectInput oi) { marshaller.finishObjectInput(oi); } @Override protected ByteBuffer objectToBuffer(Object o, int estimatedSize) throws IOException, InterruptedException { return marshaller.objectToBuffer(o); } @Override public Object objectFromByteBuffer(byte[] buf, int offset, int length) throws IOException, ClassNotFoundException { return marshaller.objectFromByteBuffer(buf, offset, length); } @Override public boolean isMarshallable(Object o) throws Exception { return marshaller.isMarshallable(o); } @Override @Stop public void stop() { log.trace("TestObjectStreamMarshaller.stop()"); TestingUtil.killCacheManagers(cacheManager); } @Override public void start() { } }