package org.infinispan.marshall; import org.infinispan.config.GlobalConfiguration; import org.infinispan.factories.annotations.Inject; import org.infinispan.factories.annotations.Stop; import org.infinispan.factories.scopes.Scope; import org.infinispan.factories.scopes.Scopes; import org.infinispan.marshall.jboss.ExternalizerTable; /** * A globally-scoped marshaller. This is needed so that the transport layer * can unmarshall requests even before it's known which cache's marshaller can * do the job. * * @author Galder ZamarreƱo * @since 5.0 */ @Scope(Scopes.GLOBAL) public class GlobalMarshaller extends AbstractDelegatingMarshaller { public GlobalMarshaller(VersionAwareMarshaller marshaller) { this.marshaller = marshaller; } @Inject public void inject(ClassLoader loader, ExternalizerTable extTable, GlobalConfiguration globalCfg) { ((VersionAwareMarshaller) this.marshaller).inject( null, loader, null, extTable, globalCfg); } @Override @Stop(priority = 11) // Stop after transport to avoid send/receive and marshaller not being ready public void stop() { super.stop(); } }