You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/01/20 01:01:39 UTC

[geode] branch develop updated: GEODE-4307: Removing some static calls to GemFireCacheImpl.getForPDX

This is an automated email from the ASF dual-hosted git repository.

upthewaterspout pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new b1cb0e3  GEODE-4307: Removing some static calls to GemFireCacheImpl.getForPDX
b1cb0e3 is described below

commit b1cb0e3956857aae3552bd79d80da7494402e707
Author: Dan Smith <up...@apache.org>
AuthorDate: Fri Jan 19 16:50:20 2018 -0800

    GEODE-4307: Removing some static calls to GemFireCacheImpl.getForPDX
    
    Removing the easier static calls to getForPdx.
    
    This closes #1299
---
 .../geode/cache/client/internal/ProxyCache.java    |   4 +-
 .../apache/geode/internal/cache/DiskStoreImpl.java |   2 +-
 .../geode/internal/cache/GemFireCacheImpl.java     |   7 +-
 .../geode/internal/cache/InternalRegion.java       |   2 +
 .../cache/entries/AbstractRegionEntry.java         |  75 ++++-----
 .../geode/internal/cache/snapshot/GFSnapshot.java  |  12 +-
 .../cache/snapshot/RegionSnapshotServiceImpl.java  |   4 +-
 .../geode/pdx/internal/PdxInstanceFactoryImpl.java |  10 +-
 .../geode/cache/query/PdxStringQueryJUnitTest.java |  33 ++--
 .../cache/query/dunit/PdxLocalQueryDUnitTest.java  |   4 +-
 .../PdxLocalQueryVersionedClassDUnitTest.java      |   5 +-
 .../geode/cache/query/dunit/PdxQueryDUnitTest.java |  38 ++---
 .../snapshot/GFSnapshotJUnitPerformanceTest.java   |  11 +-
 .../geode/management/QueryDataDUnitTest.java       |  13 +-
 .../QueryDataFunctionIntegrationTest.java          |   5 +-
 .../cli/json/TypedJsonPdxIntegrationTest.java      |   7 +-
 .../geode/pdx/PdxInstanceFactoryJUnitTest.java     | 173 +++++++++++----------
 .../org/apache/geode/pdx/PdxInstanceJUnitTest.java |  40 ++---
 .../org/apache/geode/pdx/PdxStringJUnitTest.java   |  14 +-
 .../lucene/FlatFormatPdxSerializerJunitTest.java   |  16 +-
 20 files changed, 243 insertions(+), 232 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ProxyCache.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ProxyCache.java
