Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Made at ApacheCon EU 2009, Robert, Martijn, Felix and Marcel produced the following design on the flipover:

Image Removed

Service design

Image Added

Service design

Basically, we need two services:

  1. The serialization service, that can serialize and deserialize an object graph to an output or input stream.
  2. Helpers that are used to (de)serialize specific objects.

Serialization Service

Code Block

interface SerializationService {
    void serialize(Object o, OutputStream s) throws IOException, UnknownObjectException;
    Object deserialize(InputStream s) throws IOException, UnknownObjectException;
}

The actual implementation of this service determines how objects are serialized.

Serialization Helper

Code Block

interface SerializationHelper {
    // TODO
}

We also discussed adding a special manifest header to a bundle to create a sort of declarative serialization helper. That way the bundle does not need to implement and register the service (if all of them use the same helper anyway).

Helpers in some way need to be linked to a specific serialization service (using an XML serialization with a JSON helper will probably not be what you want)...