From c8059d4d8aafd99a37c1d21ba13a620cd0ccb442 Mon Sep 17 00:00:00 2001 From: mcilwain Date: Thu, 14 Dec 2017 12:51:55 -0800 Subject: [PATCH] Add transactional import helper in RdeImportUtilsTest This is needed to fix an inability in Java 8 to correctly infer the type when the transaction was being allowed to return the value it loaded. The error was: INFO: Compilation unit has error diagnostics: [third_party/java_src/gtld/javatests/google/registry/rde/imports/RdeImportUtilsTest.java:109: error: incompatible types: inference variable R has incompatible bounds ofy().transact(() -> rdeImportUtils.importEppResource(newContact)); ^ upper bounds: java.lang.Object lower bounds: void, third_party/java_src/gtld/javatests/google/registry/rde/imports/RdeImportUtilsTest.java:132: error: incompatible types: inference variable R has incompatible bounds ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=179082154 --- .../registry/rde/imports/RdeImportUtils.java | 4 +-- .../rde/imports/RdeImportUtilsTest.java | 29 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/java/google/registry/rde/imports/RdeImportUtils.java b/java/google/registry/rde/imports/RdeImportUtils.java index 4078fd97a..48895bbc0 100644 --- a/java/google/registry/rde/imports/RdeImportUtils.java +++ b/java/google/registry/rde/imports/RdeImportUtils.java @@ -110,8 +110,8 @@ public class RdeImportUtils { *

If the resource is imported, {@link ForeignKeyIndex} and {@link EppResourceIndex} are also * created. */ - public void - importEppResource(final T resource) { + public void importEppResource( + final T resource) { Object existing = ofy.load().key(Key.create(resource)).now(); if (existing != null) { // This will roll back the transaction and prevent duplicate history entries from being saved. diff --git a/javatests/google/registry/rde/imports/RdeImportUtilsTest.java b/javatests/google/registry/rde/imports/RdeImportUtilsTest.java index fa6345e27..f75ed25d9 100644 --- a/javatests/google/registry/rde/imports/RdeImportUtilsTest.java +++ b/javatests/google/registry/rde/imports/RdeImportUtilsTest.java @@ -37,6 +37,7 @@ import com.google.common.io.ByteSource; import com.googlecode.objectify.Key; import google.registry.gcs.GcsUtils; import google.registry.model.EppResource; +import google.registry.model.EppResource.ForeignKeyedEppResource; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DesignatedContact; import google.registry.model.domain.DesignatedContact.Type; @@ -106,7 +107,7 @@ public class RdeImportUtilsTest extends ShardableTestCase { @Test public void testImportNewContact() { final ContactResource newContact = buildNewContact(); - ofy().transact(() -> rdeImportUtils.importEppResource(newContact)); + importResourceInTransaction(newContact); assertEppResourceIndexEntityFor(newContact); assertForeignKeyIndexFor(newContact); @@ -129,7 +130,7 @@ public class RdeImportUtilsTest extends ShardableTestCase { .setLastEppUpdateTime(newContact.getLastEppUpdateTime().plusSeconds(1)) .build(); try { - ofy().transact(() -> rdeImportUtils.importEppResource(updatedContact)); + importResourceInTransaction(updatedContact); fail("Expected ResourceExistsException"); } catch (ResourceExistsException expected) { // verify the updated contact was not saved @@ -145,7 +146,7 @@ public class RdeImportUtilsTest extends ShardableTestCase { @Test public void testImportNewHost() throws UnknownHostException { final HostResource newHost = buildNewHost(); - ofy().transact(() -> rdeImportUtils.importEppResource(newHost)); + importResourceInTransaction(newHost); assertEppResourceIndexEntityFor(newHost); assertForeignKeyIndexFor(newHost); @@ -165,11 +166,11 @@ public class RdeImportUtilsTest extends ShardableTestCase { persistResource(newHost); final HostResource updatedHost = newHost - .asBuilder() - .setLastEppUpdateTime(newHost.getLastEppUpdateTime().plusSeconds(1)) - .build(); + .asBuilder() + .setLastEppUpdateTime(newHost.getLastEppUpdateTime().plusSeconds(1)) + .build(); try { - ofy().transact(() -> rdeImportUtils.importEppResource(updatedHost)); + importResourceInTransaction(updatedHost); fail("Expected ResourceExistsException"); } catch (ResourceExistsException expected) { // verify the contact was not updated @@ -184,7 +185,7 @@ public class RdeImportUtilsTest extends ShardableTestCase { @Test public void testImportNewDomain() throws Exception { final DomainResource newDomain = buildNewDomain(); - ofy().transact(() -> rdeImportUtils.importEppResource(newDomain)); + importResourceInTransaction(newDomain); DomainResource saved = getDomain("Dexample1-TEST"); assertThat(saved.getFullyQualifiedDomainName()) @@ -209,7 +210,7 @@ public class RdeImportUtilsTest extends ShardableTestCase { .setFullyQualifiedDomainName("1" + newDomain.getFullyQualifiedDomainName()) .build(); try { - ofy().transact(() -> rdeImportUtils.importEppResource(updatedDomain)); + importResourceInTransaction(updatedDomain); fail("Expected ResourceExistsException"); } catch (ResourceExistsException expected) { DomainResource saved = getDomain("Dexample1-TEST"); @@ -354,4 +355,14 @@ public class RdeImportUtilsTest extends ShardableTestCase { assertThat(indices.get(0).getBucket()) .isEqualTo(EppResourceIndexBucket.getBucketKey(Key.create(resource))); } + + private void importResourceInTransaction( + T resource) { + ofy() + .transact( + () -> { + rdeImportUtils.importEppResource(resource); + return null; + }); + } }