com.idoox.wasp.serialization
Class SerializationHelper

java.lang.Object
  extended bycom.idoox.wasp.serialization.SerializationHelper

public class SerializationHelper
extends java.lang.Object

This class is a helper to the serialization/deserialization of java objects. Usage:


 public class MyDeserializer implements Deserializer {

    public Object deserialize(...) {

        // skip start of the structure
        tokenizer.nextToken();

        // deserialize the first member
        Object theFirst =
            SerializationHelper.deserialize(tokenizer,
                                            ClassBeingDeserialized.class,
                                            context);

        // deserialize the second member
        Object theSecond =
            SerializationHelper.deserialize(tokenizer,
                                            ClassBeingDeserialized.class,
                                            context);
    }
 }

 public class MySerializer implements Serializer {

    public void serialize(...) {

       // write soap start of the structure
       Member structure = context.getCurrentMember();
       writer.writeStructureStart(structure.getName(),
                                  structure.getType().getName(),
                                  arrayPos, null);


       // enter into the structure
       SerializerContext.State state = context.enterCurrentMember();


       // goto the first member of the structure
       context.nextMember();

       // serialize the two members
       SerializationHelper.serialize(writer, theFirst,  null, context);
       SerializationHelper.serialize(writer, theSecond, null, context);

       // leave the structure
       context.leave(state);

       // write the end of structure
       writer.writeStructureEnd();
    }


    public void grabReferences(...) {

       Member structure = context.getCurrentMember();

       // if was not processed before
       if (context.registerReference(objectToSerialize, structure.getType())<0) {

         // enter into the structure
         SerializerContext.State state = context.enterCurrentMember();


         // goto the first member of the structure
         context.nextMember();

         // serialize the two members
         SerializationHelper.grabReferences(theFirst,  context);
         SerializationHelper.grabReferences(theSecond, context);

         // leave the structure
         context.leave(state);
       }
    }
 }


 


Field Summary
static com.idoox.debug.IndentCategory dcat
          Internal use, only.
 
Method Summary
static void assertCanBeNil(SchemaConstruct currentSchemaConstruct, Token token)
           
static java.lang.Object deserialize(EncodingTokenizer dataTokenizer, java.lang.Class targetClass, DeserializationContext ctx)
          Deserializes a part of XML stream (SOAP Sec.5 Encoded) into Java objects.
static java.lang.Object deserialize(EncodingTokenizer dataTokenizer, java.lang.Class targetClass, DeserializationContext ctx, boolean arrayItem)
          Deserializes a part of XML stream (SOAP Sec.5 Encoded) into Java objects.
static java.lang.Object deserialize(EncodingTokenizer dataTokenizer, java.lang.Class targetClass, DeserializationContext ctx, java.lang.Object context)
          For internal purposes only.
static java.lang.Object deserialize(EncodingTokenizer dataTokenizer, java.lang.Class targetClass, DeserializationContext ctx, java.lang.Object context, boolean arrayItem)
          For internal purposes only.
static java.lang.Object deserialize(Tokenizer dataTokenizer, Token currentToken, java.lang.Class targetClass, DeserializationContext ctx)
          Deserializes a part of XML stream into Java objects.
static java.lang.Object deserialize(Tokenizer dataTokenizer, Token currentToken, java.lang.Class targetClass, DeserializationContext ctx, java.lang.Object context)
          For internal use only.
static java.lang.Object deserializeCurrent(Tokenizer dataTokenizer, Token currentToken, java.lang.Class targetClass, DeserializationContext ctx)
           
static java.lang.Object deserializeElement(EncodingTokenizer dataTokenizer, java.lang.Class targetClass, DeserializationContext ctx, boolean arrayItem)
           
static java.lang.Object deserializeElement(Tokenizer dataTokenizer, Token currentToken, java.lang.Class targetClass, DeserializationContext ctx)
          Deserializes a part of XML stream into Java objects.
static java.lang.Exception deserializeFaultElement(Tokenizer dataTokenizer, Token currentToken, java.lang.Class targetClass, DeserializationContext ctx)
           
static java.lang.String getDimeReference(Token token)
          Reads ref:location attribute value.
static java.lang.String getId(Token token)
          Reads id attribute value.
static java.lang.String getReference(Token token)
          Reads href attribute value.
static QName getXsiType(Tokenizer tokenizer, Token token)
          Reads xsi:type attribute value.
static void grabReferences(java.lang.Object value, SerializationContext context)
          Collects all the references of value.
This method is equivalent to serialize() method except that the serialize() provides conversion of Java objects in XML objects.
static boolean isAnyComplexType(SchemaContext context)
          For internal purposes only.
static boolean isNil(Token token)
          Tests if a token is null (xsi:nil="true" attribute).
static byte nextNonWhitespace(Tokenizer tokenizer)
          Moves Tokenizer to next token.
static java.lang.String readTextContent(Tokenizer tokenizer)
          Reads a text content from Tokenizer.
