diff --git a/apache-geode-extensions/src/main/java/org/springframework/geode/pdx/PdxInstanceWrapper.java b/apache-geode-extensions/src/main/java/org/springframework/geode/pdx/PdxInstanceWrapper.java index 57935f34..1235ad33 100644 --- a/apache-geode-extensions/src/main/java/org/springframework/geode/pdx/PdxInstanceWrapper.java +++ b/apache-geode-extensions/src/main/java/org/springframework/geode/pdx/PdxInstanceWrapper.java @@ -77,7 +77,10 @@ public class PdxInstanceWrapper implements PdxInstance, Sendable { * @see #from(PdxInstance) */ public static Object from(Object target) { - return target instanceof PdxInstance ? from((PdxInstance) target) : target; + + return target instanceof PdxInstance + ? from((PdxInstance) target) + : target; } /** @@ -91,7 +94,10 @@ public class PdxInstanceWrapper implements PdxInstance, Sendable { * @see #PdxInstanceWrapper(PdxInstance) */ public static PdxInstanceWrapper from(PdxInstance pdxInstance) { - return new PdxInstanceWrapper(pdxInstance); + + return pdxInstance instanceof PdxInstanceWrapper + ? (PdxInstanceWrapper) pdxInstance + : new PdxInstanceWrapper(pdxInstance); } /** diff --git a/apache-geode-extensions/src/test/java/org/springframework/geode/pdx/PdxInstanceWrapperUnitTests.java b/apache-geode-extensions/src/test/java/org/springframework/geode/pdx/PdxInstanceWrapperUnitTests.java index 36b4a161..444655ce 100644 --- a/apache-geode-extensions/src/test/java/org/springframework/geode/pdx/PdxInstanceWrapperUnitTests.java +++ b/apache-geode-extensions/src/test/java/org/springframework/geode/pdx/PdxInstanceWrapperUnitTests.java @@ -117,6 +117,16 @@ public class PdxInstanceWrapperUnitTests { verifyNoInteractions(mockPdxInstance); } + @Test + public void fromPdxInstanceWrapperIsSameWrapper() { + + PdxInstanceWrapper mockWrapper = mock(PdxInstanceWrapper.class); + + assertThat(PdxInstanceWrapper.from(mockWrapper)).isSameAs(mockWrapper); + + verifyNoInteractions(mockWrapper); + } + @Test public void unwrapPdxInstanceWrapperReturnsPdxInstanceDelegate() {