Saros
Distributed Collaborative Editing and Distributed Party Programming
de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T > Class Reference

Inherits PacketExtensionProvider, and IQProvider.

List of all members.

Classes

class  DropSilentlyPacketExtension
class  XStreamIQPacket< T >
class  XStreamPacketExtension< T >

Public Member Functions

 XStreamExtensionProvider (String namespace, String elementName, Class<?>...classes)
void registerConverter (Converter converter)
void unregisterConverter (Converter converter)
void registerConverter (SingleValueConverter converter)
void unregisterConverter (SingleValueConverter converter)
PacketFilter getPacketFilter ()
String getNamespace ()
String getElementName ()
PacketFilter getIQFilter ()
PacketExtension parseExtension (XmlPullParser parser)
getPayload (Packet packet)
getPayload (PacketExtension extension)
parseString (String string) throws IOException
XStreamPacketExtension< T > create (T t)
IQ createIQ (T t)
IQ parseIQ (XmlPullParser parser) throws Exception

Static Public Member Functions

static void setClassLoader (ClassLoader classLoader)

Protected Attributes

final String elementName

Detailed Description

Flexible extension provider using XStream to serialize arbitrary data objects.

Supports PacketExtension and IQPackets


Constructor & Destructor Documentation

de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.XStreamExtensionProvider ( String  namespace,
String  elementName,
Class<?>...  classes 
)

Create a new XStreamExtensionProvider using the given element name as the XML root element with the given namespace. The Provider is able to understand the given classes, which should be annotated using XStream annotations.

Important: use valid XML element names and namespaces or the receiving side will be unable to decode the extension !


Member Function Documentation

XStreamPacketExtension<T> de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.create ( t)
IQ de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.createIQ ( t)
String de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getElementName ( )
PacketFilter de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getIQFilter ( )
String de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getNamespace ( )
PacketFilter de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getPacketFilter ( )

PacketFilter for Packets which contain a PacketExtension matching the XStreamExtensionProvider#elementName and XStreamExtensionProvider#namespace.

T de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getPayload ( Packet  packet)

Returns the payload transported in this packet for this extensions provider.

This method can handle IQ and PacketExtensions used for transferring payloads.

If the packet contains no matching data (or if the packet is null), null is returned.

Exceptions:
ClassCastExceptionif somebody has registered a PacketExtension under our XStreamExtensionProvider#elementName
T de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.getPayload ( PacketExtension  extension)
PacketExtension de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.parseExtension ( XmlPullParser  parser)
IQ de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.parseIQ ( XmlPullParser  parser) throws Exception
T de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.parseString ( String  string) throws IOException
void de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.registerConverter ( SingleValueConverter  converter)

Register additional SingleValueConverters at runtime. This is useful if a converter cannot be used isolatedly, e.g. because it requires a running Saros session.

Parameters:
converterThe SingleValueConverter to be registered to XStream. There can only be one instance per converter class. If a new instance of an already registered class is registered, the old instance will be replaced.
void de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.registerConverter ( Converter  converter)

Register additional Converters at runtime. This is useful if a converter cannot be used isolatedly, e.g. because it requires a running Saros session.

Parameters:
converterThe Converter to be registered to XStream. There can only be one instance per converter class. If a new instance of an already registered class is registered, the old instance will be replaced.
static void de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.setClassLoader ( ClassLoader  classLoader) [static]

Sets the class loader to use when a new provider is created. This class loader will be used by XStream to unmarshal the given packet extension.

Parameters:
classLoaderthe class loader to use or null to use the class loader the provider was loaded with
See also:
XStreamExtensionProvider(String, String, Class...)
void de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.unregisterConverter ( Converter  converter)

Unregisters a previously registered Converter from XStream.

Parameters:
converterIf this converter (more precisely: one of the same class) was registered through registerConverter(Converter), it will no longer be called by XStream. Otherwise, nothing happens.
void de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.unregisterConverter ( SingleValueConverter  converter)

Unregisters a previously registered SingleValueConverter from XStream.

Parameters:
converterIf this converter (more precisely: one of the same class) was registered through registerConverter(SingleValueConverter), it will no longer be called by XStream. Otherwise, nothing happens.

Member Data Documentation

final String de.fu_berlin.inf.dpp.misc.xstream.XStreamExtensionProvider< T >.elementName [protected]
 All Classes Namespaces Files Functions Variables Enumerations