static Member serialize(EncodingTokenWriter dataTokenWriter, java.lang.Object data, int[] arrayPos, SerializationContext context)
          Serializes a Java objects into part of XML stream (SOAP Sec.5 Encoded).
static void serialize(TokenWriter dataTokenWriter, java.lang.Object data, SerializationContext context)
          Serializes a Java objects into part of XML stream.
static void writeDimeReference(TokenWriter dataTokenWriter, QName name, java.lang.String ref)
          Writes <element ref:location="#"/> into a TokenWriter.
static void writeID(TokenWriter dataTokenWriter, java.lang.String id)
          Writes id attribute value into a TokenWriter.
static void writeNil(TokenWriter dataTokenWriter, QName name)
          Writes <element xsi:nil="true"/> into a TokenWriter.
static void writeReference(TokenWriter dataTokenWriter, QName name, java.lang.String ref)
          Writes <element href="#"/> into a TokenWriter.
static void writeXsiType(TokenWriter tokenWriter, QName type)
          Writes xsi:type attribute into a TokenWriter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dcat

public static com.idoox.debug.IndentCategory dcat
Internal use, only.

Method Detail

deserialize

public static java.lang.Object deserialize(EncodingTokenizer dataTokenizer,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx,
                                           java.lang.Object context)
                                    throws MessageProcessingException
For internal purposes only.

Throws:
MessageProcessingException

deserialize

public static java.lang.Object deserialize(EncodingTokenizer dataTokenizer,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx,
                                           java.lang.Object context,
                                           boolean arrayItem)
                                    throws MessageProcessingException
For internal purposes only.

Throws:
MessageProcessingException

deserialize

public static java.lang.Object deserialize(Tokenizer dataTokenizer,
                                           Token currentToken,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx,
                                           java.lang.Object context)
                                    throws MessageProcessingException
For internal use only.

Throws:
MessageProcessingException

deserialize

public static java.lang.Object deserialize(Tokenizer dataTokenizer,
                                           Token currentToken,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx)
                                    throws MessageProcessingException
Deserializes a part of XML stream into Java objects.

Parameters:
dataTokenizer - a Tokenizer to read from
currentToken - a current token in the Tokenizer
targetClass - a targetClass which is required to deserialize into
ctx - a deserialization context
Returns:
the deserialized Java object
Throws:
MessageProcessingException

deserializeCurrent

public static java.lang.Object deserializeCurrent(Tokenizer dataTokenizer,
                                                  Token currentToken,
                                                  java.lang.Class targetClass,
                                                  DeserializationContext ctx)
                                           throws MessageProcessingException
Parameters:
dataTokenizer -
currentToken -
targetClass -
ctx -
Returns:
Throws:
MessageProcessingException

deserialize

public static java.lang.Object deserialize(EncodingTokenizer dataTokenizer,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx)
                                    throws MessageProcessingException
Deserializes a part of XML stream (SOAP Sec.5 Encoded) into Java objects.

Parameters:
dataTokenizer - an EncodingTokenizer to read from
targetClass - a targetClass which is required to deserialize into
ctx - a deserialization context
Returns:
the deserialized Java object
Throws:
MessageProcessingException

deserialize

public static java.lang.Object deserialize(EncodingTokenizer dataTokenizer,
                                           java.lang.Class targetClass,
                                           DeserializationContext ctx,
                                           boolean arrayItem)
                                    throws MessageProcessingException
Deserializes a part of XML stream (SOAP Sec.5 Encoded) into Java objects.

Parameters:
dataTokenizer - an EncodingTokenizer to read from
targetClass - a targetClass which is required to deserialize into
ctx - a deserialization context
arrayItem - if the deserialized object is an item of array
Returns:
the deserialized Java object
Throws:
MessageProcessingException

deserializeElement

public static java.lang.Object deserializeElement(EncodingTokenizer dataTokenizer,
                                                  java.lang.Class targetClass,
                                                  DeserializationContext ctx,
                                                  boolean arrayItem)
                                           throws MessageProcessingException
Throws:
MessageProcessingException

deserializeElement

public static java.lang.Object deserializeElement(Tokenizer dataTokenizer,
                                                  Token currentToken,
                                                  java.lang.Class targetClass,
                                                  DeserializationContext ctx)
                                           throws MessageProcessingException
Deserializes a part of XML stream into Java objects.

Parameters:
dataTokenizer - a Tokenizer to read from
currentToken - a current token in the Tokenizer
targetClass - a targetClass which is required to deserialize into
ctx - a deserialization context
Returns:
the deserialized Java object
Throws:
MessageProcessingException

deserializeFaultElement

public static java.lang.Exception deserializeFaultElement(Tokenizer dataTokenizer,
                                                          Token currentToken,
                                                          java.lang.Class targetClass,
                                                          DeserializationContext ctx)
                                                   throws MessageProcessingException
Throws:
MessageProcessingException

serialize

