blob: 231c57145391baf186830076059dc5c466a22394 [file] [log] [blame]
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<!-- ################################################################################# -->
<!-- ############################ jaxme template ############################## -->
<xsl:template match="databinders[@dbtype='jaxme']">
<xsl:variable name="base64"><xsl:value-of select="base64Elements/name"/></xsl:variable>
<xsl:if test="$base64">
private static javax.xml.namespace.QName[] qNameArray = {
<xsl:for-each select="base64Elements/name">
<xsl:if test="position()>1">,</xsl:if>new javax.xml.namespace.QName("<xsl:value-of select="@ns-url"/>","<xsl:value-of select="@localName"/>")
</xsl:for-each>
};
</xsl:if>
private org.apache.axiom.om.OMElement toOM(Object param) {
try {
javax.xml.bind.JAXBContext ctx = javax.xml.bind.JAXBContext.newInstance(param.getClass().getInterfaces()[0].getPackage()
.getName());
org.apache.axiom.om.impl.builder.SAXOMBuilder builder = new org.apache.axiom.om.impl.builder.SAXOMBuilder();
javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
marshaller.marshal(param, builder);
return builder.getRootElement();
} catch (javax.xml.bind.JAXBException e) {
throw new RuntimeException(e);
}
}
private org.apache.axiom.soap.SOAPEnvelope toEnvelope(
org.apache.axiom.soap.SOAPFactory factory, Object param, boolean optimizeContent) {
org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();
if (param != null){
envelope.getBody().addChild(toOM(param));
}
return envelope;
}
public java.lang.Object fromOM(org.apache.axiom.om.OMElement param,
java.lang.Class type,
java.util.Map extraNamespaces){
try{
javax.xml.transform.Source source =
new javanet.staxutils.StAXSource(param.getXMLStreamReader());
javax.xml.bind.JAXBContext ctx = javax.xml.bind.JAXBContext.newInstance(
type.getPackage().getName());
javax.xml.bind.Unmarshaller u = ctx.createUnmarshaller();
return u.unmarshal(source);
} catch(java.lang.Exception e) {
throw new RuntimeException("Data binding error",e);
}
}
<!-- Generate the base 64 optimize methods only if the base64 items are present -->
<xsl:if test="$base64">
private void optimizeContent(org.apache.axiom.om.OMElement element, javax.xml.namespace.QName[] qNames){
for (int i = 0; i &lt; qNames.length; i++) {
markElementsAsOptimized(qNames[i],element);
}
}
private void markElementsAsOptimized(javax.xml.namespace.QName qName,org.apache.axiom.om.OMElement rootElt){
if (rootElt.getQName().equals(qName)){
//get the text node and mark it
org.apache.axiom.om.OMNode node = rootElt.getFirstOMChild();
if (node.getType()==org.apache.axiom.om.OMNode.TEXT_NODE){
((org.apache.axiom.om.OMText)node).setOptimize(true);
}
}
java.util.Iterator childElements = rootElt.getChildElements();
while (childElements.hasNext()) {
markElementsAsOptimized(qName,(org.apache.axiom.om.OMElement)childElements.next());
}
}
</xsl:if>
</xsl:template>
</xsl:stylesheet>