RicezioneBusteExternalErrorGenerator.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.error;
import java.util.List;
import org.openspcoop2.core.constants.TipoPdD;
import org.openspcoop2.core.eccezione.details.DettaglioEccezione;
import org.openspcoop2.message.OpenSPCoop2Message;
import org.openspcoop2.message.OpenSPCoop2MessageFactory;
import org.openspcoop2.message.config.ConfigurationRFC7807;
import org.openspcoop2.message.config.IntegrationErrorReturnConfiguration;
import org.openspcoop2.message.constants.IntegrationError;
import org.openspcoop2.message.constants.MessageType;
import org.openspcoop2.pdd.core.PdDContext;
import org.openspcoop2.pdd.core.transazioni.Transaction;
import org.openspcoop2.pdd.core.transazioni.TransactionContext;
import org.openspcoop2.protocol.engine.builder.ImbustamentoErrore;
import org.openspcoop2.protocol.sdk.Busta;
import org.openspcoop2.protocol.sdk.Context;
import org.openspcoop2.protocol.sdk.Eccezione;
import org.openspcoop2.protocol.sdk.Integrazione;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.builder.ProprietaErroreApplicativo;
import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
import org.openspcoop2.protocol.sdk.constants.ErroreCooperazione;
import org.openspcoop2.protocol.sdk.constants.ErroreIntegrazione;
import org.openspcoop2.protocol.sdk.constants.ErroriIntegrazione;
import org.openspcoop2.protocol.sdk.constants.IntegrationFunctionError;
import org.openspcoop2.protocol.sdk.constants.TipoOraRegistrazione;
import org.openspcoop2.protocol.sdk.state.IState;
import org.openspcoop2.protocol.sdk.state.RequestInfo;
import org.openspcoop2.security.message.MessageSecurityContext;
import org.slf4j.Logger;
/**
* RicezioneBusteExternalErrorGenerator
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class RicezioneBusteExternalErrorGenerator extends AbstractErrorGenerator {
private ImbustamentoErrore imbustamentoErrore;
public ImbustamentoErrore getImbustamentoErrore() {
return this.imbustamentoErrore;
}
private boolean forceSoapPrefixCompatibilitOpenSPCoopV1 = false;
private IState state;
public void updateState(IState state) {
this.state = state;
}
public RicezioneBusteExternalErrorGenerator(Logger log, String idModulo, RequestInfo requestInfo, IState state) throws ProtocolException{
super(log, idModulo, requestInfo, TipoPdD.APPLICATIVA, false);
this.state = state;
ProprietaErroreApplicativo proprieta = this.openspcoopProperties.getProprietaGestioneErrorePD(this.protocolFactory.createProtocolManager());
this.imbustamentoErrore = new ImbustamentoErrore(this.log, this.protocolFactory, this.state,
this.serviceBinding,
proprieta.getDefaultFaultCodeIntegrationNamespace(), proprieta.getDefaultFaultCodeProtocolNamespace(),
proprieta.getFaultActor(),
requestInfo.getIdTransazione());
this.forceSoapPrefixCompatibilitOpenSPCoopV1 = this.openspcoopProperties.isForceSoapPrefixCompatibilitaOpenSPCoopV1();
}
public OpenSPCoop2Message buildErroreProcessamento(Context context, IntegrationFunctionError integrationFunctionError, ErroreIntegrazione erroreIntegrazione) {
return this.buildErroreProcessamento(context, integrationFunctionError, erroreIntegrazione, null);
}
public OpenSPCoop2Message buildErroreProcessamento(Context context, IntegrationFunctionError integrationFunctionError, ErroreIntegrazione erroreIntegrazione, Throwable eProcessamento) {
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.buildFaultProtocollo_processamento(this.identitaPdD,this.tipoPdD,this.idModulo,
erroreIntegrazione,eProcessamento,
msgTypeErrorResponse,rfc7807, returnConfig, integrationFunctionError, this.getInterfaceName(),
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
context);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse,useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProcessamento(Context context, IntegrationFunctionError integrationFunctionError, DettaglioEccezione dettaglioEccezione){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.buildFaultProtocollo_processamento(dettaglioEccezione,
this.protocolFactory.createProtocolManager().isGenerazioneDetailsFaultProtocollo_EccezioneProcessamento(),
msgTypeErrorResponse,rfc7807, returnConfig, integrationFunctionError, this.getInterfaceName(),
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
context);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreIntestazione(Context context, IntegrationFunctionError integrationFunctionError) {
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
ErroreIntegrazione erroreIntegrazione = ErroriIntegrazione.ERRORE_5XX_GENERICO_PROCESSAMENTO_MESSAGGIO.getErroreIntegrazione();
OpenSPCoop2Message msg = this.imbustamentoErrore.buildFaultProtocollo_intestazione(
this.identitaPdD,this.tipoPdD,this.idModulo,
erroreIntegrazione, msgTypeErrorResponse,rfc7807, returnConfig, integrationFunctionError, this.getInterfaceName(),
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
context);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreIntestazione(Context context, IntegrationFunctionError integrationFunctionError, ErroreIntegrazione erroreIntegrazione) {
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.buildFaultProtocollo_intestazione(this.identitaPdD,this.tipoPdD,this.idModulo,
erroreIntegrazione,msgTypeErrorResponse,rfc7807, returnConfig, integrationFunctionError, this.getInterfaceName(),
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
context);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreIntestazione(Context context, IntegrationFunctionError integrationFunctionError, CodiceErroreCooperazione codiceErroreCooperazione, String descrizione) {
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.buildFaultProtocollo_intestazione(this.identitaPdD,this.tipoPdD,this.idModulo,
codiceErroreCooperazione,descrizione,
msgTypeErrorResponse,rfc7807, returnConfig, integrationFunctionError, this.getInterfaceName(),
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
context);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProtocollo_Processamento(IntegrationFunctionError integrationFunctionError,
Busta busta,Integrazione integrazione, String idTransazione,
List<Eccezione> errori,
java.util.Map<String,Object> messageSecurityPropertiesResponse,
MessageSecurityContext messageSecurityContext,long attesaAttiva,int checkInterval,String profiloGestione,
TipoOraRegistrazione tipoTempo,boolean generazioneListaTrasmissioni,Exception eProcessamento,
PdDContext pddContext){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
Transaction transactionNullable = null;
try{
transactionNullable = TransactionContext.getTransaction(idTransazione);
}catch(Exception e){
// puo' non essere presente in comunicazioni stateful
}
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.msgErroreProtocollo_Processamento(this.identitaPdD,this.tipoPdD,pddContext,
this.idModulo,
busta, integrazione, idTransazione, errori,
messageSecurityPropertiesResponse, messageSecurityContext,
attesaAttiva, checkInterval, profiloGestione,
tipoTempo, generazioneListaTrasmissioni,
eProcessamento, msgTypeErrorResponse, rfc7807, returnConfig, integrationFunctionError,
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
transactionNullable!=null ? transactionNullable.getTempiElaborazione() : null,
this.requestInfo);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProtocollo_Processamento(IntegrationFunctionError integrationFunctionError,
Busta busta,Integrazione integrazione, String idTransazione,
ErroreCooperazione erroreCooperazione,
java.util.Map<String,Object> messageSecurityPropertiesResponse,
MessageSecurityContext messageSecurityContext,long attesaAttiva,int checkInterval,String profiloGestione,
TipoOraRegistrazione tipoTempo,boolean generazioneListaTrasmissioni,
Exception eProcessamento,
PdDContext pddContext){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
Transaction transactionNullable = null;
try{
transactionNullable = TransactionContext.getTransaction(idTransazione);
}catch(Exception e){
// puo' non essere presente in comunicazioni stateful
}
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.msgErroreProtocollo_Processamento(this.identitaPdD,this.tipoPdD,pddContext,
this.idModulo,
busta, integrazione, idTransazione, erroreCooperazione,
messageSecurityPropertiesResponse, messageSecurityContext,
attesaAttiva, checkInterval, profiloGestione,
tipoTempo, generazioneListaTrasmissioni,
eProcessamento, msgTypeErrorResponse, rfc7807, returnConfig, integrationFunctionError,
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
transactionNullable!=null ? transactionNullable.getTempiElaborazione() : null,
this.requestInfo);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProtocollo_Processamento(IntegrationFunctionError integrationFunctionError,
Busta busta,Integrazione integrazione, String idTransazione,
ErroreIntegrazione erroreIntegrazione,
java.util.Map<String,Object> messageSecurityPropertiesResponse,
MessageSecurityContext messageSecurityContext,long attesaAttiva,int checkInterval,String profiloGestione,
TipoOraRegistrazione tipoTempo,boolean generazioneListaTrasmissioni,
Exception eProcessamento,
PdDContext pddContext){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
Transaction transactionNullable = null;
try{
transactionNullable = TransactionContext.getTransaction(idTransazione);
}catch(Exception e){
// puo' non essere presente in comunicazioni stateful
}
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.msgErroreProtocollo_Processamento(this.identitaPdD,this.tipoPdD,pddContext,
this.idModulo,
busta, integrazione, idTransazione, erroreIntegrazione,
messageSecurityPropertiesResponse, messageSecurityContext,
attesaAttiva, checkInterval, profiloGestione,
tipoTempo, generazioneListaTrasmissioni,
eProcessamento, msgTypeErrorResponse, rfc7807, returnConfig, integrationFunctionError,
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
transactionNullable!=null ? transactionNullable.getTempiElaborazione() : null,
this.requestInfo);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProtocollo_Intestazione(IntegrationFunctionError integrationFunctionError,
Busta busta,Integrazione integrazione, String idTransazione,
List<Eccezione> errori,
java.util.Map<String,Object> messageSecurityPropertiesResponse,
MessageSecurityContext messageSecurityContext,long attesaAttiva,int checkInterval,String profiloGestione,
TipoOraRegistrazione tipoTempo,boolean generazioneListaTrasmissioni,
PdDContext pddContext){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
Transaction transactionNullable = null;
try{
transactionNullable = TransactionContext.getTransaction(idTransazione);
}catch(Exception e){
// puo' non essere presente in comunicazioni stateful
}
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.msgErroreProtocollo_Intestazione(this.identitaPdD,this.tipoPdD,pddContext,
this.idModulo,
busta, integrazione, idTransazione, errori,
messageSecurityPropertiesResponse, messageSecurityContext,
attesaAttiva, checkInterval, profiloGestione,
tipoTempo, generazioneListaTrasmissioni,
msgTypeErrorResponse, rfc7807, returnConfig, integrationFunctionError,
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
transactionNullable!=null ? transactionNullable.getTempiElaborazione() : null,
this.requestInfo);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
public OpenSPCoop2Message buildErroreProtocollo_Intestazione(IntegrationFunctionError integrationFunctionError,
Busta busta,Integrazione integrazione,
String idTransazione,
ErroreCooperazione erroreCooperazione,
java.util.Map<String,Object> messageSecurityPropertiesResponse,
MessageSecurityContext messageSecurityContext,
long attesaAttiva,
int checkInterval,
String profiloGestione,
TipoOraRegistrazione tipoTempo, boolean generazioneListaTrasmissioni,
PdDContext pddContext){
IntegrationError integrationError = convertToIntegrationError(integrationFunctionError);
MessageType msgTypeErrorResponse = this.getMessageTypeForErrorSafeMode(integrationError);
ConfigurationRFC7807 rfc7807 = this.getRfc7807ForErrorSafeMode(integrationError);
boolean useProblemRFC7807 = rfc7807!=null;
try{
Transaction transactionNullable = null;
try{
transactionNullable = TransactionContext.getTransaction(idTransazione);
}catch(Exception e){
// puo' non essere presente in comunicazioni stateful
}
IntegrationErrorReturnConfiguration returnConfig = this.getReturnConfigForError(integrationError);
boolean useInternalFault = this.isUseInternalFault(integrationError);
OpenSPCoop2Message msg = this.imbustamentoErrore.msgErroreProtocollo_Intestazione(this.identitaPdD,this.tipoPdD,pddContext,
this.idModulo,
busta, integrazione, idTransazione, erroreCooperazione,
messageSecurityPropertiesResponse, messageSecurityContext,
attesaAttiva, checkInterval, profiloGestione,
tipoTempo, generazioneListaTrasmissioni,
msgTypeErrorResponse, rfc7807, returnConfig, integrationFunctionError,
this.forceSoapPrefixCompatibilitOpenSPCoopV1, useInternalFault,
transactionNullable!=null ? transactionNullable.getTempiElaborazione() : null,
this.requestInfo);
return msg;
}catch(Exception e){
this.log.error("Errore durante la costruzione del messaggio di eccezione integrazione",e);
return OpenSPCoop2MessageFactory.getDefaultMessageFactory().createFaultMessage(msgTypeErrorResponse, useProblemRFC7807, e);
}
}
}