DynamicSOAPEnvelope.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */

  20. package org.openspcoop2.message.soap.dynamic;

  21. import java.util.Iterator;

  22. import javax.xml.namespace.QName;
  23. import javax.xml.soap.Name;
  24. import javax.xml.soap.Node;
  25. import javax.xml.soap.SOAPBody;
  26. import javax.xml.soap.SOAPElement;
  27. import javax.xml.soap.SOAPException;
  28. import javax.xml.soap.SOAPHeader;

  29. import org.openspcoop2.message.soap.AbstractOpenSPCoop2Message_saaj_impl;
  30. import org.openspcoop2.message.soap.AbstractOpenSPCoop2Message_soap_impl;
  31. import org.w3c.dom.Attr;
  32. import org.w3c.dom.DOMException;
  33. import org.w3c.dom.Document;
  34. import org.w3c.dom.NamedNodeMap;
  35. import org.w3c.dom.NodeList;
  36. import org.w3c.dom.TypeInfo;
  37. import org.w3c.dom.UserDataHandler;

  38. /**
  39.  * DynamicSOAPEnvelope
  40.  *
  41.  * @author Andrea Poli (poli@link.it)
  42.  * @author $Author$
  43.  * @version $Rev$, $Date$
  44.  */
  45. public class DynamicSOAPEnvelope<T extends AbstractOpenSPCoop2Message_saaj_impl> implements javax.xml.soap.SOAPEnvelope {

  46.     private AbstractOpenSPCoop2Message_soap_impl<T> wrapped;
  47.     public DynamicSOAPEnvelope(AbstractOpenSPCoop2Message_soap_impl<T> wrapped) {
  48.         this.wrapped = wrapped;
  49.     }

  50.     private javax.xml.soap.SOAPEnvelope _getSOAPEnvelope(){
  51.         try {
  52.             return this.wrapped.getContent().getSOAPPart().getEnvelope();
  53.         }catch(Exception e) {
  54.             throw new RuntimeException(e.getMessage(),e);
  55.         }
  56.     }
  57.    
  58.    

  59.     // Metodi ottimizzati per il dynamic behaviour
  60.    
  61.     private DynamicSOAPHeader<T> dynamic;
  62.    
  63.     @Override
  64.     public SOAPHeader addHeader() throws SOAPException {
  65.         if(this.wrapped.isSoapHeaderOptimizable()) {
  66.             if(this.dynamic==null) {
  67.                 try {
  68.                     this.wrapped.getSoapReader().addHeader();
  69.                 }catch(Exception e) {
  70.                     throw new SOAPException(e.getMessage(),e);
  71.                 }
  72.                 this.dynamic = new DynamicSOAPHeader<T>(this.wrapped);
  73.                
  74.             }
  75.             return this.dynamic;
  76.         }
  77.         return _getSOAPEnvelope().addHeader();
  78.     }
  79.    
  80.     @Override
  81.     public SOAPHeader getHeader() throws SOAPException {
  82.         if(this.wrapped.isSoapHeaderOptimizable()) {
  83.             if(this.dynamic==null) {
  84.                 this.dynamic = new DynamicSOAPHeader<T>(this.wrapped);
  85.             }
  86.             return this.dynamic;
  87.         }
  88.         return _getSOAPEnvelope().getHeader();
  89.     }
  90.    
  91.     public void clearDynamicResources() {
  92.         this.dynamic=null;
  93.     }
  94.    
  95.    
  96.    
  97.     // Metodi implementati in SAAJ

  98.     @Override
  99.     public SOAPElement addAttribute(Name arg0, String arg1) throws SOAPException {
  100.         return _getSOAPEnvelope().addAttribute(arg0, arg1);
  101.     }

  102.     @Override
  103.     public SOAPElement addAttribute(QName arg0, String arg1) throws SOAPException {
  104.         return _getSOAPEnvelope().addAttribute(arg0, arg1);
  105.     }

  106.     @Override
  107.     public SOAPElement addChildElement(Name arg0) throws SOAPException {
  108.         return _getSOAPEnvelope().addChildElement(arg0);
  109.     }

  110.     @Override
  111.     public SOAPElement addChildElement(QName arg0) throws SOAPException {
  112.         return _getSOAPEnvelope().addChildElement(arg0);
  113.     }

  114.     @Override
  115.     public SOAPElement addChildElement(String arg0) throws SOAPException {
  116.         return _getSOAPEnvelope().addChildElement(arg0);
  117.     }

  118.     @Override
  119.     public SOAPElement addChildElement(SOAPElement arg0) throws SOAPException {
  120.         return _getSOAPEnvelope().addChildElement(arg0);
  121.     }

  122.     @Override
  123.     public SOAPElement addChildElement(String arg0, String arg1) throws SOAPException {
  124.         return _getSOAPEnvelope().addChildElement(arg0, arg1);
  125.     }

  126.     @Override
  127.     public SOAPElement addChildElement(String arg0, String arg1, String arg2) throws SOAPException {
  128.         return _getSOAPEnvelope().addChildElement(arg0, arg1, arg2);
  129.     }

  130.     @Override
  131.     public SOAPElement addNamespaceDeclaration(String arg0, String arg1) throws SOAPException {
  132.         return _getSOAPEnvelope().addNamespaceDeclaration(arg0, arg1);
  133.     }

  134.     @Override
  135.     public SOAPElement addTextNode(String arg0) throws SOAPException {
  136.         return _getSOAPEnvelope().addTextNode(arg0);
  137.     }

  138.     @Override
  139.     public QName createQName(String arg0, String arg1) throws SOAPException {
  140.         return _getSOAPEnvelope().createQName(arg0, arg1);
  141.     }

  142.     @Override
  143.     public Iterator<Name> getAllAttributes() {
  144.         return _getSOAPEnvelope().getAllAttributes();
  145.     }

  146.     @Override
  147.     public Iterator<QName> getAllAttributesAsQNames() {
  148.         return _getSOAPEnvelope().getAllAttributesAsQNames();
  149.     }

  150.     @Override
  151.     public String getAttributeValue(Name arg0) {
  152.         return _getSOAPEnvelope().getAttributeValue(arg0);
  153.     }

  154.     @Override
  155.     public String getAttributeValue(QName arg0) {
  156.         return _getSOAPEnvelope().getAttributeValue(arg0);
  157.     }

  158.     @Override
  159.     public Iterator<Node> getChildElements() {
  160.         return _getSOAPEnvelope().getChildElements();
  161.     }

  162.     @Override
  163.     public Iterator<Node> getChildElements(Name arg0) {
  164.         return _getSOAPEnvelope().getChildElements(arg0);
  165.     }

  166.     @Override
  167.     public Iterator<Node> getChildElements(QName arg0) {
  168.         return _getSOAPEnvelope().getChildElements(arg0);
  169.     }

  170.     @Override
  171.     public Name getElementName() {
  172.         return _getSOAPEnvelope().getElementName();
  173.     }

  174.     @Override
  175.     public QName getElementQName() {
  176.         return _getSOAPEnvelope().getElementQName();
  177.     }

  178.     @Override
  179.     public String getEncodingStyle() {
  180.         return _getSOAPEnvelope().getEncodingStyle();
  181.     }

  182.     @Override
  183.     public Iterator<String> getNamespacePrefixes() {
  184.         return _getSOAPEnvelope().getNamespacePrefixes();
  185.     }

  186.     @Override
  187.     public String getNamespaceURI(String arg0) {
  188.         return _getSOAPEnvelope().getNamespaceURI(arg0);
  189.     }

  190.     @Override
  191.     public Iterator<String> getVisibleNamespacePrefixes() {
  192.         return _getSOAPEnvelope().getVisibleNamespacePrefixes();
  193.     }

  194.     @Override
  195.     public boolean removeAttribute(Name arg0) {
  196.         return _getSOAPEnvelope().removeAttribute(arg0);
  197.     }

  198.     @Override
  199.     public boolean removeAttribute(QName arg0) {
  200.         return _getSOAPEnvelope().removeAttribute(arg0);
  201.     }

  202.     @Override
  203.     public void removeContents() {
  204.         _getSOAPEnvelope().removeContents();
  205.     }

  206.     @Override
  207.     public boolean removeNamespaceDeclaration(String arg0) {
  208.         return _getSOAPEnvelope().removeNamespaceDeclaration(arg0);
  209.     }

  210.     @Override
  211.     public SOAPElement setElementQName(QName arg0) throws SOAPException {
  212.         return _getSOAPEnvelope().setElementQName(arg0);
  213.     }

  214.     @Override
  215.     public void setEncodingStyle(String arg0) throws SOAPException {
  216.         _getSOAPEnvelope().setEncodingStyle(arg0);
  217.     }

  218.     @Override
  219.     public void detachNode() {
  220.         _getSOAPEnvelope().detachNode();
  221.     }

  222.     @Override
  223.     public SOAPElement getParentElement() {
  224.         return _getSOAPEnvelope().getParentElement();
  225.     }

  226.     @Override
  227.     public String getValue() {
  228.         return _getSOAPEnvelope().getValue();
  229.     }

  230.     @Override
  231.     public void recycleNode() {
  232.         _getSOAPEnvelope().recycleNode();
  233.     }

  234.     @Override
  235.     public void setParentElement(SOAPElement arg0) throws SOAPException {
  236.         _getSOAPEnvelope().setParentElement(arg0);
  237.     }

  238.     @Override
  239.     public void setValue(String arg0) {
  240.         _getSOAPEnvelope().setValue(arg0);
  241.     }

  242.     @Override
  243.     public String getNodeName() {
  244.         return _getSOAPEnvelope().getNodeName();
  245.     }

  246.     @Override
  247.     public String getNodeValue() throws DOMException {
  248.         return _getSOAPEnvelope().getNodeValue();
  249.     }

  250.     @Override
  251.     public void setNodeValue(String nodeValue) throws DOMException {
  252.         _getSOAPEnvelope().setNodeValue(nodeValue);
  253.     }

  254.     @Override
  255.     public short getNodeType() {
  256.         return _getSOAPEnvelope().getNodeType();
  257.     }

  258.     @Override
  259.     public org.w3c.dom.Node getParentNode() {
  260.         return _getSOAPEnvelope().getParentNode();
  261.     }

  262.     @Override
  263.     public NodeList getChildNodes() {
  264.         return _getSOAPEnvelope().getChildNodes();
  265.     }

  266.     @Override
  267.     public org.w3c.dom.Node getFirstChild() {
  268.         return _getSOAPEnvelope().getFirstChild();
  269.     }

  270.     @Override
  271.     public org.w3c.dom.Node getLastChild() {
  272.         return _getSOAPEnvelope().getLastChild();
  273.     }

  274.     @Override
  275.     public org.w3c.dom.Node getPreviousSibling() {
  276.         return _getSOAPEnvelope().getPreviousSibling();
  277.     }

  278.     @Override
  279.     public org.w3c.dom.Node getNextSibling() {
  280.         return _getSOAPEnvelope().getNextSibling();
  281.     }

  282.     @Override
  283.     public NamedNodeMap getAttributes() {
  284.         return _getSOAPEnvelope().getAttributes();
  285.     }

  286.     @Override
  287.     public Document getOwnerDocument() {
  288.         return _getSOAPEnvelope().getOwnerDocument();
  289.     }

  290.     @Override
  291.     public org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild) throws DOMException {
  292.         return _getSOAPEnvelope().insertBefore(newChild, refChild);
  293.     }

  294.     @Override
  295.     public org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild) throws DOMException {
  296.         return _getSOAPEnvelope().replaceChild(newChild, oldChild);
  297.     }

  298.     @Override
  299.     public org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild) throws DOMException {
  300.         return _getSOAPEnvelope().removeChild(oldChild);
  301.     }

  302.     @Override
  303.     public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild) throws DOMException {
  304.         return _getSOAPEnvelope().appendChild(newChild);
  305.     }

  306.     @Override
  307.     public boolean hasChildNodes() {
  308.         return _getSOAPEnvelope().hasChildNodes();
  309.     }

  310.     @Override
  311.     public org.w3c.dom.Node cloneNode(boolean deep) {
  312.         return _getSOAPEnvelope().cloneNode(deep);
  313.     }

  314.     @Override
  315.     public void normalize() {
  316.         _getSOAPEnvelope().normalize();
  317.     }

  318.     @Override
  319.     public boolean isSupported(String feature, String version) {
  320.         return _getSOAPEnvelope().isSupported(feature, version);
  321.     }

  322.     @Override
  323.     public String getNamespaceURI() {
  324.         return _getSOAPEnvelope().getNamespaceURI();
  325.     }

  326.     @Override
  327.     public String getPrefix() {
  328.         return _getSOAPEnvelope().getPrefix();
  329.     }

  330.     @Override
  331.     public void setPrefix(String prefix) throws DOMException {
  332.         _getSOAPEnvelope().setPrefix(prefix);
  333.     }

  334.     @Override
  335.     public String getLocalName() {
  336.         return _getSOAPEnvelope().getLocalName();
  337.     }

  338.     @Override
  339.     public boolean hasAttributes() {
  340.         return _getSOAPEnvelope().hasAttributes();
  341.     }

  342.     @Override
  343.     public String getBaseURI() {
  344.         return _getSOAPEnvelope().getBaseURI();
  345.     }

  346.     @Override
  347.     public short compareDocumentPosition(org.w3c.dom.Node other) throws DOMException {
  348.         return _getSOAPEnvelope().compareDocumentPosition(other);
  349.     }

  350.     @Override
  351.     public String getTextContent() throws DOMException {
  352.         return _getSOAPEnvelope().getTextContent();
  353.     }

  354.     @Override
  355.     public void setTextContent(String textContent) throws DOMException {
  356.         _getSOAPEnvelope().setTextContent(textContent);
  357.     }

  358.     @Override
  359.     public boolean isSameNode(org.w3c.dom.Node other) {
  360.         return _getSOAPEnvelope().isSameNode(other);
  361.     }

  362.     @Override
  363.     public String lookupPrefix(String namespaceURI) {
  364.         return _getSOAPEnvelope().lookupPrefix(namespaceURI);
  365.     }

  366.     @Override
  367.     public boolean isDefaultNamespace(String namespaceURI) {
  368.         return _getSOAPEnvelope().isDefaultNamespace(namespaceURI);
  369.     }

  370.     @Override
  371.     public String lookupNamespaceURI(String prefix) {
  372.         return _getSOAPEnvelope().lookupNamespaceURI(prefix);
  373.     }

  374.     @Override
  375.     public boolean isEqualNode(org.w3c.dom.Node arg) {
  376.         return _getSOAPEnvelope().isEqualNode(arg);
  377.     }

  378.     @Override
  379.     public Object getFeature(String feature, String version) {
  380.         return _getSOAPEnvelope().getFeature(feature, version);
  381.     }

  382.     @Override
  383.     public Object setUserData(String key, Object data, UserDataHandler handler) {
  384.         return _getSOAPEnvelope().setUserData(key, data, handler);
  385.     }

  386.     @Override
  387.     public Object getUserData(String key) {
  388.         return _getSOAPEnvelope().getUserData(key);
  389.     }

  390.     @Override
  391.     public String getTagName() {
  392.         return _getSOAPEnvelope().getTagName();
  393.     }

  394.     @Override
  395.     public String getAttribute(String name) {
  396.         return _getSOAPEnvelope().getAttribute(name);
  397.     }

  398.     @Override
  399.     public void setAttribute(String name, String value) throws DOMException {
  400.         _getSOAPEnvelope().setAttribute(name, value);
  401.     }

  402.     @Override
  403.     public void removeAttribute(String name) throws DOMException {
  404.         _getSOAPEnvelope().removeAttribute(name);
  405.     }

  406.     @Override
  407.     public Attr getAttributeNode(String name) {
  408.         return _getSOAPEnvelope().getAttributeNode(name);
  409.     }

  410.     @Override
  411.     public Attr setAttributeNode(Attr newAttr) throws DOMException {
  412.         return _getSOAPEnvelope().setAttributeNode(newAttr);
  413.     }

  414.     @Override
  415.     public Attr removeAttributeNode(Attr oldAttr) throws DOMException {
  416.         return _getSOAPEnvelope().removeAttributeNode(oldAttr);
  417.     }

  418.     @Override
  419.     public NodeList getElementsByTagName(String name) {
  420.         return _getSOAPEnvelope().getElementsByTagName(name);
  421.     }

  422.     @Override
  423.     public String getAttributeNS(String namespaceURI, String localName) throws DOMException {
  424.         return _getSOAPEnvelope().getAttributeNS(namespaceURI, localName);
  425.     }

  426.     @Override
  427.     public void setAttributeNS(String namespaceURI, String qualifiedName, String value) throws DOMException {
  428.         _getSOAPEnvelope().setAttributeNS(namespaceURI, qualifiedName, value);
  429.     }

  430.     @Override
  431.     public void removeAttributeNS(String namespaceURI, String localName) throws DOMException {
  432.         _getSOAPEnvelope().removeAttributeNS(namespaceURI, localName);
  433.     }

  434.     @Override
  435.     public Attr getAttributeNodeNS(String namespaceURI, String localName) throws DOMException {
  436.         return _getSOAPEnvelope().getAttributeNodeNS(namespaceURI, localName);
  437.     }

  438.     @Override
  439.     public Attr setAttributeNodeNS(Attr newAttr) throws DOMException {
  440.         return _getSOAPEnvelope().setAttributeNodeNS(newAttr);
  441.     }

  442.     @Override
  443.     public NodeList getElementsByTagNameNS(String namespaceURI, String localName) throws DOMException {
  444.         return _getSOAPEnvelope().getElementsByTagNameNS(namespaceURI, localName);
  445.     }

  446.     @Override
  447.     public boolean hasAttribute(String name) {
  448.         return _getSOAPEnvelope().hasAttribute(name);
  449.     }

  450.     @Override
  451.     public boolean hasAttributeNS(String namespaceURI, String localName) throws DOMException {
  452.         return _getSOAPEnvelope().hasAttributeNS(namespaceURI, localName);
  453.     }

  454.     @Override
  455.     public TypeInfo getSchemaTypeInfo() {
  456.         return _getSOAPEnvelope().getSchemaTypeInfo();
  457.     }

  458.     @Override
  459.     public void setIdAttribute(String name, boolean isId) throws DOMException {
  460.         _getSOAPEnvelope().setIdAttribute(name, isId);
  461.     }

  462.     @Override
  463.     public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException {
  464.         _getSOAPEnvelope().setIdAttributeNS(namespaceURI, localName, isId);
  465.     }

  466.     @Override
  467.     public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException {
  468.         _getSOAPEnvelope().setIdAttributeNode(idAttr, isId);
  469.     }

  470.     @Override
  471.     public SOAPBody addBody() throws SOAPException {
  472.         return _getSOAPEnvelope().addBody();
  473.     }

  474.     @Override
  475.     public Name createName(String arg0) throws SOAPException {
  476.         return _getSOAPEnvelope().createName(arg0);
  477.     }

  478.     @Override
  479.     public Name createName(String arg0, String arg1, String arg2) throws SOAPException {
  480.         return _getSOAPEnvelope().createName(arg0, arg1, arg2);
  481.     }

  482.     @Override
  483.     public SOAPBody getBody() throws SOAPException {
  484.         return _getSOAPEnvelope().getBody();
  485.     }
  486.    
  487. }