package org.infinispan.persistence.jpa.configuration; import org.infinispan.commons.configuration.BuiltBy; import org.infinispan.commons.configuration.ConfigurationFor; import org.infinispan.commons.configuration.attributes.Attribute; import org.infinispan.commons.configuration.attributes.AttributeDefinition; import org.infinispan.commons.configuration.attributes.AttributeSet; import org.infinispan.configuration.cache.AbstractStoreConfiguration; import org.infinispan.configuration.cache.AsyncStoreConfiguration; import org.infinispan.configuration.cache.SingletonStoreConfiguration; import org.infinispan.configuration.serializing.SerializedWith; import org.infinispan.persistence.jpa.JpaStore; /** * JpaStoreConfiguration. * * @author <a href="mailto:rtsang@redhat.com">Ray Tsang</a> * @since 6.0 */ @BuiltBy(JpaStoreConfigurationBuilder.class) @ConfigurationFor(JpaStore.class) @SerializedWith(JpaStoreConfigurationSerializer.class) public class JpaStoreConfiguration extends AbstractStoreConfiguration { static final AttributeDefinition<String> PERSISTENCE_UNIT_NAME = AttributeDefinition.builder("persistenceUnitName", null, String.class).immutable().xmlName("persistence-unit").build(); static final AttributeDefinition<Class> ENTITY_CLASS = AttributeDefinition.builder("entityClass", null, Class.class).immutable().build(); static final AttributeDefinition<Long> BATCH_SIZE = AttributeDefinition.builder("batchSize", 100l).immutable().build(); static final AttributeDefinition<Boolean> STORE_METADATA = AttributeDefinition.builder("storeMetadata", true).immutable().build(); public static AttributeSet attributeDefinitionSet() { return new AttributeSet(JpaStoreConfiguration.class, AbstractStoreConfiguration.attributeDefinitionSet(), PERSISTENCE_UNIT_NAME, ENTITY_CLASS, BATCH_SIZE, STORE_METADATA); } private final Attribute<String> persistenceUnitName; private final Attribute<Class> entityClass; private final Attribute<Long> batchSize; private final Attribute<Boolean> storeMetadata; protected JpaStoreConfiguration(AttributeSet attributes, AsyncStoreConfiguration async, SingletonStoreConfiguration singletonStore) { super(attributes, async, singletonStore); persistenceUnitName = attributes.attribute(PERSISTENCE_UNIT_NAME); entityClass = attributes.attribute(ENTITY_CLASS); batchSize = attributes.attribute(BATCH_SIZE); storeMetadata = attributes.attribute(STORE_METADATA); } public String persistenceUnitName() { return persistenceUnitName.get(); } public Class<?> entityClass() { return entityClass.get(); } public long batchSize() { return batchSize.get(); } public boolean storeMetadata() { return storeMetadata.get(); } }