use of org.apache.openejb.jee.jpa.unit.Persistence in project tomee by apache.
the class CmpJpaConversion method getCmpPersistenceUnit.
private PersistenceUnit getCmpPersistenceUnit(final AppModule appModule) {
// search for the cmp persistence unit
PersistenceUnit persistenceUnit = findCmpPersistenceUnit(appModule);
// if not found create one
if (persistenceUnit == null) {
persistenceUnit = new PersistenceUnit();
persistenceUnit.setName(CMP_PERSISTENCE_UNIT_NAME);
persistenceUnit.setTransactionType(TransactionType.JTA);
// Don't set default values here, let the autoconfig do that
// persistenceUnit.setJtaDataSource("java:openejb/Resource/Default JDBC Database");
// persistenceUnit.setNonJtaDataSource("java:openejb/Resource/Default Unmanaged JDBC Database");
// todo paramterize this
final Properties properties = new Properties();
final String property = SystemInstance.get().getProperty("openejb.cmp.openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true, Indexes=false, IgnoreErrors=true)");
if (property != null && !property.isEmpty()) {
properties.setProperty("openjpa.jdbc.SynchronizeMappings", property);
}
// properties.setProperty("openjpa.DataCache", "false");
properties.setProperty("openjpa.Log", "DefaultLevel=INFO");
persistenceUnit.setProperties(properties);
final Persistence persistence = new Persistence();
persistence.setVersion("1.0");
persistence.getPersistenceUnit().add(persistenceUnit);
final PersistenceModule persistenceModule = new PersistenceModule(appModule, getPersistenceModuleId(appModule), persistence);
appModule.addPersistenceModule(persistenceModule);
}
return persistenceUnit;
}
use of org.apache.openejb.jee.jpa.unit.Persistence in project tomee by apache.
the class ApplicationComposerDeployer method configureModule.
private Object configureModule(final AppModule appModule, final EjbModule ejbModule, final Class<?> clazz, Object instance, final Method m) {
final int modifiers = m.getModifiers();
if (!Modifier.isPublic(modifiers)) {
throw new IllegalArgumentException("@Module should be public");
}
final boolean isStatic = Modifier.isStatic(modifiers);
if (!isStatic) {
try {
instance = clazz.newInstance();
} catch (final Exception e) {
// no-op
}
}
try {
final Object result = m.invoke(isStatic ? null : instance);
if (EjbJar.class.isInstance(result)) {
ejbModule.setEjbJar(EjbJar.class.cast(result));
} else if (Persistence.class.isInstance(result)) {
final Persistence persistence = Persistence.class.cast(result);
if (!persistence.getPersistenceUnit().isEmpty()) {
appModule.getPersistenceModules().add(new PersistenceModule(appModule, rootUrl(ejbModule), persistence));
}
} else if (PersistenceUnit.class.isInstance(result)) {
final PersistenceUnit unit = PersistenceUnit.class.cast(result);
appModule.addPersistenceModule(new PersistenceModule(appModule, rootUrl(ejbModule), new Persistence(unit)));
} else if (Beans.class.isInstance(result)) {
final Beans beans = Beans.class.cast(result);
ejbModule.setBeans(beans);
} else {
throw new IllegalArgumentException(result + " not yet supported (" + m + ")");
}
} catch (final IllegalAccessException | InvocationTargetException e) {
throw new IllegalStateException(e);
}
return instance;
}
use of org.apache.openejb.jee.jpa.unit.Persistence in project tomee by apache.
the class OutputGeneratedDescriptors method writeGenratedCmpMappings.
private void writeGenratedCmpMappings(final AppModule appModule) {
for (final PersistenceModule persistenceModule : appModule.getPersistenceModules()) {
try {
final Persistence persistence = persistenceModule.getPersistence();
if (hasCmpPersistenceUnit(persistence)) {
final File tempFile = tempFile("persistence-", ".xml");
final OutputStream out = IO.write(tempFile);
try {
JpaJaxbUtil.marshal(Persistence.class, persistence, out);
logger.info("Dumping Generated CMP persistence.xml to: " + tempFile.getAbsolutePath());
} catch (final JAXBException e) {
// no-op
} finally {
IO.close(out);
}
}
} catch (final IOException e) {
// no-op
}
}
try {
final File tempFile = tempFile("openejb-cmp-generated-orm-", ".xml");
final OutputStream out = IO.write(tempFile);
try {
JpaJaxbUtil.marshal(EntityMappings.class, appModule.getCmpMappings(), out);
logger.info("Dumping Generated CMP mappings.xml to: " + tempFile.getAbsolutePath());
} catch (final JAXBException e) {
// no-op
} finally {
IO.close(out);
}
} catch (final IOException e) {
// no-op
}
}
use of org.apache.openejb.jee.jpa.unit.Persistence in project tomee by apache.
the class ReadDescriptors method deploy.
@SuppressWarnings({ "unchecked" })
public AppModule deploy(final AppModule appModule) throws OpenEJBException {
for (final EjbModule ejbModule : appModule.getEjbModules()) {
if (ejbModule.getEjbJar() == null) {
readEjbJar(ejbModule, appModule);
}
if (ejbModule.getOpenejbJar() == null) {
readOpenejbJar(ejbModule);
}
if (ejbModule.getBeans() == null) {
readBeans(ejbModule);
}
readValidationConfigType(ejbModule);
readCmpOrm(ejbModule);
readResourcesXml(ejbModule);
}
for (final ClientModule clientModule : appModule.getClientModules()) {
readAppClient(clientModule, appModule);
readValidationConfigType(clientModule);
readResourcesXml(clientModule);
}
for (final ConnectorModule connectorModule : appModule.getConnectorModules()) {
readConnector(connectorModule, appModule);
readValidationConfigType(connectorModule);
readResourcesXml(connectorModule);
}
for (final WebModule webModule : appModule.getWebModules()) {
readWebApp(webModule, appModule);
readValidationConfigType(webModule);
readResourcesXml(webModule);
}
final List<Object> persistenceUrls = (List<Object>) appModule.getAltDDs().get("persistence.xml");
if (persistenceUrls != null) {
for (final Object persistenceUrl : persistenceUrls) {
final boolean url = persistenceUrl instanceof URL;
final Source source = getSource(persistenceUrl);
final String moduleName;
final String path;
final String rootUrl;
if (url) {
final URL pUrl = (URL) persistenceUrl;
File file = URLs.toFile(pUrl);
path = file.getAbsolutePath();
if (file.getName().endsWith("persistence.xml")) {
final File parentFile = file.getParentFile();
final String parent = parentFile.getName();
if (parent.equalsIgnoreCase("WEB-INF") || parent.equalsIgnoreCase("META-INF")) {
file = parentFile.getParentFile();
} else {
// we don't really know so simply go back (users will often put persistence.xml in root resource folder with arquillian)
file = file.getParentFile();
}
}
moduleName = file.toURI().toString();
String tmpRootUrl = moduleName;
final String extForm = pUrl.toExternalForm();
if (extForm.contains("WEB-INF/classes/META-INF/")) {
if (!ROOT_URL_FROM_WEBINF) {
tmpRootUrl = extForm.substring(0, extForm.indexOf("/META-INF"));
} else {
tmpRootUrl = extForm.substring(0, extForm.indexOf("/classes/META-INF"));
}
}
if (tmpRootUrl.endsWith(".war")) {
tmpRootUrl = tmpRootUrl.substring(0, tmpRootUrl.length() - ".war".length());
}
rootUrl = tmpRootUrl;
} else {
moduleName = "";
rootUrl = "";
path = null;
}
try {
final Persistence persistence = JaxbPersistenceFactory.getPersistence(Persistence.class, source.get());
final PersistenceModule persistenceModule = new PersistenceModule(appModule, rootUrl, persistence);
persistenceModule.getWatchedResources().add(moduleName);
if (url && "file".equals(((URL) persistenceUrl).getProtocol())) {
persistenceModule.getWatchedResources().add(path);
}
appModule.addPersistenceModule(persistenceModule);
} catch (final Exception e1) {
DeploymentLoader.LOGGER.error("Unable to load Persistence Unit from EAR: " + appModule.getJarLocation() + ", module: " + moduleName + ". Exception: " + e1.getMessage(), e1);
}
}
}
final List<URL> persistenceFragmentUrls = (List<URL>) appModule.getAltDDs().get("persistence-fragment.xml");
if (persistenceFragmentUrls != null) {
for (final URL persistenceFragmentUrl : persistenceFragmentUrls) {
try {
final PersistenceFragment persistenceFragment = JaxbPersistenceFactory.getPersistence(PersistenceFragment.class, persistenceFragmentUrl);
// merging
for (final PersistenceUnitFragment fragmentUnit : persistenceFragment.getPersistenceUnitFragment()) {
for (final PersistenceModule persistenceModule : appModule.getPersistenceModules()) {
final Persistence persistence = persistenceModule.getPersistence();
for (final PersistenceUnit unit : persistence.getPersistenceUnit()) {
if (!fragmentUnit.getName().equals(unit.getName())) {
continue;
}
if (!persistenceFragment.getVersion().equals(persistence.getVersion())) {
logger.error("persistence unit version and fragment version are different, fragment will be ignored");
continue;
}
if ("file".equals(persistenceFragmentUrl.getProtocol())) {
persistenceModule.getWatchedResources().add(URLs.toFile(persistenceFragmentUrl).getAbsolutePath());
}
for (final String clazz : fragmentUnit.getClazz()) {
if (!unit.getClazz().contains(clazz)) {
logger.info("Adding class " + clazz + " to persistence unit " + fragmentUnit.getName());
unit.getClazz().add(clazz);
}
}
for (final String mappingFile : fragmentUnit.getMappingFile()) {
if (!unit.getMappingFile().contains(mappingFile)) {
logger.info("Adding mapping file " + mappingFile + " to persistence unit " + fragmentUnit.getName());
unit.getMappingFile().add(mappingFile);
}
}
for (final String jarFile : fragmentUnit.getJarFile()) {
if (!unit.getJarFile().contains(jarFile)) {
logger.info("Adding jar file " + jarFile + " to persistence unit " + fragmentUnit.getName());
unit.getJarFile().add(jarFile);
}
}
if (fragmentUnit.isExcludeUnlistedClasses()) {
unit.setExcludeUnlistedClasses(true);
logger.info("Excluding unlisted classes for persistence unit " + fragmentUnit.getName());
}
// else let the main persistence unit decide
}
}
}
} catch (final Exception e1) {
DeploymentLoader.LOGGER.error("Unable to load Persistence Unit Fragment from EAR: " + appModule.getJarLocation() + ", fragment: " + persistenceFragmentUrl.toString() + ". Exception: " + e1.getMessage(), e1);
}
}
}
return appModule;
}
use of org.apache.openejb.jee.jpa.unit.Persistence in project tomee by apache.
the class PassivationWithEmTest method persistence.
@Module
public Persistence persistence() throws Exception {
final PersistenceUnit unit = new PersistenceUnit("passivation-unit");
unit.addClass(MyEntity.class);
unit.setTransactionType(TransactionType.JTA);
unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
unit.getProperties().setProperty("openjpa.RuntimeUnenhancedClasses", "supported");
unit.setExcludeUnlistedClasses(true);
final Persistence persistence = new org.apache.openejb.jee.jpa.unit.Persistence(unit);
persistence.setVersion("2.0");
return persistence;
}
Aggregations