From ebc8d54f945065997d0ba03c13253ba590a1db1b Mon Sep 17 00:00:00 2001 From: Michael Muller Date: Sun, 6 Oct 2019 21:32:27 -0400 Subject: [PATCH] Add persistence.xml to the war files (#293) * Add persistence.xml to the war files * Always use the DummyJpaTransactionManager Use the DJTM until we get all of the dependencies set up for all of the environments. This shouldn't affect any of the unit tests, these use the JpaTransactionManagerRule to set up a local database and connection. This fixes the App Engine build. --- appengine_war.gradle | 7 ++++++- .../transaction/TransactionManagerFactory.java | 15 +++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/appengine_war.gradle b/appengine_war.gradle index 09828a4bc..61ede80e2 100644 --- a/appengine_war.gradle +++ b/appengine_war.gradle @@ -25,14 +25,19 @@ project.convention.plugins['war'].webAppDirName = apply plugin: 'com.google.cloud.tools.appengine' +def coreResourcesDir = "${rootDir}/core/build/resources/main" + // Get the web.xml file for the service. war { webInf { from "../../core/src/main/java/google/registry/env/common/${project.name}/WEB-INF" + + from("${coreResourcesDir}/META-INF/persistence.xml") { + into "classes/META-INF" + } } } -def coreResourcesDir = "${rootDir}/core/build/resources/main" war { from("${coreResourcesDir}/google/registry/ui/html") { include "*.html" diff --git a/core/src/main/java/google/registry/model/transaction/TransactionManagerFactory.java b/core/src/main/java/google/registry/model/transaction/TransactionManagerFactory.java index 77ddcf9d8..2f412c46d 100644 --- a/core/src/main/java/google/registry/model/transaction/TransactionManagerFactory.java +++ b/core/src/main/java/google/registry/model/transaction/TransactionManagerFactory.java @@ -14,11 +14,8 @@ package google.registry.model.transaction; -import com.google.appengine.api.utils.SystemProperty; -import com.google.appengine.api.utils.SystemProperty.Environment.Value; import com.google.common.annotations.VisibleForTesting; import google.registry.model.ofy.DatastoreTransactionManager; -import google.registry.persistence.DaggerPersistenceComponent; /** Factory class to create {@link TransactionManager} instance. */ // TODO: Rename this to PersistenceFactory and move to persistence package. @@ -30,11 +27,13 @@ public class TransactionManagerFactory { private TransactionManagerFactory() {} private static JpaTransactionManager createJpaTransactionManager() { - if (SystemProperty.environment.value() == Value.Production) { - return DaggerPersistenceComponent.create().jpaTransactionManager(); - } else { - return DummyJpaTransactionManager.create(); - } + // TODO(shicong): There is currently no environment where we want to create a real JPA + // transaction manager here. The unit tests that require one are all set up using + // JpaTransactionManagerRule which launches its own PostgreSQL instance. When we actually have + // PostgreSQL tables in production, ensure that all of the test environments are set up + // correctly and restore the code that creates a JpaTransactionManager when + // RegistryEnvironment.get() != UNITTEST. + return DummyJpaTransactionManager.create(); } private static TransactionManager createTransactionManager() {