RobustReflectionConverter(Mapper mapper, ReflectionProvider reflectionProvider, XStream2.ClassOwnership classOwnership) { this.mapper = mapper; this.reflectionProvider = reflectionProvider; assert classOwnership != null; this.classOwnership = classOwnership; serializationMethodInvoker = new SerializationMethodInvoker(); }
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { Object result = instantiateNewInstance(reader, context); result = doUnmarshal(result, reader, context); return serializationMethodInvoker.callReadResolve(result); }
public void marshal(Object original, final HierarchicalStreamWriter writer, final MarshallingContext context) { final Object source = serializationMethodInvoker.callWriteReplace(original); if (source.getClass() != original.getClass()) { writer.addAttribute(mapper.aliasForAttribute("resolves-to"), mapper.serializedClass(source.getClass())); } OwnerContext oc = OwnerContext.find(context); oc.startVisiting(writer, classOwnership.ownerOf(original.getClass())); try { doMarshal(source, writer, context); } finally { oc.stopVisiting(); } }
mustHandleUnserializableParent = false; if (serializationMethodInvoker.supportsWriteObject(currentType[0], false)) { writtenClassWrapper[0] = true; writer.startNode(mapper.serializedClass(currentType[0])); CustomObjectOutputStream objectOutputStream = CustomObjectOutputStream.getInstance(context, callback); serializationMethodInvoker.callWriteObject(currentType[0], source, objectOutputStream); objectOutputStream.popCallback(); writer.endNode(); } else if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) {
private boolean isSerializable(Class type) { return Serializable.class.isAssignableFrom(type) && ( serializationMethodInvoker.supportsReadObject(type, true) || serializationMethodInvoker.supportsWriteObject(type, true) ); }
public boolean supportsReadObject(Class type, boolean includeBaseClasses) { return getMethod( type, "readObject", new Class[]{ObjectInputStream.class}, includeBaseClasses) != null; }
currentType[0] = mapper.realClass(classAttribute); if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) { CustomObjectInputStream objectInputStream = CustomObjectInputStream.getInstance(context, callback, classLoader); serializationMethodInvoker.callReadObject(currentType[0], result, objectInputStream); objectInputStream.popCallback(); } else {
public void flushCache() { serializationMethodInvoker.flushCache(); }
mustHandleUnserializableParent = false; if (serializationMethodInvoker.supportsWriteObject(currentType[0], false)) { writtenClassWrapper[0] = true; writer.startNode(mapper.serializedClass(currentType[0])); CustomObjectOutputStream objectOutputStream = CustomObjectOutputStream.getInstance(context, callback); serializationMethodInvoker.callWriteObject(currentType[0], source, objectOutputStream); objectOutputStream.popCallback(); writer.endNode(); } else if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) {
private boolean isSerializable(Class type) { return Serializable.class.isAssignableFrom(type) && ( serializationMethodInvoker.supportsReadObject(type, true) || serializationMethodInvoker.supportsWriteObject(type, true) ); }
public boolean supportsWriteObject(Class type, boolean includeBaseClasses) { return getMethod( type, "writeObject", new Class[]{ObjectOutputStream.class}, includeBaseClasses) != null; }
currentType[0] = mapper.realClass(classAttribute); if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) { CustomObjectInputStream objectInputStream = CustomObjectInputStream.getInstance(context, callback); serializationMethodInvoker.callReadObject(currentType[0], result, objectInputStream); objectInputStream.popCallback(); } else {
@SuppressWarnings("deprecation") @Override public void flushCache() { serializationMethodInvoker.flushCache(); }
private Object readResolve() { serializationMethodInvoker = new SerializationMethodInvoker(); return this; }
return serializationMethodInvoker.callReadResolve(gg);
mustHandleUnserializableParent = false; if (serializationMethodInvoker.supportsWriteObject(currentType[0], false)) { writtenClassWrapper[0] = true; writer.startNode(mapper.serializedClass(currentType[0])); CustomObjectOutputStream objectOutputStream = CustomObjectOutputStream.getInstance(context, callback); serializationMethodInvoker.callWriteObject(currentType[0], source, objectOutputStream); objectOutputStream.popCallback(); writer.endNode(); } else if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) {
public void marshal(Object original, final HierarchicalStreamWriter writer, final MarshallingContext context) { final Object source = serializationMethodInvoker.callWriteReplace(original); if (source.getClass() != original.getClass()) { writer.addAttribute(mapper.aliasForAttribute("resolves-to"), mapper.serializedClass(source.getClass())); } doMarshal(source, writer, context); }
private boolean isSerializable(Class type) { return Serializable.class.isAssignableFrom(type) && ( serializationMethodInvoker.supportsReadObject(type, true) || serializationMethodInvoker.supportsWriteObject(type, true) ); }
public boolean supportsWriteObject(Class type, boolean includeBaseClasses) { return getMethod( type, "writeObject", new Class[]{ObjectOutputStream.class}, includeBaseClasses) != null; }
currentType[0] = mapper.realClass(classAttribute); if (serializationMethodInvoker.supportsReadObject(currentType[0], false)) { CustomObjectInputStream objectInputStream = CustomObjectInputStream.getInstance(context, callback, classLoaderReference); serializationMethodInvoker.callReadObject(currentType[0], result, objectInputStream); objectInputStream.popCallback(); } else {