package com.nortal.jroad.util;
import java.io.IOException;
import java.io.StringWriter;
import javax.xml.namespace.QName;
import org.apache.axis.AxisEngine;
import org.apache.axis.MessageContext;
import org.apache.axis.description.TypeDesc;
import org.apache.axis.encoding.SerializationContext;
import org.apache.axis.encoding.TypeMappingRegistryImpl;
import org.apache.axis.encoding.ser.BeanSerializer;
import org.xml.sax.helpers.AttributesImpl;
/**
* Axis utility class used for serialization of Axis objects.
*
* @author Dmitri Danilkin
*/
public class AxisUtil {
public static String serialize(Object obj) throws IOException {
TypeDesc desc = TypeDesc.getTypeDescForClass(obj.getClass());
BeanSerializer serializer = new BeanSerializer(obj.getClass(), desc.getXmlType(), desc);
MessageContext mctx = new MessageContext(null);
mctx.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION, true);
mctx.setProperty(AxisEngine.PROP_SEND_XSI, true);
mctx.setTypeMappingRegistry(new TypeMappingRegistryImpl());
StringWriter writer = new StringWriter();
SerializationContext ctx = new SerializationContext(writer, mctx);
ctx.setPretty(false);
ctx.setSendDecl(true);
ctx.setDoMultiRefs(false);
serializer.serialize(new QName("keha"), new AttributesImpl(), obj, ctx);
return writer.getBuffer().toString();
}
}