public void testNestedPdxInstance() throws IOException, ClassNotFoundException { PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceChild", false); c.writeField("f", 37, int.class); PdxInstance child = c.create(); c = PdxInstanceFactoryImpl.newCreator("testNestedPdxInstanceParent", false); c.writeObject("f", child); WritablePdxInstance parent = c.create().createWriter(); checkPdxInstance(child); checkPdxInstance(parent); WritablePdxInstance child2 = ((PdxInstance)parent.getField("f")).createWriter(); assertEquals(child, child2); assertTrue(child != child2); child2.setField("f", 38); assertFalse(child.equals(child2)); assertEquals(child, parent.getField("f")); parent.setField("f", child2); assertFalse(child.equals(parent.getField("f"))); assertEquals(child2, parent.getField("f")); PdxInstance parentCopy = checkPdxInstance(parent); assertEquals(child2, parentCopy.getField("f")); }
public void testSerializable() throws IOException, ClassNotFoundException { PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false); c.writeInt("intField", 37); PdxInstance pi = c.create(); checkSerializable(pi); }
try { c.markIdentityField("intField1"); fail("expected exception"); } catch (PdxFieldDoesNotExistException expected) { c.markIdentityField("intField1"); WritablePdxInstance pi = c.create().createWriter(); assertEquals(true, pi.hasField("intField1")); assertEquals(true, pi.hasField("intField2")); assertEquals(true, pi.hasField("intField3")); assertEquals(true, pi.isIdentityField("intField1")); assertEquals(false, pi.isIdentityField("intField2")); assertEquals(false, pi.isIdentityField("intField3")); assertEquals(Arrays.asList(new String[]{"intField1", "intField2", "intField3"}), pi.getFieldNames()); assertEquals(1, pi.getField("intField1")); assertEquals(2, pi.getField("intField2")); assertEquals(3, pi.getField("intField3")); assertEquals(null, pi.getField("bogusField")); pi.setField("intField1", 11); pi.setField("intField2", 22); assertEquals(3, pi.getField("intField3")); assertEquals(11, pi.getField("intField1")); assertEquals(22, pi.getField("intField2")); checkPdxInstance(pi);
private PdxInstance checkPdxInstance(PdxInstance pi) throws IOException, ClassNotFoundException { // serialize the pi and make sure it can be deserialized PdxInstance pi2 = (PdxInstance) serializeAndDeserialize(pi); assertEquals(pi, pi2); assertEquals(pi.hashCode(), pi2.hashCode()); assertEquals(pi.getFieldNames(), pi2.getFieldNames()); return pi2; }
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(false, e0.hasField("bogus")); assertEquals(null, e0.getField("bogus")); assertEquals(Coin.class.getName(), e0.getClassName()); assertEquals(Coin.HEADS.name(), e0.getField("name")); assertEquals(Coin.HEADS.ordinal(), e0.getField("ordinal")); assertEquals(Coin.HEADS, e0.getObject()); try { this.cache.createPdxEnum(Coin.class.getName(), Coin.EDGE.name(), 79); fail("expected PdxSerializationException"); } catch (PdxSerializationException expected) { Comparable c1 = (Comparable)e1; Comparable c2 = (Comparable)e2; assertEquals(true, c0.compareTo(c1) < 0); assertEquals(true, c1.compareTo(c0) > 0); assertEquals(true, c1.compareTo(c2) < 0); assertEquals(true, c2.compareTo(c1) > 0); assertEquals(true, c1.compareTo(c1) == 0); assertEquals(false, e1 instanceof PdxInstanceEnum); PdxInstanceEnum pie1 = new PdxInstanceEnum(Coin.TAILS); assertEquals(e1, pie1); assertEquals(e1.hashCode(), pie1.hashCode()); assertEquals(0, c1.compareTo(pie1)); assertEquals(true, c0.compareTo(pie1) < 0);
public void testBasics() throws IOException, ClassNotFoundException { PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("basics", false); c.writeInt("intField", 37); PdxInstance pi = c.create(); WritablePdxInstance wpi = pi.createWriter(); assertEquals(true, wpi.hasField("intField")); assertEquals(37, wpi.getField("intField")); assertEquals(false, wpi.isIdentityField("intField")); wpi.setField("intField", 38); assertEquals(38, wpi.getField("intField")); checkPdxInstance(wpi); PdxType t1 = ((PdxInstanceImpl)pi).getPdxType(); PdxInstanceFactory c2 = PdxInstanceFactoryImpl.newCreator("basics", false); c2.writeInt("intField", 46); PdxInstance pi2 = c2.create(); PdxType t2 = ((PdxInstanceImpl)pi2).getPdxType(); assertEquals(t1, t2); assertEquals(t1.getTypeId(), t2.getTypeId()); } public void testEnums() throws IOException, ClassNotFoundException {
c.writeField("f", (byte)0, byte.class); PdxInstance pi = c.create(); assertEquals((byte)0, pi.getField("f")); checkDefaultBytes(pi, "f"); c.writeField("f", false, boolean.class); PdxInstance pi = c.create(); assertEquals(false, pi.getField("f")); checkDefaultBytes(pi, "f"); c.writeField("f", (char)0, char.class); PdxInstance pi = c.create(); assertEquals((char)0, pi.getField("f")); checkDefaultBytes(pi, "f"); c.writeField("f", (short)0, short.class); PdxInstance pi = c.create(); assertEquals((short)0, pi.getField("f")); checkDefaultBytes(pi, "f"); c.writeField("f", (int)0, int.class); PdxInstance pi = c.create(); assertEquals((int)0, pi.getField("f")); checkDefaultBytes(pi, "f"); c.writeField("f", (long)0, long.class); PdxInstance pi = c.create(); assertEquals((long)0, pi.getField("f")); checkDefaultBytes(pi, "f");
private void checkSerializable(Serializable before) throws IOException, ClassNotFoundException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(before); oos.close(); byte [] bytes = baos.toByteArray(); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); Object after = ois.readObject(); assertEquals(before, after); }
try { c.writeField("f29", new File("file"), Object.class, true); fail("expected NonPortableClassException"); } catch (NonPortableClassException expected) {
/** * Have a PDX with an Object[] whose element is a DataSerializable which * has a Long[]. Its a bug if the array nested in the DS becomes an Object[] * during deserialization. * Demonstrates bug 43838. */ public void testNestedDS() throws IOException, ClassNotFoundException { PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedDS", false); c.writeObject("obj", new MyDS()); PdxInstance pi = c.create(); pi.getField("obj"); checkPdxInstance(pi); }
c.writeField("f", (byte)37, byte.class); WritablePdxInstance pi = c.create().createWriter(); assertEquals((byte)37, pi.getField("f")); pi.setField("f", (byte)38); assertEquals((byte)38, pi.getField("f")); checkPdxInstance(pi); assertEquals(true, pi.getField("f")); pi.setField("f", false); assertEquals(false, pi.getField("f")); checkPdxInstance(pi); assertEquals((char)37, pi.getField("f")); pi.setField("f", (char)38); assertEquals((char)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((short)37, pi.getField("f")); pi.setField("f", (short)38); assertEquals((short)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((int)37, pi.getField("f")); pi.setField("f", (int)38); assertEquals((int)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((long)37, pi.getField("f")); pi.setField("f", (long)38);
private void checkDefaultBytes(PdxInstance pi, String fieldName) { PdxInstanceImpl impl = (PdxInstanceImpl)pi; PdxType t = impl.getPdxType(); PdxField f = t.getPdxField(fieldName); assertEquals(f.getFieldType().getDefaultBytes(), impl.getRaw(f.getFieldIndex())); }
try { c.writeObject("f29", new File("file"), true); fail("expected NonPortableClassException"); } catch (NonPortableClassException expected) {
/** * Have a pdx with an array of pdx. * Make sure the array class does not get loaded during * getField, hashCode, and equals. */ public void testNestedArray() throws IOException, ClassNotFoundException { PdxInstance pi; { PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("nestedArray", false); MyPdx[] array = new MyPdx[]{new MyPdx()}; c.writeObjectArray("array", array); pi = c.create(); } pi.getField("array"); checkPdxInstance(pi); }
c.writeByte("f", (byte)37); WritablePdxInstance pi = c.create().createWriter(); assertEquals((byte)37, pi.getField("f")); try { pi.setField("f", "Bogus"); fail("expected PdxFieldTypeMismatchException"); } catch (PdxFieldTypeMismatchException ex) { assertEquals((byte)0, pi.getField("f")); pi.setField("f", (byte)38); assertEquals((byte)38, pi.getField("f")); checkPdxInstance(pi); try { pi.setField("bogusFieldName", null); fail("expected PdxFieldDoesNotExistException"); } catch (PdxFieldDoesNotExistException ex) { c.writeBoolean("f", true); pi = c.create().createWriter(); assertEquals(true, pi.getField("f")); try { pi.setField("f", 3); fail("expected PdxFieldTypeMismatchException"); } catch (PdxFieldTypeMismatchException ex) { assertEquals(false, pi.getField("f")); pi.setField("f", false); assertEquals(false, pi.getField("f")); checkPdxInstance(pi);
c.writeField("f", (byte)37, Byte.class); WritablePdxInstance pi = c.create().createWriter(); assertEquals((byte)37, pi.getField("f")); pi.setField("f", (byte)38); assertEquals((byte)38, pi.getField("f")); checkPdxInstance(pi); assertEquals(true, pi.getField("f")); pi.setField("f", false); assertEquals(false, pi.getField("f")); checkPdxInstance(pi); assertEquals((char)37, pi.getField("f")); pi.setField("f", (char)38); assertEquals((char)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((short)37, pi.getField("f")); pi.setField("f", (short)38); assertEquals((short)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((int)37, pi.getField("f")); pi.setField("f", (int)38); assertEquals((int)38, pi.getField("f")); checkPdxInstance(pi); assertEquals((long)37, pi.getField("f")); pi.setField("f", (long)38);
public void testPdxInstancePut() throws IOException { Region r = cache.createRegionFactory(RegionShortcut.LOCAL).create("testPdxInstancePut"); PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("testPdxInstancePut", false); c.writeField("f", 37, int.class); PdxInstance pi = c.create(); r.put("key", pi); PdxInstance pi2 = (PdxInstance)r.get("key"); assertEquals(pi, pi2); }
try { c.writeObjectArray("f29", new Object[]{new File("file")}, true); fail("expected NonPortableClassException"); } catch (NonPortableClassException expected) {