// Copyright 2011, 2014 The Apache Software Foundation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package org.apache.tapestry5.jpa; import javax.persistence.SharedCacheMode; import javax.persistence.ValidationMode; import javax.persistence.spi.PersistenceUnitInfo; import javax.persistence.spi.PersistenceUnitTransactionType; import java.net.URL; import java.util.Map; /** * Tapestry's mutable extension of {@link PersistenceUnitInfo} interface used for XML-less configuration * of persistence units. * * @since 5.3 */ public interface TapestryPersistenceUnitInfo extends PersistenceUnitInfo { /** * Set the the fully qualified name of the persistence provider implementation class. * Corresponds to the <code>provider</code> element in the <code>persistence.xml</code> file. * * @param persistenceProviderClassName * persistence provider's class name */ TapestryPersistenceUnitInfo persistenceProviderClassName(String persistenceProviderClassName); /** * Set the transaction type of the entity managers. Corresponds to * the <code>transaction-type</code> attribute in the <code>persistence.xml</code> file. * * @param transactionType * transition type to set */ TapestryPersistenceUnitInfo transactionType(PersistenceUnitTransactionType transactionType); /** * Set the non-JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA * transaction. Corresponds to the named <code>non-jta-data-source</code> element in the * <code>persistence.xml</code> file. * * @param nonJtaDataSource * data source to set */ TapestryPersistenceUnitInfo nonJtaDataSource(String nonJtaDataSource); /** * Set the JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA * transaction. Corresponds to the named <code>jta-data-source</code> element in the * <code>persistence.xml</code> file. * * @param jtaDataSource * data source to set */ TapestryPersistenceUnitInfo jtaDataSource(String jtaDataSource); /** * Add a managed class name to be used by persistence provider. * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file. * * @param className * class name to add * @see #addManagedClass(Class) */ TapestryPersistenceUnitInfo addManagedClassName(String className); /** * Add a managed class to be used by persistence provider. * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file. * * @param clazz * class to add * @see #addManagedClassName(String) */ TapestryPersistenceUnitInfo addManagedClass(Class<?> clazz); /** * Defines how the persistence provider must use a second-level cache for the persistence unit. * Corresponds to the <code>shared-cache-mode</code> element in the <code>persistence.xml</code> file. * * @param cacheMode * cache mode to set */ TapestryPersistenceUnitInfo sharedCacheMode(SharedCacheMode cacheMode); /** * Set the validation mode to be used by the persistence provider for the persistence unit. * Corresponds to the <code>validation-mode</code> element in the <code>persistence.xml</code> file. * * @param validationMode * validation mode to set */ TapestryPersistenceUnitInfo validationMode(ValidationMode validationMode); /** * Add a mapping file to be loaded by the persistence provider to determine the mappings for * the entity classes. Corresponds to a <code>mapping-file</code> element in the <code>persistence.xml</code> file. * * @param fileName * mapping file name to add */ TapestryPersistenceUnitInfo addMappingFileName(String fileName); /** * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the * <code>persistence.xml</code> file. * * @param url * url to add */ TapestryPersistenceUnitInfo addJarFileUrl(URL url); /** * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the * <code>persistence.xml</code> file. * * @param url * url to add */ TapestryPersistenceUnitInfo addJarFileUrl(String url); /** * Add a property. Corresponds to a <code>property</code> element in the <code>persistence.xml</code> file. * * @param name * property's name * @param value * property's value */ TapestryPersistenceUnitInfo addProperty(String name, String value); /** * Defines whether classes in the root of the persistence unit that have not been explicitly listed * are to be included in the set of managed classes. Corresponds to the <code>exclude-unlisted-classes</code> * element in the <code>persistence.xml</code> file. * * @param exclude * defines whether to exclude or not */ TapestryPersistenceUnitInfo excludeUnlistedClasses(boolean exclude); /** * {@link javax.persistence.spi.PersistenceProvider} allows creating an {@link javax.persistence.EntityManagerFactory} * with a default EntityManager properties map. This operation allows contributing default properties for * EntityManager. * * @param properties * properties to initialize EntityManagerFactory with * @since 5.4 */ TapestryPersistenceUnitInfo setEntityManagerProperties(Map properties); /** * @return Returns the supplied EntityManagerFactory properties. Returns null if not set. * @since 5.4 */ Map getEntityManagerProperties(); }