public static void serialize(TokenWriter dataTokenWriter,
                             java.lang.Object data,
                             SerializationContext context)
                      throws MessageCreatingException
Serializes a Java objects into part of XML stream.

Parameters:
dataTokenWriter - a TokenWriter into which the object is written
data - the data being serialized
context - a context used for serialization of the object
Throws:
MessageCreatingException

serialize

public static Member serialize(EncodingTokenWriter dataTokenWriter,
                               java.lang.Object data,
                               int[] arrayPos,
                               SerializationContext context)
                        throws MessageCreatingException
Serializes a Java objects into part of XML stream (SOAP Sec.5 Encoded).

Parameters:
dataTokenWriter - an EncodingTokenWriter into which the object is written
data - the data being serialized
arrayPos - if the data is a member of sparse array, this is the position within the sparse array, otherwise null
context - context used for serialization of the object
Returns:
the next construct that should be serialized
Throws:
MessageCreatingException

grabReferences

public static void grabReferences(java.lang.Object value,
                                  SerializationContext context)
                           throws MessageCreatingException
Collects all the references of value.
This method is equivalent to serialize() method except that the serialize() provides conversion of Java objects in XML objects. Instead, grabReferences() walks through the Java objects and collects multireferences in the structure for later usage by serialization itself.

Parameters:
value - the value that is to be collected
context - the context of the serialization
Throws:
MessageCreatingException

writeReference

public static void writeReference(TokenWriter dataTokenWriter,
                                  QName name,
                                  java.lang.String ref)
                           throws java.io.IOException
Writes <element href="#"/> into a TokenWriter.

Parameters:
dataTokenWriter - the TokenWriter to write into
name - element's name to write
ref - the reference identificator
Throws:
java.io.IOException

writeDimeReference

public static void writeDimeReference(TokenWriter dataTokenWriter,
                                      QName name,
                                      java.lang.String ref)
                               throws java.io.IOException
Writes <element ref:location="#"/> into a TokenWriter.

Parameters:
dataTokenWriter - the TokenWriter to write into
name - element's name to write
ref - the reference identificator
Throws:
java.io.IOException

writeXsiType

public static void writeXsiType(TokenWriter tokenWriter,
                                QName type)
                         throws java.io.IOException
Writes xsi:type attribute into a TokenWriter.

Parameters:
tokenWriter - the TokenWriter to write into
type - the xsi:type to write
Throws:
java.io.IOException

writeNil

public static void writeNil(TokenWriter dataTokenWriter,
                            QName name)
                     throws java.io.IOException
Writes <element xsi:nil="true"/> into a TokenWriter.

Parameters:
dataTokenWriter - the TokenWriter to write into
name - element's name to write
Throws:
java.io.IOException

writeID

public static void writeID(TokenWriter dataTokenWriter,
                           java.lang.String id)
                    throws java.io.IOException
Writes id attribute value into a TokenWriter.

Parameters:
dataTokenWriter - the TokenWriter to write into
id - id value to write
Throws:
java.io.IOException

getId

public static java.lang.String getId(Token token)
Reads id attribute value.

Parameters:
token - a token to read on
Returns:
the id attribute value

getReference

public static java.lang.String getReference(Token token)
Reads href attribute value.

Parameters:
token - a token to read on
Returns:
the href attribute value

getDimeReference

public static java.lang.String getDimeReference(Token token)
Reads ref:location attribute value.

Parameters:
token - a token to read on
Returns:
the href attribute value

getXsiType

public static QName getXsiType(Tokenizer tokenizer,
                               Token token)
Reads xsi:type attribute value. This value is already parsed into a QName.

Parameters:
tokenizer - Tokenizer to read namespace-prefix mapping from
token - the Token to read xsi:type on
Returns:
the parsed value of xsi:type

assertCanBeNil

public static void assertCanBeNil(SchemaConstruct currentSchemaConstruct,
                                  Token token)

isNil

public static boolean isNil(Token token)
Tests if a token is null (xsi:nil="true" attribute).

Parameters:
token - the token to test
Returns:
true if token is null, false otherwise

nextNonWhitespace

public static byte nextNonWhitespace(Tokenizer tokenizer)
                              throws MessageProcessingException,
                                     java.io.IOException,
                                     TokenizerException
Moves Tokenizer to next token. Any whitespace is skipped.

Parameters:
tokenizer - Tokenizer to move
Returns:
a state of the Tokenizer
Throws:
MessageProcessingException
java.io.IOException
TokenizerException

readTextContent

public static java.lang.String readTextContent(Tokenizer tokenizer)
                                        throws java.io.IOException,
                                               TokenizerException
Reads a text content from Tokenizer. Checks, if all the content was read.

Parameters:
tokenizer - a Tokenizer to read from
Returns:
the text content
Throws:
java.io.IOException
TokenizerException

isAnyComplexType

public static boolean isAnyComplexType(SchemaContext context)
For internal purposes only.