index 711e8cb..3b4285c 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ProxyCache.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ProxyCache.java
@@ -222,11 +222,11 @@ public class ProxyCache implements RegionService {
 
   @Override
   public PdxInstanceFactory createPdxInstanceFactory(String className) {
-    return PdxInstanceFactoryImpl.newCreator(className, true);
+    return PdxInstanceFactoryImpl.newCreator(className, true, cache);
   }
 
   public PdxInstanceFactory createPdxInstanceFactory(String className, boolean expectDomainClass) {
-    return PdxInstanceFactoryImpl.newCreator(className, expectDomainClass);
+    return PdxInstanceFactoryImpl.newCreator(className, expectDomainClass, cache);
   }
 
   @Override
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
index 5d6961f..511b821 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
@@ -3841,7 +3841,7 @@ public class DiskStoreImpl implements DiskStore {
         if (writer == null) {
           String fname = regionName.substring(1).replace('/', '-');
           File f = new File(out, "snapshot-" + name + "-" + fname + ".gfd");
-          writer = GFSnapshot.create(f, regionName);
+          writer = GFSnapshot.create(f, regionName, cache);
           regions.put(regionName, writer);
         }
         // Add a mapping from the bucket name to the writer for the PR
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
index d86e547..b8895f7 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
@@ -736,6 +736,9 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has
 
   /**
    * Pdx is allowed to obtain the cache even while it is being closed
+   *
+   * @deprecated Rather than fishing for a cache with this static method, use a cache that is passed
+   *             in to your method.
    */
   public static GemFireCacheImpl getForPdx(String reason) {
     GemFireCacheImpl result = pdxInstance;
@@ -5208,12 +5211,12 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has
 
   @Override
   public PdxInstanceFactory createPdxInstanceFactory(String className) {
-    return PdxInstanceFactoryImpl.newCreator(className, true);
+    return PdxInstanceFactoryImpl.newCreator(className, true, this);
   }
 
   @Override
   public PdxInstanceFactory createPdxInstanceFactory(String className, boolean expectDomainClass) {
-    return PdxInstanceFactoryImpl.newCreator(className, expectDomainClass);
+    return PdxInstanceFactoryImpl.newCreator(className, expectDomainClass, this);
   }
 
   @Override
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
index ae59446..36edd68 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/InternalRegion.java
@@ -125,6 +125,8 @@ public interface InternalRegion<K, V>
 
   void addCacheServiceProfile(CacheServiceProfile profile);
 
+  InternalCache getCache();
+
   void setEvictionMaximum(int maximum);
 
   /**
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractRegionEntry.java b/geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractRegionEntry.java
index fb00378..63ec46b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractRegionEntry.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractRegionEntry.java
@@ -949,7 +949,7 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
     } else {
       boolean isCompressedOffHeap =
           region.getAttributes().getOffHeap() && region.getAttributes().getCompressor() != null;
-      return checkEquals(expectedOldValue, actualValue, isCompressedOffHeap);
+      return checkEquals(expectedOldValue, actualValue, isCompressedOffHeap, region.getCache());
     }
   }
 
@@ -1021,31 +1021,30 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
   }
 
   private static boolean checkEquals(@Unretained Object v1, @Unretained Object v2,
-      boolean isCompressedOffHeap) {
+      boolean isCompressedOffHeap, InternalCache cache) {
     // need to give PdxInstance#equals priority
     if (v1 instanceof PdxInstance) {
-      return checkPdxEquals((PdxInstance) v1, v2);
+      return checkPdxEquals((PdxInstance) v1, v2, cache);
     } else if (v2 instanceof PdxInstance) {
-      return checkPdxEquals((PdxInstance) v2, v1);
+      return checkPdxEquals((PdxInstance) v2, v1, cache);
     } else if (v1 instanceof StoredObject) {
-      return checkOffHeapEquals((StoredObject) v1, v2);
+      return checkOffHeapEquals((StoredObject) v1, v2, cache);
     } else if (v2 instanceof StoredObject) {
-      return checkOffHeapEquals((StoredObject) v2, v1);
+      return checkOffHeapEquals((StoredObject) v2, v1, cache);
     } else if (v1 instanceof CachedDeserializable) {
-      return checkCDEquals((CachedDeserializable) v1, v2, isCompressedOffHeap);
+      return checkCDEquals((CachedDeserializable) v1, v2, isCompressedOffHeap, cache);
     } else if (v2 instanceof CachedDeserializable) {
-      return checkCDEquals((CachedDeserializable) v2, v1, isCompressedOffHeap);
+      return checkCDEquals((CachedDeserializable) v2, v1, isCompressedOffHeap, cache);
     } else {
       return basicEquals(v1, v2);
     }
   }
 
-  private static boolean checkOffHeapEquals(@Unretained StoredObject ohVal,
-      @Unretained Object obj) {
+  private static boolean checkOffHeapEquals(@Unretained StoredObject ohVal, @Unretained Object obj,
+      InternalCache cache) {
     if (ohVal.isSerializedPdxInstance()) {
-      PdxInstance pi = InternalDataSerializer.readPdxInstance(ohVal.getSerializedValue(),
-          GemFireCacheImpl.getForPdx("Could not check value equality"));
-      return checkPdxEquals(pi, obj);
+      PdxInstance pi = InternalDataSerializer.readPdxInstance(ohVal.getSerializedValue(), cache);
+      return checkPdxEquals(pi, obj, cache);
     }
     if (obj instanceof StoredObject) {
       return ohVal.checkDataEquals((StoredObject) obj);
@@ -1077,7 +1076,7 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
   }
 
   private static boolean checkCDEquals(CachedDeserializable cd, Object obj,
-      boolean isCompressedOffHeap) {
+      boolean isCompressedOffHeap, InternalCache cache) {
     if (!cd.isSerialized()) {
       // cd is an actual byte[].
       byte[] ba2;
@@ -1098,10 +1097,9 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
     Object cdVal = cd.getValue();
     if (cdVal instanceof byte[]) {
       byte[] cdValBytes = (byte[]) cdVal;
-      PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes,
-          GemFireCacheImpl.getForPdx("Could not check value equality"));
+      PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes, cache);
       if (pi != null) {
-        return checkPdxEquals(pi, obj);
+        return checkPdxEquals(pi, obj, cache);
       }
       if (isCompressedOffHeap) {
         // fix for bug 52248
@@ -1144,7 +1142,7 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
   /**
    * This method fixes bug 43643
    */
-  private static boolean checkPdxEquals(PdxInstance pdx, Object obj) {
+  private static boolean checkPdxEquals(PdxInstance pdx, Object obj, InternalCache cache) {
     if (!(obj instanceof PdxInstance)) {
       // obj may be a CachedDeserializable in which case we want to convert it to a PdxInstance even
       // if we are not readSerialized.
@@ -1157,8 +1155,7 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
         Object cdVal = cdObj.getValue();
         if (cdVal instanceof byte[]) {
           byte[] cdValBytes = (byte[]) cdVal;
-          PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes,
-              GemFireCacheImpl.getForPdx("Could not check value equality"));
+          PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes, cache);
           if (pi != null) {
             return pi.equals(pdx);
           } else {
@@ -1171,29 +1168,25 @@ public abstract class AbstractRegionEntry implements RegionEntry, HashEntry<Obje
         }
       }
       if (obj != null && obj.getClass().getName().equals(pdx.getClassName())) {
-        InternalCache internalCache = GemFireCacheImpl.getForPdx("Could not access Pdx registry");
-        if (internalCache != null) {
-          PdxSerializer pdxSerializer;
-          if (obj instanceof PdxSerializable) {
-            pdxSerializer = null;
-          } else {
-            pdxSerializer = internalCache.getPdxSerializer();
-          }
-          if (pdxSerializer != null || obj instanceof PdxSerializable) {
-            // try to convert obj to a PdxInstance
-            HeapDataOutputStream hdos = new HeapDataOutputStream(Version.CURRENT);
-            try {
-              if (InternalDataSerializer.autoSerialized(obj, hdos)
-                  || InternalDataSerializer.writePdx(hdos, internalCache, obj, pdxSerializer)) {
-                PdxInstance pi =
-                    InternalDataSerializer.readPdxInstance(hdos.toByteArray(), internalCache);
-                if (pi != null) {
-                  obj = pi;
-                }
+        PdxSerializer pdxSerializer;
+        if (obj instanceof PdxSerializable) {
+          pdxSerializer = null;
+        } else {
+          pdxSerializer = cache.getPdxSerializer();
+        }
+        if (pdxSerializer != null || obj instanceof PdxSerializable) {
+          // try to convert obj to a PdxInstance
+          HeapDataOutputStream hdos = new HeapDataOutputStream(Version.CURRENT);
+          try {
+            if (InternalDataSerializer.autoSerialized(obj, hdos)
+                || InternalDataSerializer.writePdx(hdos, cache, obj, pdxSerializer)) {
+              PdxInstance pi = InternalDataSerializer.readPdxInstance(hdos.toByteArray(), cache);
+              if (pi != null) {
+                obj = pi;
               }
-            } catch (IOException | PdxSerializationException ignore) {
-              // we are not able to convert it so just fall through
             }
+          } catch (IOException | PdxSerializationException ignore) {
+            // we are not able to convert it so just fall through
           }
         }
       }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
index 587cede..ca45608 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
@@ -112,11 +112,13 @@ public class GFSnapshot {
    *
    * @param snapshot the snapshot file
    * @param region the region name
+   * @param cache
    * @return the callback to allow the invoker to provide the snapshot entries
    * @throws IOException error writing the snapshot file
    */
-  public static SnapshotWriter create(File snapshot, String region) throws IOException {
-    final GFSnapshotExporter out = new GFSnapshotExporter(snapshot, region);
+  public static SnapshotWriter create(File snapshot, String region, InternalCache cache)
+      throws IOException {
+    final GFSnapshotExporter out = new GFSnapshotExporter(snapshot, region, cache);
     return new SnapshotWriter() {
       @Override
       public void snapshotEntry(SnapshotRecord entry) throws IOException {
@@ -217,8 +219,10 @@ public class GFSnapshot {
 
     /** the output stream */
     private final DataOutputStream dos;
+    private final InternalCache cache;
 
-    public GFSnapshotExporter(File out, String region) throws IOException {
+    public GFSnapshotExporter(File out, String region, InternalCache cache) throws IOException {
+      this.cache = cache;
       FileOutputStream fos = new FileOutputStream(out);
       fc = fos.getChannel();
 
@@ -257,8 +261,6 @@ public class GFSnapshot {
 
       // write pdx types
       try {
-        InternalCache cache = GemFireCacheImpl
-            .getForPdx("PDX registry is unavailable because the Cache has been closed.");
         new ExportedRegistry(cache.getPdxRegistry()).toData(dos);
       } catch (CacheClosedException e) {
         // ignore pdx types
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/RegionSnapshotServiceImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/RegionSnapshotServiceImpl.java
index ad7ee72..f2b0a1c 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/RegionSnapshotServiceImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/RegionSnapshotServiceImpl.java
@@ -54,6 +54,7 @@ import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.CachedDeserializable;
 import org.apache.geode.internal.cache.CachedDeserializableFactory;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.LocalDataSet;
 import org.apache.geode.internal.cache.LocalRegion;
 import org.apache.geode.internal.cache.Token;
@@ -348,7 +349,8 @@ public class RegionSnapshotServiceImpl<K, V> implements RegionSnapshotService<K,
 
     long count = 0;
     long start = CachePerfStats.getStatTime();
-    SnapshotWriter writer = GFSnapshot.create(snapshot, region.getFullPath());
+    SnapshotWriter writer =
+        GFSnapshot.create(snapshot, region.getFullPath(), (InternalCache) region.getCache());
     try {
       if (getLoggerI18n().infoEnabled())
         getLoggerI18n().info(LocalizedStrings.Snapshot_EXPORT_BEGIN_0, region.getName());
diff --git a/geode-core/src/main/java/org/apache/geode/pdx/internal/PdxInstanceFactoryImpl.java b/geode-core/src/main/java/org/apache/geode/pdx/internal/PdxInstanceFactoryImpl.java
index 08e3364..b9d875b 100644
--- a/geode-core/src/main/java/org/apache/geode/pdx/internal/PdxInstanceFactoryImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/pdx/internal/PdxInstanceFactoryImpl.java
@@ -37,17 +37,15 @@ public class PdxInstanceFactoryImpl implements PdxInstanceFactory {
 
   private boolean created = false;
 
-  private PdxInstanceFactoryImpl(String name, boolean expectDomainClass) {
+  private PdxInstanceFactoryImpl(String name, boolean expectDomainClass, TypeRegistry pdxRegistry) {
     PdxOutputStream pdxOutputStream = new PdxOutputStream();
     PdxType pdxType = new PdxType(name, expectDomainClass);
-    InternalCache internalCache = GemFireCacheImpl
-        .getForPdx("PDX registry is unavailable because the Cache has been closed.");
-    TypeRegistry pdxRegistry = internalCache.getPdxRegistry();
     this.writer = new PdxWriterImpl(pdxType, pdxRegistry, pdxOutputStream);
   }
 
-  public static PdxInstanceFactory newCreator(String name, boolean expectDomainClass) {
-    return new PdxInstanceFactoryImpl(name, expectDomainClass);
+  public static PdxInstanceFactory newCreator(String name, boolean expectDomainClass,
+      InternalCache cache) {
+    return new PdxInstanceFactoryImpl(name, expectDomainClass, cache.getPdxRegistry());
   }
 
   @Override
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/PdxStringQueryJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/PdxStringQueryJUnitTest.java
index 6ca045f..f27f0e1 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/PdxStringQueryJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/PdxStringQueryJUnitTest.java
@@ -33,6 +33,7 @@ import org.apache.geode.cache.query.internal.index.CompactRangeIndex;
 import org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry;
 import org.apache.geode.cache.query.internal.index.PrimaryKeyIndex;
 import org.apache.geode.cache.query.internal.index.RangeIndex;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.LocalRegion.NonTXEntry;
 import org.apache.geode.internal.cache.RegionEntry;
 import org.apache.geode.internal.cache.persistence.query.CloseableIterator;
@@ -49,7 +50,7 @@ import org.apache.geode.test.junit.categories.IntegrationTest;
  */
 @Category(IntegrationTest.class)
 public class PdxStringQueryJUnitTest {
-  private Cache c;
+  private InternalCache c;
   private Region r;
   private String regName = "exampleRegion";
   QueryService qs;
@@ -62,7 +63,7 @@ public class PdxStringQueryJUnitTest {
 
   @Before
   public void setUp() {
-    this.c = new CacheFactory().set(MCAST_PORT, "0").create();
+    this.c = (InternalCache) new CacheFactory().set(MCAST_PORT, "0").create();
     r = c.createRegionFactory().create(regName);
     qs = c.getQueryService();
   }
@@ -137,7 +138,7 @@ public class PdxStringQueryJUnitTest {
   public void testQueriesWithRangeIndex() throws Exception {
     Index index = qs.createIndex("index2", "p.secId", "/exampleRegion p, p.positions.values");
     assertTrue(index instanceof RangeIndex);
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("secId", "IBM");
     pf.writeString("status", "active");
@@ -154,7 +155,7 @@ public class PdxStringQueryJUnitTest {
     positions.put("price", "120");
     r.put("YHOO", new TestObject(222, "YHOO", positions, "inactive"));
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 333);
     pf.writeString("secId", "GOOGL");
     pf.writeString("status", "active");
@@ -185,7 +186,7 @@ public class PdxStringQueryJUnitTest {
   public void testQueriesWithRangeIndexWithREUpdateInProgress() throws Exception {
     Index index = qs.createIndex("index2", "p.secId", "/exampleRegion p, p.positions.values");
     assertTrue(index instanceof RangeIndex);
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("secId", "IBM");
     pf.writeString("status", "active");
@@ -202,7 +203,7 @@ public class PdxStringQueryJUnitTest {
     positions.put("price", "120");
     r.put("YHOO", new TestObject(222, "YHOO", positions, "inactive"));
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 333);
     pf.writeString("secId", "GOOGL");
     pf.writeString("status", "active");
@@ -257,28 +258,28 @@ public class PdxStringQueryJUnitTest {
   }
 
   public void putPdxInstances() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("status", "active");
     pf.writeString("secId", "IBM");
     PdxInstance pi = pf.create();
     r.put("IBM", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 222);
     pf.writeString("status", "inactive");
     pf.writeString("secId", "YHOO");
     pi = pf.create();
     r.put("YHOO", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 333);
     pf.writeString("status", "active");
     pf.writeString("secId", "GOOGL");
     pi = pf.create();
     r.put("GOOGL", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("status", "inactive");
     pf.writeString("secId", "VMW");
@@ -287,28 +288,28 @@ public class PdxStringQueryJUnitTest {
   }
 
   public void putPdxInstancesWithREUpdateInProgress() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("status", "active");
     pf.writeString("secId", "IBM");
     PdxInstance pi = pf.create();
     r.put("IBM", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 222);
     pf.writeString("status", "inactive");
     pf.writeString("secId", "YHOO");
     pi = pf.create();
     r.put("YHOO", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 333);
     pf.writeString("status", "active");
     pf.writeString("secId", "GOOGL");
     pi = pf.create();
     r.put("GOOGL", pi);
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("status", "inactive");
     pf.writeString("secId", "VMW");
@@ -329,7 +330,7 @@ public class PdxStringQueryJUnitTest {
   }
 
   public void putHeterogeneousObjects() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("secId", "IBM");
     pf.writeString("status", "active");
@@ -339,7 +340,7 @@ public class PdxStringQueryJUnitTest {
     r.put("YHOO", new TestObject(222, "YHOO", "inactive"));
     r.put("GOOGL", new TestObject(333, "GOOGL", "active"));
 
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, this.c);
     pf.writeInt("ID", 111);
     pf.writeString("secId", "VMW");
     pf.writeString("status", "inactive");
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryDUnitTest.java
index 24a38a7..64e149e 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryDUnitTest.java
@@ -168,7 +168,7 @@ public class PdxLocalQueryDUnitTest extends PDXQueryTestBase {
 
         PositionPdx pos = new PositionPdx("IBM", 100);
         PdxInstanceFactory out = PdxInstanceFactoryImpl
-            .newCreator("org.apache.geode.cache.query.data.PositionPdx", false);
+            .newCreator("org.apache.geode.cache.query.data.PositionPdx", false, getCache());
         out.writeLong("avg20DaysVol", 0);
         out.writeString("bondRating", "");
         out.writeDouble("convRatio", 0);
@@ -368,7 +368,7 @@ public class PdxLocalQueryDUnitTest extends PDXQueryTestBase {
         ((GemFireCacheImpl) getCache()).setReadSerializedForTest(true);
 
         PdxInstanceFactory out = PdxInstanceFactoryImpl
-            .newCreator("org.apache.geode.cache.query.data.PositionPdx", false);
+            .newCreator("org.apache.geode.cache.query.data.PositionPdx", false, getCache());
         out.writeLong("avg20DaysVol", 0);
         out.writeString("bondRating", "");
         out.writeDouble("convRatio", 0);
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryVersionedClassDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryVersionedClassDUnitTest.java
index f6b8f31..93faa26 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryVersionedClassDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxLocalQueryVersionedClassDUnitTest.java
@@ -26,6 +26,7 @@ import org.apache.geode.cache.query.QueryService;
 import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.pdx.PdxInstance;
 import org.apache.geode.pdx.PdxInstanceFactory;
 import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
@@ -86,8 +87,8 @@ public class PdxLocalQueryVersionedClassDUnitTest extends PDXQueryTestBase {
             cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY).create(regionName);
 
         for (int i = 0; i < numberOfEntries; i++) {
-          PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+          PdxInstanceFactory pdxInstanceFactory = PdxInstanceFactoryImpl
+              .newCreator("PdxVersionedNewPortfolio", false, (InternalCache) cache);
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("status", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxQueryDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxQueryDUnitTest.java
index 26b0eab..5e5486c 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxQueryDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/dunit/PdxQueryDUnitTest.java
@@ -346,7 +346,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         try {
           for (int i = 0; i < numberOfEntries; i++) {
             PdxInstanceFactory pdxFactory =
-                PdxInstanceFactoryImpl.newCreator("PdxTestObject", false);
+                PdxInstanceFactoryImpl.newCreator("PdxTestObject", false, getCache());
             pdxFactory.writeInt("id", i);
             pdxFactory.writeString("ticker", "vmware");
             pdxFactory.writeString("idTickers", i + "vmware");
@@ -933,7 +933,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
             PortfolioPdxVersion portfolioPdxVersion =
                 new PortfolioPdxVersion(new Integer(i), new Integer(i));
             PdxInstanceFactory pdxFactory =
-                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false);
+                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false, getCache());
             PdxInstance pdxInstance = portfolioPdxVersion.createPdxInstance(pdxFactory);
             region.put("key-" + i, pdxInstance);
           }
@@ -1317,7 +1317,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
           // Load TestObject
           for (int i = 0; i < numberOfEntries; i++) {
             PdxInstanceFactory pdxInstanceFactory =
-                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false);
+                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false, getCache());
             PortfolioPdxVersion portfolioPdxVersion =
                 new PortfolioPdxVersion(new Integer(i), new Integer(i));
             PdxInstance pdxInstance = portfolioPdxVersion.createPdxInstance(pdxInstanceFactory);
@@ -1402,7 +1402,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
             PortfolioPdxVersion portfolioPdxVersion =
                 new PortfolioPdxVersion(new Integer(i), new Integer(i));
             PdxInstanceFactory pdxInstanceFactory =
-                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false);
+                PdxInstanceFactoryImpl.newCreator("PortfolioPdxVersion", false, getCache());
             PdxInstance pdxInstance = portfolioPdxVersion.createPdxInstance(pdxInstanceFactory);
             region.put("key-" + i, pdxInstance);
           }
@@ -2608,7 +2608,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 1 objects
         for (int i = 0; i < numberOfEntries; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false, getCache());
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("pdxStatus", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
@@ -2631,7 +2631,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 2 objects
         for (int i = numberOfEntries; i < numberOfEntries * 2; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false, getCache());
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("status", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
@@ -2645,9 +2645,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
     vm0.invoke(new SerializableCallable("Create client") {
       @Override
       public Object call() throws Exception {
-        TypeRegistration registration = GemFireCacheImpl
-            .getForPdx("PDX registry is unavailable because the Cache has been closed.")
-            .getPdxRegistry().getTypeRegistration();
+        TypeRegistration registration = getCache().getPdxRegistry().getTypeRegistration();
         Assert.assertTrue(registration instanceof PeerTypeRegistration);
         Map<String, Set<PdxType>> m = ((PeerTypeRegistration) registration).getClassToType();
         assertEquals(1, m.size());
@@ -2664,9 +2662,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
     vm1.invoke(new SerializableCallable("Create client") {
       @Override
       public Object call() throws Exception {
-        TypeRegistration registration = GemFireCacheImpl
-            .getForPdx("PDX registry is unavailable because the Cache has been closed.")
-            .getPdxRegistry().getTypeRegistration();
+        TypeRegistration registration = getCache().getPdxRegistry().getTypeRegistration();
         Assert.assertTrue(registration instanceof PeerTypeRegistration);
         Map<String, Set<PdxType>> m = ((PeerTypeRegistration) registration).getClassToType();
         assertEquals(1, m.size());
@@ -2888,7 +2884,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 1 objects
         for (int i = 0; i < numberOfEntries; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false, getCache());
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("pdxStatus", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
@@ -2911,7 +2907,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 2 objects
         for (int i = numberOfEntries; i < numberOfEntries * 2; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false, getCache());
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("status", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
@@ -3192,9 +3188,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
           }
         }
         // check if the types registered on server are fetched by the client
-        TypeRegistration registration = GemFireCacheImpl
-            .getForPdx("PDX registry is unavailable because the Cache has been closed.")
-            .getPdxRegistry().getTypeRegistration();
+        TypeRegistration registration = getCache().getPdxRegistry().getTypeRegistration();
         Assert.assertTrue(registration instanceof ClientTypeRegistration);
         Map<Integer, PdxType> m = ((ClientTypeRegistration) registration).types();
         assertEquals(2, m.size());
@@ -3251,7 +3245,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 1 objects
         for (int i = 0; i < numberOfEntries; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedNewPortfolio", false, getCache());
           pdxInstanceFactory.writeInt("id", i);
           pdxInstanceFactory.writeString("status", (i % 2 == 0 ? "active" : "inactive"));
           PdxInstance pdxInstance = pdxInstanceFactory.create();
@@ -3341,7 +3335,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 1 objects
         for (int i = 0; i < numberOfEntries; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false, getCache());
           pdxInstanceFactory.writeString("stringField", "" + i);
           pdxInstanceFactory.writeBoolean("booleanField", (i % 2 == 0 ? true : false));
           pdxInstanceFactory.writeChar("charField", ((char) i));
@@ -3354,7 +3348,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 2 objects
         for (int i = numberOfEntries; i < numberOfEntries * 2; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false, getCache());
           pdxInstanceFactory.writeInt("intField", i);
           pdxInstanceFactory.writeLong("longField", new Integer(i + 1).longValue());
           pdxInstanceFactory.writeFloat("floatField", new Integer(i + 2).floatValue());
@@ -3429,7 +3423,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 1 objects
         for (int i = numberOfEntries; i < numberOfEntries * 2; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false, getCache());
           pdxInstanceFactory.writeString("stringField", "" + i);
           pdxInstanceFactory.writeBoolean("booleanField", (i % 2 == 0 ? true : false));
           pdxInstanceFactory.writeChar("charField", ((char) i));
@@ -3442,7 +3436,7 @@ public class PdxQueryDUnitTest extends PDXQueryTestBase {
         // Load version 2 objects
         for (int i = 0; i < numberOfEntries; i++) {
           PdxInstanceFactory pdxInstanceFactory =
-              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false);
+              PdxInstanceFactoryImpl.newCreator("PdxVersionedFieldType", false, getCache());
           pdxInstanceFactory.writeInt("intField", i);
           pdxInstanceFactory.writeLong("longField", new Integer(i + 1).longValue());
           pdxInstanceFactory.writeFloat("floatField", new Integer(i + 2).floatValue());
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/snapshot/GFSnapshotJUnitPerformanceTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/snapshot/GFSnapshotJUnitPerformanceTest.java
index 36000b2..e5ff085 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/snapshot/GFSnapshotJUnitPerformanceTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/snapshot/GFSnapshotJUnitPerformanceTest.java
@@ -24,7 +24,9 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.snapshot.SnapshotIterator;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.snapshot.GFSnapshot.GFSnapshotExporter;
 import org.apache.geode.internal.cache.snapshot.GFSnapshot.GFSnapshotImporter;
 import org.apache.geode.internal.cache.snapshot.GFSnapshot.SnapshotWriter;
@@ -39,10 +41,12 @@ public class GFSnapshotJUnitPerformanceTest {
       "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
 
   private File f;
+  private InternalCache cache;
 
   @Before
   public void setUp() throws Exception {
     f = new File("test.snapshot");
+    cache = (InternalCache) new CacheFactory().create();
   }
 
   @After
@@ -50,6 +54,7 @@ public class GFSnapshotJUnitPerformanceTest {
     if (f.exists()) {
       f.delete();
     }
+    cache.close();
   }
 
   @Test
@@ -76,7 +81,7 @@ public class GFSnapshotJUnitPerformanceTest {
       int count = 100000;
 
       String s = val;
-      SnapshotWriter ss = GFSnapshot.create(f, "test");
+      SnapshotWriter ss = GFSnapshot.create(f, "test", cache);
       try {
         for (int i = 0; i < count; i++) {
           ss.snapshotEntry(new SnapshotRecord(i, s));
@@ -125,7 +130,7 @@ public class GFSnapshotJUnitPerformanceTest {
       File tmp = File.createTempFile("snapshot-copy", null);
       tmp.deleteOnExit();
 
-      final SnapshotWriter writer = GFSnapshot.create(tmp, "test");
+      final SnapshotWriter writer = GFSnapshot.create(tmp, "test", cache);
 
       long start = System.currentTimeMillis();
       SnapshotIterator<Integer, String> iter = GFSnapshot.read(f, null);
@@ -147,7 +152,7 @@ public class GFSnapshotJUnitPerformanceTest {
   }
 
   private void writeFile(int count, String s) throws IOException {
-    GFSnapshotExporter out = new GFSnapshotExporter(f, "test");
+    GFSnapshotExporter out = new GFSnapshotExporter(f, "test", cache);
 
     try {
       for (int i = 0; i < count; i++) {
diff --git a/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
index 058c024..58654b2 100644
--- a/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/QueryDataDUnitTest.java
@@ -64,6 +64,7 @@ import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.cache.query.data.Portfolio;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.BucketRegion;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.PartitionedRegionHelper;
 import org.apache.geode.internal.cache.partitioned.fixed.SingleHopQuarterPartitionResolver;
@@ -531,30 +532,32 @@ public class QueryDataDUnitTest implements Serializable {
   }
 
   private void putPdxInstances(final String regionName) throws CacheException {
-    Region region = managementTestRule.getCache().getRegion(regionName);
+    InternalCache cache = (InternalCache) managementTestRule.getCache();
+    Region region = cache.getRegion(regionName);
 
-    PdxInstanceFactory pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pdxInstanceFactory =
+        PdxInstanceFactoryImpl.newCreator("Portfolio", false, cache);
     pdxInstanceFactory.writeInt("ID", 111);
     pdxInstanceFactory.writeString("status", "active");
     pdxInstanceFactory.writeString("secId", "IBM");
     PdxInstance pdxInstance = pdxInstanceFactory.create();
     region.put("IBM", pdxInstance);
 
-    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false, cache);
     pdxInstanceFactory.writeInt("ID", 222);
     pdxInstanceFactory.writeString("status", "inactive");
     pdxInstanceFactory.writeString("secId", "YHOO");
     pdxInstance = pdxInstanceFactory.create();
     region.put("YHOO", pdxInstance);
 
-    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false, cache);
     pdxInstanceFactory.writeInt("ID", 333);
     pdxInstanceFactory.writeString("status", "active");
     pdxInstanceFactory.writeString("secId", "GOOGL");
     pdxInstance = pdxInstanceFactory.create();
     region.put("GOOGL", pdxInstance);
 
-    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false, cache);
     pdxInstanceFactory.writeInt("ID", 111);
     pdxInstanceFactory.writeString("status", "inactive");
     pdxInstanceFactory.writeString("secId", "VMW");
diff --git a/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
index a3f0667..bb74b9e 100644
--- a/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/QueryDataFunctionIntegrationTest.java
@@ -43,6 +43,7 @@ import org.apache.geode.cache.query.data.Position;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.management.internal.ManagementConstants;
 import org.apache.geode.management.internal.beans.QueryDataFunction;
 import org.apache.geode.management.internal.cli.json.TypedJson;
@@ -82,6 +83,7 @@ public class QueryDataFunctionIntegrationTest {
   private InternalDistributedSystem system;
   private Region<Object, Object> replicatedRegion;
   private DistributedMember member;
+  private Cache cache;
 
   @Before
   public void setUp() throws Exception {
@@ -264,7 +266,8 @@ public class QueryDataFunctionIntegrationTest {
 
   @Test
   public void testNestedPDXObject() throws Exception {
-    PdxInstanceFactory factory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory factory = PdxInstanceFactoryImpl.newCreator("Portfolio", false,
+        (InternalCache) replicatedRegion.getCache());
 
     factory.writeInt("ID", 111);
     factory.writeString("status", "active");
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
index e053fa1..22579bb 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/TypedJsonPdxIntegrationTest.java
@@ -26,8 +26,10 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.pdx.PdxInstance;
 import org.apache.geode.pdx.PdxInstanceFactory;
 import org.apache.geode.pdx.internal.PdxInstanceFactoryImpl;
@@ -54,8 +56,9 @@ public class TypedJsonPdxIntegrationTest {
     config.setProperty(MCAST_PORT, "0");
 
     system = DistributedSystem.connect(config);
-    new CacheFactory().create();
-    pdxInstanceFactory = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    Cache cache = new CacheFactory().create();
+    pdxInstanceFactory =
+        PdxInstanceFactoryImpl.newCreator("Portfolio", false, ((InternalCache) cache));
   }
 
   @After
diff --git a/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceFactoryJUnitTest.java b/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceFactoryJUnitTest.java
index df7002e..6cf80a0 100644
--- a/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceFactoryJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceFactoryJUnitTest.java
@@ -60,7 +60,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testBasics() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false, cache);
     c.writeInt("intField", 37);
     PdxInstance pi = c.create();
     WritablePdxInstance wpi = pi.createWriter();
@@ -71,7 +71,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(38, wpi.getField("intField"));
     checkPdxInstance(wpi);
     PdxType t1 = ((PdxInstanceImpl) pi).getPdxType();
-    PdxInstanceFactory c2 = PdxInstanceFactoryImpl.newCreator("basics", false);
+    PdxInstanceFactory c2 = PdxInstanceFactoryImpl.newCreator("basics", false, cache);
     c2.writeInt("intField", 46);
     PdxInstance pi2 = c2.create();
     PdxType t2 = ((PdxInstanceImpl) pi2).getPdxType();
@@ -121,7 +121,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testPortableWriteObject() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false, cache);
     c.writeObject("f1", Byte.valueOf((byte) 1), true);
     c.writeObject("f2", Boolean.TRUE, true);
     c.writeObject("f3", Character.CURRENCY_SYMBOL, true);
@@ -163,7 +163,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testPortableWriteObjectArray() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false, cache);
     c.writeObjectArray("f1", new Object[] {Byte.valueOf((byte) 1)}, true);
     c.writeObjectArray("f2", new Object[] {Boolean.TRUE}, true);
     c.writeObjectArray("f3", new Object[] {Character.CURRENCY_SYMBOL}, true);
@@ -205,7 +205,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testPortableWriteField() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("portable", false, cache);
     c.writeField("f1", Byte.valueOf((byte) 1), Object.class, true);
     c.writeField("f2", Boolean.TRUE, Object.class, true);
     c.writeField("f3", Character.CURRENCY_SYMBOL, Object.class, true);
@@ -286,7 +286,7 @@ public class PdxInstanceFactoryJUnitTest {
    */
   @Test
   public void testNestedDS() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedDS", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedDS", false, cache);
     c.writeObject("obj", new MyDS());
     PdxInstance pi = c.create();
     pi.getField("obj");
@@ -307,7 +307,7 @@ public class PdxInstanceFactoryJUnitTest {
   public void testNestedArray() throws IOException, ClassNotFoundException {
     PdxInstance pi;
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedArray", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedArray", false, cache);
       MyPdx[] array = new MyPdx[] {new MyPdx()};
       c.writeObjectArray("array", array);
       pi = c.create();
@@ -318,7 +318,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testSerializable() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false, cache);
     c.writeInt("intField", 37);
     PdxInstance pi = c.create();
     checkSerializable(pi);
@@ -338,7 +338,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testMark() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("markField", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("markField", false, cache);
     try {
       c.markIdentityField("intField1");
       throw new RuntimeException("expected exception");
@@ -382,7 +382,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testFieldTypes() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false, cache);
     c.writeByte("f", (byte) 37);
     WritablePdxInstance pi = c.create().createWriter();
     assertEquals((byte) 37, pi.getField("f"));
@@ -404,7 +404,7 @@ public class PdxInstanceFactoryJUnitTest {
       // expected
     }
 
-    c = PdxInstanceFactoryImpl.newCreator("booleanField", false);
+    c = PdxInstanceFactoryImpl.newCreator("booleanField", false, cache);
     c.writeBoolean("f", true);
     pi = c.create().createWriter();
     assertEquals(true, pi.getField("f"));
@@ -420,7 +420,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(false, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("charField", false);
+    c = PdxInstanceFactoryImpl.newCreator("charField", false, cache);
     c.writeChar("f", (char) 37);
     pi = c.create().createWriter();
     assertEquals((char) 37, pi.getField("f"));
@@ -436,7 +436,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((char) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("shortField", false);
+    c = PdxInstanceFactoryImpl.newCreator("shortField", false, cache);
     c.writeShort("f", (short) 37);
     pi = c.create().createWriter();
     assertEquals((short) 37, pi.getField("f"));
@@ -452,7 +452,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((short) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("intField", false);
+    c = PdxInstanceFactoryImpl.newCreator("intField", false, cache);
     c.writeInt("f", (int) 37);
     pi = c.create().createWriter();
     assertEquals((int) 37, pi.getField("f"));
@@ -468,7 +468,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((int) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("longField", false);
+    c = PdxInstanceFactoryImpl.newCreator("longField", false, cache);
     c.writeLong("f", (long) 37);
     pi = c.create().createWriter();
     assertEquals((long) 37, pi.getField("f"));
@@ -484,7 +484,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((long) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("floatField", false);
+    c = PdxInstanceFactoryImpl.newCreator("floatField", false, cache);
     c.writeFloat("f", (float) 37);
     pi = c.create().createWriter();
     assertEquals((float) 37, pi.getField("f"));
@@ -500,7 +500,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((float) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("doubleField", false);
+    c = PdxInstanceFactoryImpl.newCreator("doubleField", false, cache);
     c.writeDouble("f", (double) 37);
     pi = c.create().createWriter();
     assertEquals((double) 37, pi.getField("f"));
@@ -516,7 +516,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((double) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("dateField", false);
+    c = PdxInstanceFactoryImpl.newCreator("dateField", false, cache);
     Date d1 = new Date(37);
     c.writeDate("f", d1);
     pi = c.create().createWriter();
@@ -534,7 +534,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(d2, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("stringField", false);
+    c = PdxInstanceFactoryImpl.newCreator("stringField", false, cache);
     c.writeString("f", "37");
     pi = c.create().createWriter();
     assertEquals("37", pi.getField("f"));
@@ -550,7 +550,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals("38", pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("objectField", false);
+    c = PdxInstanceFactoryImpl.newCreator("objectField", false, cache);
     Date o1 = new Date(23);
     c.writeObject("f", o1);
     pi = c.create().createWriter();
@@ -562,7 +562,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(o2, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false, cache);
     c.writeBooleanArray("f", new boolean[] {true, false, true});
     pi = c.create().createWriter();
     assertEquals(true,
@@ -580,7 +580,7 @@ public class PdxInstanceFactoryJUnitTest {
         Arrays.equals(new boolean[] {false, true, false}, (boolean[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("charArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("charArrayField", false, cache);
     c.writeCharArray("f", new char[] {'1', '2', '3'});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new char[] {'1', '2', '3'}, (char[]) pi.getField("f")));
@@ -596,7 +596,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new char[] {'a', 'b', 'c'}, (char[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false, cache);
     c.writeByteArray("f", new byte[] {(byte) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new byte[] {(byte) 1}, (byte[]) pi.getField("f")));
@@ -612,7 +612,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new byte[] {(byte) 2}, (byte[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false, cache);
     c.writeShortArray("f", new short[] {(short) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new short[] {(short) 1}, (short[]) pi.getField("f")));
@@ -628,7 +628,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new short[] {(short) 2}, (short[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("intArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("intArrayField", false, cache);
     c.writeIntArray("f", new int[] {(int) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new int[] {(int) 1}, (int[]) pi.getField("f")));
@@ -644,7 +644,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new int[] {(int) 2}, (int[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("longArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("longArrayField", false, cache);
     c.writeLongArray("f", new long[] {(long) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new long[] {(long) 1}, (long[]) pi.getField("f")));
@@ -660,7 +660,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new long[] {(long) 2}, (long[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false, cache);
     c.writeFloatArray("f", new float[] {(float) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new float[] {(float) 1}, (float[]) pi.getField("f")));
@@ -676,7 +676,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new float[] {(float) 2}, (float[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false, cache);
     c.writeDoubleArray("f", new double[] {(double) 1});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new double[] {(double) 1}, (double[]) pi.getField("f")));
@@ -692,7 +692,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new double[] {(double) 2}, (double[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false, cache);
     c.writeStringArray("f", new String[] {"1", "2", "3"});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new String[] {"1", "2", "3"}, (String[]) pi.getField("f")));
@@ -708,7 +708,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new String[] {"a", "b", "c"}, (String[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false, cache);
     c.writeObjectArray("f", new Object[] {"1", "2", "3"});
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new Object[] {"1", "2", "3"}, (Object[]) pi.getField("f")));
@@ -724,7 +724,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new Object[] {"a", "b", "c"}, (Object[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("byteArrayOfBAField", false);
+    c = PdxInstanceFactoryImpl.newCreator("byteArrayOfBAField", false, cache);
     c.writeArrayOfByteArrays("f", new byte[][] {new byte[] {(byte) 1}});
     pi = c.create().createWriter();
     assertEquals(true,
@@ -745,7 +745,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testWriteField() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false, cache);
     c.writeField("f", (byte) 37, Byte.class);
     WritablePdxInstance pi = c.create().createWriter();
     assertEquals((byte) 37, pi.getField("f"));
@@ -753,7 +753,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((byte) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("booleanField", false);
+    c = PdxInstanceFactoryImpl.newCreator("booleanField", false, cache);
     c.writeField("f", true, Boolean.class);
     pi = c.create().createWriter();
     assertEquals(true, pi.getField("f"));
@@ -761,7 +761,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(false, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("charField", false);
+    c = PdxInstanceFactoryImpl.newCreator("charField", false, cache);
     c.writeField("f", (char) 37, Character.class);
     pi = c.create().createWriter();
     assertEquals((char) 37, pi.getField("f"));
@@ -769,7 +769,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((char) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("shortField", false);
+    c = PdxInstanceFactoryImpl.newCreator("shortField", false, cache);
     c.writeField("f", (short) 37, Short.class);
     pi = c.create().createWriter();
     assertEquals((short) 37, pi.getField("f"));
@@ -777,7 +777,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((short) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("intField", false);
+    c = PdxInstanceFactoryImpl.newCreator("intField", false, cache);
     c.writeField("f", (int) 37, Integer.class);
     pi = c.create().createWriter();
     assertEquals((int) 37, pi.getField("f"));
@@ -785,7 +785,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((int) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("longField", false);
+    c = PdxInstanceFactoryImpl.newCreator("longField", false, cache);
     c.writeField("f", (long) 37, Long.class);
     pi = c.create().createWriter();
     assertEquals((long) 37, pi.getField("f"));
@@ -793,7 +793,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((long) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("floatField", false);
+    c = PdxInstanceFactoryImpl.newCreator("floatField", false, cache);
     c.writeField("f", (float) 37, Float.class);
     pi = c.create().createWriter();
     assertEquals((float) 37, pi.getField("f"));
@@ -801,7 +801,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((float) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("doubleField", false);
+    c = PdxInstanceFactoryImpl.newCreator("doubleField", false, cache);
     c.writeField("f", (double) 37, Double.class);
     pi = c.create().createWriter();
     assertEquals((double) 37, pi.getField("f"));
@@ -809,7 +809,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((double) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("dateField", false);
+    c = PdxInstanceFactoryImpl.newCreator("dateField", false, cache);
     Date d1 = new Date(37);
     c.writeField("f", d1, Date.class);
     pi = c.create().createWriter();
@@ -819,7 +819,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(d2, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("stringField", false);
+    c = PdxInstanceFactoryImpl.newCreator("stringField", false, cache);
     c.writeField("f", "37", String.class);
     pi = c.create().createWriter();
     assertEquals("37", pi.getField("f"));
@@ -827,7 +827,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals("38", pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("objectField", false);
+    c = PdxInstanceFactoryImpl.newCreator("objectField", false, cache);
     Date o1 = new Date(23);
     c.writeField("f", o1, Object.class);
     pi = c.create().createWriter();
@@ -837,7 +837,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(o2, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false, cache);
     c.writeField("f", new boolean[] {true, false, true}, boolean[].class);
     pi = c.create().createWriter();
     assertEquals(true,
@@ -847,7 +847,7 @@ public class PdxInstanceFactoryJUnitTest {
         Arrays.equals(new boolean[] {false, true, false}, (boolean[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("charArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("charArrayField", false, cache);
     c.writeField("f", new char[] {'1', '2', '3'}, char[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new char[] {'1', '2', '3'}, (char[]) pi.getField("f")));
@@ -855,7 +855,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new char[] {'a', 'b', 'c'}, (char[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false, cache);
     c.writeField("f", new byte[] {(byte) 1}, byte[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new byte[] {(byte) 1}, (byte[]) pi.getField("f")));
@@ -863,7 +863,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new byte[] {(byte) 2}, (byte[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false, cache);
     c.writeField("f", new short[] {(short) 1}, short[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new short[] {(short) 1}, (short[]) pi.getField("f")));
@@ -871,7 +871,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new short[] {(short) 2}, (short[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("intArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("intArrayField", false, cache);
     c.writeField("f", new int[] {(int) 1}, int[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new int[] {(int) 1}, (int[]) pi.getField("f")));
@@ -879,7 +879,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new int[] {(int) 2}, (int[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("longArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("longArrayField", false, cache);
     c.writeField("f", new long[] {(long) 1}, long[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new long[] {(long) 1}, (long[]) pi.getField("f")));
@@ -887,7 +887,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new long[] {(long) 2}, (long[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false, cache);
     c.writeField("f", new float[] {(float) 1}, float[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new float[] {(float) 1}, (float[]) pi.getField("f")));
@@ -895,7 +895,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new float[] {(float) 2}, (float[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false, cache);
     c.writeField("f", new double[] {(double) 1}, double[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new double[] {(double) 1}, (double[]) pi.getField("f")));
@@ -903,7 +903,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new double[] {(double) 2}, (double[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false, cache);
     c.writeField("f", new String[] {"1", "2", "3"}, String[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new String[] {"1", "2", "3"}, (String[]) pi.getField("f")));
@@ -911,7 +911,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new String[] {"a", "b", "c"}, (String[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false);
+    c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false, cache);
     c.writeField("f", new Object[] {"1", "2", "3"}, Object[].class);
     pi = c.create().createWriter();
     assertEquals(true, Arrays.equals(new Object[] {"1", "2", "3"}, (Object[]) pi.getField("f")));
@@ -919,7 +919,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(true, Arrays.equals(new Object[] {"a", "b", "c"}, (Object[]) pi.getField("f")));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("byteArrayOfBAField", false);
+    c = PdxInstanceFactoryImpl.newCreator("byteArrayOfBAField", false, cache);
     c.writeField("f", new byte[][] {new byte[] {(byte) 1}}, byte[][].class);
     pi = c.create().createWriter();
     assertEquals(true,
@@ -932,7 +932,7 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testWritePrimitiveField() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false, cache);
     c.writeField("f", (byte) 37, byte.class);
     WritablePdxInstance pi = c.create().createWriter();
     assertEquals((byte) 37, pi.getField("f"));
@@ -940,7 +940,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((byte) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("booleanField", false);
+    c = PdxInstanceFactoryImpl.newCreator("booleanField", false, cache);
     c.writeField("f", true, boolean.class);
     pi = c.create().createWriter();
     assertEquals(true, pi.getField("f"));
@@ -948,7 +948,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals(false, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("charField", false);
+    c = PdxInstanceFactoryImpl.newCreator("charField", false, cache);
     c.writeField("f", (char) 37, char.class);
     pi = c.create().createWriter();
     assertEquals((char) 37, pi.getField("f"));
@@ -956,7 +956,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((char) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("shortField", false);
+    c = PdxInstanceFactoryImpl.newCreator("shortField", false, cache);
     c.writeField("f", (short) 37, short.class);
     pi = c.create().createWriter();
     assertEquals((short) 37, pi.getField("f"));
@@ -964,7 +964,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((short) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("intField", false);
+    c = PdxInstanceFactoryImpl.newCreator("intField", false, cache);
     c.writeField("f", (int) 37, int.class);
     pi = c.create().createWriter();
     assertEquals((int) 37, pi.getField("f"));
@@ -972,7 +972,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((int) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("longField", false);
+    c = PdxInstanceFactoryImpl.newCreator("longField", false, cache);
     c.writeField("f", (long) 37, long.class);
     pi = c.create().createWriter();
     assertEquals((long) 37, pi.getField("f"));
@@ -980,7 +980,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((long) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("floatField", false);
+    c = PdxInstanceFactoryImpl.newCreator("floatField", false, cache);
     c.writeField("f", (float) 37, float.class);
     pi = c.create().createWriter();
     assertEquals((float) 37, pi.getField("f"));
@@ -988,7 +988,7 @@ public class PdxInstanceFactoryJUnitTest {
     assertEquals((float) 38, pi.getField("f"));
     checkPdxInstance(pi);
 
-    c = PdxInstanceFactoryImpl.newCreator("doubleField", false);
+    c = PdxInstanceFactoryImpl.newCreator("doubleField", false, cache);
     c.writeField("f", (double) 37, double.class);
     pi = c.create().createWriter();
     assertEquals((double) 37, pi.getField("f"));
@@ -1000,7 +1000,7 @@ public class PdxInstanceFactoryJUnitTest {
   @Test
   public void testPdxInstancePut() throws IOException {
     Region r = cache.createRegionFactory(RegionShortcut.LOCAL).create("testPdxInstancePut");
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxInstancePut", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxInstancePut", false, cache);
     c.writeField("f", 37, int.class);
     PdxInstance pi = c.create();
     r.put("key", pi);
@@ -1010,10 +1010,11 @@ public class PdxInstanceFactoryJUnitTest {
 
   @Test
   public void testNestedPdxInstance() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceChild", false);
+    PdxInstanceFactory c =
+        PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceChild", false, cache);
     c.writeField("f", 37, int.class);
     PdxInstance child = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceParent", false);
+    c = PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceParent", false, cache);
     c.writeObject("f", child);
     WritablePdxInstance parent = c.create().createWriter();
     checkPdxInstance(child);
@@ -1042,154 +1043,154 @@ public class PdxInstanceFactoryJUnitTest {
   @Test
   public void testDefaults() throws IOException, ClassNotFoundException {
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false, cache);
       c.writeField("f", (byte) 0, byte.class);
       PdxInstance pi = c.create();
       assertEquals((byte) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("booleanField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("booleanField", false, cache);
       c.writeField("f", false, boolean.class);
       PdxInstance pi = c.create();
       assertEquals(false, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("charField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("charField", false, cache);
       c.writeField("f", (char) 0, char.class);
       PdxInstance pi = c.create();
       assertEquals((char) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("shortField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("shortField", false, cache);
       c.writeField("f", (short) 0, short.class);
       PdxInstance pi = c.create();
       assertEquals((short) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("intField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("intField", false, cache);
       c.writeField("f", (int) 0, int.class);
       PdxInstance pi = c.create();
       assertEquals((int) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("longField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("longField", false, cache);
       c.writeField("f", (long) 0, long.class);
       PdxInstance pi = c.create();
       assertEquals((long) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("floatField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("floatField", false, cache);
       c.writeField("f", (float) 0.0, float.class);
       PdxInstance pi = c.create();
       assertEquals((float) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("doubleField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("doubleField", false, cache);
       c.writeField("f", (double) 0.0, double.class);
       PdxInstance pi = c.create();
       assertEquals((double) 0, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("dateField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("dateField", false, cache);
       c.writeField("f", null, Date.class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("stringField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("stringField", false, cache);
       c.writeField("f", null, String.class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("objectField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("objectField", false, cache);
       c.writeField("f", null, Object.class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteArrayField", false, cache);
       c.writeField("f", null, byte[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false, cache);
       c.writeField("f", null, boolean[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("charArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("charArrayField", false, cache);
       c.writeField("f", null, char[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("shortArrayField", false, cache);
       c.writeField("f", null, short[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("intArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("intArrayField", false, cache);
       c.writeField("f", null, int[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("longArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("longArrayField", false, cache);
       c.writeField("f", null, long[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("floatArrayField", false, cache);
       c.writeField("f", null, float[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("doubleArrayField", false, cache);
       c.writeField("f", null, double[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("StringArrayField", false, cache);
       c.writeField("f", null, String[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("ObjectArrayField", false, cache);
       c.writeField("f", null, Object[].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
       checkDefaultBytes(pi, "f");
     }
     {
-      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteArrayArrayField", false);
+      PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteArrayArrayField", false, cache);
       c.writeField("f", null, byte[][].class);
       PdxInstance pi = c.create();
       assertEquals(null, pi.getField("f"));
diff --git a/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceJUnitTest.java b/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceJUnitTest.java
index 5e3f76a..ba303f2 100644
--- a/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/pdx/PdxInstanceJUnitTest.java
@@ -105,12 +105,12 @@ public class PdxInstanceJUnitTest {
 
   @Test
   public void testEquals() throws IOException, ClassNotFoundException {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testEquals", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testEquals", false, this.c);
     c.writeInt("intField", 37);
     PdxInstance pi = c.create();
     assertEquals(false, pi.equals(null));
     assertEquals(false, pi.equals(new Date(37)));
-    c = PdxInstanceFactoryImpl.newCreator("testEquals", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEquals", false, this.c);
     c.writeInt("intField", 37);
     c.writeInt("intField2", 38);
     PdxInstance pi2 = c.create();
@@ -119,10 +119,10 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date());
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", null);
     pi2 = c.create();
     pi.hashCode();
@@ -130,10 +130,10 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {1});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new byte[] {(byte) 1});
     pi2 = c.create();
     pi.hashCode();
@@ -141,10 +141,10 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {1});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {2});
     pi2 = c.create();
     pi.hashCode();
@@ -152,20 +152,20 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {1});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {1});
     pi2 = c.create();
     assertEquals(pi.hashCode(), pi2.hashCode());
     assertEquals(true, pi.equals(pi2));
     assertEquals(true, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new int[] {1});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date());
     pi2 = c.create();
     pi.hashCode();
@@ -173,10 +173,10 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date[] {new Date(1)});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date[] {new Date(2)});
     pi2 = c.create();
     pi.hashCode();
@@ -184,20 +184,20 @@ public class PdxInstanceJUnitTest {
     assertEquals(false, pi.equals(pi2));
     assertEquals(false, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date[] {new Date(1)});
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", new Date[] {new Date(1)});
     pi2 = c.create();
     assertEquals(pi.hashCode(), pi2.hashCode());
     assertEquals(true, pi.equals(pi2));
     assertEquals(true, pi2.equals(pi));
 
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", MyEnum.ONE);
     pi = c.create();
-    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false);
+    c = PdxInstanceFactoryImpl.newCreator("testEqualsOF", false, this.c);
     c.writeObject("objField", MyEnum.ONE);
     pi2 = c.create();
     assertEquals(pi.hashCode(), pi2.hashCode());
@@ -216,7 +216,7 @@ public class PdxInstanceJUnitTest {
   };
 
   public void testPdxComplexEnum() {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxEnum", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxEnum", false, this.c);
     c.writeObject("enumField", MyComplexEnum.ONE);
     PdxInstance pi = c.create();
     Object f = pi.getField("enumField");
@@ -233,7 +233,7 @@ public class PdxInstanceJUnitTest {
   }
 
   public void testPdxSimpleEnum() {
-    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxEnum", false);
+    PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxEnum", false, this.c);
     c.writeObject("enumField", MyEnum.ONE);
     PdxInstance pi = c.create();
     Object f = pi.getField("enumField");
diff --git a/geode-core/src/test/java/org/apache/geode/pdx/PdxStringJUnitTest.java b/geode-core/src/test/java/org/apache/geode/pdx/PdxStringJUnitTest.java
index 3790e60..0f86975 100644
--- a/geode-core/src/test/java/org/apache/geode/pdx/PdxStringJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/pdx/PdxStringJUnitTest.java
@@ -54,7 +54,7 @@ public class PdxStringJUnitTest {
 
   @Test
   public void testEquals() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", "abc");
     PdxInstanceImpl pi = (PdxInstanceImpl) pf.create();
     PdxString pdx1 = (PdxString) pi.getRawField("secId");
@@ -71,7 +71,7 @@ public class PdxStringJUnitTest {
 
   @Test
   public void testHashCodeEquals() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", "abc");
     PdxInstanceImpl pi = (PdxInstanceImpl) pf.create();
     PdxString pdx1 = (PdxString) pi.getRawField("secId");
@@ -89,7 +89,7 @@ public class PdxStringJUnitTest {
 
   @Test
   public void testCompareTo() throws Exception {
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", "abc");
     PdxInstanceImpl pi = (PdxInstanceImpl) pf.create();
     PdxString pdx1 = (PdxString) pi.getRawField("secId");
@@ -102,7 +102,7 @@ public class PdxStringJUnitTest {
 
     String str1 = new String("A" + "\u00e9" + "\u00f1");
     String str2 = new String("A" + "\u00ea" + "\u00f1");
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", str1);
     pi = (PdxInstanceImpl) pf.create();
     pdx1 = (PdxString) pi.getRawField("secId");
@@ -116,7 +116,7 @@ public class PdxStringJUnitTest {
     }
     str1 = sb.toString();
     str2 = "aaa";
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", str1);
     pi = (PdxInstanceImpl) pf.create();
     pdx1 = (PdxString) pi.getRawField("secId");
@@ -132,7 +132,7 @@ public class PdxStringJUnitTest {
     }
     str1 = sb.toString();
     str2 = "abc";
-    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", str1);
     pi = (PdxInstanceImpl) pf.create();
     pdx1 = new PdxString(str1);
@@ -149,7 +149,7 @@ public class PdxStringJUnitTest {
     PdxString pdx = new PdxString(s);
     assertEquals(s, pdx.toString());
 
-    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false);
+    PdxInstanceFactory pf = PdxInstanceFactoryImpl.newCreator("Portfolio", false, c);
     pf.writeString("secId", "abc");
     PdxInstanceImpl pi = (PdxInstanceImpl) pf.create();
     pdx = (PdxString) pi.getRawField("secId");
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/FlatFormatPdxSerializerJunitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/FlatFormatPdxSerializerJunitTest.java
index cd3ca51..5b92cf0 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/FlatFormatPdxSerializerJunitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/FlatFormatPdxSerializerJunitTest.java
@@ -38,8 +38,8 @@ public class FlatFormatPdxSerializerJunitTest {
   private PdxInstance createPdxInstance() {
     HashSet positions = new HashSet();
 
-    PdxInstanceFactoryImpl outForPosition1 =
-        (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl.newCreator("dummy.PositionPdx", false);
+    PdxInstanceFactoryImpl outForPosition1 = (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl
+        .newCreator("dummy.PositionPdx", false, localCacheRule.getCache());
     outForPosition1.writeString("country", "USA");
     outForPosition1.writeString("secId", "DELL");
     outForPosition1.writeDouble("sharesOutstanding", 3000);
@@ -49,8 +49,8 @@ public class FlatFormatPdxSerializerJunitTest {
     outForPosition1.markIdentityField("secId");
     PdxInstance position1_pdx = outForPosition1.create();
 
-    PdxInstanceFactoryImpl outForPositions1 =
-        (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl.newCreator("dummy.PositionPdx", false);
+    PdxInstanceFactoryImpl outForPositions1 = (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl
+        .newCreator("dummy.PositionPdx", false, localCacheRule.getCache());
     outForPositions1.writeString("country", "USA");
     outForPositions1.writeString("secId", "AAPL");
     outForPositions1.writeDouble("sharesOutstanding", 5000);
@@ -60,8 +60,8 @@ public class FlatFormatPdxSerializerJunitTest {
     outForPositions1.markIdentityField("secId");
     PdxInstance positions1_pdx = outForPositions1.create();
 
-    PdxInstanceFactoryImpl outForPositions2 =
-        (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl.newCreator("dummy.PositionPdx", false);
+    PdxInstanceFactoryImpl outForPositions2 = (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl
+        .newCreator("dummy.PositionPdx", false, localCacheRule.getCache());
     outForPositions2.writeString("country", "USA");
     outForPositions2.writeString("secId", "IBM");
     outForPositions2.writeDouble("sharesOutstanding", 4000);
@@ -74,8 +74,8 @@ public class FlatFormatPdxSerializerJunitTest {
     positions.add(positions1_pdx);
     positions.add(positions2_pdx);
 
-    PdxInstanceFactoryImpl out =
-        (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl.newCreator("dummy.PortfolioPdx", false);
+    PdxInstanceFactoryImpl out = (PdxInstanceFactoryImpl) PdxInstanceFactoryImpl
+        .newCreator("dummy.PortfolioPdx", false, localCacheRule.getCache());
     out.writeInt("ID", 3);
     out.writeObject("position1", position1_pdx);
     out.writeObject("positions", positions);

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].