public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
final Class<?> type = classTable.readClass(this); final SerializableClass serializableClass = registry.lookup(type); int descType = serializableClass.hasWriteObject() ? ID_WRITE_OBJECT_CLASS : ID_SERIALIZABLE_CLASS; final ClassDescriptor descriptor = new BasicSerializableClassDescriptor(serializableClass, doReadClassDescriptor(readUnsignedByte(), true), serializableClass.getFields(), descType); classCache.set(idx, descriptor);
protected void doWriteSerializableObject(final SerializableClass info, final Object obj, final Class<?> objClass) throws IOException { final Class<?> superclass = objClass.getSuperclass(); if (superclass != null && serializabilityChecker.isSerializable(superclass)) { doWriteSerializableObject(registry.lookup(superclass), obj, superclass); } if (info.hasWriteObject()) { final RiverObjectOutputStream objectOutputStream = getObjectOutputStream(); final SerializableClass oldInfo = objectOutputStream.swapClass(info); final Object oldObj = objectOutputStream.swapCurrent(obj); final int restoreState = objectOutputStream.start(); boolean ok = false; try { info.callWriteObject(obj, objectOutputStream); objectOutputStream.finish(restoreState); writeEndBlock(); objectOutputStream.swapCurrent(oldObj); objectOutputStream.swapClass(oldInfo); ok = true; } finally { if (! ok) { objectOutputStream.fullReset(); } } } else { doWriteFields(info, obj); } }
if (origInfo.hasWriteObject()) { final Queue<Step> steps = new ArrayDeque<Step>(); final StepObjectOutputStream stepObjectOutputStream = createStepObjectOutputStream(orig, fields, steps);
} else { final SerializableClass info = registry.lookup(objClass); if (info.hasWriteObject()) { write(ID_WRITE_OBJECT_CLASS); } else {
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new SerializableClassDescriptor(serializableClass, null, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public Descriptor descriptorForClass(final Class<?> clazz) { if (Externalizable.class.isAssignableFrom(clazz)) { // todo - make WRITE_METHOD depend on block mode return new PlainDescriptor(clazz, null, SerializableClass.NOFIELDS, SC_EXTERNALIZABLE | SC_BLOCK_DATA); } else if (serializabilityChecker.isSerializable(clazz)) { final Class<?> superclass = clazz.getSuperclass(); final Descriptor parent; if (superclass != null && serializabilityChecker.isSerializable(superclass)) { parent = descriptorForClass(superclass); } else { parent = null; } final SerializableClass serializableClass = registry.lookup(clazz); return new PlainDescriptor(clazz, parent, serializableClass.getFields(), SC_SERIALIZABLE | (serializableClass.hasWriteObject() ? SC_WRITE_METHOD : 0)); } else { return new NoDataDescriptor(clazz, null); } }
public Descriptor descriptorForClass(final Class<?> clazz) { if (Externalizable.class.isAssignableFrom(clazz)) { // todo - make WRITE_METHOD depend on block mode return new PlainDescriptor(clazz, null, SerializableClass.NOFIELDS, SC_EXTERNALIZABLE | SC_BLOCK_DATA); } else if (serializabilityChecker.isSerializable(clazz)) { final Class<?> superclass = clazz.getSuperclass(); final Descriptor parent; if (superclass != null && serializabilityChecker.isSerializable(superclass)) { parent = descriptorForClass(superclass); } else { parent = null; } final SerializableClass serializableClass = registry.lookup(clazz); return new PlainDescriptor(clazz, parent, serializableClass.getFields(), SC_SERIALIZABLE | (serializableClass.hasWriteObject() ? SC_WRITE_METHOD : 0)); } else { return new NoDataDescriptor(clazz, null); } }
public Descriptor descriptorForClass(final Class<?> clazz) { if (Externalizable.class.isAssignableFrom(clazz)) { // todo - make WRITE_METHOD depend on block mode return new PlainDescriptor(clazz, null, SerializableClass.NOFIELDS, SC_EXTERNALIZABLE | SC_BLOCK_DATA); } else if (serializabilityChecker.isSerializable(clazz)) { final Class<?> superclass = clazz.getSuperclass(); final Descriptor parent; if (superclass != null && serializabilityChecker.isSerializable(superclass)) { parent = descriptorForClass(superclass); } else { parent = null; } final SerializableClass serializableClass = registry.lookup(clazz); return new PlainDescriptor(clazz, parent, serializableClass.getFields(), SC_SERIALIZABLE | (serializableClass.hasWriteObject() ? SC_WRITE_METHOD : 0)); } else { return new NoDataDescriptor(clazz, null); } }
public Descriptor descriptorForClass(final Class<?> clazz) { if (Externalizable.class.isAssignableFrom(clazz)) { // todo - make WRITE_METHOD depend on block mode return new PlainDescriptor(clazz, null, SerializableClass.NOFIELDS, SC_EXTERNALIZABLE | SC_BLOCK_DATA); } else if (serializabilityChecker.isSerializable(clazz)) { final Class<?> superclass = clazz.getSuperclass(); final Descriptor parent; if (superclass != null && serializabilityChecker.isSerializable(superclass)) { parent = descriptorForClass(superclass); } else { parent = null; } final SerializableClass serializableClass = registry.lookup(clazz); return new PlainDescriptor(clazz, parent, serializableClass.getFields(), SC_SERIALIZABLE | (serializableClass.hasWriteObject() ? SC_WRITE_METHOD : 0)); } else { return new NoDataDescriptor(clazz, null); } }
protected void doWriteSerializableObject(final SerializableClass info, final Object obj, final Class<?> objClass) throws IOException { final Class<?> superclass = objClass.getSuperclass(); if (Serializable.class.isAssignableFrom(superclass)) { doWriteSerializableObject(registry.lookup(superclass), obj, superclass); } if (info.hasWriteObject()) { final RiverObjectOutputStream objectOutputStream = getObjectOutputStream(); final SerializableClass oldInfo = objectOutputStream.swapClass(info); final Object oldObj = objectOutputStream.swapCurrent(obj); final RiverObjectOutputStream.State restoreState = objectOutputStream.start(); boolean ok = false; try { info.callWriteObject(obj, objectOutputStream); writeEndBlock(); objectOutputStream.finish(restoreState); objectOutputStream.swapCurrent(oldObj); objectOutputStream.swapClass(oldInfo); ok = true; } finally { if (! ok) { objectOutputStream.fullReset(); } } } else { doWriteFields(info, obj); } }
protected void doWriteSerializableObject(final SerializableClass info, final Object obj, final Class<?> objClass) throws IOException { final Class<?> superclass = objClass.getSuperclass(); if (superclass != null && serializabilityChecker.isSerializable(superclass)) { doWriteSerializableObject(registry.lookup(superclass), obj, superclass); } if (info.hasWriteObject()) { final RiverObjectOutputStream objectOutputStream = getObjectOutputStream(); final SerializableClass oldInfo = objectOutputStream.swapClass(info); final Object oldObj = objectOutputStream.swapCurrent(obj); final int restoreState = objectOutputStream.start(); boolean ok = false; try { info.callWriteObject(obj, objectOutputStream); objectOutputStream.finish(restoreState); writeEndBlock(); objectOutputStream.swapCurrent(oldObj); objectOutputStream.swapClass(oldInfo); ok = true; } finally { if (! ok) { objectOutputStream.fullReset(); } } } else { doWriteFields(info, obj); } }
protected void doWriteSerializableObject(final SerializableClass info, final Object obj, final Class<?> objClass) throws IOException { final Class<?> superclass = objClass.getSuperclass(); if (superclass != null && serializabilityChecker.isSerializable(superclass)) { doWriteSerializableObject(registry.lookup(superclass), obj, superclass); } if (info.hasWriteObject()) { final RiverObjectOutputStream objectOutputStream = getObjectOutputStream(); final SerializableClass oldInfo = objectOutputStream.swapClass(info); final Object oldObj = objectOutputStream.swapCurrent(obj); final int restoreState = objectOutputStream.start(); boolean ok = false; try { info.callWriteObject(obj, objectOutputStream); objectOutputStream.finish(restoreState); writeEndBlock(); objectOutputStream.swapCurrent(oldObj); objectOutputStream.swapClass(oldInfo); ok = true; } finally { if (! ok) { objectOutputStream.fullReset(); } } } else { doWriteFields(info, obj); } }
private void writeSerialData(Class<?> objClass, Object obj) throws IOException { final Class<?> superClass = objClass.getSuperclass(); if (superClass != null && serializabilityChecker.isSerializable(superClass)) { writeSerialData(superClass, obj); } final SerializableClass sc = registry.lookup(objClass); if (sc.hasWriteObject()) { final SerialObjectOutputStream oos = getObjectOutputStream(); final Object oldObj = oos.saveCurrentObject(obj); final SerializableClass oldSc = oos.saveCurrentSerializableClass(sc); final Map<String,FieldPutter> map = oos.saveCurrentFieldMap(); final SerialObjectOutputStream.State oldState = oos.saveState(); try { sc.callWriteObject(obj, oos); } finally { oos.setCurrentObject(oldObj); oos.setCurrentSerializableClass(oldSc); oos.setCurrentFieldMap(map); oos.restoreState(oldState); } doEndBlock(); } else { doWriteFields(sc, obj); } }
private void writeSerialData(Class<?> objClass, Object obj) throws IOException { final Class<?> superClass = objClass.getSuperclass(); if (superClass != null && serializabilityChecker.isSerializable(superClass)) { writeSerialData(superClass, obj); } final SerializableClass sc = registry.lookup(objClass); if (sc.hasWriteObject()) { final SerialObjectOutputStream oos = getObjectOutputStream(); final Object oldObj = oos.saveCurrentObject(obj); final SerializableClass oldSc = oos.saveCurrentSerializableClass(sc); final Map<String,FieldPutter> map = oos.saveCurrentFieldMap(); final SerialObjectOutputStream.State oldState = oos.saveState(); try { sc.callWriteObject(obj, oos); } finally { oos.setCurrentObject(oldObj); oos.setCurrentSerializableClass(oldSc); oos.setCurrentFieldMap(map); oos.restoreState(oldState); } doEndBlock(); } else { doWriteFields(sc, obj); } }