final BiConsumer<Object, Object> writer; if (isOptional(initialWriter)) { type = ParameterizedType.class.cast(initialWriter.getType()).getActualTypeArguments()[0]; writer = (i, val) -> finalWriter.write(i, Optional.ofNullable(val)); } else if (OptionalInt.class == initialWriter.getType()) { type = int.class; writer = (i, val) -> finalWriter.write(i, OptionalInt.of(Number.class.cast(val).intValue())); } else if (OptionalLong.class == initialWriter.getType()) { type = long.class; writer = (i, val) -> finalWriter.write(i, OptionalLong.of(Number.class.cast(val).longValue())); } else if (OptionalDouble.class == initialWriter.getType()) { type = double.class; writer = (i, val) -> finalWriter.write(i, OptionalDouble.of(Number.class.cast(val).doubleValue())); } else { type = initialWriter.getType(); writer = finalWriter::write; final JsonbProperty property = initialWriter.getAnnotation(JsonbProperty.class); final JsonbNillable nillable = initialWriter.getClassOrPackageAnnotation(JsonbNillable.class); final boolean isNillable = nillable != null || (property != null && property.nillable()); final String key = property == null || property.value().isEmpty() ? naming.translateName(entry.getKey()) : property.value();
private void addSetterIfNeeded(final Map<String, Setter> setters, final String key, final AccessMode.Writer value, final boolean copyDate, final Class<?> rootClass) { final JohnzonIgnore writeIgnore = value.getAnnotation(JohnzonIgnore.class); if (writeIgnore == null || writeIgnore.minVersion() >= 0) { if (key.equals("metaClass")) { return; } final Type param = value.getType(); final Class<?> returnType = Class.class.isInstance(param) ? Class.class.cast(param) : null; final Setter setter = new Setter( value, isPrimitive(param), returnType != null && returnType.isArray(), resolve(param, rootClass), findConverter(copyDate, value), value.findObjectConverterReader(), writeIgnore != null ? writeIgnore.minVersion() : -1); setters.put(key, setter); } }
final Mappings.Setter value = setter.getValue(); if (JsonValue.class == value.paramType) { setter.getValue().writer.write(t, jsonValue); continue; setterMethod.write(t, null); } else { Object existingInstance = null; new JsonPointerTracker(jsonPointer, setter.getKey()), inType); if (convertedValue != null) { setterMethod.write(t, convertedValue);
final Mappings.Setter value = setter.getValue(); if (JsonValue.class == value.paramType) { setter.getValue().writer.write(t, jsonValue); continue; setterMethod.write(t, null); } else { Object existingInstance = null; new JsonPointerTracker(jsonPointer, setter.getKey()), inType); if (convertedValue != null) { setterMethod.write(t, convertedValue);
final BiConsumer<Object, Object> writer; if (isOptional(initialWriter)) { type = ParameterizedType.class.cast(initialWriter.getType()).getActualTypeArguments()[0]; writer = (i, val) -> finalWriter.write(i, Optional.ofNullable(val)); } else if (OptionalInt.class == initialWriter.getType()) { type = int.class; writer = (i, val) -> finalWriter.write(i, OptionalInt.of(Number.class.cast(val).intValue())); } else if (OptionalLong.class == initialWriter.getType()) { type = long.class; writer = (i, val) -> finalWriter.write(i, OptionalLong.of(Number.class.cast(val).longValue())); } else if (OptionalDouble.class == initialWriter.getType()) { type = double.class; writer = (i, val) -> finalWriter.write(i, OptionalDouble.of(Number.class.cast(val).doubleValue())); } else { type = initialWriter.getType(); writer = finalWriter::write; final JsonbProperty property = initialWriter.getAnnotation(JsonbProperty.class); final JsonbNillable nillable = initialWriter.getClassOrPackageAnnotation(JsonbNillable.class); final boolean isNillable = nillable != null || (property != null && property.nillable()); final String key = property == null || property.value().isEmpty() ? naming.translateName(entry.getKey()) : property.value();
final Method m = getMethod("set" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz, toType(entry.getValue().getType())); boolean skip = false; if (m != null) { for (final Writer w : metodWriters.values()) { if (MethodAccessMode.MethodDecoratedType.class.cast(w).getMethod().equals(m)) { if (w.getAnnotation(JohnzonProperty.class) != null) { skip = true; for (final Writer w : fieldWriters.values()) { if (FieldAccessMode.FieldDecoratedType.class.cast(w).getField().equals(f)) { if (w.getAnnotation(JohnzonProperty.class) != null) { skip = true;
final Method m = getMethod("set" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz, toType(entry.getValue().getType())); boolean skip = false; if (m != null) { for (final Writer w : metodWriters.values()) { if (MethodAccessMode.MethodDecoratedType.class.cast(w).getMethod().equals(m)) { if (w.getAnnotation(JohnzonProperty.class) != null) { skip = true; for (final Writer w : fieldWriters.values()) { if (FieldAccessMode.FieldDecoratedType.class.cast(w).getField().equals(f)) { if (w.getAnnotation(JohnzonProperty.class) != null) { skip = true;
if (matches(writer.getType(), adapter)) { theConverter = adapter; } else {
if (matches(writer.getType(), adapter)) { theConverter = adapter; } else {
@Override public void write(final Object instance, final Object value) { Map<String, Object> nested = null; for (final String path : paths) { nested = Map.class.cast(nested == null ? value : nested.get(path)); if (nested == null) { return; } } for (final Map.Entry<String, Setter> setter : writers.entrySet()) { final Setter setterValue = setter.getValue(); final String key = setter.getKey(); final Object rawValue = nested.get(key); Object val = value == null || setterValue.converter == null ? rawValue : Converter.class.cast(setterValue.converter).toString(rawValue); if (val == null) { continue; } if (setterValue.array && Collection.class.isInstance(val)) { final Collection<?> collection = Collection.class.cast(val); final Object[] array = (Object[]) Array.newInstance(componentTypes.get(key), collection.size()); val = collection.toArray(array); } final AccessMode.Writer setterMethod = setterValue.writer; setterMethod.write(instance, val); } }
@Override public void write(final Object instance, final Object value) { Map<String, Object> nested = null; for (final String path : paths) { nested = Map.class.cast(nested == null ? value : nested.get(path)); if (nested == null) { return; } } for (final Map.Entry<String, Setter> setter : writers.entrySet()) { final Setter setterValue = setter.getValue(); final String key = setter.getKey(); final Object rawValue = nested.get(key); Object val = value == null || setterValue.converter == null ? rawValue : Converter.class.cast(setterValue.converter).toString(rawValue); if (val == null) { continue; } if (setterValue.array && Collection.class.isInstance(val)) { final Collection<?> collection = Collection.class.cast(val); final Object[] array = (Object[]) Array.newInstance(componentTypes.get(key), collection.size()); val = collection.toArray(array); } final AccessMode.Writer setterMethod = setterValue.writer; setterMethod.write(instance, val); } }
private void addSetterIfNeeded(final Map<String, Setter> setters, final String key, final AccessMode.Writer value, final boolean copyDate, final Class<?> rootClass) { final JohnzonIgnore writeIgnore = value.getAnnotation(JohnzonIgnore.class); if (writeIgnore == null || writeIgnore.minVersion() >= 0) { if (key.equals("metaClass")) { return; } final Type param = value.getType(); final Class<?> returnType = Class.class.isInstance(param) ? Class.class.cast(param) : null; final Setter setter = new Setter( value, isPrimitive(param), returnType != null && returnType.isArray(), resolve(param, rootClass), findConverter(copyDate, value), value.findObjectConverterReader(), writeIgnore != null ? writeIgnore.minVersion() : -1); setters.put(key, setter); } }
@Override public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) { return initialWriter.getClassOrPackageAnnotation(clazz); }
@Override public <T extends Annotation> T getAnnotation(final Class<T> clazz) { return initialWriter.getAnnotation(clazz); }
@Override public void write(final Object instance, final Object value) { type1.write(instance, value); }
@Override public void write(final Object instance, final Object value) { type1.write(instance, value); }
@Override public Adapter<?, ?> findConverter() { for (final AccessMode.Writer r : delegates) { final Adapter<?, ?> converter = r.findConverter(); if (converter != null) { return converter; } } return null; }
@Override public void write(final Object instance, final Object value) { for (final AccessMode.Writer w : delegates) { w.write(instance, value); } }
@Override public ObjectConverter.Reader<?> findObjectConverterReader() { for (final AccessMode.Writer w : delegates) { final ObjectConverter.Reader<?> objectConverter = w.findObjectConverterReader(); if (objectConverter != null) { return objectConverter; } } return null; }
@Override public boolean isNillable() { for (final AccessMode.Writer r : delegates) { if (r.isNillable()) { return true; } } return false; } }