static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { final Class<?> clazz = value.getClass(); if (clazz.getSuperclass() != null && clazz.getSuperclass().isEnum()) { EnumIO<?> eio = strategy.getEnumIO(clazz.getSuperclass()); strategy.writeEnumIdTo(output, ID_ENUM, clazz.getSuperclass()); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); } else { EnumIO<?> eio = strategy.getEnumIO(clazz); strategy.writeEnumIdTo(output, ID_ENUM, clazz); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); } }
static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { final Class<?> clazz = value.getClass(); if (clazz.getSuperclass() != null && clazz.getSuperclass().isEnum()) { EnumIO<?> eio = strategy.getEnumIO(clazz.getSuperclass()); strategy.writeEnumIdTo(output, ID_ENUM, clazz.getSuperclass()); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); } else { EnumIO<?> eio = strategy.getEnumIO(clazz); strategy.writeEnumIdTo(output, ID_ENUM, clazz); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); } }
@SuppressWarnings("unchecked") static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { if (Collections.class == value.getClass().getDeclaringClass()) { writeNonPublicCollectionTo(output, value, currentSchema, strategy); return; } if (EnumSet.class.isAssignableFrom(value.getClass())) { strategy.writeEnumIdTo(output, ID_ENUM_SET, EnumIO.getElementTypeFromEnumSet(value)); // TODO optimize } else { strategy.writeCollectionIdTo(output, ID_COLLECTION, value.getClass()); } if (output instanceof StatefulOutput) { // update using the derived schema. ((StatefulOutput) output).updateLast(strategy.COLLECTION_SCHEMA, currentSchema); } strategy.COLLECTION_SCHEMA.writeTo(output, (Collection<Object>) value); }
@SuppressWarnings("unchecked") static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { if (Collections.class == value.getClass().getDeclaringClass()) { writeNonPublicCollectionTo(output, value, currentSchema, strategy); return; } if (EnumSet.class.isAssignableFrom(value.getClass())) { strategy.writeEnumIdTo(output, ID_ENUM_SET, EnumIO.getElementTypeFromEnumSet(value)); // TODO optimize } else { strategy.writeCollectionIdTo(output, ID_COLLECTION, value.getClass()); } if (output instanceof StatefulOutput) { // update using the derived schema. ((StatefulOutput) output).updateLast(strategy.COLLECTION_SCHEMA, currentSchema); } strategy.COLLECTION_SCHEMA.writeTo(output, (Collection<Object>) value); }
@SuppressWarnings("unchecked") static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { if (Collections.class == value.getClass().getDeclaringClass()) { writeNonPublicMapTo(output, value, currentSchema, strategy); return; } Class<Object> clazz = (Class<Object>) value.getClass(); if (EnumMap.class.isAssignableFrom(clazz)) { strategy.writeEnumIdTo(output, ID_ENUM_MAP, EnumIO.getKeyTypeFromEnumMap(value)); // TODO use enum schema } else { strategy.writeMapIdTo(output, ID_MAP, clazz); } if (output instanceof StatefulOutput) { // update using the derived schema. ((StatefulOutput) output).updateLast(strategy.MAP_SCHEMA, currentSchema); } strategy.MAP_SCHEMA.writeTo(output, (Map<Object, Object>) value); }
@SuppressWarnings("unchecked") static void writeObjectTo(Output output, Object value, Schema<?> currentSchema, IdStrategy strategy) throws IOException { if (Collections.class == value.getClass().getDeclaringClass()) { writeNonPublicMapTo(output, value, currentSchema, strategy); return; } Class<Object> clazz = (Class<Object>) value.getClass(); if (EnumMap.class.isAssignableFrom(clazz)) { strategy.writeEnumIdTo(output, ID_ENUM_MAP, EnumIO.getKeyTypeFromEnumMap(value)); // TODO use enum schema } else { strategy.writeMapIdTo(output, ID_MAP, clazz); } if (output instanceof StatefulOutput) { // update using the derived schema. ((StatefulOutput) output).updateLast(strategy.MAP_SCHEMA, currentSchema); } strategy.MAP_SCHEMA.writeTo(output, (Map<Object, Object>) value); }
strategy.writeEnumIdTo(output, ID_ENUM, clazz); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); return; strategy.writeEnumIdTo(output, ID_ENUM, clazz.getSuperclass()); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); return; strategy.writeEnumIdTo(output, ID_ARRAY_ENUM, componentType); strategy.writeEnumIdTo(output, ID_ENUM_MAP, EnumIO.getKeyTypeFromEnumMap(value)); strategy.writeEnumIdTo(output, ID_ENUM_SET, EnumIO.getElementTypeFromEnumSet(value));
strategy.writeEnumIdTo(output, ID_ENUM, clazz); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); return; strategy.writeEnumIdTo(output, ID_ENUM, clazz.getSuperclass()); eio.writeTo(output, ID_ENUM_VALUE, false, (Enum<?>) value); return; strategy.writeEnumIdTo(output, ID_ARRAY_ENUM, componentType); strategy.writeEnumIdTo(output, ID_ENUM_MAP, EnumIO.getKeyTypeFromEnumMap(value)); strategy.writeEnumIdTo(output, ID_ENUM_SET, EnumIO.getElementTypeFromEnumSet(value));
strategy.writeEnumIdTo(output, number, eio.enumClass);
strategy.writeEnumIdTo(output, number, eio.enumClass);