OpenSPCoop2MessageFactory_impl.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.message;
- import java.io.InputStream;
- import javax.xml.soap.MimeHeaders;
- import javax.xml.soap.SOAPConnectionFactory;
- import javax.xml.soap.SOAPException;
- import javax.xml.soap.SOAPMessage;
- import org.openspcoop2.message.constants.MessageType;
- import org.openspcoop2.message.exception.MessageException;
- import org.openspcoop2.message.rest.OpenSPCoop2Message_binary_impl;
- import org.openspcoop2.message.rest.OpenSPCoop2Message_json_impl;
- import org.openspcoop2.message.rest.OpenSPCoop2Message_mimeMultipart_impl;
- import org.openspcoop2.message.rest.OpenSPCoop2Message_xml_impl;
- import org.openspcoop2.message.soap.OpenSPCoop2Message_saaj_11_impl;
- import org.openspcoop2.message.soap.OpenSPCoop2Message_saaj_12_impl;
- import org.openspcoop2.message.soap.OpenSPCoop2Message_soap11_impl;
- import org.openspcoop2.message.soap.OpenSPCoop2Message_soap12_impl;
- import org.openspcoop2.message.soap.reader.OpenSPCoop2MessageSoapStreamReader;
- import org.openspcoop2.utils.transport.TransportRequestContext;
- import org.openspcoop2.utils.transport.TransportResponseContext;
- import org.openspcoop2.utils.transport.http.HttpConstants;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- /**
- * Factory per la costruzione di messaggi OpenSPCoop2Message.
- *
- * @author Lorenzo Nardi (nardi@link.it)
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class OpenSPCoop2MessageFactory_impl extends OpenSPCoop2MessageFactory {
- private static boolean soapPassthroughImpl = true;
- public static void setSoapPassthroughImpl(boolean soapPassthroughImpl) {
- OpenSPCoop2MessageFactory_impl.soapPassthroughImpl = soapPassthroughImpl;
- }
-
- // ********** SOAP - FACTORY *************
- @Override
- protected synchronized void initSoapFactory() {
- try{
- if(OpenSPCoop2MessageFactory.soapFactory11==null || OpenSPCoop2MessageFactory.soapFactory12==null){
- OpenSPCoop2MessageFactory.initSoapFactory11(new com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl());
- OpenSPCoop2MessageFactory.initSoapFactory12(new com.sun.xml.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl());
- }
- }catch(Exception e){
- System.out.println("ERRORE: "+e.getMessage());
- }
- }
- @Override
- protected synchronized void initSoapMessageFactory() throws SOAPException {
- if(OpenSPCoop2MessageFactory.soapMessageFactory==null){
- OpenSPCoop2MessageFactory.initSoapMessageFactory(new com.sun.xml.messaging.saaj.soap.MessageFactoryImpl());
- }
- }
-
- @Override
- public SOAPConnectionFactory getSOAPConnectionFactory()
- throws SOAPException {
- return new com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory();
- }
-
-
-
-
- // ********** SAAJ *************
-
- @Override
- public String getDocumentBuilderFactoryClass() {
- return org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.class.getName();
- }
-
- @Override
- public String getSAXParserFactoryClass() {
- return org.apache.xerces.jaxp.SAXParserFactoryImpl.class.getName();
- }
- @Override
- public Element convertoForXPathSearch(Element contenutoAsElement){
- return contenutoAsElement;
- }
-
- @Override
- public void normalizeDocument(Document document){
- document.normalizeDocument();
- }
-
-
-
-
- // ********** OpenSPCoop2Message builder *************
-
- @Override
- public OpenSPCoop2Message _createMessage(MessageType messageType, SOAPMessage soapMsg) throws MessageException {
- OpenSPCoop2Message msg = null;
- if(MessageType.SOAP_11.equals(messageType)){
- msg = new OpenSPCoop2Message_saaj_11_impl(this, soapMsg);
- } else if(MessageType.SOAP_12.equals(messageType)){
- msg = new OpenSPCoop2Message_saaj_12_impl(this, soapMsg);
- }
- else{
- throw new MessageException("Message Type ["+messageType+"] unsupported");
- }
-
- return msg;
- }
-
- @Override
- public OpenSPCoop2Message _createEmptyMessage(MessageType messageType) throws MessageException {
- OpenSPCoop2Message msg = null;
- switch (messageType) {
- case SOAP_11:
- msg = new OpenSPCoop2Message_saaj_11_impl(this);
- break;
- case SOAP_12:
- msg = new OpenSPCoop2Message_saaj_12_impl(this);
- break;
- case XML:
- msg = new OpenSPCoop2Message_xml_impl(this);
- break;
- case JSON:
- msg = new OpenSPCoop2Message_json_impl(this);
- break;
- case BINARY:
- msg = new OpenSPCoop2Message_binary_impl(this);
- break;
- case MIME_MULTIPART:
- msg = new OpenSPCoop2Message_mimeMultipart_impl(this);
- break;
- }
-
- return msg;
- }
- @Override
- protected OpenSPCoop2Message _createMessage(MessageType messageType, TransportRequestContext requestContext, InputStream is,
- AttachmentsProcessingMode attachmentsProcessingMode, long overhead,
- OpenSPCoop2MessageSoapStreamReader soapStreamReader) throws MessageException {
-
- return this._createMessageEngine(messageType, requestContext, is, attachmentsProcessingMode, overhead, soapStreamReader);
- }
-
- @Override
- protected OpenSPCoop2Message _createMessage(MessageType messageType, TransportResponseContext responseContext, InputStream is,
- AttachmentsProcessingMode attachmentsProcessingMode, long overhead,
- OpenSPCoop2MessageSoapStreamReader soapStreamReader) throws MessageException {
-
- return this._createMessageEngine(messageType, responseContext, is, attachmentsProcessingMode, overhead, soapStreamReader);
- }
-
- @Override
- protected OpenSPCoop2Message _createMessage(MessageType messageType, String contentType, InputStream is,
- AttachmentsProcessingMode attachmentsProcessingMode, long overhead,
- OpenSPCoop2MessageSoapStreamReader soapStreamReader) throws MessageException{
-
- return this._createMessageEngine(messageType, contentType, is, attachmentsProcessingMode, overhead, soapStreamReader);
- }
-
- private OpenSPCoop2Message _createMessageEngine(MessageType messageType, Object context, InputStream is,
- AttachmentsProcessingMode attachmentsProcessingMode, long overhead,
- OpenSPCoop2MessageSoapStreamReader soapStreamReader) throws MessageException {
-
- try{
-
- OpenSPCoop2Message msg = null;
-
- String contentType = null;
- TransportRequestContext transportRequestContext = null;
- TransportResponseContext transportResponseContext = null;
- if(context instanceof TransportRequestContext){
- transportRequestContext = (TransportRequestContext) context;
- contentType = transportRequestContext.getHeaderFirstValue(HttpConstants.CONTENT_TYPE);
- }
- else if(context instanceof TransportResponseContext){
- transportResponseContext = (TransportResponseContext) context;
- contentType = transportResponseContext.getHeaderFirstValue(HttpConstants.CONTENT_TYPE);
- }
- else if(context instanceof String){
- contentType = (String) context;
- }
- else{
- if(context==null) {
- if(!MessageType.BINARY.equals(messageType)) {
- throw new MessageException("Unsupported Empty Context for message '"+messageType+"' (No Content Type?)");
- }
- }
- else {
- throw new MessageException("Unsupported Context ["+context+"]");
- }
- }
-
- switch (messageType) {
- case SOAP_11:
- case SOAP_12:
-
- MimeHeaders mhs = new MimeHeaders();
- if(contentType!=null){
- mhs.setHeader(HttpConstants.CONTENT_TYPE, contentType);
- }
- if(OpenSPCoop2MessageFactory_impl.soapPassthroughImpl) {
- if(MessageType.SOAP_11.equals(messageType)){
- msg = new OpenSPCoop2Message_soap11_impl(this, mhs, is, overhead, soapStreamReader);
- }
- else{
- msg = new OpenSPCoop2Message_soap12_impl(this, mhs, is, overhead, soapStreamReader);
- }
- }
- else {
- if(MessageType.SOAP_11.equals(messageType)){
- msg = new OpenSPCoop2Message_saaj_11_impl(this, mhs, is);
- ((OpenSPCoop2Message_saaj_11_impl)msg).initialize(overhead);
- }
- else{
- msg = new OpenSPCoop2Message_saaj_12_impl(this, mhs, is);
- ((OpenSPCoop2Message_saaj_12_impl)msg).initialize(overhead);
- }
- }
- break;
- case XML:
- msg = new OpenSPCoop2Message_xml_impl(this, is,contentType);
- break;
- case JSON:
- msg = new OpenSPCoop2Message_json_impl(this, is,contentType);
- break;
- case BINARY:
- msg = new OpenSPCoop2Message_binary_impl(this, is,contentType);
- break;
- case MIME_MULTIPART:
- msg = new OpenSPCoop2Message_mimeMultipart_impl(this, is,contentType);
- break;
- }
-
- return msg;
-
- }catch(Exception e){
- throw new MessageException(e.getMessage(),e);
- }
- }
-
- }