in geode-core/src/integrationTest/java/org/apache/geode/pdx/PdxInstanceFactoryJUnitTest.java [412:772]
public void testFieldTypes() throws IOException, ClassNotFoundException {
PdxInstanceFactory c = PdxInstanceFactoryImpl.newCreator("byteField", false, cache);
c.writeByte("f", (byte) 37);
WritablePdxInstance pi = c.create().createWriter();
assertEquals((byte) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((byte) 0, pi.getField("f"));
pi.setField("f", (byte) 38);
assertEquals((byte) 38, pi.getField("f"));
checkPdxInstance(pi);
try {
pi.setField("bogusFieldName", null);
throw new RuntimeException("expected PdxFieldDoesNotExistException");
} catch (PdxFieldDoesNotExistException ex) {
// expected
}
c = PdxInstanceFactoryImpl.newCreator("booleanField", false, cache);
c.writeBoolean("f", true);
pi = c.create().createWriter();
assertEquals(true, pi.getField("f"));
try {
pi.setField("f", 3);
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(false, pi.getField("f"));
pi.setField("f", false);
assertEquals(false, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("charField", false, cache);
c.writeChar("f", (char) 37);
pi = c.create().createWriter();
assertEquals((char) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((char) 0, pi.getField("f"));
pi.setField("f", (char) 38);
assertEquals((char) 38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("shortField", false, cache);
c.writeShort("f", (short) 37);
pi = c.create().createWriter();
assertEquals((short) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((short) 0, pi.getField("f"));
pi.setField("f", (short) 38);
assertEquals((short) 38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("intField", false, cache);
c.writeInt("f", 37);
pi = c.create().createWriter();
assertEquals(37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(0, pi.getField("f"));
pi.setField("f", 38);
assertEquals(38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("longField", false, cache);
c.writeLong("f", 37);
pi = c.create().createWriter();
assertEquals((long) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((long) 0, pi.getField("f"));
pi.setField("f", (long) 38);
assertEquals((long) 38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("floatField", false, cache);
c.writeFloat("f", (float) 37);
pi = c.create().createWriter();
assertEquals((float) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((float) 0, pi.getField("f"));
pi.setField("f", (float) 38);
assertEquals((float) 38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("doubleField", false, cache);
c.writeDouble("f", 37);
pi = c.create().createWriter();
assertEquals((double) 37, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals((double) 0, pi.getField("f"));
pi.setField("f", (double) 38);
assertEquals((double) 38, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("dateField", false, cache);
Date d1 = new Date(37);
c.writeDate("f", d1);
pi = c.create().createWriter();
assertEquals(d1, pi.getField("f"));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
Date d2 = new Date(38);
pi.setField("f", d2);
assertEquals(d2, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("stringField", false, cache);
c.writeString("f", "37");
pi = c.create().createWriter();
assertEquals("37", pi.getField("f"));
try {
pi.setField("f", false);
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", "38");
assertEquals("38", pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("objectField", false, cache);
Date o1 = new Date(23);
c.writeObject("f", o1);
pi = c.create().createWriter();
assertEquals(o1, pi.getField("f"));
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
Date o2 = new Date(24);
pi.setField("f", o2);
assertEquals(o2, pi.getField("f"));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("booleanArrayField", false, cache);
c.writeBooleanArray("f", new boolean[] {true, false, true});
pi = c.create().createWriter();
assertEquals(true,
Arrays.equals(new boolean[] {true, false, true}, (boolean[]) pi.getField("f")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new boolean[] {false, true, false});
assertEquals(true,
Arrays.equals(new boolean[] {false, true, false}, (boolean[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new char[] {'a', 'b', 'c'});
assertEquals(true, Arrays.equals(new char[] {'a', 'b', 'c'}, (char[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new byte[] {(byte) 2});
assertEquals(true, Arrays.equals(new byte[] {(byte) 2}, (byte[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new short[] {(short) 2});
assertEquals(true, Arrays.equals(new short[] {(short) 2}, (short[]) pi.getField("f")));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("intArrayField", false, cache);
c.writeIntArray("f", new int[] {1});
pi = c.create().createWriter();
assertEquals(true, Arrays.equals(new int[] {1}, (int[]) pi.getField("f")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new int[] {2});
assertEquals(true, Arrays.equals(new int[] {2}, (int[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new long[] {(long) 2});
assertEquals(true, Arrays.equals(new long[] {(long) 2}, (long[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new float[] {(float) 2});
assertEquals(true, Arrays.equals(new float[] {(float) 2}, (float[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new double[] {(double) 2});
assertEquals(true, Arrays.equals(new double[] {(double) 2}, (double[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new String[] {"a", "b", "c"});
assertEquals(true, Arrays.equals(new String[] {"a", "b", "c"}, (String[]) pi.getField("f")));
checkPdxInstance(pi);
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")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new Object[] {"a", "b", "c"});
assertEquals(true, Arrays.equals(new Object[] {"a", "b", "c"}, (Object[]) pi.getField("f")));
checkPdxInstance(pi);
c = PdxInstanceFactoryImpl.newCreator("byteArrayOfBAField", false, cache);
c.writeArrayOfByteArrays("f", new byte[][] {new byte[] {(byte) 1}});
pi = c.create().createWriter();
assertEquals(true,
Arrays.deepEquals(new byte[][] {new byte[] {(byte) 1}}, (byte[][]) pi.getField("f")));
try {
pi.setField("f", "Bogus");
throw new RuntimeException("expected PdxFieldTypeMismatchException");
} catch (PdxFieldTypeMismatchException ex) {
// expected
}
pi.setField("f", null);
assertEquals(null, pi.getField("f"));
pi.setField("f", new byte[][] {new byte[] {(byte) 2}});
assertEquals(true,
Arrays.deepEquals(new byte[][] {new byte[] {(byte) 2}}, (byte[][]) pi.getField("f")));
checkPdxInstance(pi);
}