use of org.infinispan.commons.persistence.Store in project infinispan by infinispan.
the class NonBlockingStoreAdapter method determineCharacteristics.
private static Set<Characteristic> determineCharacteristics(Object storeImpl) {
EnumSet<Characteristic> characteristics;
if (storeImpl instanceof SegmentedAdvancedLoadWriteStore) {
characteristics = EnumSet.of(Characteristic.SEGMENTABLE, Characteristic.EXPIRATION, Characteristic.BULK_READ);
} else {
characteristics = EnumSet.noneOf(Characteristic.class);
if (storeImpl instanceof AdvancedCacheLoader) {
characteristics.add(Characteristic.BULK_READ);
} else if (!(storeImpl instanceof CacheLoader)) {
characteristics.add(Characteristic.WRITE_ONLY);
}
if (storeImpl instanceof AdvancedCacheWriter) {
characteristics.add(Characteristic.EXPIRATION);
} else if (!(storeImpl instanceof CacheWriter)) {
characteristics.add(Characteristic.READ_ONLY);
}
}
Store storeAnnotation = storeImpl.getClass().getAnnotation(Store.class);
if (storeAnnotation != null && storeAnnotation.shared()) {
characteristics.add(Characteristic.SHAREABLE);
}
// Transactional is a special interface that could be true on a segment or not segmented store both
if (storeImpl instanceof TransactionalCacheWriter) {
characteristics.add(Characteristic.TRANSACTIONAL);
}
return characteristics;
}
use of org.infinispan.commons.persistence.Store in project infinispan by infinispan.
the class AbstractStoreConfigurationBuilder method validateStoreWithAnnotations.
private void validateStoreWithAnnotations() {
Class configKlass = attributes.getKlass();
if (configKlass != null && configKlass.isAnnotationPresent(ConfigurationFor.class)) {
Class storeKlass = ((ConfigurationFor) configKlass.getAnnotation(ConfigurationFor.class)).value();
if (storeKlass.isAnnotationPresent(Store.class)) {
Store storeProps = (Store) storeKlass.getAnnotation(Store.class);
boolean segmented = attributes.attribute(SEGMENTED).get();
if (segmented && !AbstractSegmentedStoreConfiguration.class.isAssignableFrom(configKlass) && !(SegmentedAdvancedLoadWriteStore.class.isAssignableFrom(storeKlass) || NonBlockingStore.class.isAssignableFrom(storeKlass))) {
throw CONFIG.storeNotSegmented(storeKlass);
}
if (!storeProps.shared() && attributes.attribute(SHARED).get()) {
throw CONFIG.nonSharedStoreConfiguredAsShared(storeKlass.getSimpleName());
}
}
} else {
CONFIG.warnConfigurationForAnnotationMissing(attributes.getName());
}
}
Aggregations