ConfigurazionePdDManager.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.pdd.config;

  21. import java.io.File;
  22. import java.sql.Connection;
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.Iterator;
  26. import java.util.List;
  27. import java.util.Map;

  28. import javax.servlet.http.HttpServletRequest;

  29. import org.apache.logging.log4j.Level;
  30. import org.openspcoop2.core.allarmi.Allarme;
  31. import org.openspcoop2.core.allarmi.utils.FiltroRicercaAllarmi;
  32. import org.openspcoop2.core.commons.CoreException;
  33. import org.openspcoop2.core.config.AccessoConfigurazione;
  34. import org.openspcoop2.core.config.AccessoDatiAttributeAuthority;
  35. import org.openspcoop2.core.config.AccessoDatiAutenticazione;
  36. import org.openspcoop2.core.config.AccessoDatiAutorizzazione;
  37. import org.openspcoop2.core.config.AccessoDatiGestioneToken;
  38. import org.openspcoop2.core.config.AccessoDatiKeystore;
  39. import org.openspcoop2.core.config.AccessoDatiRichieste;
  40. import org.openspcoop2.core.config.AccessoRegistro;
  41. import org.openspcoop2.core.config.Cache;
  42. import org.openspcoop2.core.config.CanaliConfigurazione;
  43. import org.openspcoop2.core.config.ConfigurazioneMultitenant;
  44. import org.openspcoop2.core.config.Connettore;
  45. import org.openspcoop2.core.config.CorrelazioneApplicativa;
  46. import org.openspcoop2.core.config.CorrelazioneApplicativaRisposta;
  47. import org.openspcoop2.core.config.CorsConfigurazione;
  48. import org.openspcoop2.core.config.Dump;
  49. import org.openspcoop2.core.config.DumpConfigurazione;
  50. import org.openspcoop2.core.config.GenericProperties;
  51. import org.openspcoop2.core.config.GestioneErrore;
  52. import org.openspcoop2.core.config.MessaggiDiagnostici;
  53. import org.openspcoop2.core.config.PortaApplicativa;
  54. import org.openspcoop2.core.config.PortaDelegata;
  55. import org.openspcoop2.core.config.Proprieta;
  56. import org.openspcoop2.core.config.ResponseCachingConfigurazione;
  57. import org.openspcoop2.core.config.ServizioApplicativo;
  58. import org.openspcoop2.core.config.StatoServiziPdd;
  59. import org.openspcoop2.core.config.SystemProperties;
  60. import org.openspcoop2.core.config.TipoFiltroAbilitazioneServizi;
  61. import org.openspcoop2.core.config.Tracciamento;
  62. import org.openspcoop2.core.config.Transazioni;
  63. import org.openspcoop2.core.config.TrasformazioneRegolaRichiesta;
  64. import org.openspcoop2.core.config.TrasformazioneRegolaRisposta;
  65. import org.openspcoop2.core.config.Trasformazioni;
  66. import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
  67. import org.openspcoop2.core.config.constants.RuoloContesto;
  68. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  69. import org.openspcoop2.core.config.constants.StatoFunzionalitaConWarning;
  70. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  71. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  72. import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative;
  73. import org.openspcoop2.core.config.driver.FiltroRicercaPorteDelegate;
  74. import org.openspcoop2.core.config.driver.FiltroRicercaServiziApplicativi;
  75. import org.openspcoop2.core.constants.Costanti;
  76. import org.openspcoop2.core.constants.TipoPdD;
  77. import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
  78. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  79. import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy;
  80. import org.openspcoop2.core.controllo_traffico.ElencoIdPolicy;
  81. import org.openspcoop2.core.controllo_traffico.ElencoIdPolicyAttive;
  82. import org.openspcoop2.core.controllo_traffico.constants.TipoRisorsaPolicyAttiva;
  83. import org.openspcoop2.core.controllo_traffico.driver.PolicyGroupByActiveThreadsType;
  84. import org.openspcoop2.core.id.IDAccordo;
  85. import org.openspcoop2.core.id.IDConnettore;
  86. import org.openspcoop2.core.id.IDGenericProperties;
  87. import org.openspcoop2.core.id.IDPortaApplicativa;
  88. import org.openspcoop2.core.id.IDPortaDelegata;
  89. import org.openspcoop2.core.id.IDServizio;
  90. import org.openspcoop2.core.id.IDServizioApplicativo;
  91. import org.openspcoop2.core.id.IDSoggetto;
  92. import org.openspcoop2.core.id.IdentificativiErogazione;
  93. import org.openspcoop2.core.id.IdentificativiFruizione;
  94. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  95. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  96. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  97. import org.openspcoop2.core.registry.Soggetto;
  98. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  99. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  100. import org.openspcoop2.message.OpenSPCoop2Message;
  101. import org.openspcoop2.message.constants.MessageType;
  102. import org.openspcoop2.message.constants.ServiceBinding;
  103. import org.openspcoop2.message.soap.reader.OpenSPCoop2MessageSoapStreamReader;
  104. import org.openspcoop2.monitor.engine.dynamic.IRegistroPluginsReader;
  105. import org.openspcoop2.monitor.sdk.alarm.AlarmStatus;
  106. import org.openspcoop2.monitor.sdk.alarm.IAlarm;
  107. import org.openspcoop2.pdd.core.PdDContext;
  108. import org.openspcoop2.pdd.core.connettori.ConnettoreMsg;
  109. import org.openspcoop2.pdd.core.connettori.InfoConnettoreIngresso;
  110. import org.openspcoop2.pdd.core.controllo_traffico.SogliaReadTimeout;
  111. import org.openspcoop2.pdd.core.controllo_traffico.SoglieDimensioneMessaggi;
  112. import org.openspcoop2.pdd.core.controllo_traffico.policy.config.PolicyConfiguration;
  113. import org.openspcoop2.pdd.core.dynamic.DynamicUtils;
  114. import org.openspcoop2.pdd.core.dynamic.ErrorHandler;
  115. import org.openspcoop2.pdd.core.dynamic.InformazioniIntegrazione;
  116. import org.openspcoop2.pdd.core.dynamic.InformazioniIntegrazioneCodifica;
  117. import org.openspcoop2.pdd.core.dynamic.InformazioniIntegrazioneSorgente;
  118. import org.openspcoop2.pdd.core.dynamic.MessageContent;
  119. import org.openspcoop2.pdd.core.dynamic.Template;
  120. import org.openspcoop2.pdd.core.integrazione.HeaderIntegrazione;
  121. import org.openspcoop2.pdd.core.token.PolicyGestioneToken;
  122. import org.openspcoop2.pdd.core.token.PolicyNegoziazioneToken;
  123. import org.openspcoop2.pdd.core.token.attribute_authority.PolicyAttributeAuthority;
  124. import org.openspcoop2.pdd.services.connector.FormUrlEncodedHttpServletRequest;
  125. import org.openspcoop2.protocol.engine.mapping.IdentificazioneDinamicaException;
  126. import org.openspcoop2.protocol.registry.CertificateCheck;
  127. import org.openspcoop2.protocol.registry.RegistroServiziManager;
  128. import org.openspcoop2.protocol.registry.RegistroServiziReader;
  129. import org.openspcoop2.protocol.sdk.Busta;
  130. import org.openspcoop2.protocol.sdk.Context;
  131. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  132. import org.openspcoop2.protocol.sdk.builder.ProprietaErroreApplicativo;
  133. import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
  134. import org.openspcoop2.protocol.sdk.state.IState;
  135. import org.openspcoop2.protocol.sdk.state.RequestInfo;
  136. import org.openspcoop2.protocol.sdk.state.StateMessage;
  137. import org.openspcoop2.protocol.sdk.state.URLProtocolContext;
  138. import org.openspcoop2.utils.NameValue;
  139. import org.openspcoop2.utils.certificate.CertificateInfo;
  140. import org.openspcoop2.utils.crypt.CryptConfig;
  141. import org.openspcoop2.utils.transport.TransportResponseContext;
  142. import org.openspcoop2.utils.transport.http.HttpServletTransportRequestContext;
  143. import org.slf4j.Logger;

  144. /**
  145.  * ConfigurazionePdDManager
  146.  *
  147.  * @author Poli Andrea (apoli@link.it)
  148.  * @author $Author$
  149.  * @version $Rev$, $Date$
  150.  */
  151. public class ConfigurazionePdDManager {

  152.     private static ConfigurazionePdDManager staticInstanceWithoutState = null;
  153.     private static synchronized void initStaticInstanceWithoutState(){
  154.         if(staticInstanceWithoutState == null) {
  155.             staticInstanceWithoutState = new ConfigurazionePdDManager();
  156.             staticInstanceWithoutState.singleInstance = true;
  157.         }
  158.     }

  159.     public static ConfigurazionePdDManager getInstance(){
  160.         if(staticInstanceWithoutState == null) {
  161.             if(ConfigurazionePdDReader.getInstance()==null || RegistroServiziReader.getInstance()==null) {
  162.                 return new ConfigurazionePdDManager(); // succede all'avvio
  163.             }
  164.             initStaticInstanceWithoutState();
  165.         }
  166.         return staticInstanceWithoutState;
  167.     }
  168.     public static ConfigurazionePdDManager getInstance(IState state){
  169.         if(state instanceof StateMessage) {
  170.             return getInstance((StateMessage)state);
  171.         }
  172.         return getInstance();
  173.     }
  174.     public static ConfigurazionePdDManager getInstance(StateMessage state){
  175.         if(state!=null) {
  176.             return new ConfigurazionePdDManager(state);
  177.         }
  178.         return getInstance();
  179.     }
  180.     public static ConfigurazionePdDManager getInstance(IState requestStateParam, IState responseStateParam){
  181.         StateMessage requestState = null;
  182.         StateMessage responseState = null;
  183.         if(requestStateParam instanceof StateMessage) {
  184.             requestState = (StateMessage) requestStateParam;
  185.         }
  186.         if(responseStateParam instanceof StateMessage) {
  187.             responseState = (StateMessage) responseStateParam;
  188.         }
  189.         if(requestState!=null || responseState!=null) {
  190.             return new ConfigurazionePdDManager(requestState,responseState);
  191.         }
  192.         return getInstance();
  193.     }
  194.     public static ConfigurazionePdDManager getInstance(StateMessage requestState, StateMessage responseState){
  195.         if(requestState!=null || responseState!=null) {
  196.             return new ConfigurazionePdDManager(requestState,responseState);
  197.         }
  198.         return getInstance();
  199.     }


  200.     private boolean singleInstance = false;
  201.     private OpenSPCoop2Properties op2Properties = null;
  202.     private ConfigurazionePdDReader configurazionePdDReader = null;
  203.     private RegistroServiziManager registroServiziManager = null;
  204.     private StateMessage state = null;
  205.     private StateMessage responseState = null;

  206.     public RegistroServiziManager getRegistroServiziManager() {
  207.         return this.registroServiziManager;
  208.     }
  209.     public StateMessage getState() {
  210.         return this.state;
  211.     }
  212.     public StateMessage getResponseState() {
  213.         return this.responseState;
  214.     }
  215.    
  216.     public boolean isInitializedConfigurazionePdDReader(){
  217.         return this.configurazionePdDReader!=null;
  218.     }

  219.     public ConfigurazionePdDManager(){
  220.         this.configurazionePdDReader = ConfigurazionePdDReader.getInstance();
  221.         this.registroServiziManager = RegistroServiziManager.getInstance();
  222.         this.op2Properties = OpenSPCoop2Properties.getInstance();
  223.     }
  224.     public ConfigurazionePdDManager(StateMessage state){
  225.         this.configurazionePdDReader = ConfigurazionePdDReader.getInstance();
  226.         this.state = state;
  227.         this.registroServiziManager = RegistroServiziManager.getInstance(this.state);
  228.         this.op2Properties = OpenSPCoop2Properties.getInstance();
  229.     }
  230.     public ConfigurazionePdDManager(StateMessage requestState, StateMessage responseState){
  231.         this.configurazionePdDReader = ConfigurazionePdDReader.getInstance();
  232.         this.state = requestState;
  233.         this.responseState = responseState;
  234.         this.registroServiziManager = RegistroServiziManager.getInstance(this.state, this.responseState);
  235.         this.op2Properties = OpenSPCoop2Properties.getInstance();
  236.     }
  237.    
  238.     public ConfigurazionePdDManager refreshState(IState requestStateParam, IState responseStateParam) {
  239.         StateMessage reqState = null;
  240.         StateMessage resState = null;
  241.         if(requestStateParam instanceof StateMessage) {
  242.             reqState = (StateMessage) requestStateParam;
  243.         }
  244.         if(responseStateParam instanceof StateMessage) {
  245.             resState = (StateMessage) responseStateParam;
  246.         }
  247.         return refreshState(reqState, resState);
  248.     }
  249.     public ConfigurazionePdDManager refreshState(StateMessage requestState, StateMessage responseState) {
  250.         return refreshStateEngine(requestState, responseState, null);
  251.     }
  252.     private ConfigurazionePdDManager refreshStateEngine(StateMessage requestState, StateMessage responseState, RegistroServiziManager registroServiziManagerParam) {
  253.         if(requestState==null && responseState==null) {
  254.             return getInstance(); // senza stato
  255.         }
  256.         if(this.singleInstance) {
  257.             return ConfigurazionePdDManager.getInstance(requestState, responseState); // inizialmente era senza stato, ora serve
  258.         }
  259.         this.state = requestState;
  260.         this.responseState = responseState;
  261.         if(registroServiziManagerParam!=null) {
  262.             this.registroServiziManager = registroServiziManagerParam;
  263.         }
  264.         else {
  265.             this.registroServiziManager = this.registroServiziManager.refreshState(this.state, this.responseState);
  266.         }
  267.         return this;
  268.     }
  269.     public ConfigurazionePdDManager refreshState(RegistroServiziManager registroServiziManager) {
  270.         return this.refreshStateEngine(registroServiziManager.getState(), registroServiziManager.getResponseState(), registroServiziManager);
  271.     }

  272.     private Connection getConnection() {
  273.         if(this.state!=null) {
  274.             Connection c = StateMessage.getConnection(this.state);
  275.             if(c!=null) {
  276.                 return c;
  277.             }
  278.         }
  279.         if(this.responseState!=null) {
  280.             Connection c = StateMessage.getConnection(this.responseState);
  281.             if(c!=null) {
  282.                 return c;
  283.             }
  284.         }
  285.         return null;
  286.     }



  287.     /* ********  U T I L S  ******** */

  288.     public void isAlive() throws CoreException{
  289.         this.configurazionePdDReader.isAlive();
  290.     }

  291.     public void validazioneSemantica(String[] tipiConnettori,String[] tipiMsgDiagnosticoAppender,String[] tipiTracciamentoAppender,String[] tipiDumpAppender,
  292.             String[]tipoAutenticazionePortaDelegata,String[]tipoAutenticazionePortaApplicativa,
  293.             String[]tipoAutorizzazionePortaDelegata,String[]tipoAutorizzazionePortaApplicativa,
  294.             String[]tipoAutorizzazioneContenutoPortaDelegata,String[]tipoAutorizzazioneContenutoPortaApplicativa,
  295.             String [] tipiIntegrazionePD, String [] tipiIntegrazionePA,
  296.             boolean validazioneSemanticaAbilitataXML,boolean validazioneSemanticaAbilitataAltreConfigurazioni,boolean validaConfigurazione,
  297.             Logger logConsole) throws CoreException{
  298.         this.configurazionePdDReader.validazioneSemantica(tipiConnettori, tipiMsgDiagnosticoAppender, tipiTracciamentoAppender, tipiDumpAppender,
  299.                 tipoAutenticazionePortaDelegata, tipoAutenticazionePortaApplicativa,
  300.                 tipoAutorizzazionePortaDelegata, tipoAutorizzazionePortaApplicativa,
  301.                 tipoAutorizzazioneContenutoPortaDelegata, tipoAutorizzazioneContenutoPortaApplicativa,
  302.                 tipiIntegrazionePD, tipiIntegrazionePA, validazioneSemanticaAbilitataXML,
  303.                 validazioneSemanticaAbilitataAltreConfigurazioni, validaConfigurazione, logConsole);
  304.     }

  305.     public void setValidazioneSemanticaModificaConfigurazionePdDXML(String[] tipiConnettori,
  306.             String[]tipoMsgDiagnosticiAppender,String[]tipoTracciamentoAppender,String[] tipiDumpAppender,
  307.             String[]tipoAutenticazionePortaDelegata,String[]tipoAutenticazionePortaApplicativa,
  308.             String[]tipoAutorizzazionePortaDelegata,String[]tipoAutorizzazionePortaApplicativa,
  309.             String[]tipoAutorizzazioneContenutoPortaDelegata,String[]tipoAutorizzazioneContenutoPortaApplicativa,
  310.             String[]tipoIntegrazionePD,String[]tipoIntegrazionePA) throws CoreException{
  311.         this.configurazionePdDReader.setValidazioneSemanticaModificaConfigurazionePdDXML(tipiConnettori, tipoMsgDiagnosticiAppender, tipoTracciamentoAppender, tipiDumpAppender,
  312.                 tipoAutenticazionePortaDelegata, tipoAutenticazionePortaApplicativa,
  313.                 tipoAutorizzazionePortaDelegata, tipoAutorizzazionePortaApplicativa,
  314.                 tipoAutorizzazioneContenutoPortaDelegata, tipoAutorizzazioneContenutoPortaApplicativa,
  315.                 tipoIntegrazionePD, tipoIntegrazionePA);
  316.     }

  317.     public void verificaConsistenzaConfigurazione() throws DriverConfigurazioneException {
  318.         this.configurazionePdDReader.verificaConsistenzaConfigurazione();
  319.     }

  320.     private void resolveDynamicValue(String oggetto, MessageSecurityConfig config, Logger log, OpenSPCoop2Message message, Busta busta,
  321.             RequestInfo requestInfo, PdDContext pddContext, MessageSecurityConfig requestConfig) {
  322.                
  323.         if (config != null && config.getFlowParameters() != null && !config.getFlowParameters().isEmpty()) {
  324.             ArrayList<String> valuesForReplace = new ArrayList<>();
  325.             for (String key : config.getFlowParameters().keySet()) {
  326.                 Object oValue = config.getFlowParameters().get(key);
  327.                 if (oValue instanceof String) {
  328.                     String value = (String)oValue;
  329.                     if (value.contains("$") || value.contains("?")) {
  330.                         valuesForReplace.add(key);
  331.                     }
  332.                 }
  333.             }

  334.             if (!valuesForReplace.isEmpty()) {
  335.                
  336.                 Map<String, Object> dynamicMap = buildDynamicMap(log, oggetto, config,
  337.                         message, busta,
  338.                         requestInfo, pddContext, requestConfig);
  339.                
  340.                 if(dynamicMap!=null) {
  341.                     resolveValues(log, oggetto, config, dynamicMap, pddContext,
  342.                             valuesForReplace);
  343.                 }
  344.                
  345.             }
  346.         }

  347.     }
  348.     private Map<String, Object> buildDynamicMap(Logger log, String oggetto, MessageSecurityConfig config,
  349.             OpenSPCoop2Message message, Busta busta,
  350.             RequestInfo requestInfo, PdDContext pddContext, MessageSecurityConfig requestConfig) {
  351.         Map<String, Object> dynamicMap = null;
  352.         try {
  353.             MessageContent messageContent = null;
  354.             boolean bufferMessageReadOnly =  OpenSPCoop2Properties.getInstance().isReadByPathBufferEnabled();
  355.             if (ServiceBinding.SOAP.equals(message.getServiceBinding())) {
  356.                 messageContent = new MessageContent(message.castAsSoap(), bufferMessageReadOnly, pddContext);
  357.             } else if (MessageType.XML.equals(message.getMessageType())) {
  358.                 messageContent = new MessageContent(message.castAsRestXml(), bufferMessageReadOnly, pddContext);
  359.             } else if (MessageType.JSON.equals(message.getMessageType())) {
  360.                 messageContent = new MessageContent(message.castAsRestJson(), bufferMessageReadOnly, pddContext);
  361.             }

  362.             dynamicMap = getDynamicMap(messageContent,
  363.                     log, config,
  364.                     message, busta,
  365.                     requestInfo, pddContext, requestConfig);
  366.         } catch (Exception e) {
  367.             log.error(oggetto + " errore durante l'analisi delle proprietà dinamiche (build dynamicMap): " + e.getMessage(), e);
  368.         }
  369.         return dynamicMap;
  370.     }
  371.     private Map<String, Object> getDynamicMap(MessageContent messageContent,
  372.             Logger log, MessageSecurityConfig config,
  373.             OpenSPCoop2Message message, Busta busta,
  374.             RequestInfo requestInfo, PdDContext pddContext, MessageSecurityConfig requestConfig){
  375.         Map<String, Object> dynamicMap = new HashMap<>();
  376.         ErrorHandler errorHandler = new ErrorHandler();
  377.         if(requestConfig!=null) {
  378.             Map<String, List<String>> parametriTrasportoRisposta = null;
  379.             if(message.getTransportResponseContext()!=null) {
  380.                 if(message.getTransportResponseContext().getHeaders()!=null &&
  381.                     !message.getTransportResponseContext().getHeaders().isEmpty()) {
  382.                     parametriTrasportoRisposta = message.getTransportResponseContext().getHeaders();
  383.                 }
  384.             }
  385.             else {
  386.                 parametriTrasportoRisposta = new HashMap<>();
  387.             }
  388.            
  389.             DynamicUtils.fillDynamicMapResponse(log, dynamicMap, requestConfig.getDynamicMap(), pddContext,
  390.                     message,
  391.                     messageContent,
  392.                     busta,
  393.                     parametriTrasportoRisposta,
  394.                     errorHandler);
  395.         }
  396.         else {
  397.             Map<String, List<String>> pTrasporto = null;
  398.             String urlInvocazione = null;
  399.             Map<String, List<String>> pQuery = null;
  400.             Map<String, List<String>> pForm = null;
  401.             if (requestInfo != null && requestInfo.getProtocolContext() != null) {
  402.                 pTrasporto = requestInfo.getProtocolContext().getHeaders();
  403.                 urlInvocazione = requestInfo.getProtocolContext().getUrlInvocazione_formBased();
  404.                 pQuery = requestInfo.getProtocolContext().getParameters();
  405.                 pForm = getPForm(requestInfo);
  406.             }
  407.            
  408.             DynamicUtils.fillDynamicMapRequest(log, dynamicMap, pddContext, urlInvocazione, message, messageContent, busta,
  409.                     pTrasporto,
  410.                     pQuery,
  411.                     pForm,
  412.                     errorHandler);
  413.         }
  414.         config.setDynamicMap(dynamicMap);
  415.         return dynamicMap;
  416.     }
  417.     private Map<String, List<String>> getPForm(RequestInfo requestInfo){
  418.         Map<String, List<String>> pForm = null;
  419.         if(requestInfo.getProtocolContext() instanceof HttpServletTransportRequestContext) {
  420.             HttpServletTransportRequestContext httpServletContext = requestInfo.getProtocolContext();
  421.             HttpServletRequest httpServletRequest = httpServletContext.getHttpServletRequest();
  422.             if(httpServletRequest instanceof FormUrlEncodedHttpServletRequest) {
  423.                 FormUrlEncodedHttpServletRequest formServlet = (FormUrlEncodedHttpServletRequest) httpServletRequest;
  424.                 if(formServlet.getFormUrlEncodedParametersValues()!=null &&
  425.                         !formServlet.getFormUrlEncodedParametersValues().isEmpty()) {
  426.                     pForm = formServlet.getFormUrlEncodedParametersValues();
  427.                 }
  428.             }
  429.         }
  430.         return pForm;
  431.     }
  432.     private void resolveValues(Logger log, String oggetto, MessageSecurityConfig config, Map<String, Object> dynamicMap, PdDContext pddContext,
  433.             ArrayList<String> valuesForReplace) {
  434.         try {
  435.             Iterator<String> it = valuesForReplace.iterator();
  436.             while(it.hasNext()) {
  437.                 String keyForReplace = it.next();
  438.                 resolveValue(log, oggetto, config, keyForReplace, dynamicMap, pddContext);
  439.             }
  440.         } catch (Exception e) {
  441.             log.error(oggetto + " errore durante l'analisi delle proprietà dinamiche: " + e.getMessage(), e);
  442.         }
  443.     }
  444.     private void resolveValue(Logger log, String oggetto, MessageSecurityConfig config, String keyForReplace, Map<String, Object> dynamicMap, PdDContext pddContext) {
  445.         String value = null;
  446.         try {
  447.             value = (String)config.getFlowParameters().get(keyForReplace);
  448.             String newValue = DynamicUtils.convertDynamicPropertyValue("ConditionalMessageSecurity", value, dynamicMap, pddContext);
  449.             if (newValue != null && !"".contentEquals(newValue)) {
  450.                 config.getFlowParameters().put(keyForReplace, newValue);
  451.             }
  452.         } catch (Exception e) {
  453.             log.error(oggetto + " errore durante la risoluzione della proprietà '" + keyForReplace + "' [" + value + "]: " + e.getMessage(), e);
  454.         }
  455.     }



  456.     /* ********  SOGGETTI (Interfaccia)  ******** */

  457.     public String getIdentificativoPorta(IDSoggetto idSoggetto,IProtocolFactory<?> protocolFactory, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  458.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  459.         if(useRequestInfo) {
  460.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoErogatoreIdentificativoPorta()!=null &&
  461.                     idSoggetto!=null && idSoggetto.getTipo()!=null && idSoggetto.getNome()!=null &&
  462.                     idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  463.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  464.                 return requestInfo.getRequestConfig().getSoggettoErogatoreIdentificativoPorta();
  465.             }
  466.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoFruitoreIdentificativoPorta()!=null &&
  467.                     idSoggetto!=null && idSoggetto.getTipo()!=null && idSoggetto.getNome()!=null &&
  468.                     idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  469.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  470.                 return requestInfo.getRequestConfig().getSoggettoFruitoreIdentificativoPorta();
  471.             }
  472.         }
  473.         if(
  474.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  475.                 &&
  476.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null &&
  477.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreIdentificativoPorta()!=null &&
  478.                     idSoggetto!=null && idSoggetto.getTipo()!=null && idSoggetto.getNome()!=null &&
  479.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  480.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome()))
  481.             ){
  482.             return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreIdentificativoPorta();
  483.         }
  484.         if(
  485.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  486.             &&
  487.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null &&
  488.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreIdentificativoPorta()!=null &&
  489.                     idSoggetto!=null && idSoggetto.getTipo()!=null && idSoggetto.getNome()!=null &&
  490.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  491.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome()))
  492.             ){
  493.             return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreIdentificativoPorta();
  494.         }
  495.         return this.configurazionePdDReader.getIdentificativoPorta(this.getConnection(), idSoggetto, protocolFactory, requestInfo);
  496.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  497.     }

  498.     public boolean isSoggettoVirtuale(IDSoggetto idSoggetto, RequestInfo requestInfo) throws DriverConfigurazioneException {
  499.         if(!this.op2Properties.isSoggettiVirtualiEnabled()) {
  500.             return false;
  501.         }
  502.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  503.         if(useRequestInfo) {
  504.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoErogatoreSoggettoVirtuale()!=null &&
  505.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  506.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  507.                 return requestInfo.getRequestConfig().getSoggettoErogatoreSoggettoVirtuale();
  508.             }
  509.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoFruitoreSoggettoVirtuale()!=null &&
  510.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  511.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  512.                 return requestInfo.getRequestConfig().getSoggettoFruitoreSoggettoVirtuale();
  513.             }
  514.         }
  515.         if(
  516.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  517.             &&
  518.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null &&
  519.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreSoggettoVirtuale()!=null &&
  520.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  521.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome()))
  522.             ){
  523.             return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreSoggettoVirtuale();
  524.         }
  525.         if(
  526.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  527.             &&
  528.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null &&
  529.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreSoggettoVirtuale()!=null &&
  530.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  531.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome()))
  532.             ){
  533.             return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreSoggettoVirtuale();
  534.         }
  535.         return this.configurazionePdDReader.isSoggettoVirtuale(this.getConnection(), idSoggetto);
  536.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  537.     }

  538.     public org.openspcoop2.core.config.Soggetto getSoggetto(IDSoggetto idSoggetto, RequestInfo requestInfo)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{  
  539.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  540.         if(useRequestInfo) {
  541.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null &&
  542.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  543.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  544.                 return requestInfo.getRequestConfig().getSoggettoErogatoreConfig();
  545.             }
  546.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null &&
  547.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  548.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  549.                 return requestInfo.getRequestConfig().getSoggettoFruitoreConfig();
  550.             }
  551.         }
  552.         if(
  553.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  554.             &&
  555.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null && idSoggetto!=null &&
  556.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  557.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome()))
  558.             ){
  559.             return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig();
  560.         }
  561.         if(
  562.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  563.             &&
  564.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null && idSoggetto!=null &&
  565.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  566.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome()))
  567.             ){
  568.             return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig();
  569.         }
  570.         return this.configurazionePdDReader.getSoggetto(this.getConnection(), idSoggetto);
  571.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  572.     }
  573.    
  574.     public boolean existsSoggetto(IDSoggetto idSoggetto, RequestInfo requestInfo)throws DriverConfigurazioneException{  
  575.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  576.         if(useRequestInfo &&
  577.             (
  578.                 (
  579.                     requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null &&
  580.                     idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  581.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())
  582.                 )
  583.                 ||
  584.                 (
  585.                     requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null &&
  586.                     idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  587.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())
  588.                 )
  589.             )
  590.         ){
  591.             return true;
  592.         }
  593.         if(
  594.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  595.             &&
  596.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null && idSoggetto!=null &&
  597.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  598.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome()))
  599.             ){
  600.             return true;
  601.         }
  602.         if(
  603.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  604.             &&
  605.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null && idSoggetto!=null &&
  606.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  607.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome()))
  608.             ){
  609.             return true;
  610.         }
  611.         return this.configurazionePdDReader.existsSoggetto(this.getConnection(), idSoggetto);
  612.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  613.     }

  614.     public List<IDServizio> getServiziSoggettiVirtuali() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  615.         List<IDServizio> l = null;
  616.         if(!this.op2Properties.isSoggettiVirtualiEnabled()) {
  617.             return l;
  618.         }
  619.         return this.configurazionePdDReader.getServiziSoggettiVirtuali(this.getConnection());
  620.     }


  621.     /* ************* ROUTING **************** */

  622.     public Connettore getForwardRoute(IDSoggetto idSoggettoDestinatario,boolean functionAsRouter, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  623.         return this.configurazionePdDReader.getForwardRoute(this.getConnection(), this.registroServiziManager, idSoggettoDestinatario, functionAsRouter, requestInfo);
  624.     }

  625.     public Connettore getForwardRoute(IDSoggetto idSoggettoMittente, IDServizio idServizio,boolean functionAsRouter, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  626.         return this.configurazionePdDReader.getForwardRoute(this.getConnection(), this.registroServiziManager, idSoggettoMittente, idServizio, functionAsRouter, requestInfo);
  627.     }

  628.     public String getRegistroForImbustamento(IDSoggetto idSoggettoMittente, IDServizio idServizio,boolean functionAsRouter, RequestInfo requestInfo)throws DriverConfigurazioneException{
  629.         return this.configurazionePdDReader.getRegistroForImbustamento(this.getConnection(), this.registroServiziManager, idSoggettoMittente, idServizio, functionAsRouter, requestInfo);
  630.     }

  631.     public boolean routerFunctionActive() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  632.         return this.configurazionePdDReader.routerFunctionActive(this.getConnection());
  633.     }

  634.     public IDSoggetto getRouterIdentity(IProtocolFactory<?> protocolFactory, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  635.         return this.configurazionePdDReader.getRouterIdentity(this.getConnection(),protocolFactory, requestInfo);
  636.     }


  637.     /* ********  URLPrefixRewriter  ******** */

  638.     public void setPDUrlPrefixRewriter(org.openspcoop2.core.config.Connettore connettore, IDSoggetto idSoggettoFruitore, RequestInfo requestInfo) throws DriverConfigurazioneNotFound,DriverConfigurazioneException{
  639.         this.configurazionePdDReader.setPDUrlPrefixRewriter(this.getConnection(), connettore, idSoggettoFruitore, requestInfo);
  640.     }

  641.     public void setPAUrlPrefixRewriter(org.openspcoop2.core.config.Connettore connettore, IDSoggetto idSoggettoErogatore, RequestInfo requestInfo) throws DriverConfigurazioneNotFound,DriverConfigurazioneException{
  642.         this.configurazionePdDReader.setPAUrlPrefixRewriter(this.getConnection(), connettore, idSoggettoErogatore, requestInfo);
  643.     }


  644.     /* ********  PORTE DELEGATE (Interfaccia)  ******** */

  645.     public IDPortaDelegata convertToIDPortaDelegata(PortaDelegata pd) throws DriverRegistroServiziException{

  646.         IDPortaDelegata idPD = new IDPortaDelegata();
  647.         idPD.setNome(pd.getNome());

  648.         IdentificativiFruizione idFruizione = new IdentificativiFruizione();

  649.         IDSoggetto soggettoFruitore = new IDSoggetto(pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario());
  650.         idFruizione.setSoggettoFruitore(soggettoFruitore);

  651.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pd.getServizio().getTipo(),pd.getServizio().getNome(),
  652.                 new IDSoggetto(pd.getSoggettoErogatore().getTipo(),pd.getSoggettoErogatore().getNome()),
  653.                 pd.getServizio().getVersione());
  654.         if(pd.getAzione()!=null && pd.getAzione().getNome()!=null && !"".equals(pd.getAzione().getNome())){
  655.             idServizio.setAzione(pd.getAzione().getNome());
  656.         }
  657.         idFruizione.setIdServizio(idServizio);

  658.         idPD.setIdentificativiFruizione(idFruizione);

  659.         return idPD;
  660.     }

  661.     public IDPortaDelegata getIDPortaDelegata(String nome, RequestInfo requestInfo, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  662.    
  663.         IDPortaDelegata idPortaDelegata = null;
  664.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null) {
  665.             if( requestInfo.getRequestConfig().getIdPortaDelegata()!=null && nome.equals(requestInfo.getRequestConfig().getIdPortaDelegata().getNome())) {
  666.                 idPortaDelegata = requestInfo.getRequestConfig().getIdPortaDelegata();
  667.             }
  668.             else if( requestInfo.getRequestConfig().getIdPortaDelegataDefault()!=null && nome.equals(requestInfo.getRequestConfig().getIdPortaDelegataDefault().getNome())) {
  669.                 idPortaDelegata = requestInfo.getRequestConfig().getIdPortaDelegataDefault();
  670.             }
  671.         }
  672.         if(idPortaDelegata==null) {
  673.             idPortaDelegata = this.configurazionePdDReader.getIDPortaDelegata(this.getConnection(), nome);
  674.         }
  675.        
  676.         setCodicePorta(idPortaDelegata, requestInfo, protocolFactory);

  677.         return idPortaDelegata;
  678.     }
  679.     private void setCodicePorta(IDPortaDelegata idPortaDelegata, RequestInfo requestInfo, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException {
  680.         try{
  681.             if(idPortaDelegata!=null && idPortaDelegata.getIdentificativiFruizione()!=null){
  682.                 if(idPortaDelegata.getIdentificativiFruizione().getSoggettoFruitore()!=null){
  683.                     IDSoggetto soggetto = idPortaDelegata.getIdentificativiFruizione().getSoggettoFruitore();
  684.                     if(soggetto.getCodicePorta()==null){
  685.                         soggetto.setCodicePorta(this.registroServiziManager.getDominio(soggetto, null, protocolFactory, requestInfo));
  686.                     }
  687.                 }
  688.                 if(idPortaDelegata.getIdentificativiFruizione().getIdServizio()!=null &&
  689.                         idPortaDelegata.getIdentificativiFruizione().getIdServizio().getSoggettoErogatore()!=null){
  690.                     IDSoggetto soggetto = idPortaDelegata.getIdentificativiFruizione().getIdServizio().getSoggettoErogatore();
  691.                     if(soggetto.getCodicePorta()==null){
  692.                         soggetto.setCodicePorta(this.registroServiziManager.getDominio(soggetto, null, protocolFactory, requestInfo));
  693.                     }
  694.                 }
  695.             }
  696.         }catch(Exception e){
  697.             throw new DriverConfigurazioneException(e.getMessage(),e);
  698.         }
  699.     }

  700.     public PortaDelegata getPortaDelegata(IDPortaDelegata idPD, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  701.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idPD!=null && idPD.getNome()!=null) {
  702.             if( requestInfo.getRequestConfig().getPortaDelegata()!=null && idPD.getNome().equals(requestInfo.getRequestConfig().getPortaDelegata().getNome())) {
  703.                 return requestInfo.getRequestConfig().getPortaDelegata();
  704.             }
  705.             else if( requestInfo.getRequestConfig().getPortaDelegataDefault()!=null && idPD.getNome().equals(requestInfo.getRequestConfig().getPortaDelegataDefault().getNome())) {
  706.                 return requestInfo.getRequestConfig().getPortaDelegataDefault();
  707.             }
  708.         }
  709.         return this.configurazionePdDReader.getPortaDelegata(this.getConnection(), idPD);
  710.     }

  711.     public PortaDelegata getPortaDelegataSafeMethod(IDPortaDelegata idPD, RequestInfo requestInfo)throws DriverConfigurazioneException{
  712.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idPD!=null && idPD.getNome()!=null) {
  713.             if( requestInfo.getRequestConfig().getPortaDelegata()!=null && idPD.getNome().equals(requestInfo.getRequestConfig().getPortaDelegata().getNome())) {
  714.                 return requestInfo.getRequestConfig().getPortaDelegata();
  715.             }
  716.             else if( requestInfo.getRequestConfig().getPortaDelegataDefault()!=null && idPD.getNome().equals(requestInfo.getRequestConfig().getPortaDelegataDefault().getNome())) {
  717.                 return requestInfo.getRequestConfig().getPortaDelegataDefault();
  718.             }
  719.         }
  720.         return this.configurazionePdDReader.getPortaDelegataSafeMethod(this.getConnection(), idPD);    
  721.     }
  722.    
  723.     public void updateStatoPortaDelegata(IDPortaDelegata idPD, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  724.         this.configurazionePdDReader.updateStatoPortaDelegata(this.getConnection(), idPD, stato);
  725.     }
  726.    
  727.     public Map<String, String> getProprietaConfigurazione(PortaDelegata pd) throws DriverConfigurazioneException {
  728.         return this.configurazionePdDReader.getProprietaConfigurazione(pd);
  729.     }

  730.     public boolean identificazioneContentBased(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  731.         return this.configurazionePdDReader.identificazioneContentBased(pd);
  732.     }

  733.     public boolean identificazioneInputBased(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  734.         return this.configurazionePdDReader.identificazioneInputBased(pd);
  735.     }

  736.     public String getAzione(PortaDelegata pd,URLProtocolContext urlProtocolContext,RequestInfo requestInfo,
  737.             OpenSPCoop2Message message, OpenSPCoop2MessageSoapStreamReader soapStreamReader, HeaderIntegrazione headerIntegrazione,boolean readFirstHeaderIntegrazione,
  738.             IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException, IdentificazioneDinamicaException {
  739.         return this.configurazionePdDReader.getAzione(this.registroServiziManager, pd, urlProtocolContext, requestInfo,
  740.                 message, soapStreamReader, headerIntegrazione, readFirstHeaderIntegrazione, protocolFactory);
  741.     }

  742.     public MTOMProcessorConfig getMTOMProcessorForSender(PortaDelegata pd) throws DriverConfigurazioneException{
  743.         return this.configurazionePdDReader.getMTOMProcessorForSender(pd);
  744.     }

  745.     public MTOMProcessorConfig getMTOMProcessorForReceiver(PortaDelegata pd) throws DriverConfigurazioneException{
  746.         return this.configurazionePdDReader.getMTOMProcessorForReceiver(pd);
  747.     }

  748.     public MessageSecurityConfig getMessageSecurityForSender(PortaDelegata pd) throws DriverConfigurazioneException{
  749.         return this.configurazionePdDReader.getMessageSecurityForSender(pd);
  750.     }

  751.     public MessageSecurityConfig getMessageSecurityForSender(PortaDelegata pd, Logger log, OpenSPCoop2Message message, Busta busta, RequestInfo requestInfo, PdDContext pddContext) throws DriverConfigurazioneException {
  752.         MessageSecurityConfig config = this.configurazionePdDReader.getMessageSecurityForSender(pd);
  753.         this.resolveDynamicValue("getMessageSecurityForSender[" + pd.getNome() + "]", config, log, message, busta, requestInfo, pddContext,
  754.                 null);
  755.         return config;
  756.     }

  757.     public MessageSecurityConfig getMessageSecurityForReceiver(PortaDelegata pd) throws DriverConfigurazioneException{
  758.         return this.configurazionePdDReader.getMessageSecurityForReceiver(pd);
  759.     }
  760.     public MessageSecurityConfig getMessageSecurityForReceiver(PortaDelegata pd, Logger log, OpenSPCoop2Message message, Busta busta, RequestInfo requestInfo, PdDContext pddContext,
  761.             MessageSecurityConfig requestConfig) throws DriverConfigurazioneException{
  762.         MessageSecurityConfig config = this.configurazionePdDReader.getMessageSecurityForReceiver(pd);
  763.         this.resolveDynamicValue("getMessageSecurityForReceiver[" + pd.getNome() + "]", config, log, message, busta, requestInfo, pddContext,
  764.                 requestConfig);
  765.         return config;
  766.     }

  767.     public String getAutenticazione(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  768.         return this.configurazionePdDReader.getAutenticazione(pd);
  769.     }

  770.     public boolean isAutenticazioneOpzionale(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  771.         return this.configurazionePdDReader.isAutenticazioneOpzionale(pd);
  772.     }

  773.     public String getGestioneToken(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  774.         return this.configurazionePdDReader.getGestioneToken(pd);
  775.     }

  776.     public PolicyGestioneToken getPolicyGestioneToken(PortaDelegata pd, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  777.         String nome = null;
  778.         if(pd!=null && pd.getGestioneToken()!=null && pd.getGestioneToken().getPolicy()!=null) {
  779.             nome = pd.getGestioneToken().getPolicy();
  780.         }
  781.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null;
  782.         if(useRequestInfo) {
  783.             Object o = requestInfo.getRequestConfig().getPolicyValidazioneToken(nome);
  784.             if(o instanceof PolicyGestioneToken) {
  785.                 return (PolicyGestioneToken) o;
  786.             }
  787.         }
  788.         PolicyGestioneToken policy = this.configurazionePdDReader.getPolicyGestioneToken(this.getConnection(), pd);
  789.         if(useRequestInfo) {
  790.             requestInfo.getRequestConfig().addPolicyValidazioneToken(nome, policy,
  791.                     requestInfo.getIdTransazione());
  792.         }
  793.         return policy;
  794.     }

  795.     public String getAutorizzazione(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  796.         return this.configurazionePdDReader.getAutorizzazione(pd);
  797.     }

  798.     public String getAutorizzazioneContenuto(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  799.         return this.configurazionePdDReader.getAutorizzazioneContenuto(pd);
  800.     }

  801.     public CorsConfigurazione getConfigurazioneCORS(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  802.         return this.configurazionePdDReader.getConfigurazioneCORS(this.getConnection(), pd);
  803.     }

  804.     public ResponseCachingConfigurazione getConfigurazioneResponseCaching(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  805.         return this.configurazionePdDReader.getConfigurazioneResponseCaching(this.getConnection(), pd);
  806.     }

  807.     public boolean ricevutaAsincronaSimmetricaAbilitata(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  808.         return this.configurazionePdDReader.ricevutaAsincronaSimmetricaAbilitata(pd);
  809.     }

  810.     public boolean ricevutaAsincronaAsimmetricaAbilitata(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  811.         return this.configurazionePdDReader.ricevutaAsincronaAsimmetricaAbilitata(pd);
  812.     }

  813.     public ValidazioneContenutiApplicativi getTipoValidazioneContenutoApplicativo(PortaDelegata pd,String implementazionePdDSoggetto, boolean request) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  814.         return this.configurazionePdDReader.getTipoValidazioneContenutoApplicativo(this.getConnection(), pd, implementazionePdDSoggetto, request);
  815.     }

  816.     public CorrelazioneApplicativa getCorrelazioneApplicativa(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  817.         return this.configurazionePdDReader.getCorrelazioneApplicativa(pd);
  818.     }

  819.     public CorrelazioneApplicativaRisposta getCorrelazioneApplicativaRisposta(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  820.         return this.configurazionePdDReader.getCorrelazioneApplicativaRisposta(pd);
  821.     }

  822.     public String[] getTipiIntegrazione(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  823.         return this.configurazionePdDReader.getTipiIntegrazione(pd);
  824.     }

  825.     public boolean isGestioneManifestAttachments(PortaDelegata pd, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  826.         return this.configurazionePdDReader.isGestioneManifestAttachments(this.getConnection(), pd, protocolFactory);
  827.     }

  828.     public boolean isAllegaBody(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  829.         return this.configurazionePdDReader.isAllegaBody(pd);
  830.     }

  831.     public boolean isScartaBody(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  832.         return this.configurazionePdDReader.isScartaBody(pd);
  833.     }

  834.     public boolean isModalitaStateless(PortaDelegata pd, ProfiloDiCollaborazione profiloCollaborazione) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  835.         return this.configurazionePdDReader.isModalitaStateless(pd, profiloCollaborazione);
  836.     }

  837.     public boolean isLocalForwardMode(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  838.         return this.configurazionePdDReader.isLocalForwardMode(pd);
  839.     }

  840.     public String getLocalForwardNomePortaApplicativa(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  841.         return this.configurazionePdDReader.getLocalForwardNomePortaApplicativa(pd);
  842.     }

  843.     public boolean isPortaAbilitata(PortaDelegata pd) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  844.         return this.configurazionePdDReader.isPortaAbilitata(pd);
  845.     }

  846.     public DumpConfigurazione getDumpConfigurazione(PortaDelegata pd) throws DriverConfigurazioneException{
  847.         return this.configurazionePdDReader.getDumpConfigurazione(this.getConnection(), pd);
  848.     }
  849.    
  850.     public boolean isTransazioniFileTraceEnabled(PortaDelegata pd) throws DriverConfigurazioneException{
  851.         return this.configurazionePdDReader.isTransazioniFileTraceEnabled(this.getConnection(), pd);
  852.     }
  853.     public boolean isTransazioniFileTraceDumpBinarioHeadersEnabled(PortaDelegata pd) throws DriverConfigurazioneException{
  854.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioHeadersEnabled(this.getConnection(), pd);
  855.     }
  856.     public boolean isTransazioniFileTraceDumpBinarioPayloadEnabled(PortaDelegata pd) throws DriverConfigurazioneException{
  857.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioPayloadEnabled(this.getConnection(), pd);
  858.     }
  859.     public boolean isTransazioniFileTraceDumpBinarioConnettoreHeadersEnabled(PortaDelegata pd) throws DriverConfigurazioneException{
  860.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioConnettoreHeadersEnabled(this.getConnection(), pd);
  861.     }
  862.     public boolean isTransazioniFileTraceDumpBinarioConnettorePayloadEnabled(PortaDelegata pd) throws DriverConfigurazioneException{
  863.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioConnettorePayloadEnabled(this.getConnection(), pd);
  864.     }
  865.     public File getFileTraceConfig(PortaDelegata pd) throws DriverConfigurazioneException{
  866.         return this.configurazionePdDReader.getFileTraceConfig(this.getConnection(), pd);
  867.     }

  868.     public SoglieDimensioneMessaggi getSoglieLimitedInputStream(PortaDelegata pd, String azione, String idModulo,
  869.             PdDContext pddContext, RequestInfo requestInfo,
  870.             IProtocolFactory<?> protocolFactory, Logger log) throws DriverConfigurazioneException{
  871.         return this.configurazionePdDReader.getSoglieLimitedInputStream(this.getConnection(), pd, azione, idModulo,
  872.                 pddContext, requestInfo,
  873.                 protocolFactory, log);
  874.     }
  875.    
  876.     public boolean isConnettoriUseTimeoutInputStream(PortaDelegata pd) throws DriverConfigurazioneException{
  877.         return this.configurazionePdDReader.isConnettoriUseTimeoutInputStream(this.getConnection(), pd);
  878.     }
  879.     public SogliaReadTimeout getRequestReadTimeout(PortaDelegata pd,
  880.             RequestInfo requestInfo, IProtocolFactory<?> protocolFactory, Context context, IState state) throws DriverConfigurazioneException{
  881.         return this.configurazionePdDReader.getRequestReadTimeout(pd,
  882.                 requestInfo, protocolFactory, context, state);
  883.     }
  884.    
  885.     public Trasformazioni getTrasformazioni(PortaDelegata pd) throws DriverConfigurazioneException{
  886.         return this.configurazionePdDReader.getTrasformazioni(pd);
  887.     }

  888.     public List<String> getPreInRequestHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  889.         return this.configurazionePdDReader.getPreInRequestHandlers(pd);
  890.     }
  891.     public List<String> getInRequestHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  892.         return this.configurazionePdDReader.getInRequestHandlers(pd);
  893.     }
  894.     public List<String> getInRequestProtocolHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  895.         return this.configurazionePdDReader.getInRequestProtocolHandlers(pd);
  896.     }
  897.     public List<String> getOutRequestHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  898.         return this.configurazionePdDReader.getOutRequestHandlers(pd);
  899.     }
  900.     public List<String> getPostOutRequestHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  901.         return this.configurazionePdDReader.getPostOutRequestHandlers(pd);
  902.     }
  903.     public List<String> getPreInResponseHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  904.         return this.configurazionePdDReader.getPreInResponseHandlers(pd);
  905.     }
  906.     public List<String> getInResponseHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  907.         return this.configurazionePdDReader.getInResponseHandlers(pd);
  908.     }
  909.     public List<String> getOutResponseHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  910.         return this.configurazionePdDReader.getOutResponseHandlers(pd);
  911.     }
  912.     public List<String> getPostOutResponseHandlers(PortaDelegata pd) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  913.         return this.configurazionePdDReader.getPostOutResponseHandlers(pd);
  914.     }

  915.     public List<Object> getExtendedInfo(PortaDelegata pd)throws DriverConfigurazioneException{
  916.         return this.configurazionePdDReader.getExtendedInfo(pd);
  917.     }
  918.    
  919.     public Template getTemplateTrasformazioneRichiesta(IDPortaDelegata idPD, String nomeTrasformazione, TrasformazioneRegolaRichiesta richiesta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  920.         return this.configurazionePdDReader.getTemplateTrasformazioneRichiesta(this.getConnection(), idPD, nomeTrasformazione, richiesta, requestInfo);
  921.     }
  922.     public Template getTemplateTrasformazioneSoapRichiesta(IDPortaDelegata idPD, String nomeTrasformazione, TrasformazioneRegolaRichiesta richiesta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  923.         return this.configurazionePdDReader.getTemplateTrasformazioneSoapRichiesta(this.getConnection(), idPD, nomeTrasformazione, richiesta, requestInfo);
  924.     }
  925.     public Template getTemplateTrasformazioneRisposta(IDPortaDelegata idPD, String nomeTrasformazione, TrasformazioneRegolaRisposta risposta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  926.         return this.configurazionePdDReader.getTemplateTrasformazioneRisposta(this.getConnection(), idPD, nomeTrasformazione, risposta, requestInfo);
  927.     }
  928.     public Template getTemplateTrasformazioneSoapRisposta(IDPortaDelegata idPD, String nomeTrasformazione, TrasformazioneRegolaRisposta risposta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  929.         return this.configurazionePdDReader.getTemplateTrasformazioneSoapRisposta(this.getConnection(), idPD, nomeTrasformazione, risposta, requestInfo);
  930.     }
  931.    
  932.     public Template getTemplateCorrelazioneApplicativaRichiesta(IDPortaDelegata idPD, String nomeRegola, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  933.         return this.configurazionePdDReader.getTemplateCorrelazioneApplicativaRichiesta(this.getConnection(), idPD, nomeRegola, template, requestInfo);
  934.     }
  935.     public Template getTemplateCorrelazioneApplicativaRisposta(IDPortaDelegata idPD, String nomeRegola, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  936.         return this.configurazionePdDReader.getTemplateCorrelazioneApplicativaRisposta(this.getConnection(), idPD, nomeRegola, template, requestInfo);
  937.     }
  938.    
  939.     public Template getTemplateIntegrazione(IDPortaDelegata idPD, File file, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  940.         return this.configurazionePdDReader.getTemplateIntegrazione(this.getConnection(), idPD, file, requestInfo);
  941.     }

  942.     public void setInformazioniIntegrazioneDinamiche(Logger log, HttpServletTransportRequestContext transportRequestContext, Context context, PortaDelegata pd) throws DriverConfigurazioneException {
  943.         setInformazioniIntegrazioneDinamicheEngine(log, transportRequestContext, context, pd.getProprietaList());
  944.     }
  945.     private void setInformazioniIntegrazioneDinamicheEngine(Logger log, HttpServletTransportRequestContext transportRequestContext, Context context,
  946.             List<Proprieta> proprieta) throws DriverConfigurazioneException {
  947.        
  948.         try {
  949.             OpenSPCoop2Properties op2PropertiesInstance = OpenSPCoop2Properties.getInstance();
  950.             boolean isEnabled = CostantiProprieta.isInformazioniIntegrazioneEnabled(proprieta, op2PropertiesInstance.isIntegrazioneDynamicInfoEnabled());
  951.             if(isEnabled) {
  952.                 InformazioniIntegrazioneSorgente sourceType = CostantiProprieta.getTipoInformazioniIntegrazione(proprieta, op2PropertiesInstance.getIntegrazioneDynamicInfoType());
  953.                 String sourceName = CostantiProprieta.getNomeSorgenteInformazioniIntegrazione(proprieta, op2PropertiesInstance.getIntegrazioneDynamicInfoName());
  954.                 InformazioniIntegrazioneCodifica sourceEncodeType = CostantiProprieta.getTipoCodificaInformazioniIntegrazione(proprieta, op2PropertiesInstance.getIntegrazioneDynamicInfoEncodeType());
  955.                 boolean required = CostantiProprieta.isInformazioniIntegrazioneRequired(proprieta, op2PropertiesInstance.isIntegrazioneDynamicInfoRequired());
  956.                 InformazioniIntegrazione infoIntegrazione = new InformazioniIntegrazione(sourceType, sourceName, sourceEncodeType, required, log, transportRequestContext);
  957.                 context.addObject(Costanti.INFORMAZIONI_INTEGRAZIONE, infoIntegrazione);
  958.             }          
  959.         }catch(Exception t) {
  960.             throw new DriverConfigurazioneException(t.getMessage(),t);
  961.         }
  962.        
  963.     }
  964.    
  965.     public void setInformazioniIntegrazioneDinamiche(Logger log, TransportResponseContext transportResponseContext, Context context, PortaDelegata pd) throws DriverConfigurazioneException {
  966.         setInformazioniIntegrazioneDinamicheEngine(log, transportResponseContext, context, pd.getProprietaList());
  967.     }
  968.     private void setInformazioniIntegrazioneDinamicheEngine(Logger log, TransportResponseContext transportResponseContext, Context context,
  969.             List<Proprieta> proprieta) throws DriverConfigurazioneException {
  970.        
  971.         try {
  972.             OpenSPCoop2Properties op2PropertiesInstance = OpenSPCoop2Properties.getInstance();
  973.             boolean isEnabled = CostantiProprieta.isInformazioniIntegrazioneRispostaEnabled(proprieta, op2PropertiesInstance.isIntegrazioneResponseDynamicInfoEnabled());
  974.             if(isEnabled) {
  975.                 InformazioniIntegrazioneSorgente sourceType = InformazioniIntegrazioneSorgente.http_header;
  976.                 String sourceName = CostantiProprieta.getNomeSorgenteInformazioniIntegrazioneRisposta(proprieta, op2PropertiesInstance.getIntegrazioneResponseDynamicInfoName());
  977.                 InformazioniIntegrazioneCodifica sourceEncodeType = CostantiProprieta.getTipoCodificaInformazioniIntegrazioneRisposta(proprieta, op2PropertiesInstance.getIntegrazioneResponseDynamicInfoEncodeType());
  978.                 boolean required = CostantiProprieta.isInformazioniIntegrazioneRispostaRequired(proprieta, op2PropertiesInstance.isIntegrazioneResponseDynamicInfoRequired());
  979.                 InformazioniIntegrazione infoIntegrazione = new InformazioniIntegrazione(sourceType, sourceName, sourceEncodeType, required, log, transportResponseContext);
  980.                 context.addObject(Costanti.INFORMAZIONI_INTEGRAZIONE_RISPOSTA, infoIntegrazione);
  981.             }          
  982.         }catch(Exception t) {
  983.             throw new DriverConfigurazioneException(t.getMessage(),t);
  984.         }
  985.        
  986.     }
  987.    


  988.     /* ********  PORTE APPLICATIVE  (Interfaccia) ******** */

  989.     public IDPortaApplicativa convertToIDPortaApplicativa(PortaApplicativa pa) throws DriverRegistroServiziException{

  990.         IDPortaApplicativa idPA = new IDPortaApplicativa();
  991.         idPA.setNome(pa.getNome());

  992.         IdentificativiErogazione idErogazione = new IdentificativiErogazione();

  993.         if(pa.getSoggettoVirtuale()!=null){
  994.             IDSoggetto soggettoVirtuale = new IDSoggetto(pa.getSoggettoVirtuale().getTipo(),pa.getSoggettoVirtuale().getNome());
  995.             idErogazione.setSoggettoVirtuale(soggettoVirtuale);
  996.         }

  997.         IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pa.getServizio().getTipo(),pa.getServizio().getNome(),
  998.                 new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()),
  999.                 pa.getServizio().getVersione());
  1000.         if(pa.getAzione()!=null && pa.getAzione().getNome()!=null && !"".equals(pa.getAzione().getNome())){
  1001.             idServizio.setAzione(pa.getAzione().getNome());
  1002.         }
  1003.         idErogazione.setIdServizio(idServizio);

  1004.         idPA.setIdentificativiErogazione(idErogazione);

  1005.         return idPA;
  1006.     }

  1007.     public IDPortaApplicativa getIDPortaApplicativa(String nome, RequestInfo requestInfo, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1008.         IDPortaApplicativa idPortaApplicativa = null;
  1009.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null) {
  1010.             if( requestInfo.getRequestConfig().getIdPortaApplicativa()!=null && nome.equals(requestInfo.getRequestConfig().getIdPortaApplicativa().getNome())) {
  1011.                 idPortaApplicativa = requestInfo.getRequestConfig().getIdPortaApplicativa();
  1012.             }
  1013.             else if( requestInfo.getRequestConfig().getIdPortaApplicativaDefault()!=null && nome.equals(requestInfo.getRequestConfig().getIdPortaApplicativaDefault().getNome())) {
  1014.                 idPortaApplicativa = requestInfo.getRequestConfig().getIdPortaApplicativaDefault();
  1015.             }
  1016.         }
  1017.         if(idPortaApplicativa==null) {
  1018.             idPortaApplicativa = this.configurazionePdDReader.getIDPortaApplicativa(this.getConnection(), nome);
  1019.         }
  1020.         setCodicePorta(idPortaApplicativa, requestInfo, protocolFactory);
  1021.         return idPortaApplicativa;
  1022.     }
  1023.     private void setCodicePorta(IDPortaApplicativa idPortaApplicativa, RequestInfo requestInfo, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException {
  1024.         try{
  1025.             if(idPortaApplicativa!=null && idPortaApplicativa.getIdentificativiErogazione()!=null){
  1026.                 if(idPortaApplicativa.getIdentificativiErogazione().getSoggettoVirtuale()!=null){
  1027.                     IDSoggetto soggetto = idPortaApplicativa.getIdentificativiErogazione().getSoggettoVirtuale();
  1028.                     if(soggetto.getCodicePorta()==null){
  1029.                         soggetto.setCodicePorta(this.registroServiziManager.getDominio(soggetto, null, protocolFactory, requestInfo));
  1030.                     }
  1031.                 }
  1032.                 if(idPortaApplicativa.getIdentificativiErogazione().getIdServizio()!=null &&
  1033.                         idPortaApplicativa.getIdentificativiErogazione().getIdServizio().getSoggettoErogatore()!=null){
  1034.                     IDSoggetto soggetto = idPortaApplicativa.getIdentificativiErogazione().getIdServizio().getSoggettoErogatore();
  1035.                     if(soggetto.getCodicePorta()==null){
  1036.                         soggetto.setCodicePorta(this.registroServiziManager.getDominio(soggetto, null, protocolFactory, requestInfo));
  1037.                     }
  1038.                 }
  1039.             }
  1040.         }catch(Exception e){
  1041.             throw new DriverConfigurazioneException(e.getMessage(),e);
  1042.         }
  1043.     }

  1044.     public Map<IDSoggetto,PortaApplicativa> getPorteApplicativeSoggettiVirtuali(IDServizio idServizio)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1045.         return this.configurazionePdDReader.getPorteApplicativeSoggettiVirtuali(this.getConnection(), idServizio);
  1046.     }

  1047.     public boolean existsPA(RichiestaApplicativa richiestaApplicativa, RequestInfo requestInfo) throws DriverConfigurazioneException{
  1048.         IDPortaApplicativa idPA = null;
  1049.         if(richiestaApplicativa!=null) {
  1050.             idPA = richiestaApplicativa.getIdPortaApplicativa();
  1051.         }
  1052.         if(
  1053.             (requestInfo!=null && requestInfo.getRequestConfig()!=null && idPA!=null && idPA.getNome()!=null)
  1054.             &&
  1055.             (
  1056.                     (requestInfo.getRequestConfig().getPortaApplicativa()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativa().getNome()))
  1057.                     ||
  1058.                     (requestInfo.getRequestConfig().getPortaApplicativaDefault()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativaDefault().getNome()))
  1059.                 )
  1060.         ){
  1061.             return true;
  1062.         }
  1063.         return this.configurazionePdDReader.existsPA(this.getConnection(), richiestaApplicativa);
  1064.     }

  1065.     public PortaApplicativa getPortaApplicativa(IDPortaApplicativa idPA, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1066.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idPA!=null && idPA.getNome()!=null) {
  1067.             if( requestInfo.getRequestConfig().getPortaApplicativa()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativa().getNome())) {
  1068.                 return requestInfo.getRequestConfig().getPortaApplicativa();
  1069.             }
  1070.             else if( requestInfo.getRequestConfig().getPortaApplicativaDefault()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativaDefault().getNome())) {
  1071.                 return requestInfo.getRequestConfig().getPortaApplicativaDefault();
  1072.             }
  1073.         }
  1074.         return this.configurazionePdDReader.getPortaApplicativa(this.getConnection(), idPA);
  1075.     }

  1076.     public PortaApplicativa getPortaApplicativaSafeMethod(IDPortaApplicativa idPA, RequestInfo requestInfo)throws DriverConfigurazioneException{
  1077.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idPA!=null && idPA.getNome()!=null) {
  1078.             if( requestInfo.getRequestConfig().getPortaApplicativa()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativa().getNome())) {
  1079.                 return requestInfo.getRequestConfig().getPortaApplicativa();
  1080.             }
  1081.             else if( requestInfo.getRequestConfig().getPortaApplicativaDefault()!=null && idPA.getNome().equals(requestInfo.getRequestConfig().getPortaApplicativaDefault().getNome())) {
  1082.                 return requestInfo.getRequestConfig().getPortaApplicativaDefault();
  1083.             }
  1084.         }
  1085.         return this.configurazionePdDReader.getPortaApplicativaSafeMethod(this.getConnection(), idPA);
  1086.     }
  1087.    
  1088.     public void updateStatoPortaApplicativa(IDPortaApplicativa idPA, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1089.         this.configurazionePdDReader.updateStatoPortaApplicativa(this.getConnection(), idPA, stato);
  1090.     }
  1091.    
  1092.     public String updateStatoConnettoreMultiplo(IDPortaApplicativa idPA, String nomeConnettore, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1093.         return this.configurazionePdDReader.updateStatoConnettoreMultiplo(this.getConnection(), idPA, nomeConnettore, stato);
  1094.     }
  1095.     public String updateStatoConnettoreMultiplo(IDPortaApplicativa idPA, String nomeConnettore, String user, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1096.         return this.configurazionePdDReader.updateStatoConnettoreMultiplo(this.getConnection(), idPA, nomeConnettore, user, stato);
  1097.     }
  1098.    
  1099.     public String updateSchedulingConnettoreMultiplo(IDPortaApplicativa idPA, String nomeConnettore, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1100.         return this.configurazionePdDReader.updateSchedulingConnettoreMultiplo(this.getConnection(), idPA, nomeConnettore, stato);
  1101.     }
  1102.     public String updateSchedulingConnettoreMultiplo(IDPortaApplicativa idPA, String nomeConnettore, String user, StatoFunzionalita stato) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1103.         return this.configurazionePdDReader.updateSchedulingConnettoreMultiplo(this.getConnection(), idPA, nomeConnettore, user, stato);
  1104.     }
  1105.    
  1106.     public Map<String, String> getProprietaConfigurazione(PortaApplicativa pa) throws DriverConfigurazioneException {
  1107.         return this.configurazionePdDReader.getProprietaConfigurazione(pa);
  1108.     }

  1109.     public boolean identificazioneContentBased(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1110.         return this.configurazionePdDReader.identificazioneContentBased(pa);
  1111.     }

  1112.     public boolean identificazioneInputBased(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1113.         return this.configurazionePdDReader.identificazioneInputBased(pa);
  1114.     }

  1115.     public String getAzione(PortaApplicativa pa,URLProtocolContext urlProtocolContext,RequestInfo requestInfo,
  1116.             OpenSPCoop2Message message, OpenSPCoop2MessageSoapStreamReader soapStreamReader, HeaderIntegrazione headerIntegrazione,boolean readFirstHeaderIntegrazione,
  1117.             IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException, IdentificazioneDinamicaException {
  1118.         return this.configurazionePdDReader.getAzione(this.registroServiziManager, pa, urlProtocolContext, requestInfo,
  1119.                 message, soapStreamReader, headerIntegrazione, readFirstHeaderIntegrazione, protocolFactory);
  1120.     }

  1121.     public String[] getServiziApplicativi(PortaApplicativa pa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1122.         return this.configurazionePdDReader.getServiziApplicativi(pa);
  1123.     }

  1124.     public SoggettoVirtuale getServiziApplicativiSoggettiVirtuali(RichiestaApplicativa idPA)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1125.         return this.configurazionePdDReader.getServiziApplicativiSoggettiVirtuali(this.getConnection(), idPA);
  1126.     }

  1127.     public List<PortaApplicativa> getPorteApplicative(IDServizio idServizio, boolean ricercaPuntuale) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1128.         return this.configurazionePdDReader.getPorteApplicative(this.getConnection(), idServizio, ricercaPuntuale);
  1129.     }

  1130.     public List<PortaApplicativa> getPorteApplicativeVirtuali(IDSoggetto idSoggettoVirtuale, IDServizio idServizio, boolean ricercaPuntuale) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1131.         return this.configurazionePdDReader.getPorteApplicativeVirtuali(this.getConnection(), idSoggettoVirtuale, idServizio, ricercaPuntuale);
  1132.     }

  1133.     public MTOMProcessorConfig getMTOMProcessorForSender(PortaApplicativa pa)throws DriverConfigurazioneException{
  1134.         return this.configurazionePdDReader.getMTOMProcessorForSender(pa);
  1135.     }

  1136.     public MTOMProcessorConfig getMTOMProcessorForReceiver(PortaApplicativa pa)throws DriverConfigurazioneException{
  1137.         return this.configurazionePdDReader.getMTOMProcessorForReceiver(pa);
  1138.     }

  1139.     public MessageSecurityConfig getMessageSecurityForSender(PortaApplicativa pa)throws DriverConfigurazioneException{
  1140.         return this.configurazionePdDReader.getMessageSecurityForSender(pa);
  1141.     }
  1142.     public MessageSecurityConfig getMessageSecurityForSender(PortaApplicativa pa, Logger log, OpenSPCoop2Message message, Busta busta, RequestInfo requestInfo, PdDContext pddContext,
  1143.             MessageSecurityConfig requestConfig)throws DriverConfigurazioneException{
  1144.         MessageSecurityConfig config = this.configurazionePdDReader.getMessageSecurityForSender(pa);
  1145.         this.resolveDynamicValue("getMessageSecurityForSender[" + pa.getNome() + "]", config, log, message, busta, requestInfo, pddContext,
  1146.                 requestConfig);
  1147.         return config;
  1148.     }
  1149.     public void updateMessageSecurityForSender(MessageSecurityConfig config, Logger log, OpenSPCoop2Message message, Busta busta, RequestInfo requestInfo, PdDContext pddContext,
  1150.             MessageSecurityConfig requestConfig){
  1151.         this.resolveDynamicValue("updateMessageSecurityForSender", config, log, message, busta, requestInfo, pddContext,
  1152.                 requestConfig);
  1153.     }

  1154.     public MessageSecurityConfig getMessageSecurityForReceiver(PortaApplicativa pa, Logger log, OpenSPCoop2Message message, Busta busta, RequestInfo requestInfo, PdDContext pddContext) throws DriverConfigurazioneException {
  1155.         MessageSecurityConfig config = this.configurazionePdDReader.getMessageSecurityForReceiver(pa);
  1156.         this.resolveDynamicValue("getMessageSecurityForReceiver[" + pa.getNome() + "]", config, log, message, busta, requestInfo, pddContext,
  1157.                 null);
  1158.         return config;
  1159.     }

  1160.     public String getAutenticazione(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1161.         return this.configurazionePdDReader.getAutenticazione(pa);
  1162.     }

  1163.     public boolean isAutenticazioneOpzionale(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1164.         return this.configurazionePdDReader.isAutenticazioneOpzionale(pa);
  1165.     }

  1166.     public String getGestioneToken(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1167.         return this.configurazionePdDReader.getGestioneToken(pa);
  1168.     }

  1169.     public PolicyGestioneToken getPolicyGestioneToken(PortaApplicativa pa, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1170.         String nome = null;
  1171.         if(pa!=null && pa.getGestioneToken()!=null && pa.getGestioneToken().getPolicy()!=null) {
  1172.             nome = pa.getGestioneToken().getPolicy();
  1173.         }
  1174.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null;
  1175.         if(useRequestInfo) {
  1176.             Object o = requestInfo.getRequestConfig().getPolicyValidazioneToken(nome);
  1177.             if(o instanceof PolicyGestioneToken) {
  1178.                 return (PolicyGestioneToken) o;
  1179.             }
  1180.         }
  1181.         PolicyGestioneToken policy = this.configurazionePdDReader.getPolicyGestioneToken(this.getConnection(), pa);
  1182.         if(useRequestInfo) {
  1183.             requestInfo.getRequestConfig().addPolicyValidazioneToken(nome, policy,
  1184.                     requestInfo.getIdTransazione());
  1185.         }
  1186.         return policy;
  1187.     }

  1188.     public String getAutorizzazione(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1189.         return this.configurazionePdDReader.getAutorizzazione(pa);
  1190.     }

  1191.     public String getAutorizzazioneContenuto(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1192.         return this.configurazionePdDReader.getAutorizzazioneContenuto(pa);
  1193.     }

  1194.     public CorsConfigurazione getConfigurazioneCORS(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1195.         return this.configurazionePdDReader.getConfigurazioneCORS(this.getConnection(), pa);
  1196.     }

  1197.     public ResponseCachingConfigurazione getConfigurazioneResponseCaching(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1198.         return this.configurazionePdDReader.getConfigurazioneResponseCaching(this.getConnection(), pa);
  1199.     }

  1200.     public boolean ricevutaAsincronaSimmetricaAbilitata(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1201.         return this.configurazionePdDReader.ricevutaAsincronaSimmetricaAbilitata(pa);
  1202.     }

  1203.     public boolean ricevutaAsincronaAsimmetricaAbilitata(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1204.         return this.configurazionePdDReader.ricevutaAsincronaAsimmetricaAbilitata(pa);
  1205.     }

  1206.     public ValidazioneContenutiApplicativi getTipoValidazioneContenutoApplicativo(PortaApplicativa pa,String implementazionePdDSoggetto, boolean request) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1207.         return this.configurazionePdDReader.getTipoValidazioneContenutoApplicativo(this.getConnection(), pa, implementazionePdDSoggetto, request);
  1208.     }

  1209.     public CorrelazioneApplicativa getCorrelazioneApplicativa(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1210.         return this.configurazionePdDReader.getCorrelazioneApplicativa(pa);
  1211.     }

  1212.     public CorrelazioneApplicativaRisposta getCorrelazioneApplicativaRisposta(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1213.         return this.configurazionePdDReader.getCorrelazioneApplicativaRisposta(pa);
  1214.     }

  1215.     public String[] getTipiIntegrazione(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1216.         return this.configurazionePdDReader.getTipiIntegrazione(pa);
  1217.     }

  1218.     public boolean isGestioneManifestAttachments(PortaApplicativa pa, IProtocolFactory<?> protocolFactory) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1219.         return this.configurazionePdDReader.isGestioneManifestAttachments(this.getConnection(), pa, protocolFactory);
  1220.     }

  1221.     public boolean isAllegaBody(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1222.         return this.configurazionePdDReader.isAllegaBody(pa);
  1223.     }

  1224.     public boolean isScartaBody(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1225.         return this.configurazionePdDReader.isScartaBody(pa);
  1226.     }

  1227.     public boolean isModalitaStateless(PortaApplicativa pa, ProfiloDiCollaborazione profiloCollaborazione) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1228.         return this.configurazionePdDReader.isModalitaStateless(pa, profiloCollaborazione);
  1229.     }

  1230.     public boolean autorizzazione(PortaApplicativa pa, IDSoggetto soggetto) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1231.         return this.configurazionePdDReader.autorizzazione(pa, soggetto);
  1232.     }

  1233.     public boolean autorizzazione(PortaApplicativa pa, IDServizioApplicativo servizioApplicativo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1234.         return this.configurazionePdDReader.autorizzazione(pa, servizioApplicativo);
  1235.     }

  1236.     public boolean autorizzazioneTrasportoRoles(PortaApplicativa pa, Soggetto soggetto, ServizioApplicativo sa, InfoConnettoreIngresso infoConnettoreIngresso,
  1237.             PdDContext pddContext, RequestInfo requestInfo,
  1238.             boolean checkRuoloRegistro, boolean checkRuoloEsterno,
  1239.             StringBuilder details) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1240.         return this.configurazionePdDReader.autorizzazioneTrasportoRoles(this.registroServiziManager, pa, soggetto, sa, infoConnettoreIngresso,
  1241.                 pddContext, requestInfo,
  1242.                 checkRuoloRegistro, checkRuoloEsterno, details);
  1243.     }
  1244.    
  1245.     public boolean autorizzazioneTokenRoles(PortaApplicativa pa, ServizioApplicativo sa, InfoConnettoreIngresso infoConnettoreIngresso,
  1246.             PdDContext pddContext, RequestInfo requestInfo,
  1247.             boolean checkRuoloRegistro, boolean checkRuoloEsterno,
  1248.             StringBuilder details) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1249.         return this.configurazionePdDReader.autorizzazioneTokenRoles(this.registroServiziManager, pa, sa, infoConnettoreIngresso,
  1250.                 pddContext, requestInfo,
  1251.                 checkRuoloRegistro, checkRuoloEsterno, details);
  1252.     }

  1253.     public boolean isPortaAbilitata(PortaApplicativa pa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1254.         return this.configurazionePdDReader.isPortaAbilitata(pa);
  1255.     }

  1256.     public DumpConfigurazione getDumpConfigurazione(PortaApplicativa pa) throws DriverConfigurazioneException{
  1257.         return this.configurazionePdDReader.getDumpConfigurazione(this.getConnection(), pa);
  1258.     }
  1259.    
  1260.     public boolean isTransazioniFileTraceEnabled(PortaApplicativa pa) throws DriverConfigurazioneException{
  1261.         return this.configurazionePdDReader.isTransazioniFileTraceEnabled(this.getConnection(), pa);
  1262.     }
  1263.     public boolean isTransazioniFileTraceDumpBinarioHeadersEnabled(PortaApplicativa pa) throws DriverConfigurazioneException{
  1264.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioHeadersEnabled(this.getConnection(), pa);
  1265.     }
  1266.     public boolean isTransazioniFileTraceDumpBinarioPayloadEnabled(PortaApplicativa pa) throws DriverConfigurazioneException{
  1267.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioPayloadEnabled(this.getConnection(), pa);
  1268.     }
  1269.     public boolean isTransazioniFileTraceDumpBinarioConnettoreHeadersEnabled(PortaApplicativa pa) throws DriverConfigurazioneException{
  1270.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioConnettoreHeadersEnabled(this.getConnection(), pa);
  1271.     }
  1272.     public boolean isTransazioniFileTraceDumpBinarioConnettorePayloadEnabled(PortaApplicativa pa) throws DriverConfigurazioneException{
  1273.         return this.configurazionePdDReader.isTransazioniFileTraceDumpBinarioConnettorePayloadEnabled(this.getConnection(), pa);
  1274.     }
  1275.     public File getFileTraceConfig(PortaApplicativa pa) throws DriverConfigurazioneException{
  1276.         return this.configurazionePdDReader.getFileTraceConfig(this.getConnection(), pa);
  1277.     }

  1278.     public SoglieDimensioneMessaggi getSoglieLimitedInputStream(PortaApplicativa pa, String azione, String idModulo,
  1279.             PdDContext pddContext, RequestInfo requestInfo,
  1280.             IProtocolFactory<?> protocolFactory, Logger log) throws DriverConfigurazioneException{
  1281.         return this.configurazionePdDReader.getSoglieLimitedInputStream(this.getConnection(), pa, azione, idModulo,
  1282.                 pddContext, requestInfo,
  1283.                 protocolFactory, log);
  1284.     }
  1285.    
  1286.     public boolean isConnettoriUseTimeoutInputStream(PortaApplicativa pa) throws DriverConfigurazioneException{
  1287.         return this.configurazionePdDReader.isConnettoriUseTimeoutInputStream(this.getConnection(), pa);
  1288.     }
  1289.     public SogliaReadTimeout getRequestReadTimeout(PortaApplicativa pa,
  1290.             RequestInfo requestInfo, IProtocolFactory<?> protocolFactory, Context context, IState state) throws DriverConfigurazioneException{
  1291.         return this.configurazionePdDReader.getRequestReadTimeout(pa,
  1292.                 requestInfo, protocolFactory, context, state);
  1293.     }
  1294.    
  1295.     public Trasformazioni getTrasformazioni(PortaApplicativa pa) throws DriverConfigurazioneException{
  1296.         return this.configurazionePdDReader.getTrasformazioni(pa);
  1297.     }

  1298.     public List<String> getPreInRequestHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1299.         return this.configurazionePdDReader.getPreInRequestHandlers(pa);
  1300.     }
  1301.     public List<String> getInRequestHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1302.         return this.configurazionePdDReader.getInRequestHandlers(pa);
  1303.     }
  1304.     public List<String> getInRequestProtocolHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1305.         return this.configurazionePdDReader.getInRequestProtocolHandlers(pa);
  1306.     }
  1307.     public List<String> getOutRequestHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1308.         return this.configurazionePdDReader.getOutRequestHandlers(pa);
  1309.     }
  1310.     public List<String> getPostOutRequestHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1311.         return this.configurazionePdDReader.getPostOutRequestHandlers(pa);
  1312.     }
  1313.     public List<String> getPreInResponseHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1314.         return this.configurazionePdDReader.getPreInResponseHandlers(pa);
  1315.     }
  1316.     public List<String> getInResponseHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1317.         return this.configurazionePdDReader.getInResponseHandlers(pa);
  1318.     }
  1319.     public List<String> getOutResponseHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1320.         return this.configurazionePdDReader.getOutResponseHandlers(pa);
  1321.     }
  1322.     public List<String> getPostOutResponseHandlers(PortaApplicativa pa) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1323.         return this.configurazionePdDReader.getPostOutResponseHandlers(pa);
  1324.     }
  1325.    
  1326.     public List<Object> getExtendedInfo(PortaApplicativa pa)throws DriverConfigurazioneException{
  1327.         return this.configurazionePdDReader.getExtendedInfo(pa);
  1328.     }
  1329.    
  1330.     public Template getTemplateTrasformazioneRichiesta(IDPortaApplicativa idPA, String nomeTrasformazione, TrasformazioneRegolaRichiesta richiesta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1331.         return this.configurazionePdDReader.getTemplateTrasformazioneRichiesta(this.getConnection(), idPA, nomeTrasformazione, richiesta, requestInfo);
  1332.     }
  1333.     public Template getTemplateTrasformazioneSoapRichiesta(IDPortaApplicativa idPA, String nomeTrasformazione, TrasformazioneRegolaRichiesta richiesta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1334.         return this.configurazionePdDReader.getTemplateTrasformazioneSoapRichiesta(this.getConnection(), idPA, nomeTrasformazione, richiesta, requestInfo);
  1335.     }
  1336.     public Template getTemplateTrasformazioneRisposta(IDPortaApplicativa idPA, String nomeTrasformazione, TrasformazioneRegolaRisposta risposta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1337.         return this.configurazionePdDReader.getTemplateTrasformazioneRisposta(this.getConnection(), idPA, nomeTrasformazione, risposta, requestInfo);
  1338.     }
  1339.     public Template getTemplateTrasformazioneSoapRisposta(IDPortaApplicativa idPA, String nomeTrasformazione, TrasformazioneRegolaRisposta risposta, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1340.         return this.configurazionePdDReader.getTemplateTrasformazioneSoapRisposta(this.getConnection(), idPA, nomeTrasformazione, risposta, requestInfo);
  1341.     }
  1342.    
  1343.     public Template getTemplateConnettoreMultiploSticky(IDPortaApplicativa idPA, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1344.         return this.configurazionePdDReader.getTemplateConnettoreMultiploSticky(this.getConnection(), idPA, template, requestInfo);
  1345.     }
  1346.     public Template getTemplateConnettoreMultiploCondizionale(IDPortaApplicativa idPA, String nomeRegola, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1347.         return this.configurazionePdDReader.getTemplateConnettoreMultiploCondizionale(this.getConnection(), idPA, nomeRegola, template, requestInfo);
  1348.     }
  1349.    
  1350.     public Template getTemplateCorrelazioneApplicativaRichiesta(IDPortaApplicativa idPA, String nomeRegola, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1351.         return this.configurazionePdDReader.getTemplateCorrelazioneApplicativaRichiesta(this.getConnection(), idPA, nomeRegola, template, requestInfo);
  1352.     }
  1353.     public Template getTemplateCorrelazioneApplicativaRisposta(IDPortaApplicativa idPA, String nomeRegola, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1354.         return this.configurazionePdDReader.getTemplateCorrelazioneApplicativaRisposta(this.getConnection(), idPA, nomeRegola, template, requestInfo);
  1355.     }
  1356.    
  1357.     public Template getTemplateIntegrazione(IDPortaApplicativa idPA, File file, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1358.         return this.configurazionePdDReader.getTemplateIntegrazione(this.getConnection(), idPA, file, requestInfo);
  1359.     }
  1360.        
  1361.     public void setInformazioniIntegrazioneDinamiche(Logger log, HttpServletTransportRequestContext transportRequestContext, Context context, PortaApplicativa pa) throws DriverConfigurazioneException {
  1362.         setInformazioniIntegrazioneDinamicheEngine(log, transportRequestContext, context, pa.getProprietaList());
  1363.     }
  1364.    
  1365.     public void setInformazioniIntegrazioneDinamiche(Logger log, TransportResponseContext transportResponseContext, Context context, PortaApplicativa pa) throws DriverConfigurazioneException {
  1366.         setInformazioniIntegrazioneDinamicheEngine(log, transportResponseContext, context, pa.getProprietaList());
  1367.     }




  1368.     /* ********  Servizi Applicativi (Interfaccia)  ******** */

  1369.     public boolean existsServizioApplicativo(IDServizioApplicativo idSA, RequestInfo requestInfo) throws DriverConfigurazioneException{
  1370.         if(existsServizioApplicativoErogatoreRequestInfo(idSA, requestInfo)) {
  1371.             return true;
  1372.         }
  1373.        
  1374.         if(
  1375.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  1376.             &&
  1377.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore()!=null &&
  1378.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitore()!=null &&
  1379.                     idSA!=null && idSA.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore()))
  1380.             ){
  1381.             return true;
  1382.         }
  1383.         if(
  1384.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  1385.             &&
  1386.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getIdServizioApplicativoFruitore()!=null &&
  1387.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getServizioApplicativoFruitore()!=null &&
  1388.                     idSA!=null && idSA.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getIdServizioApplicativoFruitore()))
  1389.             ){
  1390.             return true;
  1391.         }
  1392.        
  1393.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  1394.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitoreAnonimo()!=null &&
  1395.                     idSA!=null && idSA.getNome()!=null && idSA.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitoreAnonimo())) {
  1396.                 /**throw new DriverConfigurazioneNotFound("Servizio applicativo anonimo");*/
  1397.                 return false;
  1398.             }
  1399.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore()!=null &&
  1400.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitore()!=null &&
  1401.                     idSA!=null && idSA.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore())) {
  1402.                 return true;
  1403.             }
  1404.         }
  1405.        
  1406.         return this.configurazionePdDReader.existsServizioApplicativo(this.getConnection(), idSA);
  1407.     }
  1408.     private boolean existsServizioApplicativoErogatoreRequestInfo(IDServizioApplicativo idSA, RequestInfo requestInfo) {
  1409.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null &&
  1410.                 idSA!=null && idSA.getIdSoggettoProprietario()!=null &&
  1411.                 requestInfo.getRequestConfig().getIdServizio()!=null && requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore()!=null &&
  1412.                 idSA.getIdSoggettoProprietario().equals(requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore())) {
  1413.             ServizioApplicativo sa = requestInfo.getRequestConfig().getServizioApplicativoErogatore(idSA.getNome());
  1414.             if(sa!=null) {
  1415.                 return true;
  1416.             }
  1417.         }
  1418.         return false;
  1419.     }

  1420.     public ServizioApplicativo getServizioApplicativo(IDServizioApplicativo idSA, RequestInfo requestInfo) throws DriverConfigurazioneNotFound,DriverConfigurazioneException{
  1421.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null &&
  1422.                 idSA!=null && idSA.getIdSoggettoProprietario()!=null &&
  1423.                 requestInfo.getRequestConfig().getIdServizio()!=null && requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore()!=null &&
  1424.                 idSA.getIdSoggettoProprietario().equals(requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore())) {
  1425.             ServizioApplicativo sa = requestInfo.getRequestConfig().getServizioApplicativoErogatore(idSA.getNome());
  1426.             if(sa!=null) {
  1427.                 return sa;
  1428.             }
  1429.         }
  1430.        
  1431.         if(
  1432.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  1433.             &&
  1434.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore()!=null &&
  1435.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitore()!=null &&
  1436.                     idSA!=null && idSA.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getIdServizioApplicativoFruitore()))
  1437.             ){
  1438.             return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitore();
  1439.         }
  1440.         if(
  1441.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null)
  1442.             &&
  1443.             (requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getIdServizioApplicativoFruitore()!=null &&
  1444.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getServizioApplicativoFruitore()!=null &&
  1445.                     idSA!=null && idSA.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getIdServizioApplicativoFruitore()))
  1446.             ){
  1447.             return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getServizioApplicativoFruitore();
  1448.         }
  1449.        
  1450.         if(
  1451.             (requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null)
  1452.             &&
  1453.             (requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitoreAnonimo()!=null &&
  1454.                     idSA!=null && idSA.getNome()!=null && idSA.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getServizioApplicativoFruitoreAnonimo()))
  1455.             ){
  1456.             throw new DriverConfigurazioneNotFound("Servizio applicativo anonimo");
  1457.         }
  1458.        
  1459.         return this.configurazionePdDReader.getServizioApplicativo(this.getConnection(), idSA);
  1460.     }

  1461.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiBasic(String aUser,String aPassword, CryptConfig config) throws DriverConfigurazioneException{
  1462.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiBasic(this.getConnection(), aUser, aPassword, config);
  1463.     }
  1464.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiBasic(String aUser,String aPassword, CryptConfig config,
  1465.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1466.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiBasic(this.getConnection(), aUser, aPassword, config,
  1467.                 tipiSoggetto);
  1468.     }
  1469.    
  1470.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiApiKey(String aUser,String aPassword, boolean appId, CryptConfig config) throws DriverConfigurazioneException{
  1471.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiApiKey(this.getConnection(), aUser, aPassword, appId, config);
  1472.     }
  1473.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiApiKey(String aUser,String aPassword, boolean appId, CryptConfig config,
  1474.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1475.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiApiKey(this.getConnection(), aUser, aPassword, appId, config,
  1476.                 tipiSoggetto);
  1477.     }

  1478.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(String aSubject, String aIssuer) throws DriverConfigurazioneException{
  1479.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), aSubject, aIssuer);
  1480.     }
  1481.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(String aSubject, String aIssuer,
  1482.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1483.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), aSubject, aIssuer,
  1484.                 tipiSoggetto);
  1485.     }
  1486.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(String aSubject, String aIssuer,
  1487.             List<String> tipiSoggetto,
  1488.             boolean includiApplicativiNonModI, boolean includiApplicativiModIEsterni, boolean includiApplicativiModIInterni) throws DriverConfigurazioneException{
  1489.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), aSubject, aIssuer,
  1490.                 tipiSoggetto,
  1491.                 includiApplicativiNonModI, includiApplicativiModIEsterni, includiApplicativiModIInterni);
  1492.     }

  1493.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier) throws DriverConfigurazioneException{
  1494.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), certificate, strictVerifier);
  1495.     }
  1496.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier,
  1497.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1498.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), certificate, strictVerifier,
  1499.                 tipiSoggetto);
  1500.     }
  1501.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier,
  1502.             List<String> tipiSoggetto,
  1503.             boolean includiApplicativiNonModI, boolean includiApplicativiModIEsterni, boolean includiApplicativiModIInterni) throws DriverConfigurazioneException{
  1504.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiSsl(this.getConnection(), certificate, strictVerifier,
  1505.                 tipiSoggetto,
  1506.                 includiApplicativiNonModI, includiApplicativiModIEsterni, includiApplicativiModIInterni);
  1507.     }

  1508.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiPrincipal(String principal) throws DriverConfigurazioneException{
  1509.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiPrincipal(this.getConnection(), principal);
  1510.     }
  1511.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiPrincipal(String principal,
  1512.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1513.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiPrincipal(this.getConnection(), principal,
  1514.                 tipiSoggetto);
  1515.     }
  1516.    
  1517.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiToken(String tokenPolicy, String tokenClientId) throws DriverConfigurazioneException{
  1518.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiToken(this.getConnection(), tokenPolicy, tokenClientId);
  1519.     }
  1520.     public IDServizioApplicativo getIdServizioApplicativoByCredenzialiToken(String tokenPolicy, String tokenClientId,
  1521.             List<String> tipiSoggetto) throws DriverConfigurazioneException{
  1522.         return this.configurazionePdDReader.getIdServizioApplicativoByCredenzialiToken(this.getConnection(), tokenPolicy, tokenClientId,
  1523.                 tipiSoggetto);
  1524.     }

  1525.     public boolean autorizzazione(PortaDelegata pd, String servizio) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1526.         return this.configurazionePdDReader.autorizzazione(pd, servizio);
  1527.     }

  1528.     public boolean autorizzazioneTrasportoRoles(PortaDelegata pd, ServizioApplicativo sa, InfoConnettoreIngresso infoConnettoreIngresso,
  1529.             PdDContext pddContext, RequestInfo requestInfo,
  1530.             boolean checkRuoloRegistro, boolean checkRuoloEsterno,
  1531.             StringBuilder details) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1532.         return this.configurazionePdDReader.autorizzazioneTrasportoRoles(this.registroServiziManager, pd, sa, infoConnettoreIngresso,
  1533.                 pddContext, requestInfo,
  1534.                 checkRuoloRegistro, checkRuoloEsterno, details);
  1535.     }
  1536.    
  1537.     public boolean autorizzazioneTokenRoles(PortaDelegata pd, ServizioApplicativo sa, InfoConnettoreIngresso infoConnettoreIngresso,
  1538.             PdDContext pddContext, RequestInfo requestInfo,
  1539.             boolean checkRuoloRegistro, boolean checkRuoloEsterno,
  1540.             StringBuilder details) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1541.         return this.configurazionePdDReader.autorizzazioneTokenRoles(this.registroServiziManager, pd, sa, infoConnettoreIngresso,
  1542.                 pddContext, requestInfo,
  1543.                 checkRuoloRegistro, checkRuoloEsterno, details);
  1544.     }

  1545.     public void aggiornaProprietaGestioneErrorePD(ProprietaErroreApplicativo gestioneErrore, ServizioApplicativo sa) throws DriverConfigurazioneException {
  1546.         this.configurazionePdDReader.aggiornaProprietaGestioneErrorePD(gestioneErrore, sa);
  1547.     }

  1548.     public boolean invocazionePortaDelegataPerRiferimento(ServizioApplicativo sa) throws DriverConfigurazioneException{
  1549.         return this.configurazionePdDReader.invocazionePortaDelegataPerRiferimento(sa);
  1550.     }

  1551.     public boolean invocazionePortaDelegataSbustamentoInformazioniProtocollo(ServizioApplicativo sa) throws DriverConfigurazioneException{
  1552.         return this.configurazionePdDReader.invocazionePortaDelegataSbustamentoInformazioniProtocollo(sa);
  1553.     }

  1554.     public List<String> getServiziApplicativiConsegnaNotifichePrioritarie(String queue) throws DriverConfigurazioneException{
  1555.         return this.configurazionePdDReader.getServiziApplicativiConsegnaNotifichePrioritarie(this.getConnection(),queue);
  1556.     }
  1557.    
  1558.     public List<IDConnettore> getConnettoriConsegnaNotifichePrioritarie(String queue) throws DriverConfigurazioneException{
  1559.         return this.configurazionePdDReader.getConnettoriConsegnaNotifichePrioritarie(this.getConnection(),queue);
  1560.     }
  1561.    
  1562.     public void resetConnettoriConsegnaNotifichePrioritarie(String queue) throws DriverConfigurazioneException{
  1563.         this.configurazionePdDReader.resetConnettoriConsegnaNotifichePrioritarie(this.getConnection(),queue);
  1564.     }
  1565.    
  1566.     public Map<String, String> getProprietaConfigurazione(ServizioApplicativo sa) throws DriverConfigurazioneException {
  1567.         return this.configurazionePdDReader.getProprietaConfigurazione(sa);
  1568.     }
  1569.    

  1570.     /* ********  Servizi Applicativi (InvocazioneServizio)  ******** */

  1571.     public boolean invocazioneServizioConGetMessage(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1572.         return this.configurazionePdDReader.invocazioneServizioConGetMessage(sa);
  1573.     }

  1574.     public boolean invocazioneServizioConSbustamento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1575.         return this.configurazionePdDReader.invocazioneServizioConSbustamento(sa);
  1576.     }

  1577.     public boolean invocazioneServizioConSbustamentoInformazioniProtocollo(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1578.         return this.configurazionePdDReader.invocazioneServizioConSbustamentoInformazioniProtocollo(sa);
  1579.     }

  1580.     public boolean invocazioneServizioConConnettore(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1581.         return this.configurazionePdDReader.invocazioneServizioConConnettore(sa);
  1582.     }

  1583.     public ConnettoreMsg getInvocazioneServizio(ServizioApplicativo sa,RichiestaApplicativa idPA, RequestInfo requestInfo)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1584.         return this.configurazionePdDReader.getInvocazioneServizio(this.getConnection(), sa, idPA, requestInfo);
  1585.     }

  1586.     public GestioneErrore getGestioneErroreConnettoreInvocazioneServizio(IProtocolFactory<?> protocolFactory, ServiceBinding serviceBinding, ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1587.         return this.configurazionePdDReader.getGestioneErroreConnettoreInvocazioneServizio(protocolFactory, serviceBinding, this.getConnection(), sa);
  1588.     }

  1589.     public boolean invocazioneServizioPerRiferimento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1590.         return this.configurazionePdDReader.invocazioneServizioPerRiferimento(sa);
  1591.     }

  1592.     public boolean invocazioneServizioRispostaPerRiferimento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1593.         return this.configurazionePdDReader.invocazioneServizioRispostaPerRiferimento(sa);
  1594.     }


  1595.     /* ********  Servizi Applicativi (RispostAsincrona)  ******** */

  1596.     public boolean existsConsegnaRispostaAsincrona(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1597.         return this.configurazionePdDReader.existsConsegnaRispostaAsincrona(sa);
  1598.     }

  1599.     public boolean consegnaRispostaAsincronaConGetMessage(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1600.         return this.configurazionePdDReader.consegnaRispostaAsincronaConGetMessage(sa);
  1601.     }

  1602.     public boolean consegnaRispostaAsincronaConSbustamento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1603.         return this.configurazionePdDReader.consegnaRispostaAsincronaConSbustamento(sa);
  1604.     }

  1605.     public boolean consegnaRispostaAsincronaConSbustamentoInformazioniProtocollo(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1606.         return this.configurazionePdDReader.consegnaRispostaAsincronaConSbustamentoInformazioniProtocollo(sa);
  1607.     }

  1608.     public boolean consegnaRispostaAsincronaConConnettore(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1609.         return this.configurazionePdDReader.consegnaRispostaAsincronaConConnettore(sa);
  1610.     }

  1611.     public ConnettoreMsg getConsegnaRispostaAsincrona(ServizioApplicativo sa,RichiestaDelegata idPD, RequestInfo requestInfo)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1612.         return this.configurazionePdDReader.getConsegnaRispostaAsincrona(this.getConnection(), sa, idPD, requestInfo);
  1613.     }

  1614.     public ConnettoreMsg getConsegnaRispostaAsincrona(ServizioApplicativo sa,RichiestaApplicativa idPA, RequestInfo requestInfo)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1615.         return this.configurazionePdDReader.getConsegnaRispostaAsincrona(this.getConnection(), sa, idPA, requestInfo);
  1616.     }

  1617.     public GestioneErrore getGestioneErroreConnettoreRispostaAsincrona(IProtocolFactory<?> protocolFactory, ServiceBinding serviceBinding, ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1618.         return this.configurazionePdDReader.getGestioneErroreConnettoreRispostaAsincrona(protocolFactory, serviceBinding, this.getConnection(), sa);
  1619.     }

  1620.     public boolean consegnaRispostaAsincronaPerRiferimento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1621.         return this.configurazionePdDReader.consegnaRispostaAsincronaPerRiferimento(sa);
  1622.     }

  1623.     public boolean consegnaRispostaAsincronaRispostaPerRiferimento(ServizioApplicativo sa)throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1624.         return this.configurazionePdDReader.consegnaRispostaAsincronaRispostaPerRiferimento(sa);
  1625.     }

  1626.     public CertificateCheck checkCertificatoApplicativoWithoutCache(long idSA, int sogliaWarningGiorni,  
  1627.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1628.         return this.configurazionePdDReader.checkCertificatoApplicativo(null, false,
  1629.                 idSA, sogliaWarningGiorni,  
  1630.                 addCertificateDetails, separator, newLine);
  1631.     }

  1632.     public CertificateCheck checkCertificatoApplicativoWithoutCache(IDServizioApplicativo idSA, int sogliaWarningGiorni,
  1633.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1634.         return this.configurazionePdDReader.checkCertificatoApplicativo(null, false,
  1635.                 idSA, sogliaWarningGiorni,  
  1636.                 addCertificateDetails, separator, newLine);
  1637.     }
  1638.    
  1639.     public CertificateCheck checkCertificatoModiApplicativoWithoutCache(long idSA, int sogliaWarningGiorni,  
  1640.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1641.         return this.configurazionePdDReader.checkCertificatoModiApplicativo(null, false,
  1642.                 idSA, sogliaWarningGiorni,  
  1643.                 addCertificateDetails, separator, newLine);
  1644.     }

  1645.     public CertificateCheck checkCertificatoModiApplicativoWithoutCache(IDServizioApplicativo idSA, int sogliaWarningGiorni,
  1646.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1647.         return this.configurazionePdDReader.checkCertificatoModiApplicativo(null, false,
  1648.                 idSA, sogliaWarningGiorni,  
  1649.                 addCertificateDetails, separator, newLine);
  1650.     }
  1651.    
  1652.     public CertificateCheck checkCertificatiConnettoreHttpsByIdWithoutCache(long idConnettore, int sogliaWarningGiorni,  
  1653.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1654.         return this.configurazionePdDReader.checkCertificatiConnettoreHttpsById(null, false,
  1655.                 idConnettore, sogliaWarningGiorni,  
  1656.                 addCertificateDetails, separator, newLine);
  1657.     }
  1658.    
  1659.     public CertificateCheck checkCertificatiJvm(int sogliaWarningGiorni,
  1660.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException {
  1661.         return this.configurazionePdDReader.checkCertificatiJvm(sogliaWarningGiorni,
  1662.                 addCertificateDetails, separator, newLine);
  1663.     }

  1664.     public CertificateCheck checkCertificatiConnettoreHttpsTokenPolicyValidazione(String nomePolicy, int sogliaWarningGiorni,
  1665.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1666.         return this.configurazionePdDReader.checkCertificatiConnettoreHttpsTokenPolicyValidazione(null, false,
  1667.                 nomePolicy, null, sogliaWarningGiorni,
  1668.                 addCertificateDetails, separator, newLine);
  1669.     }
  1670.     public CertificateCheck checkCertificatiConnettoreHttpsTokenPolicyValidazione(String nomePolicy, String tipo, int sogliaWarningGiorni,
  1671.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1672.         return this.configurazionePdDReader.checkCertificatiConnettoreHttpsTokenPolicyValidazione(null, false,
  1673.                 nomePolicy, tipo, sogliaWarningGiorni,
  1674.                 addCertificateDetails, separator, newLine);
  1675.     }
  1676.    
  1677.     public CertificateCheck checkCertificatiValidazioneJwtTokenPolicyValidazione(String nomePolicy, int sogliaWarningGiorni,
  1678.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1679.         return this.configurazionePdDReader.checkCertificatiValidazioneJwtTokenPolicyValidazione(null, false,
  1680.                 nomePolicy, sogliaWarningGiorni,
  1681.                 addCertificateDetails, separator, newLine);
  1682.     }
  1683.    
  1684.     public CertificateCheck checkCertificatiForwardToJwtTokenPolicyValidazione(String nomePolicy, int sogliaWarningGiorni,
  1685.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1686.         return this.configurazionePdDReader.checkCertificatiForwardToJwtTokenPolicyValidazione(null, false,
  1687.                 nomePolicy, sogliaWarningGiorni,
  1688.                 addCertificateDetails, separator, newLine);
  1689.     }
  1690.    
  1691.     public CertificateCheck checkCertificatiConnettoreHttpsTokenPolicyNegoziazione(String nomePolicy, int sogliaWarningGiorni,
  1692.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1693.         return this.configurazionePdDReader.checkCertificatiConnettoreHttpsTokenPolicyNegoziazione(null, false,
  1694.                 nomePolicy, sogliaWarningGiorni,
  1695.                 addCertificateDetails, separator, newLine);
  1696.     }
  1697.    
  1698.     public CertificateCheck checkCertificatiSignedJwtTokenPolicyNegoziazione(String nomePolicy, int sogliaWarningGiorni,
  1699.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1700.         return this.configurazionePdDReader.checkCertificatiSignedJwtTokenPolicyNegoziazione(null, false,
  1701.                 nomePolicy, sogliaWarningGiorni,
  1702.                 addCertificateDetails, separator, newLine);
  1703.     }
  1704.    
  1705.     public CertificateCheck checkCertificatiConnettoreHttpsAttributeAuthority(String nomePolicy, int sogliaWarningGiorni,
  1706.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1707.         return this.configurazionePdDReader.checkCertificatiConnettoreHttpsAttributeAuthority(null, false,
  1708.                 nomePolicy, sogliaWarningGiorni,
  1709.                 addCertificateDetails, separator, newLine);
  1710.     }
  1711.    
  1712.     public CertificateCheck checkCertificatiAttributeAuthorityJwtRichiesta(String nomePolicy, int sogliaWarningGiorni,
  1713.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1714.         return this.configurazionePdDReader.checkCertificatiAttributeAuthorityJwtRichiesta(null, false,
  1715.                 nomePolicy, sogliaWarningGiorni,
  1716.                 addCertificateDetails, separator, newLine);
  1717.     }
  1718.    
  1719.     public CertificateCheck checkCertificatiAttributeAuthorityJwtRisposta(String nomePolicy, int sogliaWarningGiorni,
  1720.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1721.         return this.configurazionePdDReader.checkCertificatiAttributeAuthorityJwtRisposta(null, false,
  1722.                 nomePolicy, sogliaWarningGiorni,
  1723.                 addCertificateDetails, separator, newLine);
  1724.     }
  1725.    
  1726.     public CertificateCheck checkCertificatiMessageSecurityErogazioneById(long idErogazione, int sogliaWarningGiorni,
  1727.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1728.         return this.configurazionePdDReader.checkCertificatiMessageSecurityErogazioneById(null, false,
  1729.                 idErogazione, sogliaWarningGiorni,
  1730.                 addCertificateDetails, separator, newLine);
  1731.     }
  1732.    
  1733.     public CertificateCheck checkCertificatiMessageSecurityFruizioneById(long idFruizione, int sogliaWarningGiorni,
  1734.             boolean addCertificateDetails, String separator, String newLine) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  1735.         return this.configurazionePdDReader.checkCertificatiMessageSecurityFruizioneById(null, false,
  1736.                 idFruizione, sogliaWarningGiorni,
  1737.                 addCertificateDetails, separator, newLine);
  1738.     }
  1739.    
  1740.    

  1741.    

  1742.     /* ********  CONFIGURAZIONE  ******** */

  1743.     public AccessoRegistro getAccessoRegistroServizi(){
  1744.         return this.configurazionePdDReader.getAccessoRegistroServizi(this.getConnection());
  1745.     }

  1746.     public AccessoConfigurazione getAccessoConfigurazione(){
  1747.         return this.configurazionePdDReader.getAccessoConfigurazione(this.getConnection());
  1748.     }

  1749.     public AccessoDatiAutorizzazione getAccessoDatiAutorizzazione(){
  1750.         return this.configurazionePdDReader.getAccessoDatiAutorizzazione(this.getConnection());
  1751.     }

  1752.     public AccessoDatiAutenticazione getAccessoDatiAutenticazione(){
  1753.         return this.configurazionePdDReader.getAccessoDatiAutenticazione(this.getConnection());
  1754.     }

  1755.     public AccessoDatiGestioneToken getAccessoDatiGestioneToken(){
  1756.         return this.configurazionePdDReader.getAccessoDatiGestioneToken(this.getConnection());
  1757.     }
  1758.    
  1759.     public AccessoDatiAttributeAuthority getAccessoDatiAttributeAuthority(){
  1760.         return this.configurazionePdDReader.getAccessoDatiAttributeAuthority(this.getConnection());
  1761.     }

  1762.     public AccessoDatiKeystore getAccessoDatiKeystore(){
  1763.         return this.configurazionePdDReader.getAccessoDatiKeystore(this.getConnection());
  1764.     }
  1765.    
  1766.     public AccessoDatiRichieste getAccessoDatiRichieste(){
  1767.         return this.configurazionePdDReader.getAccessoDatiRichieste(this.getConnection());
  1768.     }

  1769.     public StatoFunzionalitaConWarning getTipoValidazione(String implementazionePdDSoggetto){
  1770.         return this.configurazionePdDReader.getTipoValidazione(this.getConnection(), implementazionePdDSoggetto);
  1771.     }

  1772.     public boolean isLivelloValidazioneNormale(String implementazionePdDSoggetto){
  1773.         return this.configurazionePdDReader.isLivelloValidazioneNormale(this.getConnection(), implementazionePdDSoggetto);
  1774.     }

  1775.     public boolean isLivelloValidazioneRigido(String implementazionePdDSoggetto){
  1776.         return this.configurazionePdDReader.isLivelloValidazioneRigido(this.getConnection(), implementazionePdDSoggetto);
  1777.     }

  1778.     public boolean isValidazioneProfiloCollaborazione(String implementazionePdDSoggetto){
  1779.         return this.configurazionePdDReader.isValidazioneProfiloCollaborazione(this.getConnection(), implementazionePdDSoggetto);
  1780.     }

  1781.     public boolean isValidazioneManifestAttachments(String implementazionePdDSoggetto){
  1782.         return this.configurazionePdDReader.isValidazioneManifestAttachments(this.getConnection(), implementazionePdDSoggetto);
  1783.     }

  1784.     public boolean newConnectionForResponse(){
  1785.         return this.configurazionePdDReader.newConnectionForResponse(this.getConnection());
  1786.     }

  1787.     public boolean isUtilizzoIndirizzoTelematico(){
  1788.         return this.configurazionePdDReader.isUtilizzoIndirizzoTelematico(this.getConnection());
  1789.     }

  1790.     public boolean isGestioneManifestAttachments(){
  1791.         return this.configurazionePdDReader.isGestioneManifestAttachments(this.getConnection());
  1792.     }

  1793.     public long getTimeoutRiscontro(){
  1794.         return this.configurazionePdDReader.getTimeoutRiscontro(this.getConnection());
  1795.     }

  1796.     public Level getLivelloMessaggiDiagnostici(){
  1797.         return this.configurazionePdDReader.getLivelloMessaggiDiagnostici(this.getConnection());
  1798.     }

  1799.     public Level getLivelloLog4JMessaggiDiagnostici(){
  1800.         return this.configurazionePdDReader.getLivelloLog4JMessaggiDiagnostici(this.getConnection());
  1801.     }

  1802.     public int getSeveritaMessaggiDiagnostici(){
  1803.         return this.configurazionePdDReader.getSeveritaMessaggiDiagnostici(this.getConnection());
  1804.     }

  1805.     public int getSeveritaLog4JMessaggiDiagnostici(){
  1806.         return this.configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici(this.getConnection());
  1807.     }

  1808.     public MessaggiDiagnostici getOpenSPCoopAppenderMessaggiDiagnostici(){
  1809.         return this.configurazionePdDReader.getOpenSPCoopAppenderMessaggiDiagnostici(this.getConnection());
  1810.     }

  1811.     public boolean tracciamentoBuste(){
  1812.         return this.configurazionePdDReader.tracciamentoBuste(this.getConnection());
  1813.     }

  1814.     public Tracciamento getOpenSPCoopAppenderTracciamento(){
  1815.         return this.configurazionePdDReader.getOpenSPCoopAppenderTracciamento(this.getConnection());
  1816.     }

  1817.     public Transazioni getTransazioniConfigurazione() {
  1818.         return this.configurazionePdDReader.getTransazioniConfigurazione(this.getConnection());
  1819.     }

  1820.     public DumpConfigurazione getDumpConfigurazionePortaApplicativa() {
  1821.         return this.configurazionePdDReader.getDumpConfigurazionePortaApplicativa(this.getConnection());
  1822.     }
  1823.    
  1824.     public DumpConfigurazione getDumpConfigurazionePortaDelegata() {
  1825.         return this.configurazionePdDReader.getDumpConfigurazionePortaDelegata(this.getConnection());
  1826.     }

  1827.     public boolean dumpBinarioPD(){
  1828.         return this.configurazionePdDReader.dumpBinarioPD(this.getConnection());
  1829.     }

  1830.     public boolean dumpBinarioPA(){
  1831.         return this.configurazionePdDReader.dumpBinarioPA(this.getConnection());
  1832.     }

  1833.     public Dump getOpenSPCoopAppenderDump(){
  1834.         return this.configurazionePdDReader.getOpenSPCoopAppenderDump(this.getConnection());
  1835.     }

  1836.     public GestioneErrore getGestioneErroreConnettoreComponenteCooperazione(IProtocolFactory<?> protocolFactory, ServiceBinding serviceBinding){
  1837.         return this.configurazionePdDReader.getGestioneErroreConnettoreComponenteCooperazione(protocolFactory, serviceBinding, this.getConnection());
  1838.     }

  1839.     public GestioneErrore getGestioneErroreConnettoreComponenteIntegrazione(IProtocolFactory<?> protocolFactory, ServiceBinding serviceBinding){
  1840.         return this.configurazionePdDReader.getGestioneErroreConnettoreComponenteIntegrazione(protocolFactory, serviceBinding, this.getConnection());
  1841.     }

  1842.     public String[] getIntegrationManagerAuthentication(){
  1843.         return this.configurazionePdDReader.getIntegrationManagerAuthentication(this.getConnection());
  1844.     }

  1845.     public ValidazioneContenutiApplicativi getTipoValidazioneContenutoApplicativo(String implementazionePdDSoggetto) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1846.         return this.configurazionePdDReader.getTipoValidazioneContenutoApplicativo(this.getConnection(), implementazionePdDSoggetto);
  1847.     }

  1848.     public Boolean isPDServiceActive(){
  1849.         return this.configurazionePdDReader.isPDServiceActive();
  1850.     }

  1851.     public List<TipoFiltroAbilitazioneServizi> getFiltriAbilitazionePDService(){
  1852.         return this.configurazionePdDReader.getFiltriAbilitazionePDService();
  1853.     }

  1854.     public List<TipoFiltroAbilitazioneServizi> getFiltriDisabilitazionePDService(){
  1855.         return this.configurazionePdDReader.getFiltriDisabilitazionePDService();
  1856.     }

  1857.     public Boolean isPAServiceActive(){
  1858.         return this.configurazionePdDReader.isPAServiceActive();
  1859.     }

  1860.     public List<TipoFiltroAbilitazioneServizi> getFiltriAbilitazionePAService(){
  1861.         return this.configurazionePdDReader.getFiltriAbilitazionePAService();
  1862.     }

  1863.     public List<TipoFiltroAbilitazioneServizi> getFiltriDisabilitazionePAService(){
  1864.         return this.configurazionePdDReader.getFiltriDisabilitazionePAService();
  1865.     }

  1866.     public Boolean isIMServiceActive(){
  1867.         return this.configurazionePdDReader.isIMServiceActive();
  1868.     }

  1869.     public StatoServiziPdd getStatoServiziPdD() throws DriverConfigurazioneException{
  1870.         return this.configurazionePdDReader.getStatoServiziPdD();
  1871.     }

  1872.     public void updateStatoServiziPdD(StatoServiziPdd servizi) throws DriverConfigurazioneException{
  1873.         this.configurazionePdDReader.updateStatoServiziPdD(servizi);
  1874.     }

  1875.     public PolicyNegoziazioneToken getPolicyNegoziazioneToken(boolean forceNoCache, String policyName, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1876.         boolean useRequestInfo = !forceNoCache && requestInfo!=null && requestInfo.getRequestConfig()!=null && policyName!=null;
  1877.         if(useRequestInfo) {
  1878.             Object o = requestInfo.getRequestConfig().getPolicyNegoziazioneToken(policyName);
  1879.             if(o instanceof PolicyNegoziazioneToken) {
  1880.                 return (PolicyNegoziazioneToken) o;
  1881.             }
  1882.         }
  1883.         PolicyNegoziazioneToken policy = this.configurazionePdDReader.getPolicyNegoziazioneToken(this.getConnection(), forceNoCache, policyName);
  1884.         if(useRequestInfo) {
  1885.             requestInfo.getRequestConfig().addPolicyNegoziazioneToken(policyName, policy,
  1886.                     requestInfo.getIdTransazione());
  1887.         }
  1888.         return policy;
  1889.     }
  1890.    
  1891.     public PolicyAttributeAuthority getPolicyAttributeAuthority(boolean forceNoCache, String policyName, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1892.         boolean useRequestInfo = !forceNoCache && requestInfo!=null && requestInfo.getRequestConfig()!=null && policyName!=null;
  1893.         if(useRequestInfo) {
  1894.             Object o = requestInfo.getRequestConfig().getAttributeAuthority(policyName);
  1895.             if(o instanceof PolicyAttributeAuthority) {
  1896.                 return (PolicyAttributeAuthority) o;
  1897.             }
  1898.         }
  1899.         PolicyAttributeAuthority policy = this.configurazionePdDReader.getPolicyAttributeAuthority(this.getConnection(), forceNoCache, policyName);
  1900.         if(useRequestInfo) {
  1901.             requestInfo.getRequestConfig().addAttributeAuthority(policyName, policy,
  1902.                     requestInfo.getIdTransazione());
  1903.         }
  1904.         return policy;
  1905.     }

  1906.     public GenericProperties getGenericProperties(String tipologia, String nome) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1907.         return this.configurazionePdDReader.getGenericProperties(this.getConnection(), tipologia, nome);
  1908.     }

  1909.     public List<GenericProperties> getGenericProperties(String tipologia) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1910.         return this.configurazionePdDReader.getGenericProperties(this.getConnection(), tipologia);
  1911.     }

  1912.     public SystemProperties getSystemPropertiesPdDCached(RequestInfo requestInfo) throws DriverConfigurazioneException{
  1913.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getSystemProperties()!=null) {
  1914.             return requestInfo.getRequestConfig().getSystemProperties();
  1915.         }
  1916.         SystemProperties sp = this.configurazionePdDReader.getSystemPropertiesPdDCached(this.getConnection());
  1917.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getSystemProperties()==null) {
  1918.             requestInfo.getRequestConfig().setSystemProperties(sp);
  1919.         }
  1920.         return sp;
  1921.     }
  1922.     public SystemProperties getSystemPropertiesPdDNoCached(boolean forceDisableBYOKUse) throws DriverConfigurazioneException{
  1923.         return this.configurazionePdDReader.getSystemPropertiesPdD(forceDisableBYOKUse);
  1924.     }
  1925.    
  1926.    
  1927.     public List<String> getEncryptedSystemPropertiesPdD() throws DriverConfigurazioneException{
  1928.         return this.configurazionePdDReader.getEncryptedSystemPropertiesPdD();
  1929.     }
  1930.    
  1931.     public SystemProperties getSystemPropertiesPdD() throws DriverConfigurazioneException{
  1932.         return this.configurazionePdDReader.getSystemPropertiesPdD(false);
  1933.     }

  1934.     public void updateSystemPropertiesPdD(SystemProperties systemProperties) throws DriverConfigurazioneException{
  1935.         this.configurazionePdDReader.updateSystemPropertiesPdD(systemProperties);
  1936.     }

  1937.     public CorsConfigurazione getConfigurazioneCORS() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1938.         return this.configurazionePdDReader.getConfigurazioneCORS(this.getConnection());
  1939.     }

  1940.     public ConfigurazioneMultitenant getConfigurazioneMultitenant() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1941.         return this.configurazionePdDReader.getConfigurazioneMultitenant(this.getConnection());
  1942.     }

  1943.     public ResponseCachingConfigurazione getConfigurazioneResponseCaching() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1944.         return this.configurazionePdDReader.getConfigurazioneResponseCaching(this.getConnection());
  1945.     }

  1946.     public Cache getConfigurazioneResponseCachingCache() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1947.         return this.configurazionePdDReader.getConfigurazioneResponseCachingCache(this.getConnection());
  1948.     }

  1949.     public Cache getConfigurazioneConsegnaApplicativiCache() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1950.         return this.configurazionePdDReader.getConfigurazioneConsegnaApplicativiCache(this.getConnection());
  1951.     }

  1952.     public CanaliConfigurazione getCanaliConfigurazione() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1953.         return this.configurazionePdDReader.getCanaliConfigurazione(this.getConnection());
  1954.     }
  1955.    
  1956.     public ConfigurazioneCanaliNodo getConfigurazioneCanaliNodo() throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1957.         return this.configurazionePdDReader.getConfigurazioneCanaliNodo(this.getConnection());
  1958.     }
  1959.    
  1960.     public UrlInvocazioneAPI getConfigurazioneUrlInvocazione(IProtocolFactory<?> protocolFactory, RuoloContesto ruolo, ServiceBinding serviceBinding,
  1961.             String interfaceName, IDSoggetto soggettoOperativo,
  1962.             IDAccordo idAccordo, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1963.         AccordoServizioParteComune aspc = null;
  1964.         try {
  1965.             aspc = this.registroServiziManager.getAccordoServizioParteComune(idAccordo, null, false, false, requestInfo);
  1966.         }catch(Exception e) {
  1967.             throw new DriverConfigurazioneException(e.getMessage(),e);
  1968.         }
  1969.         return this.configurazionePdDReader.getConfigurazioneUrlInvocazione(this.getConnection(),
  1970.                 protocolFactory, ruolo, serviceBinding, interfaceName, soggettoOperativo,
  1971.                 aspc,
  1972.                 requestInfo);
  1973.     }
  1974.     public UrlInvocazioneAPI getConfigurazioneUrlInvocazione(IProtocolFactory<?> protocolFactory, RuoloContesto ruolo, ServiceBinding serviceBinding,
  1975.             String interfaceName, IDSoggetto soggettoOperativo,
  1976.             AccordoServizioParteComune aspc, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1977.         return this.configurazionePdDReader.getConfigurazioneUrlInvocazione(this.getConnection(),
  1978.                 protocolFactory, ruolo, serviceBinding, interfaceName, soggettoOperativo,
  1979.                 aspc,
  1980.                 requestInfo);
  1981.     }
  1982.     public UrlInvocazioneAPI getConfigurazioneUrlInvocazione(IProtocolFactory<?> protocolFactory, RuoloContesto ruolo, ServiceBinding serviceBinding,
  1983.             String interfaceName, IDSoggetto soggettoOperativo,
  1984.             List<String> tags,
  1985.             String canaleApi,
  1986.             RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  1987.         return this.configurazionePdDReader.getConfigurazioneUrlInvocazione(this.getConnection(),
  1988.                 protocolFactory, ruolo, serviceBinding, interfaceName, soggettoOperativo,
  1989.                 tags,
  1990.                 canaleApi,
  1991.                 requestInfo);
  1992.     }
  1993.    
  1994.     public List<PolicyGroupByActiveThreadsType> getTipiGestoreRateLimiting() throws DriverConfigurazioneException {
  1995.         return this.configurazionePdDReader.getTipiGestoreRateLimiting(this.getConnection());
  1996.     }
  1997.    
  1998.     public List<String> getInitHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  1999.         return this.configurazionePdDReader.getInitHandlers(this.getConnection());
  2000.     }
  2001.     public List<String> getExitHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2002.         return this.configurazionePdDReader.getExitHandlers(this.getConnection());
  2003.     }
  2004.     public List<String> getIntegrationManagerRequestHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2005.         return this.configurazionePdDReader.getIntegrationManagerRequestHandlers(this.getConnection());
  2006.     }
  2007.     public List<String> getIntegrationManagerResponseHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2008.         return this.configurazionePdDReader.getIntegrationManagerResponseHandlers(this.getConnection());
  2009.     }
  2010.    
  2011.     public List<String> getPreInRequestHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2012.         return this.configurazionePdDReader.getPreInRequestHandlers(this.getConnection());
  2013.     }
  2014.     public List<String> getInRequestHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2015.         return this.configurazionePdDReader.getInRequestHandlers(this.getConnection());
  2016.     }
  2017.     public List<String> getInRequestProtocolHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2018.         return this.configurazionePdDReader.getInRequestProtocolHandlers(this.getConnection());
  2019.     }
  2020.     public List<String> getOutRequestHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2021.         return this.configurazionePdDReader.getOutRequestHandlers(this.getConnection());
  2022.     }
  2023.     public List<String> getPostOutRequestHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2024.         return this.configurazionePdDReader.getPostOutRequestHandlers(this.getConnection());
  2025.     }
  2026.     public List<String> getPreInResponseHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2027.         return this.configurazionePdDReader.getPreInResponseHandlers(this.getConnection());
  2028.     }
  2029.     public List<String> getInResponseHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2030.         return this.configurazionePdDReader.getInResponseHandlers(this.getConnection());
  2031.     }
  2032.     public List<String> getOutResponseHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2033.         return this.configurazionePdDReader.getOutResponseHandlers(this.getConnection());
  2034.     }
  2035.     public List<String> getPostOutResponseHandlers() throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2036.         return this.configurazionePdDReader.getPostOutResponseHandlers(this.getConnection());
  2037.     }

  2038.     public List<Object> getExtendedInfoConfigurazione() throws DriverConfigurazioneException{
  2039.         return this.configurazionePdDReader.getExtendedInfoConfigurazione(this.getConnection());
  2040.     }

  2041.     public Object getSingleExtendedInfoConfigurazione(String id) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2042.         return this.configurazionePdDReader.getSingleExtendedInfoConfigurazione(id, this.getConnection());
  2043.     }

  2044.     public List<Object> getExtendedInfoConfigurazioneFromCache() throws DriverConfigurazioneException{
  2045.         return this.configurazionePdDReader.getExtendedInfoConfigurazioneFromCache(this.getConnection());
  2046.     }

  2047.     public Object getSingleExtendedInfoConfigurazioneFromCache(String id) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2048.         return this.configurazionePdDReader.getSingleExtendedInfoConfigurazioneFromCache(id, this.getConnection());
  2049.     }
  2050.    
  2051.     public Template getTemplatePolicyNegoziazioneRequest(String policyName, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2052.         return this.configurazionePdDReader.getTemplatePolicyNegoziazioneRequest(this.getConnection(), policyName, template, requestInfo);
  2053.     }
  2054.    
  2055.     public Template getTemplateAttributeAuthorityRequest(String attributeAuthorityName, byte[] template, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2056.         return this.configurazionePdDReader.getTemplateAttributeAuthorityRequest(this.getConnection(), attributeAuthorityName, template, requestInfo);
  2057.     }
  2058.    
  2059.     public Template getTemplateIntegrazione(File file, RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2060.         return this.configurazionePdDReader.getTemplateIntegrazione(this.getConnection(), file, requestInfo);
  2061.     }


  2062.     /* ********  R I C E R C A  I D   E L E M E N T I   P R I M I T I V I  ******** */

  2063.     public List<IDPortaDelegata> getAllIdPorteDelegate(FiltroRicercaPorteDelegate filtroRicerca) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2064.         return this.configurazionePdDReader.getAllIdPorteDelegate(filtroRicerca, this.getConnection());
  2065.     }

  2066.     public List<IDPortaApplicativa> getAllIdPorteApplicative(FiltroRicercaPorteApplicative filtroRicerca) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2067.         return this.configurazionePdDReader.getAllIdPorteApplicative(filtroRicerca, this.getConnection());
  2068.     }

  2069.     public List<IDServizioApplicativo> getAllIdServiziApplicativi(FiltroRicercaServiziApplicativi filtroRicerca) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  2070.         return this.configurazionePdDReader.getAllIdServiziApplicativi(filtroRicerca, this.getConnection());
  2071.     }

  2072.     /* ******** CONTROLLO TRAFFICO ******** */

  2073.     public ConfigurazioneGenerale getConfigurazioneControlloTraffico(RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2074.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestRateLimitingConfig()!=null;
  2075.         if(useRequestInfo &&
  2076.             (requestInfo.getRequestRateLimitingConfig().getConfigurazioneGenerale()!=null)
  2077.             ){
  2078.             return requestInfo.getRequestRateLimitingConfig().getConfigurazioneGenerale();
  2079.         }
  2080.         ConfigurazioneGenerale config = this.configurazionePdDReader.getConfigurazioneControlloTraffico(this.getConnection());
  2081.         if(useRequestInfo && requestInfo.getRequestRateLimitingConfig().getConfigurazioneGenerale()==null) {
  2082.             requestInfo.getRequestRateLimitingConfig().setConfigurazioneGenerale(config);
  2083.         }
  2084.         return config;
  2085.     }

  2086.     public PolicyConfiguration getConfigurazionePolicyRateLimitingGlobali(RequestInfo requestInfo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2087.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestRateLimitingConfig()!=null;
  2088.         if(useRequestInfo &&
  2089.             (requestInfo.getRequestRateLimitingConfig().getConfigurazionePolicyRateLimitingGlobali()!=null)
  2090.             ){
  2091.             Object o = requestInfo.getRequestRateLimitingConfig().getConfigurazionePolicyRateLimitingGlobali();
  2092.             if(o instanceof PolicyConfiguration) {
  2093.                 return (PolicyConfiguration) o;
  2094.             }
  2095.         }
  2096.         PolicyConfiguration config = this.configurazionePdDReader.getConfigurazionePolicyRateLimitingGlobali(this.getConnection());
  2097.         if(useRequestInfo && requestInfo.getRequestRateLimitingConfig().getConfigurazionePolicyRateLimitingGlobali()==null) {
  2098.             requestInfo.getRequestRateLimitingConfig().setConfigurazionePolicyRateLimitingGlobali(config);
  2099.         }
  2100.         return config;
  2101.     }
  2102.    
  2103.     public Map<TipoRisorsaPolicyAttiva, ElencoIdPolicyAttive> getElencoIdPolicyAttiveAPI(boolean useCache, TipoPdD tipoPdD, String nomePorta) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2104.         return this.configurazionePdDReader.getElencoIdPolicyAttiveAPI(this.getConnection(), useCache, tipoPdD, nomePorta);
  2105.     }

  2106.     public Map<TipoRisorsaPolicyAttiva, ElencoIdPolicyAttive> getElencoIdPolicyAttiveGlobali(boolean useCache) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2107.         return this.configurazionePdDReader.getElencoIdPolicyAttiveGlobali(this.getConnection(), useCache);
  2108.     }
  2109.    
  2110.     public Map<TipoRisorsaPolicyAttiva, ElencoIdPolicyAttive> getElencoIdPolicyAttiveAPIDimensioneMessaggio(boolean useCache, TipoPdD tipoPdD, String nomePorta) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2111.         return this.configurazionePdDReader.getElencoIdPolicyAttiveAPIDimensioneMessaggio(this.getConnection(), useCache, tipoPdD, nomePorta);
  2112.     }

  2113.     public Map<TipoRisorsaPolicyAttiva, ElencoIdPolicyAttive> getElencoIdPolicyAttiveGlobaliDimensioneMessaggio(boolean useCache) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2114.         return this.configurazionePdDReader.getElencoIdPolicyAttiveGlobaliDimensioneMessaggio(this.getConnection(), useCache);
  2115.     }

  2116.     public AttivazionePolicy getAttivazionePolicy(boolean useCache, String id) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2117.         return this.configurazionePdDReader.getAttivazionePolicy(this.getConnection(), useCache, id);
  2118.     }

  2119.     public ElencoIdPolicy getElencoIdPolicy(boolean useCache) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2120.         return this.configurazionePdDReader.getElencoIdPolicy(this.getConnection(), useCache);
  2121.     }

  2122.     public ConfigurazionePolicy getConfigurazionePolicy(boolean useCache, String id) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2123.         return this.configurazionePdDReader.getConfigurazionePolicy(this.getConnection(), useCache, id);
  2124.     }
  2125.    
  2126.    
  2127.     /* ******** PLUGINS ******** */
  2128.    
  2129.     public IRegistroPluginsReader getRegistroPluginsReader() {
  2130.         return this.configurazionePdDReader.getRegistroPluginsReader();
  2131.     }
  2132.    
  2133.     public String getPluginClassName(String tipoPlugin, String tipo) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2134.         return this.configurazionePdDReader.getPluginClassName(this.getConnection(), tipoPlugin, tipo);
  2135.     }
  2136.     public String getPluginClassNameByFilter(String tipoPlugin, String tipo, NameValue ... filtri) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2137.         return this.configurazionePdDReader.getPluginClassNameByFilter(this.getConnection(), tipoPlugin, tipo, filtri);
  2138.     }
  2139.    
  2140.     public String getPluginTipo(String tipoPlugin, String className) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2141.         return this.configurazionePdDReader.getPluginTipo(this.getConnection(), tipoPlugin, className);
  2142.     }
  2143.     public String getPluginTipoByFilter(String tipoPlugin, String className, NameValue ... filtri) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2144.         return this.configurazionePdDReader.getPluginTipoByFilter(this.getConnection(), tipoPlugin, className, filtri);
  2145.     }
  2146.    
  2147.    
  2148.     /* ******** ALLARMI ******** */
  2149.    
  2150.     public Allarme getAllarme(String nomeAllarme, boolean searchInCache) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  2151.         return this.configurazionePdDReader.getAllarme(this.getConnection(), nomeAllarme, searchInCache);
  2152.     }
  2153.     public List<Allarme> searchAllarmi(FiltroRicercaAllarmi filtroRicerca, boolean searchInCache) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  2154.         return this.configurazionePdDReader.searchAllarmi(this.getConnection(), filtroRicerca, searchInCache);
  2155.     }
  2156.     public List<IAlarm> instanceAllarmi(List<Allarme> listAllarmi) throws DriverConfigurazioneException {
  2157.         return this.configurazionePdDReader.instanceAllarmi(this.getConnection(), listAllarmi);
  2158.     }
  2159.     public void changeStatus(IAlarm alarm, AlarmStatus nuovoStatoAllarme) throws DriverConfigurazioneException {
  2160.         this.configurazionePdDReader.changeStatus(this.getConnection(), alarm, nuovoStatoAllarme);
  2161.     }

  2162.    
  2163.     /* ******** MAPPING ******** */

  2164.     public List<MappingErogazionePortaApplicativa> getMappingErogazionePortaApplicativaList(IDServizio idServizio, RequestInfo requestInfo) throws DriverConfigurazioneException{
  2165.         if(
  2166.             (requestInfo!=null && requestInfo.getRequestConfig()!=null &&
  2167.                 idServizio!=null && requestInfo.getRequestConfig().getIdServizio()!=null )
  2168.             &&
  2169.             ( requestInfo.getRequestConfig().getListMappingErogazionePortaApplicativa()!=null &&
  2170.                     idServizio.equals(requestInfo.getRequestConfig().getIdServizio(),false))
  2171.         ){
  2172.             return requestInfo.getRequestConfig().getListMappingErogazionePortaApplicativa();
  2173.         }
  2174.         List<MappingErogazionePortaApplicativa> list = this.configurazionePdDReader.getMappingErogazionePortaApplicativaList(idServizio, this.getConnection());
  2175.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getListMappingErogazionePortaApplicativa()==null) {
  2176.             requestInfo.getRequestConfig().setListMappingErogazionePortaApplicativa(list);
  2177.         }
  2178.         return list;
  2179.     }
  2180.     public List<MappingFruizionePortaDelegata> getMappingFruizionePortaDelegataList(IDSoggetto idFruitore, IDServizio idServizio, RequestInfo requestInfo) throws DriverConfigurazioneException{
  2181.         if(
  2182.             (requestInfo!=null && requestInfo.getRequestConfig()!=null &&
  2183.                 idServizio!=null && requestInfo.getRequestConfig().getIdServizio()!=null &&
  2184.                 idFruitore!=null && requestInfo.getRequestConfig().getIdFruitore()!=null)
  2185.             &&
  2186.             ( requestInfo.getRequestConfig().getListMappingFruizionePortaDelegata()!=null &&
  2187.                     idServizio.equals(requestInfo.getRequestConfig().getIdServizio(),false) &&
  2188.                     idFruitore.equals(requestInfo.getRequestConfig().getIdFruitore()))
  2189.         ){
  2190.             return requestInfo.getRequestConfig().getListMappingFruizionePortaDelegata();
  2191.         }
  2192.         List<MappingFruizionePortaDelegata> list = this.configurazionePdDReader.getMappingFruizionePortaDelegataList(idFruitore, idServizio, this.getConnection());
  2193.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getListMappingFruizionePortaDelegata()==null) {
  2194.             requestInfo.getRequestConfig().setListMappingFruizionePortaDelegata(list);
  2195.         }
  2196.         return list;
  2197.     }
  2198.    
  2199.     /* ******** FORWARD PROXY ******** */
  2200.    
  2201.     public boolean isForwardProxyEnabled(RequestInfo requestInfo) {
  2202.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getForwardProxyEnabled()!=null) {
  2203.             return requestInfo.getRequestConfig().getForwardProxyEnabled();
  2204.         }
  2205.         boolean b = this.configurazionePdDReader.isForwardProxyEnabled();
  2206.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getForwardProxyEnabled()==null) {
  2207.             requestInfo.getRequestConfig().setForwardProxyEnabled(b);
  2208.         }
  2209.         return b;
  2210.     }
  2211.     public ForwardProxy getForwardProxyConfigFruizione(IDSoggetto dominio, IDServizio idServizio, IDGenericProperties policy, RequestInfo requestInfo) throws DriverConfigurazioneException{
  2212.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getForwardProxyEnabled()!=null;
  2213.         String key = null;
  2214.         if(useRequestInfo) {
  2215.             key = ConfigurazionePdD._getKey_ForwardProxyConfig(true, dominio, idServizio, policy);
  2216.             Object o = requestInfo.getRequestConfig().getForwardProxy(key);
  2217.             if(o instanceof ForwardProxy) {
  2218.                 return (ForwardProxy) o;
  2219.             }
  2220.         }
  2221.         ForwardProxy fp = this.configurazionePdDReader.getForwardProxyConfigFruizione(dominio, idServizio, policy, requestInfo);
  2222.         if(useRequestInfo) {
  2223.             requestInfo.getRequestConfig().addForwardProxy(key, fp,
  2224.                     requestInfo.getIdTransazione());
  2225.         }
  2226.         return fp;
  2227.     }
  2228.     public ForwardProxy getForwardProxyConfigErogazione(IDSoggetto dominio, IDServizio idServizio, IDGenericProperties policy, RequestInfo requestInfo) throws DriverConfigurazioneException{
  2229.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getForwardProxyEnabled()!=null;
  2230.         String key = null;
  2231.         if(useRequestInfo) {
  2232.             key = ConfigurazionePdD._getKey_ForwardProxyConfig(false, dominio, idServizio, policy);
  2233.             Object o = requestInfo.getRequestConfig().getForwardProxy(key);
  2234.             if(o instanceof ForwardProxy) {
  2235.                 return (ForwardProxy) o;
  2236.             }
  2237.         }
  2238.         ForwardProxy fp = this.configurazionePdDReader.getForwardProxyConfigErogazione(dominio, idServizio, policy, requestInfo);
  2239.         if(useRequestInfo) {
  2240.             requestInfo.getRequestConfig().addForwardProxy(key, fp,
  2241.                     requestInfo.getIdTransazione());
  2242.         }
  2243.         return fp;
  2244.     }
  2245.    
  2246.     /* ********  GENERIC FILE  ******** */

  2247.     public ContentFile getContentFile(File file)throws DriverConfigurazioneException{
  2248.         return this.configurazionePdDReader.getContentFile(file);
  2249.     }
  2250. }