@Override public FieldType getType() { if (fd != null) { return fd.getType(); } return null; } }
@Override public FieldType getType() { if (fd != null) { return fd.getType(); } return null; } }
FieldType getCurrentFieldType() { return fd.getType(); }
boolean isCurrentFieldOfType(FieldType type) { return fd.getType() == type; }
FieldType getCurrentFieldType() { return fd.getType(); }
boolean isCurrentFieldOfType(FieldType type) { return fd.getType() == type; }
@Override public FieldType getFieldType(String fieldName) { final FieldDefinition fd = getField(fieldName); if (fd != null) { return fd.getType(); } throw new IllegalArgumentException("Unknown field: " + fieldName); }
private void validateTypeCompatibility(FieldDefinition fd, FieldType expectedType) { if (fd.getType() != expectedType) { throw createIncompatibleClassChangeError(fd, expectedType); } }
@Override public FieldType getFieldType(String fieldName) { final FieldDefinition fd = getField(fieldName); if (fd != null) { return fd.getType(); } throw new IllegalArgumentException("Unknown field: " + fieldName); }
private void validateTypeCompatibility(FieldDefinition fd, FieldType expectedType) { if (fd.getType() != expectedType) { throw createIncompatibleClassChangeError(fd, expectedType); } }
private IncompatibleClassChangeError createIncompatibleClassChangeError(FieldDefinition fd, FieldType expectedType) { return new IncompatibleClassChangeError("Incompatible to read " + expectedType + " from " + fd.getType() + " while reading field: " + fd.getName() + " on " + cd); } }
private IncompatibleClassChangeError createIncompatibleClassChangeError(FieldDefinition fd, FieldType expectedType) { return new IncompatibleClassChangeError("Incompatible to read " + expectedType + " from " + fd.getType() + " while reading field: " + fd.getName() + " on " + cd); } }
/** * @param cd given classDefinition to validate against * @param fd given fieldDefinition to validate against * @param fullPath full path - just for output * @throws IllegalArgumentException if the current field definition is not of an array type */ static void validateArrayType(ClassDefinition cd, FieldDefinition fd, String fullPath) { if (!fd.getType().isArrayType()) { throw new IllegalArgumentException("Wrong use of array operator: '" + fullPath + "' for ClassDefinition {id: " + cd.getClassId() + ", version: " + cd.getVersion() + "}"); } }
/** * @param cd given classDefinition to validate against * @param fd given fieldDefinition to validate against * @param fullPath full path - just for output * @throws IllegalArgumentException if the current field definition is not of an array type */ static void validateArrayType(ClassDefinition cd, FieldDefinition fd, String fullPath) { if (!fd.getType().isArrayType()) { throw new IllegalArgumentException("Wrong use of array operator: '" + fullPath + "' for ClassDefinition {id: " + cd.getClassId() + ", version: " + cd.getVersion() + "}"); } }
protected void registerClassDefinition(ClassDefinition cd, Map<Integer, ClassDefinition> classDefMap, boolean checkClassDefErrors) { final Set<String> fieldNames = cd.getFieldNames(); for (String fieldName : fieldNames) { FieldDefinition fd = cd.getField(fieldName); if (fd.getType() == FieldType.PORTABLE || fd.getType() == FieldType.PORTABLE_ARRAY) { int classId = fd.getClassId(); ClassDefinition nestedCd = classDefMap.get(classId); if (nestedCd != null) { registerClassDefinition(nestedCd, classDefMap, checkClassDefErrors); portableContext.registerClassDefinition(nestedCd); } else if (checkClassDefErrors) { throw new HazelcastSerializationException( "Could not find registered ClassDefinition for class-id: " + classId); } } } portableContext.registerClassDefinition(cd); }
@Override public short readShort(String fieldName) throws IOException { FieldDefinition fd = cd.getField(fieldName); if (fd == null) { return 0; } switch (fd.getType()) { case SHORT: return super.readShort(fieldName); case BYTE: return super.readByte(fieldName); default: throw createIncompatibleClassChangeError(fd, SHORT); } }
@Override public short readShort(String fieldName) throws IOException { FieldDefinition fd = cd.getField(fieldName); if (fd == null) { return 0; } switch (fd.getType()) { case SHORT: return super.readShort(fieldName); case BYTE: return super.readByte(fieldName); default: throw createIncompatibleClassChangeError(fd, SHORT); } }
@Override public int readInt(String fieldName) throws IOException { FieldDefinition fd = cd.getField(fieldName); if (fd == null) { return 0; } switch (fd.getType()) { case INT: return super.readInt(fieldName); case BYTE: return super.readByte(fieldName); case CHAR: return super.readChar(fieldName); case SHORT: return super.readShort(fieldName); default: throw createIncompatibleClassChangeError(fd, INT); } }
@Override public int readInt(String fieldName) throws IOException { FieldDefinition fd = cd.getField(fieldName); if (fd == null) { return 0; } switch (fd.getType()) { case INT: return super.readInt(fieldName); case BYTE: return super.readByte(fieldName); case CHAR: return super.readChar(fieldName); case SHORT: return super.readShort(fieldName); default: throw createIncompatibleClassChangeError(fd, INT); } }
@Override public long readLong(String fieldName) throws IOException { FieldDefinition fd = cd.getField(fieldName); if (fd == null) { return 0L; } switch (fd.getType()) { case LONG: return super.readLong(fieldName); case INT: return super.readInt(fieldName); case BYTE: return super.readByte(fieldName); case CHAR: return super.readChar(fieldName); case SHORT: return super.readShort(fieldName); default: throw createIncompatibleClassChangeError(fd, LONG); } }