You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2016/07/08 21:25:33 UTC

incubator-geode git commit: GEODE-1641: The Gateway Conflict Resolver is supported again in cache.xml

Repository: incubator-geode
Updated Branches:
  refs/heads/develop 92d961a65 -> 71a9c14d4


GEODE-1641: The Gateway Conflict Resolver is supported again in cache.xml


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/71a9c14d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/71a9c14d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/71a9c14d

Branch: refs/heads/develop
Commit: 71a9c14d4b4a92f4c579dbd6f77fc91db31bba50
Parents: 92d961a
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Thu Jul 7 15:09:05 2016 -0700
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Fri Jul 8 14:22:56 2016 -0700

----------------------------------------------------------------------
 .../internal/cache/xmlcache/CacheXmlParser.java | 17 ++++++++++++++
 .../gemfire/internal/i18n/LocalizedStrings.java |  2 +-
 .../gemfire/cache30/CacheXml70DUnitTest.java    | 24 +++++++++++++++++++-
 3 files changed, 41 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/71a9c14d/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheXmlParser.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheXmlParser.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheXmlParser.java
index 0564cb5..54b8063 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheXmlParser.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheXmlParser.java
@@ -37,6 +37,7 @@ import javax.xml.XMLConstants;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import com.gemstone.gemfire.cache.util.GatewayConflictResolver;
 import org.apache.logging.log4j.Logger;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -889,6 +890,19 @@ public class CacheXmlParser extends CacheXml implements ContentHandler {
   }
 
   /**
+   * When a <code>gateway-conflict-resolver</code> element is encountered,
+   * create a new listener for the <code>Cache</code>.
+   */
+  private void endGatewayConflictResolver() {
+    Declarable d = createDeclarable();
+    if (!(d instanceof GatewayConflictResolver)) {
+      throw new CacheXmlException(LocalizedStrings.CacheXmlParser_A_0_IS_NOT_AN_INSTANCE_OF_A_GATEWAYCONFLICTRESOLVER.toLocalizedString(d.getClass().getName()));
+    }
+    CacheCreation c = (CacheCreation)stack.peek();
+    c.setGatewayConflictResolver((GatewayConflictResolver)d);
+  }
+
+  /**
    * When a <code>region</code> element is first encountered, we create a
    * {@link RegionCreation}and push it on the stack.
    */
@@ -3023,6 +3037,9 @@ public class CacheXmlParser extends CacheXml implements ContentHandler {
       else if (qName.equals(REGION)) {
         endRegion();
       }
+      else if (qName.equals(GATEWAY_CONFLICT_RESOLVER)) {
+        endGatewayConflictResolver();
+      }
       else if (qName.equals(VM_ROOT_REGION)) {
         endRegion();
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/71a9c14d/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
index fa930f3..be1ff17 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/i18n/LocalizedStrings.java
@@ -862,7 +862,7 @@ public class LocalizedStrings {
   public static final StringId AbstractRegionMap_ATTEMPT_TO_REMOVE_TOMBSTONE = new StringId(2018, "Internal product error: attempt to directly remove a versioned tombstone from region entry map");
   public static final StringId HostStatSampler_STATISTICS_SAMPLING_THREAD_DETECTED_A_WAKEUP_DELAY_OF_0_MS_INDICATING_A_POSSIBLE_RESOURCE_ISSUE = new StringId(2019, "Statistics sampling thread detected a wakeup delay of {0} ms, indicating a possible resource issue. Check the GC, memory, and CPU statistics.");
   public static final StringId ServerConnection_0__UNEXPECTED_EXCEPTION = new StringId(2020, "{0} : Unexpected Exception");
-
+  public static final StringId CacheXmlParser_A_0_IS_NOT_AN_INSTANCE_OF_A_GATEWAYCONFLICTRESOLVER = new StringId(2021, "A {0} is not an instance of a GatewayConflictResolver.");
   public static final StringId GemFireCacheImpl_TOMBSTONE_ERROR = new StringId(2022, "Unexpected exception while processing tombstones");
   public static final StringId FunctionService_NO_MEMBERS_FOUND_IN_GROUPS = new StringId(2023, "No members found in group(s) {0}");
   public static final StringId DistributionManager_Time_Skew_Warning = new StringId(2024, "The clock for this machine may be more than 5 minutes different than the negotiated cache time received from {0}");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/71a9c14d/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheXml70DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheXml70DUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheXml70DUnitTest.java
index 4492aa5..4e2cd0c 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheXml70DUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheXml70DUnitTest.java
@@ -26,6 +26,9 @@ import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
+import com.gemstone.gemfire.cache.util.GatewayConflictHelper;
+import com.gemstone.gemfire.cache.util.GatewayConflictResolver;
+import com.gemstone.gemfire.cache.util.TimestampedEntryEvent;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -115,6 +118,18 @@ public class CacheXml70DUnitTest extends CacheXml66DUnitTest {
   }
 
   @Test
+  public void testGatewayConflictResolver() throws CacheException {
+    CacheCreation cache = new CacheCreation();
+    cache.setGatewayConflictResolver(new MyGatewayConflictResolver());
+    testXml(cache);
+    Cache c = getCache();
+    assertNotNull(c);
+    GatewayConflictResolver gatewayConflictResolver = c.getGatewayConflictResolver();
+    assertNotNull(gatewayConflictResolver);
+    assertTrue(gatewayConflictResolver instanceof MyGatewayConflictResolver);
+  }
+
+    @Test
   public void testAsyncEventQueue() {
     getSystem();
     CacheCreation cache = new CacheCreation();
@@ -231,7 +246,14 @@ public class CacheXml70DUnitTest extends CacheXml66DUnitTest {
     public void init(Properties properties) {
     }
   }
-  
+
+  public static class MyGatewayConflictResolver implements GatewayConflictResolver, Declarable {
+
+    public void onEvent(TimestampedEntryEvent event, GatewayConflictHelper helper) {}
+
+    public void init(Properties p) {}
+  }
+
   public static void validateAsyncEventQueue(AsyncEventQueue eventChannelFromXml, AsyncEventQueue channel) {
     assertEquals("AsyncEventQueue id doesn't match", eventChannelFromXml.getId(), channel.getId());
     assertEquals("AsyncEventQueue batchSize doesn't match", eventChannelFromXml.getBatchSize(), channel.getBatchSize());