org.infinispan.persistence.async.AsyncCacheLoader Maven / Gradle / Ivy
package org.infinispan.persistence.async;
import java.util.concurrent.atomic.AtomicReference;
import org.infinispan.marshall.core.MarshalledEntry;
import org.infinispan.persistence.modifications.Modification;
import org.infinispan.persistence.modifications.Store;
import org.infinispan.persistence.spi.CacheLoader;
import org.infinispan.persistence.support.DelegatingCacheLoader;
import net.jcip.annotations.GuardedBy;
/**
* @author Mircea Markus
* @since 6.0
*/
public class AsyncCacheLoader extends DelegatingCacheLoader {
@GuardedBy("stateLock")
protected final AtomicReference state;
public AsyncCacheLoader(CacheLoader actual, AtomicReference state) {
super(actual);
this.state = state;
}
@Override
public void start() {}
@Override
public void stop() {}
@Override
public MarshalledEntry load(Object key) {
Modification mod = state.get().get(key);
if (mod != null) {
switch (mod.getType()) {
case REMOVE:
case CLEAR:
return null;
case STORE:
return ((Store) mod).getStoredValue();
}
}
return super.load(key);
}
@Override
public boolean contains(Object key) {
Modification mod = state.get().get(key);
if (mod != null)
return mod.getType() == Modification.Type.STORE;
return super.contains(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy