001 // Copyright 2011 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry5.jpa;
016
017 import javax.persistence.SharedCacheMode;
018 import javax.persistence.ValidationMode;
019 import javax.persistence.spi.PersistenceUnitInfo;
020 import javax.persistence.spi.PersistenceUnitTransactionType;
021 import java.net.URL;
022
023 /**
024 * Tapestry's mutable extension of {@link PersistenceUnitInfo} interface used for XML-less configuration
025 * of persistence units.
026 *
027 * @since 5.3
028 */
029 public interface TapestryPersistenceUnitInfo extends PersistenceUnitInfo
030 {
031 /**
032 * Set the the fully qualified name of the persistence provider implementation class.
033 * Corresponds to the <code>provider</code> element in the <code>persistence.xml</code> file.
034 *
035 * @param persistenceProviderClassName
036 * persistence provider's class name
037 */
038 TapestryPersistenceUnitInfo persistenceProviderClassName(String persistenceProviderClassName);
039
040 /**
041 * Set the transaction type of the entity managers. Corresponds to
042 * the <code>transaction-type</code> attribute in the <code>persistence.xml</code> file.
043 *
044 * @param transactionType
045 * transition type to set
046 */
047 TapestryPersistenceUnitInfo transactionType(PersistenceUnitTransactionType transactionType);
048
049 /**
050 * Set the non-JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA
051 * transaction. Corresponds to the named <code>non-jta-data-source</code> element in the
052 * <code>persistence.xml</code> file.
053 *
054 * @param nonJtaDataSource
055 * data source to set
056 */
057 TapestryPersistenceUnitInfo nonJtaDataSource(String nonJtaDataSource);
058
059 /**
060 * Set the JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA
061 * transaction. Corresponds to the named <code>jta-data-source</code> element in the
062 * <code>persistence.xml</code> file.
063 *
064 * @param jtaDataSource
065 * data source to set
066 */
067 TapestryPersistenceUnitInfo jtaDataSource(String jtaDataSource);
068
069 /**
070 * Add a managed class name to be used by persistence provider.
071 * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file.
072 *
073 * @param className
074 * class name to add
075 * @see #addManagedClass(Class)
076 */
077 TapestryPersistenceUnitInfo addManagedClassName(String className);
078
079 /**
080 * Add a managed class to be used by persistence provider.
081 * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file.
082 *
083 * @param clazz
084 * class to add
085 * @see #addManagedClassName(String)
086 */
087 TapestryPersistenceUnitInfo addManagedClass(Class<?> clazz);
088
089 /**
090 * Defines how the persistence provider must use a second-level cache for the persistence unit.
091 * Corresponds to the <code>shared-cache-mode</code> element in the <code>persistence.xml</code> file.
092 *
093 * @param cacheMode
094 * cache mode to set
095 */
096 TapestryPersistenceUnitInfo sharedCacheMode(SharedCacheMode cacheMode);
097
098 /**
099 * Set the validation mode to be used by the persistence provider for the persistence unit.
100 * Corresponds to the <code>validation-mode</code> element in the <code>persistence.xml</code> file.
101 *
102 * @param validationMode
103 * validation mode to set
104 */
105 TapestryPersistenceUnitInfo validationMode(ValidationMode validationMode);
106
107 /**
108 * Add a mapping file to be loaded by the persistence provider to determine the mappings for
109 * the entity classes. Corresponds to a <code>mapping-file</code> element in the <code>persistence.xml</code> file.
110 *
111 * @param fileName
112 * mapping file name to add
113 */
114 TapestryPersistenceUnitInfo addMappingFileName(String fileName);
115
116 /**
117 * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine
118 * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the
119 * <code>persistence.xml</code> file.
120 *
121 * @param url
122 * url to add
123 */
124 TapestryPersistenceUnitInfo addJarFileUrl(URL url);
125
126 /**
127 * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine
128 * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the
129 * <code>persistence.xml</code> file.
130 *
131 * @param url
132 * url to add
133 */
134 TapestryPersistenceUnitInfo addJarFileUrl(String url);
135
136 /**
137 * Add a property. Corresponds to a <code>property</code> element in the <code>persistence.xml</code> file.
138 *
139 * @param name
140 * property's name
141 * @param value
142 * property's value
143 */
144 TapestryPersistenceUnitInfo addProperty(String name, String value);
145
146 /**
147 * Defines whether classes in the root of the persistence unit that have not been explicitly listed
148 * are to be included in the set of managed classes. Corresponds to the <code>exclude-unlisted-classes</code>
149 * element in the <code>persistence.xml</code> file.
150 *
151 * @param exclude
152 * defines whether to exclude or not
153 */
154 TapestryPersistenceUnitInfo excludeUnlistedClasses(boolean exclude);
155 }