EXTERNAL_type rec = null;
if ( fragment.getOriginalObject() instanceof Document ) {
rec = new EXTERNAL_type();
rec.direct_reference = reg.oidByName("xml");
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.octet_aligned_CID;
try {
Document d = (Document) fragment.getOriginalObject();
log.debug("serialize "+d);
OutputFormat format = new OutputFormat( "xml","utf-8",false );
format.setOmitXMLDeclaration(true);
java.io.StringWriter stringOut = new java.io.StringWriter();
XMLSerializer serial = new XMLSerializer( stringOut,format );
serial.setNamespaces(true);
serial.asDOMSerializer();
serial.serialize( d.getDocumentElement() );
rec.encoding.o = stringOut.toString().getBytes("UTF-8");
}
catch( Exception e ) {
e.printStackTrace();
rec.encoding.o = new String(e.toString()).getBytes();
}
}
else if ( fragment.getFormatSpecification().getEncoding().toString().equals("iso2709") ) {
rec = new EXTERNAL_type();
rec.direct_reference = reg.oidByName(fragment.getFormatSpecification().getSchema().toString());
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.octet_aligned_CID;
rec.encoding.o = (byte[])(fragment.getOriginalObject());
}
else if ( fragment.getOriginalObject() instanceof String )
{
rec = new EXTERNAL_type();
rec.direct_reference = reg.oidByName("sutrs");
rec.encoding = new encoding_inline0_type();
rec.encoding.which = encoding_inline0_type.single_asn1_type_CID;
rec.encoding.o = fragment.toString();
}
else {
throw new RuntimeException("unhandled object encoding: "+fragment.getFormatSpecification());