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 java.net.URL; 018 import java.util.Map; 019 020 import javax.persistence.SharedCacheMode; 021 import javax.persistence.ValidationMode; 022 import javax.persistence.spi.PersistenceUnitInfo; 023 import javax.persistence.spi.PersistenceUnitTransactionType; 024 025 /** 026 * Tapestry's mutable extension of {@link PersistenceUnitInfo} interface used for XML-less configuration 027 * of persistence units. 028 * 029 * @since 5.3 030 */ 031 public interface TapestryPersistenceUnitInfo extends PersistenceUnitInfo 032 { 033 /** 034 * Set the the fully qualified name of the persistence provider implementation class. 035 * Corresponds to the <code>provider</code> element in the <code>persistence.xml</code> file. 036 * 037 * @param persistenceProviderClassName 038 * persistence provider's class name 039 */ 040 TapestryPersistenceUnitInfo persistenceProviderClassName(String persistenceProviderClassName); 041 042 /** 043 * Set the transaction type of the entity managers. Corresponds to 044 * the <code>transaction-type</code> attribute in the <code>persistence.xml</code> file. 045 * 046 * @param transactionType 047 * transition type to set 048 */ 049 TapestryPersistenceUnitInfo transactionType(PersistenceUnitTransactionType transactionType); 050 051 /** 052 * Set the non-JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA 053 * transaction. Corresponds to the named <code>non-jta-data-source</code> element in the 054 * <code>persistence.xml</code> file. 055 * 056 * @param nonJtaDataSource 057 * data source to set 058 */ 059 TapestryPersistenceUnitInfo nonJtaDataSource(String nonJtaDataSource); 060 061 /** 062 * Set the JTA-enabled data source to be used by the persistence provider for accessing data outside a JTA 063 * transaction. Corresponds to the named <code>jta-data-source</code> element in the 064 * <code>persistence.xml</code> file. 065 * 066 * @param jtaDataSource 067 * data source to set 068 */ 069 TapestryPersistenceUnitInfo jtaDataSource(String jtaDataSource); 070 071 /** 072 * Add a managed class name to be used by persistence provider. 073 * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file. 074 * 075 * @param className 076 * class name to add 077 * @see #addManagedClass(Class) 078 */ 079 TapestryPersistenceUnitInfo addManagedClassName(String className); 080 081 /** 082 * Add a managed class to be used by persistence provider. 083 * Corresponds to a named <code>class</code> element in the <code>persistence.xml</code> file. 084 * 085 * @param clazz 086 * class to add 087 * @see #addManagedClassName(String) 088 */ 089 TapestryPersistenceUnitInfo addManagedClass(Class<?> clazz); 090 091 /** 092 * Defines how the persistence provider must use a second-level cache for the persistence unit. 093 * Corresponds to the <code>shared-cache-mode</code> element in the <code>persistence.xml</code> file. 094 * 095 * @param cacheMode 096 * cache mode to set 097 */ 098 TapestryPersistenceUnitInfo sharedCacheMode(SharedCacheMode cacheMode); 099 100 /** 101 * Set the validation mode to be used by the persistence provider for the persistence unit. 102 * Corresponds to the <code>validation-mode</code> element in the <code>persistence.xml</code> file. 103 * 104 * @param validationMode 105 * validation mode to set 106 */ 107 TapestryPersistenceUnitInfo validationMode(ValidationMode validationMode); 108 109 /** 110 * Add a mapping file to be loaded by the persistence provider to determine the mappings for 111 * the entity classes. Corresponds to a <code>mapping-file</code> element in the <code>persistence.xml</code> file. 112 * 113 * @param fileName 114 * mapping file name to add 115 */ 116 TapestryPersistenceUnitInfo addMappingFileName(String fileName); 117 118 /** 119 * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine 120 * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the 121 * <code>persistence.xml</code> file. 122 * 123 * @param url 124 * url to add 125 */ 126 TapestryPersistenceUnitInfo addJarFileUrl(URL url); 127 128 /** 129 * Add a URLs for the jar file or exploded jar file directory that the persistence provider must examine 130 * for managed classes of the persistence unit. Corresponds to a <code>jar-file</code> element in the 131 * <code>persistence.xml</code> file. 132 * 133 * @param url 134 * url to add 135 */ 136 TapestryPersistenceUnitInfo addJarFileUrl(String url); 137 138 /** 139 * Add a property. Corresponds to a <code>property</code> element in the <code>persistence.xml</code> file. 140 * 141 * @param name 142 * property's name 143 * @param value 144 * property's value 145 */ 146 TapestryPersistenceUnitInfo addProperty(String name, String value); 147 148 /** 149 * Defines whether classes in the root of the persistence unit that have not been explicitly listed 150 * are to be included in the set of managed classes. Corresponds to the <code>exclude-unlisted-classes</code> 151 * element in the <code>persistence.xml</code> file. 152 * 153 * @param exclude 154 * defines whether to exclude or not 155 */ 156 TapestryPersistenceUnitInfo excludeUnlistedClasses(boolean exclude); 157 158 /** 159 * {@link javax.persistence.spi.PersistenceProvider} allows creating an {@alink javax.persistence.EntityManagerFactory} 160 * with a default EntityManager properties map. This operation allows contributing default properties for 161 * EntityManager. 162 * 163 * @param properties 164 * properties to initialize EntityManagerFactory with 165 */ 166 TapestryPersistenceUnitInfo setEntityManagerProperties(Map properties); 167 168 /** 169 * @return Returns the supplied EntityManagerFactory properties. Returns null if not set 170 */ 171 Map getEntityManagerProperties(); 172 }