public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { Object result = instantiateNewInstance(reader, context); result = doUnmarshal(result, reader, context); return serializationMembers.callReadResolve(result); }
protected void doMarshalConditionally(final Object source, final HierarchicalStreamWriter writer, final MarshallingContext context) { if(isSerializable(source.getClass())) { doMarshal(source, writer, context); } else { super.doMarshal(source, writer, context); } }
public void writeField(String fieldName, String aliasName, Class fieldType, Class definedIn, Object newObj) { Class actualType = newObj != null ? newObj.getClass() : fieldType; ExtendedHierarchicalStreamWriterHelper.startNode(writer, aliasName != null ? aliasName : mapper.serializedMember(sourceType, fieldName), actualType); if (newObj != null) { Class defaultType = mapper.defaultImplementationOf(fieldType); if (!actualType.equals(defaultType)) { String serializedClassName = mapper.serializedClass(actualType); if (!serializedClassName.equals(mapper.serializedClass(defaultType))) { String attributeName = mapper.aliasForSystemAttribute("class"); if (attributeName != null) { writer.addAttribute(attributeName, serializedClassName); } } } final Field defaultField = (Field)defaultFieldDefinition.get(fieldName); if (defaultField.getDeclaringClass() != definedIn) { String attributeName = mapper.aliasForSystemAttribute("defined-in"); if (attributeName != null) { writer.addAttribute( attributeName, mapper.serializedClass(definedIn)); } } Field field = reflectionProvider.getField(definedIn, fieldName); marshallField(context, newObj, field); } writer.endNode(); }
.realMember(resultType, mapper.attributeForAlias(attrAlias)); Field field = reflectionProvider.getFieldOrNull(resultType, attrName); if (field != null && shouldUnmarshalField(field)) { Class classDefiningField = field.getDeclaringClass(); if (!mapper.shouldSerializeMember(classDefiningField, attrName)) { Class explicitDeclaringClass = readDeclaringClass(reader); Class fieldDeclaringClass = explicitDeclaringClass == null ? resultType handleUnknownField( explicitDeclaringClass, fieldName, fieldDeclaringClass, originalNodeName); && !(fieldAlreadyChecked = shouldUnmarshalField(field) && mapper.shouldSerializeMember( field.getDeclaringClass(), fieldName))) { && (fieldAlreadyChecked || (shouldUnmarshalField(field) && mapper .shouldSerializeMember(field.getDeclaringClass(), fieldName)))) { String classAttribute = HierarchicalStreams.readClassAttribute( value = unmarshallField(context, result, type, field); Class definedType = field.getType(); if (!definedType.isPrimitive()) { writeValueToImplicitCollection( value, implicitCollectionsForCurrentObject, result, new FieldLocation( implicitFieldName, fieldDeclaringClass));
protected Object doUnmarshalConditionally(final Object result, final HierarchicalStreamReader reader, final UnmarshallingContext context) { return isSerializable(result.getClass()) ? doUnmarshal(result, reader, context) : super.doUnmarshal(result, reader, context); }
String attrAlias = (String) it.next(); String attrName = mapper.realMember(result.getClass(), mapper.attributeForAlias(attrAlias)); Class classDefiningField = determineWhichClassDefinesField(reader); boolean fieldExistsInClass = reflectionProvider.fieldDefinedInClass(attrName, result.getClass()); if (fieldExistsInClass) { Field field = reflectionProvider.getField(result.getClass(), attrName); if (Modifier.isTransient(field.getModifiers()) && ! shouldUnmarshalTransientFields()) { continue; Mapper.ImplicitCollectionMapping implicitCollectionMapping = mapper.getImplicitCollectionDefForFieldName(result.getClass(), fieldName); Class classDefiningField = determineWhichClassDefinesField(reader); boolean fieldExistsInClass = implicitCollectionMapping == null && reflectionProvider.fieldDefinedInClass(fieldName, result.getClass()); ? determineType(reader, fieldExistsInClass, result, fieldName, classDefiningField) : implicitCollectionMapping.getItemType(); final Object value; if (fieldExistsInClass) { Field field = reflectionProvider.getField(classDefiningField != null ? classDefiningField : result.getClass(), fieldName); if (Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()) { reader.moveUp(); continue; value = unmarshallField(context, result, type, field); seenFields.add(classDefiningField, fieldName); } else if (type != null) { implicitCollectionsForCurrentObject = writeValueToImplicitCollection(context, value, implicitCollectionsForCurrentObject, result, originalNodeName);
protected boolean shouldUnmarshalField(Field field) { return !(Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()); }
if (field != null && shouldUnmarshalField(field)) { final Class<?> classDefiningField = field.getDeclaringClass(); if (!mapper.shouldSerializeMember(classDefiningField, attrName)) { final Class<?> explicitDeclaringClass = readDeclaringClass(reader); final Class<?> fieldDeclaringClass = explicitDeclaringClass == null ? resultType : explicitDeclaringClass; final String fieldName = mapper.realMember(fieldDeclaringClass, originalNodeName); handleUnknownField(explicitDeclaringClass, fieldName, fieldDeclaringClass, originalNodeName); && !(fieldAlreadyChecked = shouldUnmarshalField(field) && mapper.shouldSerializeMember(field.getDeclaringClass(), fieldName))) { field = reflectionProvider.getFieldOrNull(field.getDeclaringClass().getSuperclass(), || shouldUnmarshalField(field) && mapper.shouldSerializeMember(field.getDeclaringClass(), fieldName))) { value = unmarshallField(context, result, type, field); final Class<?> definedType = field.getType(); if (!definedType.isPrimitive()) { implicitCollectionsForCurrentObject = new HashMap<>(); writeValueToImplicitCollection(value, implicitCollectionsForCurrentObject, result, new FieldLocation( implicitFieldName, fieldDeclaringClass));
String nodeName = reader.getNodeName(); if (nodeName.equals(ELEMENT_UNSERIALIZABLE_PARENTS)) { super.doUnmarshal(result, reader, context); } else { String classAttribute = HierarchicalStreams.readClassAttribute(reader, mapper);
String attrAlias = (String) it.next(); String attrName = mapper.realMember(result.getClass(), mapper.attributeForAlias(attrAlias)); Class classDefiningField = determineWhichClassDefinesField(reader); boolean fieldExistsInClass = reflectionProvider.fieldDefinedInClass(attrName, result.getClass()); if (fieldExistsInClass) { Field field = reflectionProvider.getField(result.getClass(), attrName); if (Modifier.isTransient(field.getModifiers()) && ! shouldUnmarshalTransientFields()) { continue; Mapper.ImplicitCollectionMapping implicitCollectionMapping = mapper.getImplicitCollectionDefForFieldName(result.getClass(), fieldName); Class classDefiningField = determineWhichClassDefinesField(reader); boolean fieldExistsInClass = implicitCollectionMapping == null && reflectionProvider.fieldDefinedInClass(fieldName, result.getClass()); ? determineType(reader, fieldExistsInClass, result, fieldName, classDefiningField) : implicitCollectionMapping.getItemType(); final Object value; if (fieldExistsInClass) { Field field = reflectionProvider.getField(classDefiningField != null ? classDefiningField : result.getClass(), fieldName); if (Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()) { reader.moveUp(); continue; value = unmarshallField(context, result, type, field); seenFields.add(classDefiningField, fieldName); } else if (type != null) { implicitCollectionsForCurrentObject = writeValueToImplicitCollection(context, value, implicitCollectionsForCurrentObject, result, originalNodeName);
protected boolean shouldUnmarshalField(final Field field) { return !(Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()); }
.realMember(resultType, mapper.attributeForAlias(attrAlias)); Field field = reflectionProvider.getFieldOrNull(resultType, attrName); if (field != null && shouldUnmarshalField(field)) { Class classDefiningField = field.getDeclaringClass(); if (!mapper.shouldSerializeMember(classDefiningField, attrName)) { Class explicitDeclaringClass = readDeclaringClass(reader); Class fieldDeclaringClass = explicitDeclaringClass == null ? resultType handleUnknownField( explicitDeclaringClass, fieldName, fieldDeclaringClass, originalNodeName); && !(fieldAlreadyChecked = shouldUnmarshalField(field) && mapper.shouldSerializeMember( field.getDeclaringClass(), fieldName))) { && (fieldAlreadyChecked || (shouldUnmarshalField(field) && mapper .shouldSerializeMember(field.getDeclaringClass(), fieldName)))) { String classAttribute = HierarchicalStreams.readClassAttribute( value = unmarshallField(context, result, type, field); Class definedType = field.getType(); if (!definedType.isPrimitive()) { writeValueToImplicitCollection( value, implicitCollectionsForCurrentObject, result, new FieldLocation( implicitFieldName, fieldDeclaringClass));
@Override public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { Object result = instantiateNewInstance(reader, context); result = doUnmarshal(result, reader, context); return serializationMembers.callReadResolve(result); }
@Override public Object doUnmarshal(final Object result, final HierarchicalStreamReader reader, final UnmarshallingContext context) { // Do the default unmarshalling for the reference container XReference ref = (XReference) super.doUnmarshal(result, reader, context); ref.holder = createUnmarshalHolder(ref); return ref; }
if (fieldExistsInClass) { Field field = reflectionProvider.getField(result.getClass(), attrName); if (Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()) { continue; Class classDefiningField = determineWhichClassDefinesField(reader); Class fieldDeclaringClass = classDefiningField == null ? result.getClass() && reflectionProvider.fieldDefinedInClass(fieldName, fieldDeclaringClass); Class type = implicitCollectionMapping == null || implicitCollectionMapping.getItemType() == null ? determineType( reader, fieldExistsInClass, result, fieldName, classDefiningField) : implicitCollectionMapping.getItemType(); if (fieldExistsInClass) { Field field = reflectionProvider.getField(classDefiningField != null ? classDefiningField : result.getClass(), fieldName); if ((Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()) || !mapper.shouldSerializeMember(classDefiningField != null ? classDefiningField : result.getClass(), fieldName)) { reader.moveUp(); continue; value = unmarshallField(context, result, type, field); seenFields.add(new FastField(classDefiningField, fieldName)); } else if (type != null) { implicitCollectionsForCurrentObject = writeValueToImplicitCollection(context, value, implicitCollectionsForCurrentObject, result, originalNodeName);
protected void marshalUnserializableParent(final HierarchicalStreamWriter writer, final MarshallingContext context, final Object replacedSource) { writer.startNode(ELEMENT_UNSERIALIZABLE_PARENTS); super.doMarshal(replacedSource, writer, context); writer.endNode(); }
@Override protected void marshallField(MarshallingContext context, Object newObj, Field field) { if ("couponList".equals(field.getName())) { return; } super.marshallField(context, newObj, field); }
protected boolean shouldUnmarshalField(Field field) { return !(Modifier.isTransient(field.getModifiers()) && !shouldUnmarshalTransientFields()); }
.realMember(resultType, mapper.attributeForAlias(attrAlias)); Field field = reflectionProvider.getFieldOrNull(resultType, attrName); if (field != null && shouldUnmarshalField(field)) { Class classDefiningField = field.getDeclaringClass(); if (!mapper.shouldSerializeMember(classDefiningField, attrName)) { Class explicitDeclaringClass = readDeclaringClass(reader); Class fieldDeclaringClass = explicitDeclaringClass == null ? resultType handleUnknownField( explicitDeclaringClass, fieldName, resultType, originalNodeName); && !(fieldAlreadyChecked = shouldUnmarshalField(field) && mapper.shouldSerializeMember( field.getDeclaringClass(), fieldName))) { && (fieldAlreadyChecked || (shouldUnmarshalField(field) && mapper .shouldSerializeMember(field.getDeclaringClass(), fieldName)))) { value = unmarshallField(context, result, type, field); Class definedType = field.getType(); if (!definedType.isPrimitive()) { implicitCollectionsForCurrentObject = new HashMap(); writeValueToImplicitCollection( value, implicitCollectionsForCurrentObject, result, implicitFieldName);
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { Object result = instantiateNewInstance(reader, context); result = doUnmarshal(result, reader, context); return serializationMethodInvoker.callReadResolve(result); }