RicezioneContenutiApplicativiConnector.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.pdd.services.connector;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
import org.openspcoop2.pdd.services.connector.messages.HttpServletConnectorInMessage;
import org.openspcoop2.pdd.services.connector.messages.HttpServletConnectorOutMessage;
import org.openspcoop2.pdd.services.error.RicezioneContenutiApplicativiInternalErrorGenerator;
import org.openspcoop2.pdd.services.service.RicezioneContenutiApplicativiService;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.constants.CodiceErroreIntegrazione;
import org.openspcoop2.protocol.sdk.constants.ErroriIntegrazione;
import org.openspcoop2.protocol.sdk.constants.IDService;
import org.openspcoop2.protocol.sdk.constants.IntegrationFunctionError;
import org.openspcoop2.protocol.sdk.state.RequestInfo;
import org.openspcoop2.utils.Utilities;
import org.openspcoop2.utils.date.DateManager;
import org.openspcoop2.utils.transport.http.HttpRequestMethod;
import org.slf4j.Logger;
/**
* RicezioneContenutiApplicativiConnector
*
* @author Poli Andrea (apoli@link.it)
* @author Lorenzo Nardi (nardi@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class RicezioneContenutiApplicativiConnector {
/** Variabile che indica il Nome del modulo dell'architettura di OpenSPCoop rappresentato da questa classe */
public static final IDService ID_SERVICE = IDService.PORTA_DELEGATA;
public static final String ID_MODULO = ID_SERVICE.getValue();
public void doEngine(RequestInfo requestInfo,
HttpServletRequest req, HttpServletResponse res, HttpRequestMethod method) throws ServletException {
Date dataAccettazioneRichiesta = DateManager.getDate();
// Devo prima leggere l'API invocata per comprendere il service binding effettivo
if(method!=null) {
// nop
}
/**if(HttpRequestMethod.GET.equals(method)){
java.util.Enumeration<?> parameters = req.getParameterNames();
while(parameters.hasMoreElements()){
String key = (String) parameters.nextElement();
String value = req.getParameter(key);
if("wsdl".equalsIgnoreCase(key) && (value==null || "".equals(value)) ){
ConnectorDispatcherUtils.doWsdl(req, res, method, ID_SERVICE);
return;
}
}
}
if(org.openspcoop2.message.constants.ServiceBinding.SOAP.equals(requestInfo.getIntegrationServiceBinding()) && !HttpRequestMethod.POST.equals(method)){
ConnectorDispatcherUtils.doMethodNotSupported(req, res, method, ID_SERVICE);
return;
}*/
Logger logCore = OpenSPCoop2Logger.getLoggerOpenSPCoopCore();
RicezioneContenutiApplicativiInternalErrorGenerator generatoreErrore = null;
try{
generatoreErrore =
new RicezioneContenutiApplicativiInternalErrorGenerator(logCore, ID_MODULO, requestInfo);
}catch(Exception e){
String msg = "Inizializzazione Generatore Errore fallita: "+Utilities.readFirstErrorValidMessageFromException(e);
logCore.error(msg,e);
ConnectorDispatcherUtils.doError(requestInfo, generatoreErrore, // il metodo doError gestisce il generatoreErrore a null
ErroriIntegrazione.ERRORE_5XX_GENERICO_PROCESSAMENTO_MESSAGGIO.
get5XX_ErroreProcessamento(msg,CodiceErroreIntegrazione.CODICE_501_PDD_NON_INIZIALIZZATA),
IntegrationFunctionError.GOVWAY_NOT_INITIALIZED, e, res, logCore);
return;
}
RicezioneContenutiApplicativiService ricezioneContenutiApplicativi = new RicezioneContenutiApplicativiService(generatoreErrore);
HttpServletConnectorInMessage httpIn = null;
try{
httpIn = new HttpServletConnectorInMessage(requestInfo, req, ID_SERVICE, ID_MODULO);
}catch(Exception e){
doError("HttpServletConnectorInMessage init error", e);
}
IProtocolFactory<?> protocolFactory = null;
try{
protocolFactory = httpIn.getProtocolFactory();
}catch(Exception e){
// ignore
}
HttpServletConnectorOutMessage httpOut = null;
try{
httpOut = new HttpServletConnectorOutMessage(requestInfo, protocolFactory, res, ID_SERVICE, ID_MODULO);
}catch(Exception e){
doError("HttpServletConnectorOutMessage init error", e);
}
try{
ricezioneContenutiApplicativi.process(httpIn, httpOut, dataAccettazioneRichiesta);
}catch(Exception e){
doError("RicezioneContenutiApplicativi.process error", e);
}
}
private void doError(String msg, Exception e) throws ServletException {
String msgError = msg+": "+e.getMessage();
ConnectorUtils.getErrorLog().error(msgError,e);
throw new ServletException(e.getMessage(),e);
}
}