Apache CXF API

org.apache.cxf.aegis.type.mtom
Class AbstractXOPType

java.lang.Object
  extended by org.apache.cxf.aegis.type.AegisType
      extended by org.apache.cxf.aegis.type.mtom.AbstractXOPType
Direct Known Subclasses:
ByteArrayType, DataHandlerType, DataSourceType

public abstract class AbstractXOPType
extends AegisType

Base class for MtoM types.


Field Summary
static String XML_MIME_ATTR_LOCAL_NAME
           
static QName XML_MIME_BASE64
           
static QName XML_MIME_CONTENT_TYPE
           
static String XML_MIME_NS
           
static QName XOP_HREF
           
static QName XOP_INCLUDE
           
static String XOP_NS
           
 
Fields inherited from class org.apache.cxf.aegis.type.AegisType
typeClass
 
Constructor Summary
AbstractXOPType(boolean useXmimeBinaryType, String expectedContentTypes)
          Create an XOP type.
 
Method Summary
 void addToSchemaElement(org.apache.ws.commons.schema.XmlSchemaElement schemaElement)
          If the type object merely wants to contribute attributes to the xsd:element element, it can implement this.
protected abstract  Attachment createAttachment(Object object, String id)
           
protected abstract  byte[] getBytes(Object object)
          if MtoM is not enabled, we need bytes to turn into base64.
protected abstract  String getContentType(Object object, Context context)
           
protected abstract  Object readAttachment(Attachment att, Context context)
           
 Object readMtoM(MessageReader reader, Context context)
          This is called from base64Type when it recognizes an XOP attachment.
 Object readObject(MessageReader reader, Context context)
          This defers to the plain base64 type, which calls back into here above for XOP.
 boolean usesXmime()
           
protected abstract  Object wrapBytes(byte[] bareBytes, String contentType)
          If one of these types arrives unoptimized, we need to convert it to the desired return type.
 void writeObject(Object object, MessageWriter writer, Context context)
          Writes the object to the MessageWriter.
 
Methods inherited from class org.apache.cxf.aegis.type.AegisType
equals, getDependencies, getMaxOccurs, getMinOccurs, getSchemaType, getType, getTypeClass, getTypeMapping, hashCode, hasMaxOccurs, hasMinOccurs, isAbstract, isComplex, isFlatArray, isNillable, isWriteOuter, setAbstract, setFlatArray, setNillable, setSchemaType, setTypeClass, setTypeMapping, setWriteOuter, toString, usesUtilityTypes, writeSchema
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

XOP_NS

public static final String XOP_NS
See Also:
Constant Field Values

XML_MIME_NS

public static final String XML_MIME_NS
See Also:
Constant Field Values

XML_MIME_ATTR_LOCAL_NAME

public static final String XML_MIME_ATTR_LOCAL_NAME
See Also:
Constant Field Values

XOP_INCLUDE

public static final QName XOP_INCLUDE

XML_MIME_CONTENT_TYPE

public static final QName XML_MIME_CONTENT_TYPE

XOP_HREF

public static final QName XOP_HREF

XML_MIME_BASE64

public static final QName XML_MIME_BASE64
Constructor Detail

AbstractXOPType

public AbstractXOPType(boolean useXmimeBinaryType,
                       String expectedContentTypes)
Create an XOP type. This type will use xmime to publish and receive the content type via xmime:base64Binary if useXmimeBinaryType is true. If expectedContentTypes != null, then it will use xmime to advertise expected content types.

Parameters:
useXmimeBinaryType - whether to use xmime:base64Binary.
expectedContentTypes - whether to public xmime:expectedContentTypes.
Method Detail

readMtoM

public Object readMtoM(MessageReader reader,
                       Context context)
                throws DatabindingException
This is called from base64Type when it recognizes an XOP attachment.

Parameters:
reader -
context -
Returns:
Throws:
DatabindingException

readObject

public Object readObject(MessageReader reader,
                         Context context)
                  throws DatabindingException
This defers to the plain base64 type, which calls back into here above for XOP. Read in the XML fragment and create an object.

Specified by:
readObject in class AegisType
Returns:
Throws:
DatabindingException

readAttachment

protected abstract Object readAttachment(Attachment att,
                                         Context context)
                                  throws IOException
Throws:
IOException

writeObject

public void writeObject(Object object,
                        MessageWriter writer,
                        Context context)
                 throws DatabindingException
Description copied from class: AegisType
Writes the object to the MessageWriter.

Specified by:
writeObject in class AegisType
Throws:
DatabindingException

createAttachment

protected abstract Attachment createAttachment(Object object,
                                               String id)

getContentType

protected abstract String getContentType(Object object,
                                         Context context)

wrapBytes

protected abstract Object wrapBytes(byte[] bareBytes,
                                    String contentType)
If one of these types arrives unoptimized, we need to convert it to the desired return type.

Parameters:
bareBytes - the bytes pulled out of the base64.
contentType - when we support xmime:contentType, this will be passed along.
Returns:

getBytes

protected abstract byte[] getBytes(Object object)
if MtoM is not enabled, we need bytes to turn into base64.

Returns:

addToSchemaElement

public void addToSchemaElement(org.apache.ws.commons.schema.XmlSchemaElement schemaElement)
Description copied from class: AegisType
If the type object merely wants to contribute attributes to the xsd:element element, it can implement this.

Overrides:
addToSchemaElement in class AegisType

usesXmime

public boolean usesXmime()
Overrides:
usesXmime in class AegisType

Apache CXF API

Apache CXF