public static void doEnumValidation(PdxInstance pdxInst) throws TestException { boolean doEnumValidation = PdxPrms.getDoEnumValidation(); if (!doEnumValidation) { return; // we are running in a 661 mode in a 662 jvm; 661 does not have pdx enums // or are converting from 661 to 662 (this might be a 662 jvm, but it could // do a get from a 661 jvm, then the returned object will not be in 662 form // for enums } if (pdxInst.isEnum()) { throw new TestException("isEnum() on " + pdxInst + " returned true"); } String className = pdxInst.getClassName(); if (!className.equals("util.VersionedValueHolder") && !className.equals("util.PdxVersionedValueHolder")) { throw new TestException("getClassName() on " + pdxInst + " returned " + className); } Object enumObj = pdxInst.getField("aDay"); if (enumObj != null) { if (!(enumObj instanceof PdxInstance)) { throw new TestException("Expected enum field aDay to be a PdxInstance but it is " + TestHelper.toString(enumObj)); } PdxInstance enumPdxInst = (PdxInstance)enumObj; className = enumPdxInst.getClassName(); if (!className.equals("util.VersionedValueHolder$Day")) { throw new TestException("getClassName() on " + enumPdxInst + " returned " + className); } } }
public void testIsIdentityField() throws IOException, ClassNotFoundException { setupSerializer(new ExplicitIdentityAutoSerializer(false, "com.gemstone.gemfire.pdx.DomainObjectPdxAuto"), true); DomainObject objOut = new DomainObjectPdxAuto(4); HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT); DataSerializer.writeObject(objOut, out); DataSerializer.writeObject(objOut, out); DataInputStream dis = new DataInputStream( new ByteArrayInputStream(out.toByteArray())); PdxInstance pi = (PdxInstance)DataSerializer.readObject(dis); PdxInstance pi2 = (PdxInstance)DataSerializer.readObject(dis); assertEquals(true, pi.isIdentityField("long_0")); assertEquals(false, pi.isIdentityField("string_0")); assertEquals(false, pi.isEnum()); assertEquals(objOut.getClass().getName(), pi.getClassName()); assertEquals(objOut, pi.getObject()); assertEquals(objOut, pi2.getObject()); } public static class ExplicitIncludedAutoSerializer extends ReflectionBasedAutoSerializer {
public void testEnums() throws IOException, ClassNotFoundException { PdxInstance e0 = this.cache.createPdxEnum(Coin.class.getName(), Coin.HEADS.name(), Coin.HEADS.ordinal()); assertEquals(true, e0.isEnum()); assertEquals(true, e0.hasField("name")); assertEquals(true, e0.hasField("ordinal"));
assertEquals(true, epi.isEnum()); assertEquals(true, epi.hasField("name")); assertEquals(true, epi.hasField("ordinal"));