NotifierCallbackEnableUtils.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.core.handlers.notifier.engine;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.openspcoop2.core.config.DumpConfigurazione;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.constants.Costanti;
import org.openspcoop2.core.constants.TipoPdD;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.transazioni.constants.TipoMessaggio;
import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
import org.openspcoop2.pdd.core.PdDContext;
import org.openspcoop2.pdd.core.handlers.InRequestProtocolContext;
import org.openspcoop2.pdd.core.handlers.PostOutRequestContext;
import org.openspcoop2.pdd.core.handlers.PostOutResponseContext;
import org.openspcoop2.pdd.core.handlers.PreInRequestContext;
import org.openspcoop2.pdd.core.handlers.PreInResponseContext;
import org.openspcoop2.pdd.core.handlers.notifier.NotifierBufferState;
import org.openspcoop2.pdd.core.handlers.notifier.NotifierResult;
import org.openspcoop2.pdd.core.handlers.notifier.NotifierType;
import org.openspcoop2.pdd.services.connector.ConnectorException;
import org.openspcoop2.pdd.services.connector.messages.ConnectorInMessage;
import org.openspcoop2.protocol.sdk.state.RequestInfo;
import org.openspcoop2.utils.io.notifier.unblocked.PipedInputOutputStreamHandler;
import org.openspcoop2.utils.transport.TransportUtils;
import org.slf4j.Logger;
/**
* NotifierCallbackEnableUtils
*
* @author Poli Andrea (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class NotifierCallbackEnableUtils {
// *** enableNotifierInputStream ***
public static boolean enableNotifierInputStream(NotifierCallback notifierCallback, NotifierType notifierType,
Object context) throws ConnectorException{
if(OpenSPCoop2Properties.getInstance().isNotifierInputStreamEnabled()==false){
return false;
}
if(NotifierType.PRE_IN_REQUEST.equals(notifierType)){
PreInRequestContext op2Context = (PreInRequestContext) context;
ConnectorInMessage request = (ConnectorInMessage)op2Context.getTransportContext().get(PreInRequestContext.SERVLET_REQUEST);
int length = request.getContentLength();
notifierCallback.debug("CONTENT LENGTH ["+length+"]");
setManagementMode(notifierCallback, length, op2Context.getPddContext());
String contentType = request.getContentType();
notifierCallback.debug("CONTENT TYPE ["+contentType+"]");
op2Context.getPddContext().addObject(NotifierConstants.REQUEST_CONTENT_TYPE, contentType);
return true;
}
else if(NotifierType.PRE_IN_RESPONSE.equals(notifierType)){
PreInResponseContext op2Context = (PreInResponseContext) context;
Boolean responseDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED);
if(responseDumpPostProcessEnabled!=null && responseDumpPostProcessEnabled){
notifierCallback.debug("ReturnCode ["+op2Context.getCodiceTrasporto()+"]");
int length = -1;
if(op2Context.getResponseHeaders()!=null && op2Context.getResponseHeaders().size()>0){
Iterator<String> keys = op2Context.getResponseHeaders().keySet().iterator();
while (keys.hasNext()) {
String key = (String) keys.next();
//notifierCallback.debug("TRANSPORT ["+key+"]=["+op2Context.getPropertiesTrasportoRisposta().getProperty(key)+"]");
if("Content-Length".equalsIgnoreCase(key)){
String lengthParam = TransportUtils.getFirstValue(op2Context.getResponseHeaders(),key);
length = Integer.parseInt(lengthParam);
notifierCallback.debug("CONTENT LENGTH RESPONSE ["+length+"]");
}
else if("Content-Type".equalsIgnoreCase(key)){
String contentType = TransportUtils.getFirstValue(op2Context.getResponseHeaders(),key);
notifierCallback.debug("CONTENT TYPE RESPONSE ["+contentType+"]");
op2Context.getPddContext().addObject(NotifierConstants.RESPONSE_CONTENT_TYPE, contentType);
}
}
}
setManagementMode(notifierCallback, length, op2Context.getPddContext());
return true;
}
}
return false;
}
private static void setManagementMode(NotifierCallback notifierCallback,int length,PdDContext pddContext){
ManagementMode mode = null;
if(length>0){
mode = ManagementMode.STREAMING;
Integer thresholdInMemory = OpenSPCoop2Properties.getInstance().getDumpNonRealtimeInMemoryThreshold();
if(thresholdInMemory!=null){
if(length<thresholdInMemory){
mode = ManagementMode.BUFFER;
}
}
}
else{
// Per forza streaming, potrebbe essere gigante
mode = ManagementMode.STREAMING;
}
pddContext.addObject(NotifierConstants.MANAGEMENT_MODE, mode);
notifierCallback.debug("MANAGEMENT MODE ["+mode.name()+"]");
}
// *** notify ***
public static NotifierResult notify(NotifierCallback notifierCallback, NotifierType notifierType, Object context)
throws Exception {
NotifierResult result = new NotifierResult();
newStreamingHandlers(notifierCallback, result, notifierType, context);
result.setBufferState(getBufferState(notifierCallback, notifierType, context));
return result;
}
// *** newStreamingHandlers ***
private static void newStreamingHandlers(NotifierCallback notifierCallback, NotifierResult notifierResult,NotifierType notifierType,
Object context) throws Exception{
if(NotifierType.IN_REQUEST_PROTOCOL_INFO.equals(notifierType)){
InRequestProtocolContext op2Context = (InRequestProtocolContext) context;
setConfigurazioneDump(notifierCallback, op2Context);
Boolean requestDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED);
if(requestDumpPostProcessEnabled){
Map<String, List<String>> headerTrasporto = null;
if(TipoPdD.DELEGATA.equals(op2Context.getTipoPorta())){
if(op2Context.getConnettore()!=null && op2Context.getConnettore().getUrlProtocolContext().getHeaders()!=null){
headerTrasporto = op2Context.getConnettore().getUrlProtocolContext().getHeaders();
op2Context.getPddContext().addObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_HEADER_TRASPORTO, headerTrasporto);
}
}
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.STREAMING.equals(managementMode)){
notifierCallback.debug("CREO HANDLER DI STREAMING ...");
Logger log = op2Context.getLogCore();
// PipedInputOutputStreamHandler streamingHandler =
// new PipedInputOutputStreamHandler(NotifierConstants.ID_HANDLER, notifierStreamingHandler, log);
IDSoggetto dominio = null;
if(op2Context.getProtocollo()!=null){
dominio = op2Context.getProtocollo().getDominio();
}
notifierResult.addStreamingHandler(NotifierConstants.ID_HANDLER,
newHandler(notifierCallback, log, TipoMessaggio.RICHIESTA_INGRESSO, op2Context.getPddContext(), headerTrasporto, dominio), log);
notifierCallback.debug("CREATO!");
}
}
}
else if(NotifierType.PRE_IN_RESPONSE.equals(notifierType)){
PreInResponseContext op2Context = (PreInResponseContext) context;
Boolean responseDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED);
if(responseDumpPostProcessEnabled){
Map<String, List<String>> headerTrasporto = null;
if(TipoPdD.APPLICATIVA.equals(op2Context.getTipoPorta())){
if(op2Context.getResponseHeaders()!=null){
headerTrasporto = op2Context.getResponseHeaders();
op2Context.getPddContext().addObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_HEADER_TRASPORTO, headerTrasporto);
}
}
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.STREAMING.equals(managementMode)){
notifierCallback.debug("CREO HANDLER DI STREAMING DI RISPOSTA ...");
Logger log = op2Context.getLogCore();
// PipedInputOutputStreamHandler streamingHandler =
// new PipedInputOutputStreamHandler(NotifierConstants.ID_HANDLER, notifierStreamingHandler, log);
IDSoggetto dominio = null;
if(op2Context.getProtocollo()!=null){
dominio = op2Context.getProtocollo().getDominio();
}
notifierResult.addStreamingHandler(NotifierConstants.ID_HANDLER,
newHandler(notifierCallback, log, TipoMessaggio.RISPOSTA_INGRESSO, op2Context.getPddContext(), headerTrasporto, dominio), log);
notifierCallback.debug("CREATO!");
}
}
}
}
private static NotifierStreamingHandler newHandler(NotifierCallback notifierCallback, Logger log, TipoMessaggio tipoMessaggio,
PdDContext pddContext,Map<String, List<String>> headerTrasporto, IDSoggetto dominio) throws Exception{
long dumpPostProcessConfigId = (Long) pddContext.getObject(NotifierConstants.DUMP_POST_PROCESS_ID_CONFIG);
String idTransazione = (String) pddContext.getObject(Costanti.ID_TRANSAZIONE);
String contentType = null;
if(TipoMessaggio.RICHIESTA_INGRESSO.equals(tipoMessaggio)){
contentType = (String) pddContext.getObject(NotifierConstants.REQUEST_CONTENT_TYPE);
}else{
contentType = (String) pddContext.getObject(NotifierConstants.RESPONSE_CONTENT_TYPE);
}
NotifierStreamingHandler notifierStreamingHandler =
new NotifierStreamingHandler(notifierCallback,
idTransazione,
tipoMessaggio,
headerTrasporto,
dumpPostProcessConfigId,
contentType, log, dominio);
return notifierStreamingHandler;
}
// *** getBufferState ***
@SuppressWarnings("unchecked")
private static NotifierBufferState getBufferState(NotifierCallback notifierCallback, NotifierType notifierType,
Object context) throws Exception {
NotifierBufferState state = NotifierBufferState.UNMODIFIED;
if(NotifierType.PRE_IN_REQUEST.equals(notifierType)){
state = NotifierBufferState.ENABLE;
notifierCallback.debug("ABILITO IL BUFFER!!");
}
else if(NotifierType.IN_REQUEST_PROTOCOL_INFO.equals(notifierType)){
InRequestProtocolContext op2Context = (InRequestProtocolContext) context;
setConfigurazioneDump(notifierCallback, op2Context);
Boolean requestDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED);
if(requestDumpPostProcessEnabled){
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.BUFFER.equals(managementMode)){
notifierCallback.debug("DUMP POST PROCESS ABILITATO COME BUFFER, LASCIO BUFFER ABILITATO");
}
else{
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
notifierCallback.debug("RILASCIO IL BUFFER, DUMP POST PROCESS ABILITATO COME STREAMING");
}
}
else{
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
notifierCallback.debug("RILASCIO IL BUFFER, DUMP POST PROCESS NON ABILITATO");
}
}
else if(NotifierType.POST_OUT_REQUEST.equals(notifierType)){
PostOutRequestContext op2Context = (PostOutRequestContext) context;
IDSoggetto dominio = null;
if(op2Context.getProtocollo()!=null){
dominio = op2Context.getProtocollo().getDominio();
}
Boolean requestDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED);
if(requestDumpPostProcessEnabled){
Map<String, List<String>> headerTrasporto = null;
if(TipoPdD.DELEGATA.equals(op2Context.getTipoPorta())){
Object o = op2Context.getPddContext().getObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_HEADER_TRASPORTO);
if(o!=null){
headerTrasporto = (Map<String, List<String>>) o;
}
}
else{
if(op2Context.getConnettore()!=null){
headerTrasporto = op2Context.getConnettore().getHeaders();
}
}
long dumpPostProcessConfigId = (Long) op2Context.getPddContext().getObject(NotifierConstants.DUMP_POST_PROCESS_ID_CONFIG);
String contentTypeRequest = (String) op2Context.getPddContext().getObject(NotifierConstants.REQUEST_CONTENT_TYPE);
String idTransazione = (String)op2Context.getPddContext().getObject(Costanti.ID_TRANSAZIONE);
TipoMessaggio tipoMessaggio = TipoMessaggio.RICHIESTA_INGRESSO;
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.BUFFER.equals(managementMode)){
notifierCallback.debug("[BUFFER MODE] RILASCIO IL BUFFER, e salvo il contenuto su database");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
byte[] buffer = op2Context.getMessaggio().getNotifierInputStream().serializeAndConsume();
NotifierDump.getInstance().saveBuffer(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto,
dumpPostProcessConfigId, contentTypeRequest, buffer, dominio);
}
else{
// raccolgo esito handler
PipedInputOutputStreamHandler streamingHandler =
(PipedInputOutputStreamHandler) op2Context.getMessaggio().getNotifierInputStream().getStreamingHandler(NotifierConstants.ID_HANDLER);
if(streamingHandler.getError()!=null || streamingHandler.getException()!=null){
String msg = null;
if(streamingHandler.getError()!=null){
msg = streamingHandler.getError();
}else{
msg = streamingHandler.getException().getMessage();
}
notifierCallback.debug("EVENTUALE ERRORE ["+msg+"]");
if(streamingHandler.getException()!=null){
throw new Exception(msg,streamingHandler.getException());
}
else{
throw new Exception(msg);
}
}
NotifierResultStreamingHandler result = (NotifierResultStreamingHandler) streamingHandler.getResult();
if(result==null){
throw new Exception("Streaming Handler ["+NotifierConstants.ID_HANDLER+"] non ha ritornato un risultato, ma nemmeno una eccezione");
}
if(result.isSaveOnFileSystem()){
notifierCallback.debug("[STREAMING MODE su FS] RILASCIO IL BUFFER, e salvo il contenuto su database (file:"+result.getFile().getAbsolutePath()+")");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
NotifierDump.getInstance().saveOnFileSystem(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto,
dumpPostProcessConfigId, contentTypeRequest, result.getFile(), dominio);
}
else{
notifierCallback.debug("[STREAMING MODE su Database] INSERT EFFETTUATA (ExecuteUpdate:"+result.getExecuteUpdateRow()+")");
int rowUpdate = result.getExecuteUpdateRow();
if(TipoPdD.APPLICATIVA.equals(op2Context.getTipoPorta())){
// aggiorno l'header di trasporto
if(headerTrasporto!=null){
rowUpdate = NotifierDump.getInstance().update(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto, dominio);
}
}
notifierCallback.debug("[STREAMING MODE su Database] RILASCIO IL BUFFER (ExecuteUpdate:"+rowUpdate+")");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
}
}
}
}
else if(NotifierType.PRE_IN_RESPONSE.equals(notifierType)){
PreInResponseContext op2Context = (PreInResponseContext) context;
Boolean responseDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED);
if(responseDumpPostProcessEnabled){
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.BUFFER.equals(managementMode)){
notifierCallback.debug("[BUFFER] ABILITO IL BUFFER ");
state = NotifierBufferState.ENABLE;
}
}
}
else if(NotifierType.POST_OUT_RESPONSE.equals(notifierType)){
PostOutResponseContext op2Context = (PostOutResponseContext) context;
IDSoggetto dominio = null;
if(op2Context.getProtocollo()!=null){
dominio = op2Context.getProtocollo().getDominio();
}
Boolean responseDumpPostProcessEnabled = (Boolean) op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED);
if(responseDumpPostProcessEnabled){
Map<String, List<String>> headerTrasporto = null;
if(TipoPdD.APPLICATIVA.equals(op2Context.getTipoPorta())){
Object o = op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_HEADER_TRASPORTO);
if(o!=null){
headerTrasporto = (Map<String, List<String>>) o;
}
}
else{
if(op2Context.getResponseHeaders()!=null){
headerTrasporto = op2Context.getResponseHeaders();
}
}
long dumpPostProcessConfigId = (Long) op2Context.getPddContext().getObject(NotifierConstants.DUMP_POST_PROCESS_ID_CONFIG);
String contentTypeResponse = (String) op2Context.getPddContext().getObject(NotifierConstants.RESPONSE_CONTENT_TYPE);
String idTransazione = (String)op2Context.getPddContext().getObject(Costanti.ID_TRANSAZIONE);
TipoMessaggio tipoMessaggio = TipoMessaggio.RISPOSTA_INGRESSO;
ManagementMode managementMode = (ManagementMode) op2Context.getPddContext().getObject(NotifierConstants.MANAGEMENT_MODE);
if(ManagementMode.BUFFER.equals(managementMode)){
notifierCallback.debug("[BUFFER MODE] RILASCIO IL BUFFER, e salvo il contenuto su database");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
byte[] buffer = op2Context.getMessaggio().getNotifierInputStream().serializeAndConsume();
NotifierDump.getInstance().saveBuffer(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto,
dumpPostProcessConfigId, contentTypeResponse, buffer, dominio);
}
else{
// raccolgo esito handler
PipedInputOutputStreamHandler streamingHandler =
(PipedInputOutputStreamHandler) op2Context.getMessaggio().getNotifierInputStream().getStreamingHandler(NotifierConstants.ID_HANDLER);
if(streamingHandler.getError()!=null || streamingHandler.getException()!=null){
String msg = null;
if(streamingHandler.getError()!=null){
msg = streamingHandler.getError();
}else{
msg = streamingHandler.getException().getMessage();
}
notifierCallback.debug("EVENTUALE ERRORE ["+msg+"]");
if(streamingHandler.getException()!=null){
throw new Exception(msg,streamingHandler.getException());
}
else{
throw new Exception(msg);
}
}
NotifierResultStreamingHandler result = (NotifierResultStreamingHandler) streamingHandler.getResult();
if(result==null){
throw new Exception("Streaming Handler ["+NotifierConstants.ID_HANDLER+"] non ha ritornato un risultato, ma nemmeno una eccezione");
}
if(result.isSaveOnFileSystem()){
notifierCallback.debug("[STREAMING MODE su FS] RILASCIO IL BUFFER, e salvo il contenuto della risposta su database (file:"+result.getFile().getAbsolutePath()+")");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
NotifierDump.getInstance().saveOnFileSystem(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto,
dumpPostProcessConfigId, contentTypeResponse, result.getFile(), dominio);
}
else{
notifierCallback.debug("[STREAMING MODE su Database] INSERT EFFETTUATA (ExecuteUpdate:"+result.getExecuteUpdateRow()+")");
int rowUpdate = result.getExecuteUpdateRow();
if(TipoPdD.DELEGATA.equals(op2Context.getTipoPorta())){
// aggiorno l'header di trasporto
if(headerTrasporto!=null){
rowUpdate = NotifierDump.getInstance().update(notifierCallback, idTransazione, tipoMessaggio, headerTrasporto, dominio);
}
}
notifierCallback.debug("[STREAMING MODE su Database] RILASCIO IL BUFFER (ExecuteUpdate:"+rowUpdate+")");
state = NotifierBufferState.DISABLE_AND_RELEASE_BUFFER_READED;
}
}
}
}
return state;
}
// Accesso configurazione Dump
private static void setConfigurazioneDump(NotifierCallback notifierCallback, InRequestProtocolContext inRequestProtocolContext) throws Exception{
if(inRequestProtocolContext.getPddContext().getObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED)==null){
DumpConfigurazione regolaDump = readConfigurazioneDump(inRequestProtocolContext);
if(regolaDump!=null){
if(StatoFunzionalita.ABILITATO.equals(regolaDump.getRealtime())){
boolean requestDumpPostProcessEnabled =
regolaDump.getRichiestaIngresso()!=null &&
(
StatoFunzionalita.ABILITATO.equals(regolaDump.getRichiestaIngresso().getBody())
||
StatoFunzionalita.ABILITATO.equals(regolaDump.getRichiestaIngresso().getHeaders())
||
StatoFunzionalita.ABILITATO.equals(regolaDump.getRichiestaIngresso().getAttachments())
);
boolean responseDumpPostProcessEnabled =
regolaDump.getRispostaIngresso()!=null &&
(
StatoFunzionalita.ABILITATO.equals(regolaDump.getRispostaIngresso().getBody())
||
StatoFunzionalita.ABILITATO.equals(regolaDump.getRispostaIngresso().getHeaders())
||
StatoFunzionalita.ABILITATO.equals(regolaDump.getRispostaIngresso().getAttachments())
);
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.DUMP_POST_PROCESS_ID_CONFIG, regolaDump.getId());
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED, requestDumpPostProcessEnabled);
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED, responseDumpPostProcessEnabled);
notifierCallback.debug("REGOLA DUMP PRESENTE COME POST PROCESS REQUEST["+requestDumpPostProcessEnabled+"] RESPONSE["+responseDumpPostProcessEnabled+"]");
}
else{
notifierCallback.debug("REGOLA DUMP PRESENTE COME REAL TIME");
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED, false);
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED, false);
}
}
else{
notifierCallback.debug("REGOLA DUMP NON PRESENTE");
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.REQUEST_DUMP_POST_PROCESS_ENABLED, false);
inRequestProtocolContext.getPddContext().addObject(NotifierConstants.RESPONSE_DUMP_POST_PROCESS_ENABLED, false);
}
}
}
private static DumpConfigurazione readConfigurazioneDump(InRequestProtocolContext inRequestProtocolContext) throws Exception{
if(inRequestProtocolContext.getIntegrazione()==null) {
throw new Exception("inRequestProtocolContext.getIntegrazione() is null");
}
if(inRequestProtocolContext.getIntegrazione().getIdPD()==null &&
inRequestProtocolContext.getIntegrazione().getIdPA()==null ) {
throw new Exception("non รจ presente ne un identificativo di porta delegata, ne uno di porta applicativa");
}
RequestInfo requestInfo = null;
if(inRequestProtocolContext.getPddContext()!=null && inRequestProtocolContext.getPddContext().containsKey(org.openspcoop2.core.constants.Costanti.REQUEST_INFO)){
requestInfo = (RequestInfo) inRequestProtocolContext.getPddContext().getObject(org.openspcoop2.core.constants.Costanti.REQUEST_INFO);
}
DumpConfigurazione config = null;
ConfigurazionePdDManager configPdDManager = ConfigurazionePdDManager.getInstance(inRequestProtocolContext.getStato());
if(inRequestProtocolContext.getIntegrazione().getIdPD()!=null) {
PortaDelegata pd = configPdDManager.getPortaDelegata(inRequestProtocolContext.getIntegrazione().getIdPD(), requestInfo);
config = configPdDManager.getDumpConfigurazione(pd);
}
else {
PortaApplicativa pa = configPdDManager.getPortaApplicativa(inRequestProtocolContext.getIntegrazione().getIdPA(), requestInfo);
config = configPdDManager.getDumpConfigurazione(pa);
}
return config;
}
}