protected void internalSerialize(XMLStreamWriter writer,
boolean cache) throws XMLStreamException {
// select the builder
short builderType = PULL_TYPE_BUILDER; // default is pull type
if (builder != null) {
builderType = this.builder.getBuilderType();
}
if ((builderType == PUSH_TYPE_BUILDER)
&& (builder.getRegisteredContentHandler() == null)) {
builder.registerExternalContentHandler(
new StreamWriterToContentHandlerConverter(writer));
}
if (!cache) {
//No caching
if (this.firstChild != null) {
OMSerializerUtil.serializeStartpart(this, writer);
firstChild.internalSerializeAndConsume(writer);
OMSerializerUtil.serializeEndpart(writer);
} else if (!this.done) {
if (builderType == PULL_TYPE_BUILDER) {
OMSerializerUtil.serializeByPullStream(this, writer);
} else {
OMSerializerUtil.serializeStartpart(this, writer);
builder.setCache(cache);
builder.next();
OMSerializerUtil.serializeEndpart(writer);
}
} else {
OMSerializerUtil.serializeNormal(this, writer, cache);
}
// do not serialise the siblings
} else {
//Cached
OMSerializerUtil.serializeNormal(this, writer, cache);
// do not serialise the siblings
}
}
|