I am using multiple XStream
instances in a same class.
Is the below implementation of an XStream
factory thread-safe, and are there any significant performance implications?
public final class XStreamFactory {
private XStreamFactory() {
}
public static XStream getXstream(Class<?> clazz) {
XStream xstream = new XStream() {
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(@SuppressWarnings("rawtypes") Class definedIn, String fieldName) {
if (definedIn == Object.class)
return false;
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
};
if (clazz != null) {
xstream.autodetectAnnotations(Boolean.TRUE);
xstream.processAnnotations(clazz);
}
return xstream;
}
}
Converting XML to Java
Public class Resposne {
private XStream xstream1=XStreamFactory.getXstream(XClass1.class);
private XStream xstream2=XStreamFactory.getXstream(XClass2.class);
public XClass1 readReplyOne(String reply1){
return (XClass1) xstream1.fromXML(reply1)
}
public XClass2 readReplyOne(String reply2){
return (XClass2) xstream2.fromXML(reply2)
}
}