for (final Map.Entry<String, Reader> entry : readers.entrySet()) { final Reader initialReader = entry.getValue(); if (isTransient(initialReader, visibility) || initialReader.getAnnotation(JohnzonAny.class) != null) { continue; final Function<Object, Object> reader; if (isOptional(finalReader)) { type = ParameterizedType.class.cast(finalReader.getType()).getActualTypeArguments()[0]; reader = i -> ofNullable(finalReader.read(i)).map(o -> Optional.class.cast(o).orElse(null)).orElse(null); } else if (OptionalInt.class == finalReader.getType()) { type = int.class; reader = i -> OptionalInt.class.cast(finalReader.read(i)).orElse(0); } else if (OptionalLong.class == finalReader.getType()) { type = long.class; reader = i -> OptionalLong.class.cast(finalReader.read(i)).orElse(0); } else if (OptionalDouble.class == finalReader.getType()) { type = double.class; reader = i -> OptionalDouble.class.cast(finalReader.read(i)).orElse(0); } else { type = finalReader.getType(); reader = finalReader::read; final JsonbProperty property = initialReader.getAnnotation(JsonbProperty.class); final JsonbNillable nillable = initialReader.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 addGetterIfNeeded(final Map<String, Getter> getters, final String key, final AccessMode.Reader value, final boolean copyDate, final Class<?> rootClass) { final JohnzonIgnore readIgnore = value.getAnnotation(JohnzonIgnore.class); final JohnzonIgnoreNested ignoreNested = value.getAnnotation(JohnzonIgnoreNested.class); if (readIgnore == null || readIgnore.minVersion() >= 0) { final Class<?> returnType = Class.class.isInstance(value.getType()) ? Class.class.cast(value.getType()) : null; final ParameterizedType pt = ParameterizedType.class.isInstance(value.getType()) ? ParameterizedType.class.cast(value.getType()) : null; final Getter getter = new Getter(value, returnType == Object.class, isPrimitive(returnType), returnType != null && returnType.isArray(), (pt != null && Collection.class.isAssignableFrom(Class.class.cast(pt.getRawType()))) || (returnType != null && Collection.class.isAssignableFrom(returnType)), (pt != null && Map.class.isAssignableFrom(Class.class.cast(pt.getRawType()))) || (returnType != null && Map.class.isAssignableFrom(returnType)), findConverter(copyDate, value), value.findObjectConverterWriter(), readIgnore != null ? readIgnore.minVersion() : -1, ignoreNested != null ? ignoreNested.properties() : null); getters.put(key, getter); } }
final Object value = getter.reader.read(object); if (JsonValue.class.isInstance(value)) { generator.write(getterEntry.getKey(), JsonValue.class.cast(value)); if (config.isSkipNull() && !getter.reader.isNillable()) { continue; } else { final Map<String, Object> any = Map.class.cast(classMapping.anyGetter.reader.read(object)); if (any != null) { writeMapBody(any, null);
if (getter != null) { try { existingInstance = getter.reader.read(t); } catch (final RuntimeException re) {
if (getter != null) { try { existingInstance = getter.reader.read(t); } catch (final RuntimeException re) {
final Mappings.Getter getter = classMapping.getters.get(property); final String key = findKeyForField(property, getter, classType); final Type type = getter.reader.getType();
for (final Map.Entry<String, Reader> entry : readers.entrySet()) { final Reader initialReader = entry.getValue(); if (isTransient(initialReader, visibility) || initialReader.getAnnotation(JohnzonAny.class) != null) { continue; final Function<Object, Object> reader; if (isOptional(finalReader)) { type = ParameterizedType.class.cast(finalReader.getType()).getActualTypeArguments()[0]; reader = i -> ofNullable(finalReader.read(i)).map(o -> Optional.class.cast(o).orElse(null)).orElse(null); } else if (OptionalInt.class == finalReader.getType()) { type = int.class; reader = i -> OptionalInt.class.cast(finalReader.read(i)).orElse(0); } else if (OptionalLong.class == finalReader.getType()) { type = long.class; reader = i -> OptionalLong.class.cast(finalReader.read(i)).orElse(0); } else if (OptionalDouble.class == finalReader.getType()) { type = double.class; reader = i -> OptionalDouble.class.cast(finalReader.read(i)).orElse(0); } else { type = finalReader.getType(); reader = finalReader::read; final JsonbProperty property = initialReader.getAnnotation(JsonbProperty.class); final JsonbNillable nillable = initialReader.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 SampleMappings.Getter getter = property.getValue(); final String key = property.getKey(); final Type type = extractType(getter.reader.getType()); if (getter.array || getter.collection) { generateArray(mappings, generator, saw, type, key); final JohnzonConverter converter = getter.reader.getAnnotation(JohnzonConverter.class); try { generator.write(
final Object value = getter.reader.read(object); if (JsonValue.class.isInstance(value)) { generator.write(getterEntry.getKey(), JsonValue.class.cast(value)); if (config.isSkipNull() && !getter.reader.isNillable()) { continue; } else { final Map<String, Object> any = Map.class.cast(classMapping.anyGetter.reader.read(object)); if (any != null) { writeMapBody(any, null);
final XmlElementWrapper wrapper = getter.reader.getAnnotation(XmlElementWrapper.class); if (wrapper != null) { final String name = wrapper.name();
final String key = entry.getKey(); Method m = getMethod("get" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz); if (m == null && (boolean.class == entry.getValue().getType() || Boolean.class == entry.getValue().getType())) { m = getMethod("is" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz); for (final Reader w : methodReaders.values()) { if (MethodAccessMode.MethodDecoratedType.class.cast(w).getMethod().equals(m)) { if (w.getAnnotation(JohnzonProperty.class) != null || w.getAnnotation(JohnzonIgnore.class) != null) { skip = true; for (final Reader w : fieldsReaders.values()) { if (FieldAccessMode.FieldDecoratedType.class.cast(w).getField().equals(f)) { if (w.getAnnotation(JohnzonProperty.class) != null || w.getAnnotation(JohnzonIgnore.class) != null) { skip = true;
final String key = entry.getKey(); Method m = getMethod("get" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz); if (m == null && (boolean.class == entry.getValue().getType() || Boolean.class == entry.getValue().getType())) { m = getMethod("is" + Character.toUpperCase(key.charAt(0)) + (key.length() > 1 ? key.substring(1) : ""), clazz); for (final Reader w : methodReaders.values()) { if (MethodAccessMode.MethodDecoratedType.class.cast(w).getMethod().equals(m)) { if (w.getAnnotation(JohnzonProperty.class) != null || w.getAnnotation(JohnzonIgnore.class) != null) { skip = true; for (final Reader w : fieldsReaders.values()) { if (FieldAccessMode.FieldDecoratedType.class.cast(w).getField().equals(f)) { if (w.getAnnotation(JohnzonProperty.class) != null || w.getAnnotation(JohnzonIgnore.class) != null) { skip = true;
if (matches(reader.getType(), adapter)) { theConverter = adapter; } else {
if (matches(reader.getType(), adapter)) { theConverter = adapter; } else {
private String findKeyForField(String key, Mappings.Getter getter, Class<?> componentType) { String k = null; final XmlElement xmlElt = getter.reader.getAnnotation(XmlElement.class); if (xmlElt != null && !Jaxbs.isDefault(xmlElt.name())) { k = xmlElt.name(); } final XmlElements xmlElts = getter.reader.getAnnotation(XmlElements.class); if (xmlElts != null) { for (final XmlElement xml : xmlElts.value()) { if (xml.type() == componentType && !Jaxbs.isDefault(xml.name())) { k = xml.name(); } } } if (k == null) { if (MethodAccessMode.MethodReader.class.isInstance(getter)) { k = Introspector.decapitalize(Method.class.cast(Reflections.get(MethodAccessMode.MethodReader.class.cast(getter), "method")).getName().replaceFirst("get", " ")); } else if (FieldAccessMode.FieldReader.class.isInstance(getter)) { k = Introspector.decapitalize(Field.class.cast(Reflections.get(FieldAccessMode.FieldReader.class.cast(getter), "field")).getName()); } else { k = key; } } return k; }
@Override public Object read(final Object instance) { final Map<String, Object> map = new LinkedHashMap<String, Object>(template); Map<String, Object> nested = map; for (int i = 1; i < paths.length; i++) { nested = Map.class.cast(nested.get(paths[i])); } for (final Map.Entry<String, Getter> g : getters.entrySet()) { final Mappings.Getter getter = g.getValue(); final Object value = getter.reader.read(instance); final Object val = value == null || getter.converter == null ? value : getter.converter.from(value); if (val == null) { continue; } if (getter.version >= 0 && version >= getter.version) { continue; } nested.put(g.getKey(), val); } return map; }
@Override public Object read(final Object instance) { final Map<String, Object> map = new LinkedHashMap<String, Object>(template); Map<String, Object> nested = map; for (int i = 1; i < paths.length; i++) { nested = Map.class.cast(nested.get(paths[i])); } for (final Map.Entry<String, Getter> g : getters.entrySet()) { final Mappings.Getter getter = g.getValue(); final Object value = getter.reader.read(instance); final Object val = value == null || getter.converter == null ? value : getter.converter.from(value); if (val == null) { continue; } if (getter.version >= 0 && version >= getter.version) { continue; } nested.put(g.getKey(), val); } return map; }
private void addGetterIfNeeded(final Map<String, Getter> getters, final String key, final AccessMode.Reader value, final boolean copyDate, final Class<?> rootClass) { final JohnzonIgnore readIgnore = value.getAnnotation(JohnzonIgnore.class); final JohnzonIgnoreNested ignoreNested = value.getAnnotation(JohnzonIgnoreNested.class); if (readIgnore == null || readIgnore.minVersion() >= 0) { final Class<?> returnType = Class.class.isInstance(value.getType()) ? Class.class.cast(value.getType()) : null; final ParameterizedType pt = ParameterizedType.class.isInstance(value.getType()) ? ParameterizedType.class.cast(value.getType()) : null; final Getter getter = new Getter(value, returnType == Object.class, isPrimitive(returnType), returnType != null && returnType.isArray(), (pt != null && Collection.class.isAssignableFrom(Class.class.cast(pt.getRawType()))) || (returnType != null && Collection.class.isAssignableFrom(returnType)), (pt != null && Map.class.isAssignableFrom(Class.class.cast(pt.getRawType()))) || (returnType != null && Map.class.isAssignableFrom(returnType)), findConverter(copyDate, value), value.findObjectConverterWriter(), readIgnore != null ? readIgnore.minVersion() : -1, ignoreNested != null ? ignoreNested.properties() : null); getters.put(key, getter); } }
@Override public Object read(final Object instance) { final Map<String, Object> map = new LinkedHashMap<String, Object>(); for (final AccessMode.Reader reader : delegates) { final Map<String, Object> readerMap = (Map<String, Object>) reader.read(instance); for (final Map.Entry<String, Object> entry : readerMap.entrySet()) { final Object o = map.get(entry.getKey()); if (o == null) { map.put(entry.getKey(), entry.getValue()); } else if (Map.class.isInstance(o)) { // TODO } else { throw new IllegalStateException(entry.getKey() + " is ambiguous"); } } } return map; }
@Override public Object read(final Object instance) { final Map<String, Object> map = new LinkedHashMap<String, Object>(); for (final AccessMode.Reader reader : delegates) { final Map<String, Object> readerMap = (Map<String, Object>) reader.read(instance); for (final Map.Entry<String, Object> entry : readerMap.entrySet()) { final Object o = map.get(entry.getKey()); if (o == null) { map.put(entry.getKey(), entry.getValue()); } else if (Map.class.isInstance(o)) { // TODO } else { throw new IllegalStateException(entry.getKey() + " is ambiguous"); } } } return map; }