in activemq-kahadb-exporter/src/main/java/org/apache/activemq/cli/artemis/schema/ArtemisJournalMarshaller.java [122:167]
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String m = method.getName();
boolean useCData = false;
switch (m) {
case "writeStartElement":
target.writeCharacters(LINE_SEPARATOR);
target.writeCharacters(indent(depth));
depth++;
break;
case "writeEndElement":
depth--;
if (wrap) {
target.writeCharacters(LINE_SEPARATOR);
target.writeCharacters(indent(depth));
}
wrap = true;
break;
case "writeEmptyElement":
case "writeCData":
target.writeCharacters(LINE_SEPARATOR);
target.writeCharacters(indent(depth));
break;
case "writeCharacters":
useCData = XML_CHARS.matcher( (String)args[0] ).find();
if (!useCData) {
wrap = false;
break;
} else {
target.writeCharacters(LINE_SEPARATOR);
target.writeCharacters(indent(depth));
break;
}
}
if (useCData) {
Method cdata = XMLStreamWriter.class.getMethod("writeCData", String.class);
args[0] = ((String)args[0]).replace("<![CDATA[", "").replace("]]>", "");
cdata.invoke(target, args);
} else {
method.invoke(target, args);
}
return null;
}