ServiziApplicativiChange.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.web.ctrlstat.servlet.sa;

  21. import java.net.URLEncoder;
  22. import java.text.MessageFormat;
  23. import java.util.ArrayList;
  24. import java.util.Collections;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Properties;

  28. import javax.net.ssl.KeyManagerFactory;
  29. import javax.net.ssl.TrustManagerFactory;
  30. import javax.servlet.http.HttpServletRequest;
  31. import javax.servlet.http.HttpServletResponse;
  32. import javax.servlet.http.HttpSession;

  33. import org.apache.commons.lang.StringUtils;
  34. import org.apache.struts.action.Action;
  35. import org.apache.struts.action.ActionForm;
  36. import org.apache.struts.action.ActionForward;
  37. import org.apache.struts.action.ActionMapping;
  38. import org.openspcoop2.core.commons.CoreException;
  39. import org.openspcoop2.core.commons.Filtri;
  40. import org.openspcoop2.core.commons.Liste;
  41. import org.openspcoop2.core.config.Connettore;
  42. import org.openspcoop2.core.config.Credenziali;
  43. import org.openspcoop2.core.config.InvocazioneCredenziali;
  44. import org.openspcoop2.core.config.InvocazionePorta;
  45. import org.openspcoop2.core.config.InvocazionePortaGestioneErrore;
  46. import org.openspcoop2.core.config.InvocazioneServizio;
  47. import org.openspcoop2.core.config.Property;
  48. import org.openspcoop2.core.config.ProtocolProperty;
  49. import org.openspcoop2.core.config.ServizioApplicativo;
  50. import org.openspcoop2.core.config.Soggetto;
  51. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  52. import org.openspcoop2.core.config.constants.CredenzialeTipo;
  53. import org.openspcoop2.core.config.constants.FaultIntegrazioneTipo;
  54. import org.openspcoop2.core.config.constants.InvocazioneServizioTipoAutenticazione;
  55. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  56. import org.openspcoop2.core.config.constants.TipologiaErogazione;
  57. import org.openspcoop2.core.config.constants.TipologiaFruizione;
  58. import org.openspcoop2.core.constants.CostantiConnettori;
  59. import org.openspcoop2.core.constants.CostantiDB;
  60. import org.openspcoop2.core.constants.TipiConnettore;
  61. import org.openspcoop2.core.constants.TransferLengthModes;
  62. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  63. import org.openspcoop2.core.id.IDServizioApplicativo;
  64. import org.openspcoop2.core.id.IDSoggetto;
  65. import org.openspcoop2.pdd.core.autenticazione.ApiKey;
  66. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  67. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  68. import org.openspcoop2.protocol.sdk.ProtocolException;
  69. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  70. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  71. import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
  72. import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
  73. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  74. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  75. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  76. import org.openspcoop2.utils.UtilsException;
  77. import org.openspcoop2.utils.certificate.ArchiveLoader;
  78. import org.openspcoop2.utils.certificate.ArchiveType;
  79. import org.openspcoop2.utils.certificate.Certificate;
  80. import org.openspcoop2.utils.certificate.KeystoreType;
  81. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  82. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  83. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  84. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  85. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  86. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  87. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  88. import org.openspcoop2.web.ctrlstat.servlet.OggettoDialogEnum;
  89. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  90. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  91. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  92. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  93. import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
  94. import org.openspcoop2.web.ctrlstat.servlet.protocol_properties.ProtocolPropertiesCostanti;
  95. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  96. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  97. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  98. import org.openspcoop2.web.lib.mvc.Costanti;
  99. import org.openspcoop2.web.lib.mvc.DataElement;
  100. import org.openspcoop2.web.lib.mvc.ForwardParams;
  101. import org.openspcoop2.web.lib.mvc.GeneralData;
  102. import org.openspcoop2.web.lib.mvc.MessageType;
  103. import org.openspcoop2.web.lib.mvc.PageData;
  104. import org.openspcoop2.web.lib.mvc.Parameter;
  105. import org.openspcoop2.web.lib.mvc.ServletUtils;
  106. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  107. /**
  108.  * servizioApplicativoChange
  109.  *
  110.  * @author Andrea Poli (apoli@link.it)
  111.  * @author Stefano Corallo (corallo@link.it)
  112.  * @author Sandra Giangrandi (sandra@link.it)
  113.  * @author $Author$
  114.  * @version $Rev$, $Date$
  115.  *
  116.  */
  117. public final class ServiziApplicativiChange extends Action {
  118.        
  119.     @Override
  120.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

  121.         HttpSession session = request.getSession(true);

  122.         // Inizializzo PageData
  123.         PageData pd = new PageData();

  124.         GeneralHelper generalHelper = new GeneralHelper(session);

  125.         // Inizializzo GeneralData
  126.         GeneralData gd = generalHelper.initGeneralData(request);
  127.        
  128.         // Protocol Properties
  129.         IConsoleDynamicConfiguration consoleDynamicConfiguration = null;
  130.         ConsoleConfiguration consoleConfiguration =null;
  131.         ProtocolProperties protocolProperties = null;
  132.         IProtocolFactory<?> protocolFactory= null;
  133.         IRegistryReader registryReader = null;
  134.         IConfigIntegrationReader configRegistryReader = null;
  135.         ConsoleOperationType consoleOperationType = null;
  136.         String protocolPropertiesSet = null;
  137.        
  138.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  139.         consoleOperationType = ConsoleOperationType.CHANGE;
  140.        
  141.         // Parametri relativi al tipo operazione
  142.         List<ProtocolProperty> oldProtocolPropertyList = null;
  143.         try {
  144.             Boolean contaListe = ServletUtils.getContaListeFromSession(session);

  145.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  146.            
  147.             ServiziApplicativiHelper saHelper = new ServiziApplicativiHelper(request, pd, session);
  148.            
  149.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  150.             SoggettiCore soggettiCore = new SoggettiCore(saCore);
  151.            
  152.             boolean isApplicativiServerEnabled = saCore.isApplicativiServerEnabled(saHelper);
  153.            
  154.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione
  155.             Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, session, request);
  156.             if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  157.             boolean useIdSogg = (parentSA!=null && parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO);
  158.            
  159.             boolean interfacciaAvanzata = saHelper.isModalitaAvanzata();
  160.             boolean interfacciaStandard = saHelper.isModalitaStandard();
  161.            
  162.             String id = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
  163.             long idServizioApplicativoLong = Long.parseLong(id);
  164.            
  165.             String ruoloFruitore = null;
  166.             String ruoloErogatore = null;
  167.             String ruoloSA = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO_SA);
  168.             String tipoSA = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA);
  169.            
  170.             boolean useAsClient = false;
  171.            
  172.             if(isApplicativiServerEnabled) {
  173.                 if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(tipoSA)) {
  174.                     ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE;
  175.                 }
  176.                 if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)) {
  177.                     ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE;
  178.                    
  179.                     String tmp = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT);
  180.                     useAsClient = ServletUtils.isCheckBoxEnabled(tmp);
  181.                 }
  182.             }
  183.            
  184.             if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE.equals(ruoloSA)){
  185.                 ruoloFruitore = TipologiaFruizione.NORMALE.getValue();
  186.                 ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  187.             }
  188.             else if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE.equals(ruoloSA)){
  189.                 ruoloErogatore = TipologiaErogazione.TRASPARENTE.getValue();
  190.                 ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  191.             }
  192.    
  193.            
  194.            
  195.             protocolPropertiesSet = saHelper.getParameter(ProtocolPropertiesCostanti.PARAMETRO_PP_SET);
  196.            
  197.             String nomeParameter = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
  198.             String descrizione = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE);
  199.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  200.             String dominio = saHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);            
  201.             String fault = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
  202.            
  203.             String tipoauthSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
  204.             String utenteSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  205.             String passwordSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  206.             String subjectSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
  207.             String principalSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PRINCIPAL);
  208.            
  209.             String changepwd = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD);
  210.                    
  211.             String tipoCredenzialiSSLSorgente = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
  212.             if(tipoCredenzialiSSLSorgente == null) {
  213.                 tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  214.             }
  215.             String tipoCredenzialiSSLTipoArchivioS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
  216.             org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
  217.             if(tipoCredenzialiSSLTipoArchivioS == null) {
  218.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
  219.             } else {
  220.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
  221.             }
  222.             BinaryParameter tipoCredenzialiSSLFileCertificato = saHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
  223.             String tipoCredenzialiSSLFileCertificatoPassword = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
  224.             List<String> listaAliasEstrattiCertificato = new ArrayList<>();
  225.             String tipoCredenzialiSSLAliasCertificato = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
  226.             if (tipoCredenzialiSSLAliasCertificato == null) {
  227.                 tipoCredenzialiSSLAliasCertificato = "";
  228.             }
  229.             String tipoCredenzialiSSLAliasCertificatoSubject= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
  230.             String tipoCredenzialiSSLAliasCertificatoIssuer= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
  231.             String tipoCredenzialiSSLAliasCertificatoType= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_TYPE);
  232.             String tipoCredenzialiSSLAliasCertificatoVersion= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_VERSION);
  233.             String tipoCredenzialiSSLAliasCertificatoSerialNumber= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SERIAL_NUMBER);
  234.             String tipoCredenzialiSSLAliasCertificatoSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SELF_SIGNED);
  235.             String tipoCredenzialiSSLAliasCertificatoNotBefore= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
  236.             String tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
  237.             String tipoCredenzialiSSLVerificaTuttiICampi = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
  238.             if (
  239.                     (tipoCredenzialiSSLVerificaTuttiICampi == null || StringUtils.isEmpty(tipoCredenzialiSSLVerificaTuttiICampi))
  240.                     &&
  241.                     (saHelper.isEditModeInProgress() && saHelper.getPostBackElementName()==null)
  242.                 ){ // prima volta
  243.                 tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  244.             }
  245.             String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
  246.             if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
  247.                 tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  248.             }
  249.             String issuerSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);

  250.             String tipoCredenzialiSSLWizardStep = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP);
  251.             if (tipoCredenzialiSSLWizardStep == null) {
  252.                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  253.             }
  254.             String oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;
  255.            
  256.             String multipleApiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS);
  257.             String appId = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID);
  258.             String apiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_API_KEY);
  259.                
  260.             String tokenPolicySA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_POLICY);
  261.             String tokenClientIdSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_CLIENT_ID);
  262.            
  263.             boolean tokenWithHttpsEnabledByConfigSA = false;
  264.             boolean tokenByPDND = false;
  265.             boolean tokenModiPDNDOauth = false;
  266.             if(tipoauthSA!=null && !StringUtils.isEmpty(tipoauthSA)) {
  267.                 tokenByPDND = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauthSA);
  268.                 tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(tipoauthSA);
  269.                 if(tokenWithHttpsEnabledByConfigSA) {
  270.                     tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL;
  271.                 }
  272.                 tokenModiPDNDOauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(tipoauthSA);
  273.                 if(tokenModiPDNDOauth) {
  274.                     tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN;
  275.                 }
  276.                 if(tokenPolicySA==null || StringUtils.isEmpty(tokenPolicySA) || CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO.equals(tokenPolicySA)) {
  277.                     if(tokenByPDND) {
  278.                         tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  279.                     }
  280.                 }
  281.                 else {
  282.                     if(!tokenByPDND && (tokenWithHttpsEnabledByConfigSA || tokenModiPDNDOauth) && saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  283.                         tokenPolicySA=null;
  284.                     }
  285.                     else if(tokenByPDND && !saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  286.                         tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  287.                     }
  288.                 }
  289.             }
  290.                        
  291.             String sbustamentoInformazioniProtocolloRisposta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RISPOSTA);
  292.            
  293.             String faultactor = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_ACTOR);
  294.             String genericfault = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_GENERIC_CODE);
  295.             String prefixfault = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT_PREFIX);
  296.            
  297.             String invrifRisposta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RISPOSTA);

  298.            
  299.             String sbustamento = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
  300.             String sbustamentoInformazioniProtocolloRichiesta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RICHIESTA);
  301.             String getmsg = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
  302.            
  303.             String invrifRichiesta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
  304.            
  305.             String risprif = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
  306.            
  307.             String tipoauthRichiesta = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_TIPO_AUTENTICAZIONE);
  308.            
  309.             String endpointtype = saHelper.readEndPointType();
  310.             String tipoconn = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO);
  311.             String autenticazioneHttp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);
  312.             String user = null;
  313.             String password = null;
  314.            
  315.             String connettoreDebug = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);

  316.             // token policy
  317.             String autenticazioneTokenS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  318.             boolean autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  319.             String tokenPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  320.            
  321.             // proxy
  322.             String proxyEnabled = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  323.             String proxyHostname = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  324.             String proxyPort = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  325.             String proxyUsername = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  326.             String proxyPassword = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);
  327.            
  328.             // tempi risposta
  329.             String tempiRispostaEnabled = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  330.             String tempiRispostaConnectionTimeout = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  331.             String tempiRispostaReadTimeout = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  332.             String tempiRispostaTempoMedioRisposta = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  333.            
  334.             // opzioni avanzate
  335.             String transferMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  336.             String transferModeChunkSize = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  337.             String redirectMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  338.             String redirectMaxHop = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  339.             String opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(saHelper, transferMode, redirectMode);
  340.            
  341.             // http
  342.             String url = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL);
  343.             if(TipiConnettore.HTTP.toString().equals(endpointtype)){
  344.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  345.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  346.             }
  347.            
  348.             // api key
  349.             String autenticazioneApiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_API_KEY);
  350.             String apiKeyHeader = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_HEADER);
  351.             if(apiKeyHeader==null || StringUtils.isEmpty(apiKeyHeader)) {
  352.                 apiKeyHeader = CostantiConnettori.DEFAULT_HEADER_API_KEY;
  353.             }
  354.             String apiKeyValue = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_VALUE);
  355.             String appIdHeader = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_HEADER);
  356.             if(appIdHeader==null || StringUtils.isEmpty(appIdHeader)) {
  357.                 appIdHeader = CostantiConnettori.DEFAULT_HEADER_APP_ID;
  358.             }
  359.             String appIdValue = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_VALUE);
  360.             String useOAS3NamesTmp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_NOMI_OAS);
  361.             boolean useOAS3Names=true;
  362.             if(useOAS3NamesTmp!=null && StringUtils.isNotEmpty(useOAS3NamesTmp)) {
  363.                 useOAS3Names = ServletUtils.isCheckBoxEnabled(useOAS3NamesTmp);
  364.             }
  365.             else {
  366.                 useOAS3Names = saHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  367.             }
  368.             String useAppIdTmp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_USE_APP_ID);
  369.             boolean useAppId=false;
  370.             if(useAppIdTmp!=null && StringUtils.isNotEmpty(useAppIdTmp)) {
  371.                 useAppId = ServletUtils.isCheckBoxEnabled(useAppIdTmp);
  372.             }
  373.             else {
  374.                 useAppId = saHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  375.             }
  376.            
  377.             // jms
  378.             String nomeCodaJMS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  379.             String tipoCodaJMS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  380.             String initcont = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  381.             String urlpgk = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  382.             String provurl = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  383.             String connfact = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  384.             String sendas = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  385.             if(TipiConnettore.JMS.toString().equals(endpointtype)){
  386.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  387.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  388.             }
  389.            
  390.             // https
  391.             String httpsurl = url;
  392.             String httpstipologia = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_SSL_TYPE);
  393.             String httpshostverifyS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_HOST_VERIFY);
  394.             boolean httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  395.             String httpsTrustVerifyCertS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS );
  396.             boolean httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  397.             String httpspath = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  398.             String httpstipo = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  399.             String httpspwd = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  400.             String httpsalgoritmo = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  401.             String httpsstatoS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO);
  402.             boolean httpsstato = ServletUtils.isCheckBoxEnabled(httpsstatoS);
  403.             String httpskeystore = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE);
  404.             String httpspwdprivatekeytrust = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_STORE);
  405.             String httpspathkey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  406.             String httpstipokey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_TYPE);
  407.             String httpspwdkey = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  408.             String httpspwdprivatekey = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_KEYSTORE);
  409.             String httpsalgoritmokey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  410.             String httpsKeyAlias = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_ALIAS_PRIVATE_KEY_KEYSTORE);
  411.             String httpsTrustStoreCRLs = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_CRL);
  412.             String httpsTrustStoreOCSPPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  413.             String httpsKeyStoreBYOKPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  414.             if(TipiConnettore.HTTPS.toString().equals(endpointtype)){
  415.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  416.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  417.             }
  418.            
  419.             // file
  420.             String requestOutputFileName = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME);
  421.             String requestOutputFileNamePermissions = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_PERMISSIONS);
  422.             String requestOutputFileNameHeaders = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS);
  423.             String requestOutputFileNameHeadersPermissions = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS_PERMISSIONS);
  424.             String requestOutputParentDirCreateIfNotExists = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  425.             String requestOutputOverwriteIfExists = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE_NAME);
  426.             String responseInputMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  427.             String responseInputFileName = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME);
  428.             String responseInputFileNameHeaders = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_HEADERS);
  429.             String responseInputDeleteAfterRead = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_DELETE_AFTER_READ);
  430.             String responseInputWaitTime = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);
  431.            
  432.             //status
  433.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(saHelper);
  434.            
  435.             String resetElementoCacheS = saHelper.getParameter(CostantiControlStation.PARAMETRO_ELIMINA_ELEMENTO_DALLA_CACHE);
  436.             boolean resetElementoCache = ServletUtils.isCheckBoxEnabled(resetElementoCacheS);
  437.            
  438.             boolean integrationManagerEnabled = !saHelper.isModalitaStandard() && saCore.isIntegrationManagerEnabled();
  439.                        
  440.             boolean visualizzaModificaCertificato = false;
  441.             boolean visualizzaAddCertificato = false;
  442.             String servletCredenzialiList = ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST;
  443.             List<Parameter> parametersServletCredenzialiList = null;
  444.             Integer numeroCertificati = 0;
  445.             String servletCredenzialiAdd = ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_ADD;
  446.            
  447.             Long soggLong = 0L;
  448.             if(provider != null){
  449.                 soggLong = Long.parseLong(provider);
  450.             }
  451.            
  452.             // Preparo il menu
  453.             saHelper.makeMenu();

  454.             // Prendo il nome e il provider del servizioApplicativo
  455.             ServizioApplicativo sa = saCore.getServizioApplicativo(idServizioApplicativoLong);
  456.             String oldNome = sa.getNome();
  457.             IDSoggetto oldIdSoggetto = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
  458.             IDServizioApplicativo oldIdServizioApplicativo = new IDServizioApplicativo();
  459.             oldIdServizioApplicativo.setIdSoggettoProprietario(oldIdSoggetto);
  460.             oldIdServizioApplicativo.setNome(oldNome);
  461.             int idProv = sa.getIdSoggetto().intValue();

  462.             InvocazionePorta ip = sa.getInvocazionePorta();
  463.             InvocazionePortaGestioneErrore ipge = null;
  464.             Credenziali credenziali = null;
  465.             Credenziali oldCredenziali = null;
  466.             if (ip != null) {
  467.                 ipge = ip.getGestioneErrore();
  468.                 numeroCertificati = ip.sizeCredenzialiList();
  469.                 if(ip.sizeCredenzialiList()>0) {
  470.                     credenziali = ip.getCredenziali(0);
  471.                     oldCredenziali = ip.getCredenziali(0);
  472.                    
  473.                     visualizzaAddCertificato = true;
  474.                     if(ip.sizeCredenzialiList() == 1) {  // se ho definito solo un certificato c'e' il link diretto alla modifica
  475.                         visualizzaModificaCertificato = true;
  476.                     }
  477.                 }
  478.             }
  479.            
  480.             Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
  481.             Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, sa.getIdSoggetto()+"");
  482.            
  483.             parametersServletCredenzialiList = new ArrayList<>();
  484.             parametersServletCredenzialiList.add(pIdSA);
  485.             parametersServletCredenzialiList.add(pIdSoggettoSA);
  486.            
  487.             if(dominio != null) {
  488.                 Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
  489.                 parametersServletCredenzialiList.add(pDominio);
  490.             }
  491.            
  492.             boolean encryptOldPlainPwd = false;
  493.             if(oldCredenziali!=null && org.openspcoop2.core.config.constants.CredenzialeTipo.BASIC.equals(oldCredenziali.getTipo())) {
  494.                 encryptOldPlainPwd = !oldCredenziali.isCertificateStrictVerification() && saCore.isApplicativiPasswordEncryptEnabled();
  495.             }
  496.            
  497.             InvocazioneServizio is = sa.getInvocazioneServizio();
  498.             if(is==null) {
  499.                 throw new CoreException("ServizioApplicativo con id '"+idServizioApplicativoLong+"' senza InvocazioneServizio");
  500.             }
  501.             InvocazioneCredenziali cis = is.getCredenziali();
  502.             Connettore connis = is.getConnettore();
  503.             if(connis==null) {
  504.                 throw new CoreException("ServizioApplicativo con id '"+idServizioApplicativoLong+"' senza connettore in InvocazioneServizio");
  505.             }
  506.             List<Property> cp = connis.getPropertyList();
  507.            
  508.             Boolean isConnettoreCustomUltimaImmagineSalvata = connis.getCustom();
  509.            
  510.             List<ExtendedConnettore> listExtendedConnettore =
  511.                     ServletExtendedConnettoreUtils.getExtendedConnettore(connis, ConnettoreServletType.SERVIZIO_APPLICATIVO_CHANGE, saHelper,
  512.                             (endpointtype==null), endpointtype); // uso endpointtype per capire se รจ la prima volta che entro
  513.            
  514.             if (endpointtype == null &&
  515.                 connis!=null){
  516.                 if ((connis.getCustom()!=null && connis.getCustom()) &&
  517.                         !TipiConnettore.HTTPS.toString().equals(connis.getTipo()) &&
  518.                         !TipiConnettore.FILE.toString().equals(connis.getTipo()) &&
  519.                         !TipiConnettore.STATUS.toString().equals(connis.getTipo())) {
  520.                     endpointtype = TipiConnettore.CUSTOM.toString();
  521.                     tipoconn = connis.getTipo();
  522.                 } else
  523.                     endpointtype = connis.getTipo();
  524.             }
  525.             if(endpointtype==null){
  526.                 endpointtype=TipiConnettore.DISABILITATO.toString();
  527.             }
  528.            
  529.             String nomeProtocollo = null;
  530.             String tipoENomeSoggetto = null;
  531.             String nomePdd = null;
  532.             IDSoggetto idSoggetto = null;
  533.             if(saCore.isRegistroServiziLocale()){
  534.                 org.openspcoop2.core.registry.Soggetto soggetto = soggettiCore.getSoggettoRegistro(idProv);
  535.                 nomeProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(soggetto.getTipo());
  536.                 tipoENomeSoggetto = saHelper.getLabelNomeSoggetto(nomeProtocollo, soggetto.getTipo() , soggetto.getNome());
  537.                 nomePdd = soggetto.getPortaDominio();
  538.                 idSoggetto = new IDSoggetto(soggetto.getTipo() , soggetto.getNome());
  539.             }
  540.             else{
  541.                 Soggetto soggetto = soggettiCore.getSoggetto(idProv);
  542.                 nomeProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(soggetto.getTipo());
  543.                 tipoENomeSoggetto = saHelper.getLabelNomeSoggetto(nomeProtocollo, soggetto.getTipo() , soggetto.getNome());
  544.                 idSoggetto = new IDSoggetto(soggetto.getTipo() , soggetto.getNome());
  545.             }

  546.             if(dominio==null) {
  547.                 boolean isSupportatoAutenticazioneApplicativiEsterni = saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(nomeProtocollo);
  548.                 if(isSupportatoAutenticazioneApplicativiEsterni) {
  549.                     PddCore pddCore = new PddCore(saCore);
  550.                     dominio = pddCore.isPddEsterna(nomePdd) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
  551.                 }
  552.             }
  553.            
  554.             boolean tokenWithHttsSupportato = false;
  555.             if(nomeProtocollo!=null) {
  556.                 ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
  557.                 tokenWithHttsSupportato = protocolFactoryManager.getProtocolFactoryByName(nomeProtocollo).createProtocolConfiguration().isSupportatoAutenticazioneApplicativiHttpsConToken();
  558.             }
  559.            
  560.             String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  561.             String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  562.             if(!saHelper.isModalitaCompleta()) {
  563.                 labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  564.                 labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  565.             }
  566.            
  567.             // Protocol Properties  
  568.             protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(nomeProtocollo);
  569.             consoleDynamicConfiguration =  protocolFactory.createDynamicConfigurationConsole();
  570.             registryReader = saCore.getRegistryReader(protocolFactory);
  571.             configRegistryReader = saCore.getConfigIntegrationReader(protocolFactory);
  572.             consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigServizioApplicativo(consoleOperationType, saHelper,
  573.                     registryReader, configRegistryReader, oldIdServizioApplicativo);
  574.             protocolProperties = saHelper.estraiProtocolPropertiesDaRequest(consoleConfiguration, consoleOperationType);
  575.             oldProtocolPropertyList = sa.getProtocolPropertyList();
  576.            
  577.             Properties propertiesProprietario = new Properties();
  578.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO, idServizioApplicativoLong+"");
  579.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO, ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_SERVIZIO_APPLICATIVO);
  580.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO, oldIdServizioApplicativo.toString());
  581.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE, URLEncoder.encode( ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE + "?" + request.getQueryString(), "UTF-8"));
  582.             if(nomeProtocollo!=null) {
  583.                 propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, nomeProtocollo);
  584.             }
  585.            
  586.             String postBackElementName = saHelper.getPostBackElementName();
  587.             String labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;


  588.             // Controllo se ho modificato il protocollo, ricalcolo il default della versione del protocollo
  589.             @SuppressWarnings("unused")
  590.             boolean postBackTipoAuthSA = false;
  591.             if(postBackElementName != null ){
  592.                 // tipo autenticazione
  593.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE)){
  594.                    
  595.                     postBackTipoAuthSA = true;
  596.                    
  597.                     if(tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  598.                        
  599.                         if(oldCredenziali!=null && oldCredenziali.getTipo()!=null && oldCredenziali.getTipo().getValue().equals(tipoauthSA)){
  600.                            
  601.                             tipoCredenzialiSSLWizardStep  = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  602.                            
  603.                             // il certificato non e' cambiato
  604.                             if(tipoCredenzialiSSLAliasCertificatoSubject==null || StringUtils.isEmpty(tipoCredenzialiSSLAliasCertificatoSubject)) {
  605.                                 if(oldCredenziali.getCertificate()!=null) {
  606.                                     try {
  607.                                         Certificate cSelezionato = ArchiveLoader.load(oldCredenziali.getCertificate());
  608.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  609.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  610.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  611.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  612.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  613.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  614.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  615.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  616.                                     }catch(UtilsException e) {
  617.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  618.                                         tipoCredenzialiSSLAliasCertificato = "";
  619.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  620.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  621.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  622.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  623.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  624.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  625.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  626.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  627.                                     }
  628.                                 }
  629.                                 tipoCredenzialiSSLVerificaTuttiICampi = oldCredenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
  630.                             }
  631.                            
  632.                             if(tokenWithHttpsEnabledByConfigSA) {
  633.                                 tokenClientIdSA = oldCredenziali.getUser();
  634.                                 tokenPolicySA = oldCredenziali.getTokenPolicy();
  635.                                
  636.                                 if(!tokenByPDND && saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  637.                                     tokenPolicySA=null;
  638.                                 }
  639.                                 else if(tokenByPDND && !saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  640.                                     tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  641.                                 }
  642.                                
  643.                             }
  644.                            
  645.                         }
  646.                         else {
  647.                            
  648.                             // reset impostazioni sezione ssl
  649.                             tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  650.                             tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  651.                             tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  652.                             tipoCredenzialiSSLAliasCertificato = "";
  653.                             tipoCredenzialiSSLAliasCertificatoSubject= "";
  654.                             tipoCredenzialiSSLAliasCertificatoIssuer= "";
  655.                             tipoCredenzialiSSLAliasCertificatoType= "";
  656.                             tipoCredenzialiSSLAliasCertificatoVersion= "";
  657.                             tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  658.                             tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  659.                             tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  660.                             tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  661.                             listaAliasEstrattiCertificato = new ArrayList<>();
  662.                             tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  663.                            
  664.                         }
  665.                            
  666.                     } else {
  667.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  668.                        
  669.                         if(oldCredenziali!=null && oldCredenziali.getTipo()!=null) {
  670.                             if(oldCredenziali.getTipo().getValue().equals(tipoauthSA)) {
  671.                                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSA)) {
  672.                                     utenteSA = oldCredenziali.getUser();
  673.                                     passwordSA = oldCredenziali.getPassword();
  674.                                     tipoCredenzialiSSLVerificaTuttiICampi = oldCredenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  675.                                 }
  676.                                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)) {
  677.                                     utenteSA = oldCredenziali.getUser();
  678.                                     passwordSA = oldCredenziali.getPassword();
  679.                                     tipoCredenzialiSSLVerificaTuttiICampi = oldCredenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  680.                                     multipleApiKey = oldCredenziali.isAppId() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  681.                                     appId = oldCredenziali.getUser();
  682.                                     apiKey = oldCredenziali.getPassword();
  683.                                 }
  684.                                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_PRINCIPAL.equals(tipoauthSA)) {
  685.                                     principalSA = oldCredenziali.getUser();
  686.                                 }
  687.                                
  688.                                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(tipoauthSA)) {
  689.                                     tokenClientIdSA = oldCredenziali.getUser();
  690.                                     tokenPolicySA = oldCredenziali.getTokenPolicy();
  691.                                 }
  692.                                 else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA) && tokenWithHttsSupportato) {
  693.                                     tokenClientIdSA = oldCredenziali.getUser();
  694.                                     tokenPolicySA = oldCredenziali.getTokenPolicy();
  695.                                     tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA) && StringUtils.isNotEmpty(tokenClientIdSA);
  696.                                 }
  697.                                
  698.                                 if((tokenWithHttpsEnabledByConfigSA || tokenModiPDNDOauth)) {
  699.                                     if(!tokenByPDND && saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  700.                                         tokenPolicySA=null;
  701.                                     }
  702.                                     else if(tokenByPDND && !saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  703.                                         tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  704.                                     }
  705.                                 }
  706.                             }
  707.                             else {
  708.                                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSA) ||
  709.                                         ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)) {
  710.                                     tipoCredenzialiSSLVerificaTuttiICampi = Costanti.CHECK_BOX_DISABLED; // dovrร  essere re-effettuata la cifratura
  711.                                 }
  712.                             }
  713.                         }
  714.                     }
  715.                 }

  716.                 // tipo di configurazione SSL
  717.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL) ||
  718.                         postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_MODIFICA)) {
  719.                     listaAliasEstrattiCertificato = new ArrayList<>();
  720.                     tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  721.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  722.                     tipoCredenzialiSSLAliasCertificato = "";
  723.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  724.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  725.                     tipoCredenzialiSSLAliasCertificatoType= "";
  726.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  727.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  728.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  729.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  730.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  731.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  732.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;

  733.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
  734.                         subjectSA = "";
  735.                         issuerSA = "";
  736.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  737.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  738.                     }
  739.                 }

  740.                 // cambio il tipo archivio butto via il vecchio certificato            
  741.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO)) {
  742.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  743.                     tipoCredenzialiSSLAliasCertificato = "";
  744.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  745.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  746.                     tipoCredenzialiSSLAliasCertificatoType= "";
  747.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  748.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  749.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  750.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  751.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  752.                     listaAliasEstrattiCertificato = new ArrayList<>();
  753.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  754.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  755.                 }

  756.                 // selezione alias
  757.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO)) {
  758.                     if(StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  759.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  760.                     } else {
  761.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  762.                     }
  763.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  764.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  765.                     tipoCredenzialiSSLAliasCertificatoType= "";
  766.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  767.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  768.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  769.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  770.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  771.                 }
  772.                
  773.                 // Change Password basic/api
  774.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD)) {
  775.                     if(!ServletUtils.isCheckBoxEnabled(changepwd)) {
  776.                         if (oldCredenziali != null){
  777.                             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSA)) {
  778.                                 passwordSA = oldCredenziali.getPassword();
  779.                                 tipoCredenzialiSSLVerificaTuttiICampi = oldCredenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  780.                             }
  781.                             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)) {
  782.                                 passwordSA = oldCredenziali.getPassword();
  783.                                 tipoCredenzialiSSLVerificaTuttiICampi = oldCredenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  784.                                 multipleApiKey = oldCredenziali.isAppId() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  785.                                 appId = oldCredenziali.getUser();
  786.                                 apiKey = oldCredenziali.getPassword();
  787.                             }
  788.                         }
  789.                     }
  790.                     else {
  791.                         appId = null;
  792.                         apiKey = null;
  793.                     }
  794.                 }
  795.                
  796.                 // apikey
  797.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS)) {
  798.                     appId = null;
  799.                     apiKey = null;
  800.                 }
  801.                
  802.             }
  803.            
  804.             // reset elemento dalla cache
  805.             if(resetElementoCache) {
  806.                
  807.                 // Uso lo stessoAlias
  808.                 List<String> aliases = soggettiCore.getJmxPdDAliases();
  809.                 String alias = null;
  810.                 if(aliases!=null && !aliases.isEmpty()) {
  811.                     alias = aliases.get(0);
  812.                 }
  813.                 String labelApplicativo = (saHelper.isSoggettoMultitenantSelezionato() ? sa.getNome() : saHelper.getLabelServizioApplicativoConDominioSoggetto(oldIdServizioApplicativo));
  814.                 saCore.invokeJmxMethodAllNodesAndSetResult(pd, soggettiCore.getJmxPdDConfigurazioneSistemaNomeRisorsaConfigurazionePdD(alias),
  815.                         soggettiCore.getJmxPdDConfigurazioneSistemaNomeMetodoRipulisciRiferimentiCacheApplicativo(alias),
  816.                         MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_SUCCESSO,labelApplicativo),
  817.                         MessageFormat.format(CostantiControlStation.LABEL_ELIMINATO_CACHE_FALLITO_PREFIX,labelApplicativo),
  818.                         idServizioApplicativoLong);            
  819.                
  820.                 String resetFromLista = saHelper.getParameter(CostantiControlStation.PARAMETRO_RESET_CACHE_FROM_LISTA);
  821.                 boolean arrivoDaLista = "true".equalsIgnoreCase(resetFromLista);
  822.                
  823.                 if(arrivoDaLista) {
  824.                    
  825.                     parentSA = useIdSogg ? ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO : ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  826.                    
  827.                     // salvo il punto di ingresso
  828.                     ServletUtils.setObjectIntoSession(request, session, parentSA, ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT);
  829.                    
  830.                     // preparo lista
  831.                     ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  832.                    
  833.                     int idLista = -1;
  834.                     if(!useIdSogg){
  835.                         idLista = Liste.SERVIZIO_APPLICATIVO;
  836.                     }
  837.                     else {
  838.                         idLista = Liste.SERVIZI_APPLICATIVI_BY_SOGGETTO;
  839.                     }
  840.    
  841.                     List<ServizioApplicativo> lista = null;
  842.                                        
  843.                     // poiche' esistono filtri che hanno necessita di postback salvo in sessione
  844.                     if(!ServletUtils.isSearchDone(saHelper)) {
  845.                         lista = ServletUtils.getRisultatiRicercaFromSession(request, session, idLista,  ServizioApplicativo.class);
  846.                     }
  847.                    
  848.                     ricerca = saHelper.checkSearchParameters(idLista, ricerca);
  849.                    
  850.                     saHelper.clearFiltroSoggettoByPostBackProtocollo(0, ricerca, idLista);
  851.                    
  852.                     if(!useIdSogg){
  853.                         boolean filtroSoggetto = false;
  854.                         if(saHelper.isSoggettoMultitenantSelezionato()) {
  855.                             List<String> protocolli = saCore.getProtocolli(request, session,false);
  856.                             if(protocolli!=null && protocolli.size()==1) { // dovrebbe essere l'unico caso in cui un soggetto multitenant รจ selezionato
  857.                                 String protocollo = protocolli.get(0);
  858.                                 filtroSoggetto = !saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(protocollo);  // devono essere fatti vedere anche quelli
  859.                             }
  860.                         }
  861.                         if(filtroSoggetto) {
  862.                             ricerca.addFilter(idLista, Filtri.FILTRO_SOGGETTO, saHelper.getSoggettoMultitenantSelezionato());
  863.                         }

  864.                         if(lista==null) {
  865.                             if(saCore.isVisioneOggettiGlobale(userLogin)){
  866.                                 lista = saCore.soggettiServizioApplicativoList(null, ricerca);
  867.                             }else{
  868.                                 lista = saCore.soggettiServizioApplicativoList(userLogin, ricerca);
  869.                             }
  870.                         }
  871.                     }else {
  872.                         ricerca = saHelper.checkSearchParameters(idLista, ricerca);
  873.                        
  874.                         lista = saCore.soggettiServizioApplicativoList(ricerca,soggLong);
  875.                     }
  876.                    
  877.                     if(!saHelper.isPostBackFilterElement()) {
  878.                         ServletUtils.setRisultatiRicercaIntoSession(request, session, idLista, lista); // salvo poiche' esistono filtri che hanno necessita di postback
  879.                     }
  880.    
  881.                     saHelper.prepareServizioApplicativoList(ricerca, lista, useIdSogg, false);
  882.                    
  883.                     ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
  884.                    
  885.                     ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  886.    
  887.                     return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.CHANGE());
  888.                    
  889.                 }
  890.             }
  891.            
  892.             boolean checkWizard = false;
  893.             if(
  894.                     //!postBackTipoAuthSA && // Fix: non veniva attivato il wizard quando da una credenziale diversa da https (anche nessuna) si impostava https  
  895.                     tipoauthSA != null && tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  896.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO) &&
  897.                         !ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI.equals(postBackElementName)) {
  898.                     if(tipoCredenzialiSSLFileCertificato.getValue() != null && tipoCredenzialiSSLFileCertificato.getValue().length > 0) {
  899.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  900.                         if(!tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  901.                             if(StringUtils.isNotEmpty(tipoCredenzialiSSLFileCertificatoPassword) ||
  902.                                     (KeystoreType.JKS.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardJksPasswordRequiredRequired()) ||
  903.                                     (KeystoreType.PKCS12.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardPkcs12PasswordRequiredRequired())
  904.                                     ) {
  905.                                 try {
  906.                                     listaAliasEstrattiCertificato = ArchiveLoader.readAliases(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLFileCertificatoPassword);
  907.                                     Collections.sort(listaAliasEstrattiCertificato);
  908.    
  909.                                     //se ho un solo alias lo imposto
  910.                                     if(!listaAliasEstrattiCertificato.isEmpty() && listaAliasEstrattiCertificato.size() == 1) {
  911.                                         tipoCredenzialiSSLAliasCertificato = listaAliasEstrattiCertificato.get(0);
  912.                                     }
  913.                                    
  914.                                     // ho appena caricato il file devo solo far vedere la form senza segnalare il messaggio di errore
  915.                                     if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  916.                                             ||oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  917.                                             || oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)) {
  918.                                         checkWizard = true;
  919.                                         if(listaAliasEstrattiCertificato.size() > 1) {
  920.                                             pd.setMessage("Il file caricato contiene pi&ugrave; certificati, selezionare un'"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO, MessageType.INFO);
  921.                                         }  
  922.                                     }
  923.                                 }catch(UtilsException e) {
  924.                                     pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  925.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  926.                                     tipoCredenzialiSSLAliasCertificato = "";
  927.                                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  928.                                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  929.                                     tipoCredenzialiSSLAliasCertificatoType= "";
  930.                                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  931.                                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  932.                                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  933.                                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  934.                                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  935.                                 }
  936.    
  937.                                 if(!listaAliasEstrattiCertificato.isEmpty() && StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  938.                                     try {
  939.                                         Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  940.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  941.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  942.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  943.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  944.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  945.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  946.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  947.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  948.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  949.                                     }catch(UtilsException e) {
  950.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  951.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  952.                                         tipoCredenzialiSSLAliasCertificato = "";
  953.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  954.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  955.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  956.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  957.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  958.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  959.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  960.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  961.                                     }
  962.                                 }
  963.                             } else {
  964.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE;
  965.                             }
  966.                         } else {
  967.                             try {
  968.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  969.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  970.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  971.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  972.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  973.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  974.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  975.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  976.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  977.                                
  978.                                 // dalla seconda volta che passo, posso salvare, la prima mostro il recap del certificato estratto
  979.                                
  980.                                 if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER)||
  981.                                         oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK)) {
  982.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  983.                                 } else {
  984.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER;
  985.                                     checkWizard = true;
  986.                                 }
  987.                             }catch(UtilsException e) {
  988.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  989.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  990.                                 tipoCredenzialiSSLAliasCertificato = "";
  991.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  992.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  993.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  994.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  995.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  996.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  997.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  998.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  999.                             }
  1000.                         }
  1001.                     } else {
  1002.                         if(tipoCredenzialiSSLAliasCertificatoSubject==null || StringUtils.isEmpty(tipoCredenzialiSSLAliasCertificatoSubject)) {
  1003.                             tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  1004.                         }
  1005.                     }
  1006.                 }
  1007.                
  1008.                 if(StringUtils.isNotEmpty(tipoCredenzialiSSLWizardStep) && ( tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  1009.                         ||tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  1010.                         || tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
  1011.                         )) {
  1012.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  1013.                         labelButtonSalva = ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO;
  1014.                     }
  1015.                 }else {
  1016.                     labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  1017.                 }
  1018.             } else {
  1019.                 labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  1020.             }
  1021.            
  1022.             if(postBackElementName == null && oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD))
  1023.                 tipoCredenzialiSSLWizardStep  = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  1024.            
  1025.             if(labelButtonSalva!= null) {
  1026.                 pd.setLabelBottoneInvia(labelButtonSalva);
  1027.             }
  1028.            
  1029.             boolean multipleApiKeysEnabled = false;
  1030.             boolean appIdModificabile = ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID_MODIFICABILE;
  1031.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA) ) {
  1032.                 multipleApiKeysEnabled = ServletUtils.isCheckBoxEnabled(multipleApiKey);
  1033.                 if(appIdModificabile && multipleApiKeysEnabled) {
  1034.                     boolean saDefined = nomeParameter!=null && !"".equals(nomeParameter) &&
  1035.                             idSoggetto!=null &&
  1036.                             idSoggetto.getTipo()!=null && !"".equals(idSoggetto.getTipo()) &&
  1037.                             idSoggetto.getNome()!=null && !"".equals(idSoggetto.getNome());
  1038.                     if(
  1039.                             (appId==null || "".equals(appId))
  1040.                             &&
  1041.                             ( saDefined )
  1042.                         ){
  1043.                         IDServizioApplicativo idSA = new IDServizioApplicativo();
  1044.                         idSA.setNome(nomeParameter);
  1045.                         idSA.setIdSoggettoProprietario(idSoggetto);
  1046.                         appId = saCore.toAppId(nomeProtocollo, idSA, multipleApiKeysEnabled);
  1047.                     }
  1048.                 }
  1049.             }
  1050.            
  1051.             boolean modificataTipoAutenticazione = false;
  1052.             if(oldCredenziali!=null && oldCredenziali.getTipo()!=null &&
  1053.                 !oldCredenziali.getTipo().getValue().equals(tipoauthSA)) {
  1054.                 modificataTipoAutenticazione = true;
  1055.             }
  1056.            
  1057.             // Se nomehid = null, devo visualizzare la pagina per la modifica
  1058.             // dati
  1059.             if(saHelper.isEditModeInProgress() || checkWizard){
  1060.                
  1061.                 if(useIdSogg){
  1062.                     ServletUtils.setPageDataTitle(pd,
  1063.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  1064.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  1065.                                     ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  1066.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),                            
  1067.                                     new Parameter(oldNome, null)
  1068.                             );
  1069.                 }else {
  1070.                     ServletUtils.setPageDataTitle(pd,
  1071.                             new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
  1072.                             new Parameter(oldNome, null)
  1073.                             );
  1074.                 }

  1075.                 if(nomeParameter==null) {
  1076.                     nomeParameter = oldNome;
  1077.                 }
  1078.                
  1079.                 if(descrizione==null) {
  1080.                     descrizione = sa.getDescrizione();
  1081.                 }
  1082.                
  1083.                 if (fault == null &&
  1084.                     ipge != null &&
  1085.                     ipge.getFault()!=null) {
  1086.                     fault = ipge.getFault().toString();
  1087.                 }
  1088.                
  1089.                 if (faultactor == null &&
  1090.                     ipge != null) {
  1091.                     faultactor = ipge.getFaultActor();
  1092.                 }
  1093.                 if (genericfault == null) {
  1094.                     if (ipge != null &&
  1095.                         ipge.getGenericFaultCode()!=null) {
  1096.                         genericfault = ipge.getGenericFaultCode().toString();
  1097.                     }
  1098.                     if ((genericfault == null) || "".equals(genericfault)) {
  1099.                         genericfault = CostantiConfigurazione.DISABILITATO.toString();
  1100.                     }
  1101.                 }
  1102.                 if (prefixfault == null &&
  1103.                     ipge != null) {
  1104.                     prefixfault = ipge.getPrefixFaultCode();
  1105.                 }
  1106.                 if (invrifRisposta == null) {
  1107.                     if (ip != null &&
  1108.                         ip.getInvioPerRiferimento()!=null) {
  1109.                         invrifRisposta = ip.getInvioPerRiferimento().toString();
  1110.                     }
  1111.                     if ((invrifRisposta == null) || "".equals(invrifRisposta)) {
  1112.                         invrifRisposta = CostantiConfigurazione.DISABILITATO.toString();
  1113.                     }
  1114.                 }
  1115.                 if (sbustamentoInformazioniProtocolloRisposta == null) {
  1116.                     if (ip != null &&
  1117.                         ip.getSbustamentoInformazioniProtocollo()!=null) {
  1118.                         sbustamentoInformazioniProtocolloRisposta = ip.getSbustamentoInformazioniProtocollo().toString();
  1119.                     }
  1120.                     if ((sbustamentoInformazioniProtocolloRisposta == null) || "".equals(sbustamentoInformazioniProtocolloRisposta)) {
  1121.                         sbustamentoInformazioniProtocolloRisposta = CostantiConfigurazione.ABILITATO.toString();
  1122.                     }
  1123.                 }
  1124.                
  1125.                
  1126.                 if (tipoauthSA == null &&
  1127.                     credenziali != null){
  1128.                     if(credenziali.getTipo()!=null)
  1129.                         tipoauthSA = credenziali.getTipo().toString();
  1130.                     utenteSA = credenziali.getUser();
  1131.                     passwordSA = credenziali.getPassword();
  1132.                     if(tipoauthSA!=null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSA)){
  1133.                         tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  1134.                     }
  1135.                     else if(tipoauthSA!=null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)){
  1136.                         tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  1137.                         multipleApiKey = credenziali.isAppId() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED;
  1138.                         appId = credenziali.getUser();
  1139.                         apiKey = credenziali.getPassword();
  1140.                     }
  1141.                     principalSA = credenziali.getUser();
  1142.                     tokenClientIdSA = credenziali.getUser();
  1143.                     tokenPolicySA = credenziali.getTokenPolicy();
  1144.                    
  1145.                     tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA) && StringUtils.isNotEmpty(tokenClientIdSA);
  1146.                     if(tokenPolicySA!=null && !StringUtils.isEmpty(tokenPolicySA) && !CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO.equals(tokenPolicySA) &&
  1147.                         dominio!=null && SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE.equals(dominio) &&
  1148.                                 nomeProtocollo!=null && saCore.isProfiloModIPA(nomeProtocollo)) {
  1149.                         tokenByPDND=saCore.isPolicyGestioneTokenPDND(tokenPolicySA);
  1150.                         tokenModiPDNDOauth=!tokenWithHttpsEnabledByConfigSA;
  1151.                     }
  1152.                    
  1153.                     if((tokenWithHttpsEnabledByConfigSA || tokenModiPDNDOauth)) {
  1154.                         if(!tokenByPDND && saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  1155.                             tokenPolicySA=null;
  1156.                         }
  1157.                         else if(tokenByPDND && !saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  1158.                             tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  1159.                         }
  1160.                     }
  1161.                    
  1162.                     if(credenziali.getCertificate() != null) {
  1163.                         tipoCredenzialiSSLFileCertificato.setValue(credenziali.getCertificate());
  1164.                         tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  1165.                         tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
  1166.                        
  1167.                         try {
  1168.                             Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  1169.                             tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  1170.                             tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  1171.                             tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  1172.                             tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  1173.                             tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  1174.                             tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  1175.                             tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  1176.                             tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  1177.                         }catch(UtilsException e) {
  1178.                             pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  1179.                             tipoCredenzialiSSLAliasCertificato = "";
  1180.                             tipoCredenzialiSSLAliasCertificatoSubject= "";
  1181.                             tipoCredenzialiSSLAliasCertificatoIssuer= "";
  1182.                             tipoCredenzialiSSLAliasCertificatoType= "";
  1183.                             tipoCredenzialiSSLAliasCertificatoVersion= "";
  1184.                             tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  1185.                             tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  1186.                             tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  1187.                             tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  1188.                         }
  1189.                     } else {
  1190.                         subjectSA = credenziali.getSubject();
  1191.                         issuerSA = credenziali.getIssuer();
  1192.                         tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE;
  1193.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = ( subjectSA != null && subjectSA.equals(issuerSA)) ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
  1194.                     }
  1195.                 }
  1196.                 if (tipoauthSA == null) {
  1197.                     tipoauthSA = ConnettoriCostanti.DEFAULT_AUTENTICAZIONE_TIPO;
  1198.                 }

  1199.                 if(ruoloFruitore==null){
  1200.                     ruoloFruitore=sa.getTipologiaFruizione();
  1201.                 }
  1202.                 if(ruoloErogatore==null){
  1203.                     ruoloErogatore=sa.getTipologiaErogazione();
  1204.                 }
  1205.                
  1206.                 if(tipoSA == null) {
  1207.                     tipoSA = sa.getTipo();
  1208.                     useAsClient = sa.isUseAsClient();
  1209.                 }
  1210.                
  1211.                 if(tipoSA == null)
  1212.                     tipoSA = "";
  1213.                
  1214.                
  1215.                 if (sbustamento == null &&
  1216.                     is.getSbustamentoSoap()!=null) {
  1217.                     sbustamento = is.getSbustamentoSoap().toString();
  1218.                 }
  1219.                 if (sbustamentoInformazioniProtocolloRichiesta == null &&
  1220.                     is.getSbustamentoInformazioniProtocollo()!=null) {
  1221.                     sbustamentoInformazioniProtocolloRichiesta = is.getSbustamentoInformazioniProtocollo().toString();
  1222.                 }
  1223.                 if (getmsg == null){
  1224.                     if(is.getGetMessage()!=null) {
  1225.                         getmsg = is.getGetMessage().toString();
  1226.                     }
  1227.                     if(!integrationManagerEnabled && CostantiConfigurazione.ABILITATO.toString().equals(getmsg)) {
  1228.                         // faccio vedere I.M. anche con interfaccia standard
  1229.                         integrationManagerEnabled = true;
  1230.                     }
  1231.                 }
  1232.                
  1233.                 if (invrifRichiesta == null) {
  1234.                     if(is.getInvioPerRiferimento()!=null)
  1235.                         invrifRichiesta = is.getInvioPerRiferimento().toString();
  1236.                     if ((invrifRichiesta == null) || "".equals(invrifRichiesta)) {
  1237.                         invrifRichiesta = CostantiConfigurazione.DISABILITATO.toString();
  1238.                     }
  1239.                 }
  1240.                 if (risprif == null) {
  1241.                     if(is.getRispostaPerRiferimento()!=null)
  1242.                         risprif = is.getRispostaPerRiferimento().toString();
  1243.                     if ((risprif == null) || "".equals(risprif)) {
  1244.                         risprif = CostantiConfigurazione.DISABILITATO.toString();
  1245.                     }
  1246.                 }
  1247.                
  1248.                 if ((tipoauthRichiesta == null) && (is != null) && is.getAutenticazione()!=null) {
  1249.                     tipoauthRichiesta = is.getAutenticazione().getValue();
  1250.                 }
  1251.                 if ((user == null) && (cis != null)) {
  1252.                     user = cis.getUser();
  1253.                     password = cis.getPassword();
  1254.                 }
  1255.                 if (endpointtype == null) {
  1256.                     if ((connis.getCustom()!=null && connis.getCustom()) && !connis.getTipo().equals(TipiConnettore.HTTPS.toString())) {
  1257.                         endpointtype = TipiConnettore.CUSTOM.toString();
  1258.                         tipoconn = connis.getTipo();
  1259.                     } else
  1260.                         endpointtype = connis.getTipo();
  1261.                 }
  1262.                 if(endpointtype==null){
  1263.                     endpointtype=TipiConnettore.DISABILITATO.toString();
  1264.                 }

  1265.                 Map<String, String> props = null;
  1266.                 if(connis!=null)
  1267.                     props = connis.getProperties();
  1268.                
  1269.                 if(connettoreDebug==null && props!=null){
  1270.                     String v = props.get(CostantiDB.CONNETTORE_DEBUG);
  1271.                     if(v!=null){
  1272.                         if("true".equals(v)){
  1273.                             connettoreDebug = Costanti.CHECK_BOX_ENABLED;
  1274.                         }
  1275.                         else{
  1276.                             connettoreDebug = Costanti.CHECK_BOX_DISABLED;
  1277.                         }
  1278.                     }
  1279.                 }
  1280.                
  1281.                 if(proxyEnabled==null && props!=null){
  1282.                     String v = props.get(CostantiDB.CONNETTORE_PROXY_TYPE);
  1283.                     if(v!=null && !"".equals(v)){
  1284.                         proxyEnabled = Costanti.CHECK_BOX_ENABLED_TRUE;
  1285.                        
  1286.                         // raccolgo anche altre proprietร 
  1287.                         v = props.get(CostantiDB.CONNETTORE_PROXY_HOSTNAME);
  1288.                         if(v!=null && !"".equals(v)){
  1289.                             proxyHostname = v.trim();
  1290.                         }
  1291.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PORT);
  1292.                         if(v!=null && !"".equals(v)){
  1293.                             proxyPort = v.trim();
  1294.                         }
  1295.                         v = props.get(CostantiDB.CONNETTORE_PROXY_USERNAME);
  1296.                         if(v!=null && !"".equals(v)){
  1297.                             proxyUsername = v.trim();
  1298.                         }
  1299.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PASSWORD);
  1300.                         if(v!=null && !"".equals(v)){
  1301.                             proxyPassword = v.trim();
  1302.                         }
  1303.                     }
  1304.                 }
  1305.                
  1306.                 if(tempiRispostaEnabled == null ||
  1307.                         tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout)
  1308.                         ||
  1309.                         tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout)
  1310.                         ||
  1311.                         tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ){
  1312.                    
  1313.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  1314.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  1315.                    
  1316.                     if( props!=null ) {
  1317.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  1318.                             String v = props.get(CostantiDB.CONNETTORE_CONNECTION_TIMEOUT);
  1319.                             if(v!=null && !"".equals(v)){
  1320.                                 tempiRispostaConnectionTimeout = v.trim();
  1321.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  1322.                             }
  1323.                             else {
  1324.                                 tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaErogazione().getConnectionTimeout().intValue()+"";
  1325.                             }
  1326.                         }
  1327.                            
  1328.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  1329.                             String v = props.get(CostantiDB.CONNETTORE_READ_CONNECTION_TIMEOUT);
  1330.                             if(v!=null && !"".equals(v)){
  1331.                                 tempiRispostaReadTimeout = v.trim();
  1332.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  1333.                             }
  1334.                             else {
  1335.                                 tempiRispostaReadTimeout = configGenerale.getTempiRispostaErogazione().getReadTimeout().intValue()+"";
  1336.                             }
  1337.                         }
  1338.                        
  1339.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  1340.                             String v = props.get(CostantiDB.CONNETTORE_TEMPO_MEDIO_RISPOSTA);
  1341.                             if(v!=null && !"".equals(v)){
  1342.                                 tempiRispostaTempoMedioRisposta = v.trim();
  1343.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  1344.                             }
  1345.                             else {
  1346.                                 tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaErogazione().getTempoMedioRisposta().intValue()+"";
  1347.                             }
  1348.                         }
  1349.                     }
  1350.                     else {
  1351.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  1352.                             tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaErogazione().getConnectionTimeout().intValue()+"";
  1353.                         }
  1354.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  1355.                             tempiRispostaReadTimeout = configGenerale.getTempiRispostaErogazione().getReadTimeout().intValue()+"";
  1356.                         }
  1357.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  1358.                             tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaErogazione().getTempoMedioRisposta().intValue()+"";
  1359.                         }
  1360.                     }
  1361.                 }
  1362.                
  1363.                 if(transferMode==null && props!=null){
  1364.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE);
  1365.                     if(v!=null && !"".equals(v)){
  1366.                        
  1367.                         transferMode = v.trim();
  1368.                        
  1369.                         if(TransferLengthModes.TRANSFER_ENCODING_CHUNKED.getNome().equals(transferMode)){
  1370.                             // raccolgo anche altra proprietร  correlata
  1371.                             v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE_CHUNK_SIZE);
  1372.                             if(v!=null && !"".equals(v)){
  1373.                                 transferModeChunkSize = v.trim();
  1374.                             }
  1375.                         }
  1376.                        
  1377.                     }
  1378.                 }
  1379.                
  1380.                 if(redirectMode==null && props!=null){
  1381.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_FOLLOW);
  1382.                     if(v!=null && !"".equals(v)){
  1383.                        
  1384.                         if("true".equalsIgnoreCase(v.trim()) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v.trim())){
  1385.                             redirectMode = CostantiConfigurazione.ABILITATO.getValue();
  1386.                         }
  1387.                         else{
  1388.                             redirectMode = CostantiConfigurazione.DISABILITATO.getValue();
  1389.                         }                  
  1390.                        
  1391.                         if(CostantiConfigurazione.ABILITATO.getValue().equals(redirectMode)){
  1392.                             // raccolgo anche altra proprietร  correlata
  1393.                             v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_MAX_HOP);
  1394.                             if(v!=null && !"".equals(v)){
  1395.                                 redirectMaxHop = v.trim();
  1396.                             }
  1397.                         }
  1398.                        
  1399.                     }
  1400.                 }
  1401.                
  1402.                 if(tokenPolicy==null && props!=null){
  1403.                     String v = props.get(CostantiDB.CONNETTORE_TOKEN_POLICY);
  1404.                     if(v!=null && !"".equals(v)){
  1405.                         tokenPolicy = v;
  1406.                         autenticazioneToken = true;
  1407.                     }
  1408.                 }
  1409.                
  1410.                 opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(saHelper, transferMode, redirectMode);
  1411.                
  1412.                 autenticazioneHttp = saHelper.getAutenticazioneHttp(autenticazioneHttp, endpointtype, user);
  1413.                
  1414.                 if(autenticazioneApiKey==null || StringUtils.isEmpty(autenticazioneApiKey)) {
  1415.                     for (int i = 0; i < connis.sizePropertyList(); i++) {
  1416.                         Property singlecp = cp.get(i);
  1417.                         if (singlecp.getNome().equals(CostantiDB.CONNETTORE_APIKEY_HEADER)) {
  1418.                             apiKeyHeader = singlecp.getValore();
  1419.                         }
  1420.                         else if (singlecp.getNome().equals(CostantiDB.CONNETTORE_APIKEY)) {
  1421.                             apiKeyValue = singlecp.getValore();
  1422.                         }
  1423.                         else if (singlecp.getNome().equals(CostantiDB.CONNETTORE_APIKEY_APPID_HEADER)) {
  1424.                             appIdHeader = singlecp.getValore();
  1425.                         }
  1426.                         else if (singlecp.getNome().equals(CostantiDB.CONNETTORE_APIKEY_APPID)) {
  1427.                             appIdValue = singlecp.getValore();
  1428.                         }
  1429.                     }
  1430.                    
  1431.                     autenticazioneApiKey = saHelper.getAutenticazioneApiKey(autenticazioneApiKey, endpointtype, apiKeyValue);
  1432.                     if(ServletUtils.isCheckBoxEnabled(autenticazioneApiKey)) {
  1433.                         useOAS3Names = saHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  1434.                         useAppId = saHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  1435.                     }
  1436.                     else {
  1437.                         apiKeyValue=null;
  1438.                         apiKeyHeader=null;
  1439.                         appIdHeader=null;
  1440.                         appIdValue=null;
  1441.                     }
  1442.                 }
  1443.                
  1444.                 for (int i = 0; i < connis.sizePropertyList(); i++) {
  1445.                     Property singlecp = cp.get(i);
  1446.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_HTTP_LOCATION) &&
  1447.                         url == null) {
  1448.                         url = singlecp.getValore();
  1449.                     }
  1450.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_NOME) &&
  1451.                         nomeCodaJMS == null) {
  1452.                         nomeCodaJMS = singlecp.getValore();
  1453.                     }
  1454.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_TIPO) &&
  1455.                         tipoCodaJMS == null) {
  1456.                         tipoCodaJMS = singlecp.getValore();
  1457.                     }
  1458.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_CONNECTION_FACTORY) &&
  1459.                         connfact == null) {
  1460.                         connfact = singlecp.getValore();
  1461.                     }
  1462.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_SEND_AS) &&
  1463.                         sendas == null) {
  1464.                         sendas = singlecp.getValore();
  1465.                     }
  1466.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_INITIAL) &&
  1467.                         initcont == null) {
  1468.                         initcont = singlecp.getValore();
  1469.                     }
  1470.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_URL_PKG) &&
  1471.                         urlpgk == null) {
  1472.                         urlpgk = singlecp.getValore();
  1473.                     }
  1474.                     if (singlecp.getNome().equals(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_PROVIDER_URL) &&
  1475.                         provurl == null) {
  1476.                         provurl = singlecp.getValore();
  1477.                     }
  1478.                 }

  1479.                 if (httpstipologia == null) {
  1480.                     httpsurl = props.get(CostantiDB.CONNETTORE_HTTPS_LOCATION);
  1481.                     httpstipologia = props.get(CostantiDB.CONNETTORE_HTTPS_SSL_TYPE);
  1482.                     httpshostverifyS = props.get(CostantiDB.CONNETTORE_HTTPS_HOSTNAME_VERIFIER);
  1483.                     if(httpshostverifyS!=null){
  1484.                         httpshostverify = Boolean.valueOf(httpshostverifyS);
  1485.                     }
  1486.                     httpsTrustVerifyCertS = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_ALL_CERTS);
  1487.                     if(httpsTrustVerifyCertS!=null){
  1488.                         httpsTrustVerifyCert = !Boolean.valueOf(httpsTrustVerifyCertS);
  1489.                     }
  1490.                     else {
  1491.                         httpsTrustVerifyCert = true; // backward compatibility
  1492.                     }
  1493.                     httpspath = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  1494.                     httpstipo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  1495.                     httpspwd = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  1496.                     httpsalgoritmo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  1497.                     httpspwdprivatekeytrust = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  1498.                     httpspathkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  1499.                     httpstipokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_TYPE);
  1500.                     httpspwdkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  1501.                     httpspwdprivatekey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  1502.                     httpsalgoritmokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  1503.                     httpsKeyAlias = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_ALIAS);
  1504.                     httpsTrustStoreCRLs = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_CRLS);
  1505.                     httpsTrustStoreOCSPPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  1506.                     httpsKeyStoreBYOKPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  1507.                     if (httpspathkey == null) {
  1508.                         httpsstato = false;
  1509.                         httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  1510.                     } else {
  1511.                         httpsstato = true;
  1512.                         if (httpspathkey.equals(httpspath) &&
  1513.                                 httpstipokey.equals(httpstipo) &&
  1514.                                 (
  1515.                                     (httpspwdkey!=null && httpspwdkey.equals(httpspwd))
  1516.                                     ||
  1517.                                     (httpspwdkey==null && httpspwd==null)
  1518.                                 )
  1519.                             )
  1520.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  1521.                         else
  1522.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_RIDEFINISCI;
  1523.                     }
  1524.                 }
  1525.                
  1526.                 // default
  1527.                 if(httpsalgoritmo==null || "".equals(httpsalgoritmo)){
  1528.                     httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  1529.                 }
  1530.                 if(httpsalgoritmokey==null || "".equals(httpsalgoritmokey)){
  1531.                     httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  1532.                 }
  1533.                 if(httpstipologia==null || "".equals(httpstipologia)){
  1534.                     httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  1535.                 }
  1536.                 if(httpshostverifyS==null || "".equals(httpshostverifyS)){
  1537.                     httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  1538.                     httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  1539.                 }
  1540.                 if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  1541.                     httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  1542.                     httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  1543.                 }
  1544.                
  1545.                 // file
  1546.                 if(responseInputMode==null && props!=null){
  1547.                    
  1548.                     requestOutputFileName = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE);  
  1549.                     requestOutputFileNamePermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_PERMISSIONS);  
  1550.                     requestOutputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS);
  1551.                     requestOutputFileNameHeadersPermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS_PERMISSIONS);    
  1552.                     String v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  1553.                     if(v!=null && !"".equals(v) &&
  1554.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  1555.                         ){
  1556.                         requestOutputParentDirCreateIfNotExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  1557.                     }                  
  1558.                     v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE);
  1559.                     if(v!=null && !"".equals(v) &&
  1560.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  1561.                         ){
  1562.                         requestOutputOverwriteIfExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  1563.                     }  
  1564.                    
  1565.                     v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  1566.                     if(v!=null && !"".equals(v) &&
  1567.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  1568.                         ){
  1569.                         responseInputMode = CostantiConfigurazione.ABILITATO.getValue();
  1570.                     }
  1571.                     if(CostantiConfigurazione.ABILITATO.getValue().equals(responseInputMode)){                      
  1572.                         responseInputFileName = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE);
  1573.                         responseInputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_HEADERS);
  1574.                         v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_DELETE_AFTER_READ);
  1575.                         if(v!=null && !"".equals(v) &&
  1576.                             ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  1577.                             ){
  1578.                             responseInputDeleteAfterRead = Costanti.CHECK_BOX_ENABLED_TRUE;
  1579.                         }                      
  1580.                         responseInputWaitTime = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);                    
  1581.                     }
  1582.                    
  1583.                 }
  1584.                
  1585.                 // Inizializzazione delle properties da db al primo accesso alla pagina
  1586.                 if(protocolPropertiesSet == null){
  1587.                     ProtocolPropertiesUtils.mergeProtocolPropertiesConfig(protocolProperties, oldProtocolPropertyList, consoleOperationType);
  1588.                 }
  1589.                
  1590.                 // preparo i campi
  1591.                 List<DataElement> dati = new ArrayList<>();

  1592.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  1593.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  1594.                         registryReader, configRegistryReader, oldIdServizioApplicativo);
  1595.                
  1596.                 dati = saHelper.addServizioApplicativoToDati(dati, oldNome, nomeParameter, descrizione, tipoENomeSoggetto, fault,
  1597.                         TipoOperazione.CHANGE, idServizioApplicativoLong, contaListe,null,null,provider,dominio,
  1598.                         utenteSA,passwordSA,subjectSA,principalSA,tipoauthSA,faultactor,genericfault,prefixfault,invrifRisposta,
  1599.                         sbustamentoInformazioniProtocolloRisposta,
  1600.                         ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,id,nomeProtocollo,
  1601.                         ruoloFruitore,ruoloErogatore,
  1602.                         sbustamento, sbustamentoInformazioniProtocolloRichiesta, getmsg,
  1603.                         invrifRichiesta, risprif,
  1604.                         endpointtype, autenticazioneHttp, url, nomeCodaJMS, tipoCodaJMS,
  1605.                         user, password, initcont, urlpgk,
  1606.                         provurl, connfact, sendas,
  1607.                         httpsurl, httpstipologia, httpshostverify,
  1608.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  1609.                         httpsalgoritmo, httpsstato, httpskeystore,
  1610.                         httpspwdprivatekeytrust, httpspathkey,
  1611.                         httpstipokey, httpspwdkey,
  1612.                         httpspwdprivatekey, httpsalgoritmokey,
  1613.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1614.                         tipoconn, connettoreDebug,
  1615.                         isConnettoreCustomUltimaImmagineSalvata,
  1616.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1617.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1618.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1619.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1620.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1621.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1622.                         nomeProtocollo, null, listExtendedConnettore,tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  1623.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  1624.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  1625.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  1626.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA,tipoCredenzialiSSLWizardStep,
  1627.                         changepwd,
  1628.                         multipleApiKey, appId, apiKey,
  1629.                         autenticazioneToken,tokenPolicy,tipoSA, useAsClient,
  1630.                         integrationManagerEnabled,
  1631.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
  1632.                         tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
  1633.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1634.                         connettoreStatusParams);

  1635.                 // aggiunta campi custom
  1636.                 dati = saHelper.addProtocolPropertiesToDatiConfig(dati, consoleConfiguration,consoleOperationType, protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1637.            
  1638.                 pd.setDati(dati);

  1639.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  1640.                
  1641.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.CHANGE());
  1642.             }

  1643.             // Controlli sui campi immessi
  1644.             StringBuilder sbWarningCheck = new StringBuilder();
  1645.             boolean isOk = saHelper.servizioApplicativoCheckData(TipoOperazione.CHANGE, null, idProv, ruoloFruitore, ruoloErogatore,
  1646.                     listExtendedConnettore, sa, sbWarningCheck);
  1647.            
  1648.             // updateDynamic
  1649.             if(isOk) {
  1650.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  1651.                         registryReader, configRegistryReader, oldIdServizioApplicativo);
  1652.             }
  1653.            
  1654.             // Validazione base dei parametri custom
  1655.             if(isOk){
  1656.                 try{
  1657.                     saHelper.validaProtocolProperties(consoleConfiguration, consoleOperationType, protocolProperties);
  1658.                 }catch(ProtocolException e){
  1659.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1660.                     pd.setMessage(e.getMessage());
  1661.                     isOk = false;
  1662.                 }
  1663.             }

  1664.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  1665.             if(isOk){
  1666.                 try{
  1667.                     //validazione campi dinamici
  1668.                     consoleDynamicConfiguration.validateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  1669.                             registryReader, configRegistryReader, oldIdServizioApplicativo);  
  1670.                 }catch(ProtocolException e){
  1671.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1672.                     pd.setMessage(e.getMessage());
  1673.                     isOk = false;
  1674.                 }
  1675.             }
  1676.            
  1677.             if (!isOk) {
  1678.                
  1679.                 // setto la barra del titolo
  1680.                
  1681.                 if(useIdSogg){
  1682.                     ServletUtils.setPageDataTitle(pd,
  1683.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  1684.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  1685.                                     ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  1686.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),                            
  1687.                                     new Parameter(oldNome, null)
  1688.                             );
  1689.                 }else {
  1690.                     ServletUtils.setPageDataTitle(pd,
  1691.                             new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
  1692.                             new Parameter(oldNome, null)
  1693.                             );
  1694.                 }

  1695.                 // preparo i campi
  1696.                 List<DataElement> dati = new ArrayList<>();

  1697.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  1698.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  1699.                         registryReader, configRegistryReader, oldIdServizioApplicativo);
  1700.                
  1701.                 dati = saHelper.addServizioApplicativoToDati(dati, oldNome, nomeParameter, descrizione, tipoENomeSoggetto, fault,
  1702.                         TipoOperazione.CHANGE, idServizioApplicativoLong, contaListe,null,null,provider,dominio,
  1703.                         utenteSA,passwordSA,subjectSA,principalSA,tipoauthSA,faultactor,genericfault,prefixfault,invrifRisposta,
  1704.                         sbustamentoInformazioniProtocolloRisposta,
  1705.                         ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE,id,nomeProtocollo,
  1706.                         ruoloFruitore,ruoloErogatore,
  1707.                         sbustamento, sbustamentoInformazioniProtocolloRichiesta, getmsg,
  1708.                         invrifRichiesta, risprif,
  1709.                         endpointtype, autenticazioneHttp, url, nomeCodaJMS, tipoCodaJMS,
  1710.                         user, password, initcont, urlpgk,
  1711.                         provurl, connfact, sendas,
  1712.                         httpsurl, httpstipologia, httpshostverify,
  1713.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  1714.                         httpsalgoritmo, httpsstato, httpskeystore,
  1715.                         httpspwdprivatekeytrust, httpspathkey,
  1716.                         httpstipokey, httpspwdkey,
  1717.                         httpspwdprivatekey, httpsalgoritmokey,
  1718.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1719.                         tipoconn, connettoreDebug,
  1720.                         isConnettoreCustomUltimaImmagineSalvata,
  1721.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1722.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1723.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1724.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1725.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1726.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1727.                         nomeProtocollo, null, listExtendedConnettore,tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  1728.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  1729.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  1730.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  1731.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA,tipoCredenzialiSSLWizardStep,
  1732.                         changepwd,
  1733.                         multipleApiKey, appId, apiKey,
  1734.                         autenticazioneToken,tokenPolicy,tipoSA, useAsClient,
  1735.                         integrationManagerEnabled,
  1736.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
  1737.                         tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
  1738.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1739.                         connettoreStatusParams);

  1740.                 // aggiunta campi custom
  1741.                 dati = saHelper.addProtocolPropertiesToDatiConfig(dati, consoleConfiguration,consoleOperationType, protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1742.                            
  1743.                 pd.setDati(dati);

  1744.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  1745.                
  1746.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.CHANGE());
  1747.             }

  1748.            
  1749.             if(!oldNome.equals(nomeParameter)) {
  1750.                 sa.setOldIDServizioApplicativoForUpdate(oldIdServizioApplicativo);
  1751.                 sa.setNome(nomeParameter);
  1752.             }
  1753.            
  1754.             sa.setDescrizione(descrizione);
  1755.            
  1756.             if(isApplicativiServerEnabled && tipoSA.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER)) {
  1757.                 tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC;
  1758.                 modificataTipoAutenticazione = false;
  1759.             }
  1760.            
  1761.             if(ruoloFruitore==null){
  1762.                 ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  1763.             }
  1764.             if(ruoloErogatore==null){              
  1765.                 if(sa.getTipologiaErogazione()!=null){
  1766.                     ruoloErogatore = sa.getTipologiaErogazione();
  1767.                 }else{
  1768.                     ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  1769.                 }
  1770.             }
  1771.             sa.setTipologiaFruizione(ruoloFruitore);
  1772.             sa.setTipologiaErogazione(ruoloErogatore);
  1773.             sa.setTipo(tipoSA);
  1774.             sa.setUseAsClient(useAsClient);
  1775.            
  1776.            
  1777.             // *** Invocazione Porta ***
  1778.            
  1779.             boolean secret = false;
  1780.             String secretPassword  = null;
  1781.             String secretUser = null;
  1782.             boolean secretAppId = false;
  1783.            
  1784.             boolean showInvocazionePortaStep1 = ( (interfacciaAvanzata && !isApplicativiServerEnabled) || !TipologiaFruizione.DISABILITATO.getValue().equals(ruoloFruitore));
  1785.             boolean showInvocazionePortaStep2 = !showInvocazionePortaStep1 && (!saHelper.isModalitaCompleta() && TipologiaFruizione.DISABILITATO.getValue().equals(ruoloFruitore));
  1786.            
  1787. /**         if(isApplicativiServerEnabled) {
  1788. //              showInvocazionePortaStep1 = showInvocazionePortaStep1 && ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(tipoSA);
  1789. //              if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)) {
  1790. //                  showInvocazionePortaStep2 = true;
  1791. //              }
  1792. //          }*/

  1793.             if(showInvocazionePortaStep1){
  1794.            
  1795.                 if (ipge == null)
  1796.                     ipge = new InvocazionePortaGestioneErrore();
  1797.                 ipge.setFault(FaultIntegrazioneTipo.toEnumConstant(fault));
  1798.                 if (fault.equals(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_XML)) {
  1799.                     ipge.setFaultActor("");
  1800.                 } else {
  1801.                     ipge.setFaultActor(faultactor);
  1802.                 }
  1803.                 ipge.setGenericFaultCode(StatoFunzionalita.toEnumConstant(genericfault));
  1804.                 ipge.setPrefixFaultCode(prefixfault);
  1805.                 if (ip == null)
  1806.                     ip = new InvocazionePorta();
  1807.                 ip.setGestioneErrore(ipge);
  1808.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  1809.                     if(ip.sizeCredenzialiList()>0) {
  1810.                         ip.removeCredenziali(0);
  1811.                     }
  1812.                 }
  1813.                 else {
  1814.                     if(ip.getCredenzialiList()!=null) {
  1815.                         ip.getCredenzialiList().clear();
  1816.                     }
  1817.                 }
  1818.                 if(ip.getCredenzialiList()==null) {
  1819.                     ip.setCredenzialiList(new ArrayList<>());
  1820.                 }
  1821.                 credenziali = new Credenziali();
  1822.                 ip.getCredenzialiList().add(0, credenziali);
  1823.                 credenziali.setTipo(CredenzialeTipo.toEnumConstant(tipoauthSA));
  1824.                

  1825.                 ApiKey apiKeyGenerated = null;
  1826.                
  1827.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC)) {
  1828.                     credenziali.setUser(utenteSA);
  1829.                     credenziali.setPassword(passwordSA);

  1830.                     if(ServletUtils.isCheckBoxEnabled(changepwd) || modificataTipoAutenticazione) {
  1831.                         credenziali.setCertificateStrictVerification(false); // se รจ abilitata la cifratura, verrร  impostata a true nel perform update
  1832.                         if(saCore.isApplicativiPasswordEncryptEnabled()) {
  1833.                             secret = true;
  1834.                         }
  1835.                     }
  1836.                     else if(encryptOldPlainPwd) {
  1837.                         secret = true;
  1838.                     }
  1839.                     else {
  1840.                         credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  1841.                     }
  1842.                 }
  1843.                 else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)){
  1844.                     credenziali.setAppId(multipleApiKeysEnabled);
  1845.                     credenziali.setUser(appId);
  1846.                     credenziali.setPassword(apiKey);
  1847.                     if(ServletUtils.isCheckBoxEnabled(changepwd) || modificataTipoAutenticazione) {
  1848.                         credenziali.setCertificateStrictVerification(false); // se รจ abilitata la cifratura, verrร  impostata a true nel perform update
  1849.                         IDServizioApplicativo idSA = new IDServizioApplicativo();
  1850.                         idSA.setNome(nomeParameter);
  1851.                         idSA.setIdSoggettoProprietario(idSoggetto);
  1852.                         if(multipleApiKeysEnabled) {
  1853.                             apiKeyGenerated = saCore.newMultipleApiKey();
  1854.                             if(!appIdModificabile) {
  1855.                                 appId = saCore.toAppId(nomeProtocollo, idSA, multipleApiKeysEnabled);
  1856.                             }
  1857.                         }
  1858.                         else {
  1859.                             appId = saCore.toAppId(nomeProtocollo, idSA, multipleApiKeysEnabled);
  1860.                             apiKeyGenerated = saCore.newApiKey(nomeProtocollo, idSA);
  1861.                         }
  1862.                         credenziali.setUser(appId);
  1863.                         credenziali.setPassword(apiKeyGenerated.getPassword());
  1864.                         if(soggettiCore.isApplicativiPasswordEncryptEnabled()) {
  1865.                             secret = true;
  1866.                         }
  1867.                     }
  1868.                     else {
  1869.                         credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  1870.                     }
  1871.                 }
  1872.                 else if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  1873.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  1874.                         Certificate cSelezionato = null;
  1875.                        
  1876.                         // il certificato non e' cambiato
  1877.                         if(tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD)) {
  1878.                             cSelezionato = ArchiveLoader.load(oldCredenziali.getCertificate());
  1879.                         } else {
  1880.                             if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  1881.                                 cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  1882.                             }else {
  1883.                                 cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  1884.                             }
  1885.                         }
  1886.                        
  1887.                         credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  1888.                         credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  1889.                         credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  1890.                         credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  1891.                        
  1892.                         credenziali.setSubject(null);
  1893.                         credenziali.setIssuer(null);
  1894.                        
  1895.                     } else { // configurazione manuale
  1896.                         credenziali.setSubject(subjectSA);
  1897.                         if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  1898.                             credenziali.setIssuer(subjectSA);
  1899.                         } else {
  1900.                             credenziali.setIssuer(issuerSA);
  1901.                         }
  1902.                        
  1903.                         credenziali.setCnIssuer(null);
  1904.                         credenziali.setCnSubject(null);
  1905.                         credenziali.setCertificate(null);
  1906.                         credenziali.setCertificateStrictVerification(false);
  1907.                     }
  1908.                    
  1909.                     if(tokenWithHttsSupportato && tokenWithHttpsEnabledByConfigSA) {
  1910.                         credenziali.setTokenPolicy(tokenPolicySA);
  1911.                         credenziali.setUser(tokenClientIdSA);
  1912.                     }
  1913.                 }
  1914.                 else if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_PRINCIPAL)) {
  1915.                     credenziali.setUser(principalSA);
  1916.                 }
  1917.                 else if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN)) {
  1918.                     credenziali.setTokenPolicy(tokenPolicySA);
  1919.                     credenziali.setUser(tokenClientIdSA);
  1920.                 }
  1921.                 if(ip.getCredenzialiList()==null) {
  1922.                     ip.setCredenzialiList(new ArrayList<>());
  1923.                 }
  1924.                 if(ip.getCredenzialiList().isEmpty()) {
  1925.                     ip.getCredenzialiList().add(credenziali);
  1926.                 }
  1927.                 else {
  1928.                     ip.getCredenzialiList().set(0,credenziali); // Sovrascrivo la credenziale principale
  1929.                 }
  1930.                
  1931.                 if(secret) {
  1932.                     secretUser = credenziali.getUser();
  1933.                     if (apiKeyGenerated!=null) {
  1934.                         secretPassword = apiKeyGenerated.getApiKey();
  1935.                     }
  1936.                     else {
  1937.                         secretPassword = credenziali.getPassword();
  1938.                     }
  1939.                     secretAppId = credenziali.isAppId();
  1940.                 }
  1941.                
  1942.                 if(interfacciaAvanzata) {
  1943.                     if(credenziali.getTipo()!=null){
  1944.                         sa.setTipologiaFruizione(TipologiaFruizione.NORMALE.getValue());
  1945.                     }
  1946.                     else{
  1947.                         sa.setTipologiaFruizione(TipologiaFruizione.DISABILITATO.getValue());
  1948.                     }
  1949.                 }
  1950.                
  1951.                 ip.setSbustamentoInformazioniProtocollo(StatoFunzionalita.toEnumConstant(sbustamentoInformazioniProtocolloRisposta));
  1952.                
  1953.                 ip.setInvioPerRiferimento(StatoFunzionalita.toEnumConstant(invrifRisposta));
  1954.                
  1955.                 sa.setInvocazionePorta(ip);

  1956.             }
  1957.            
  1958.             if(showInvocazionePortaStep2){
  1959.                
  1960.                 InvocazionePorta invocazionePorta = new InvocazionePorta();
  1961.                 credenziali = new Credenziali();
  1962.                
  1963.                 if(CostantiConfigurazione.ABILITATO.equals(getmsg)){
  1964.                     if (tipoauthSA==null || tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)) {
  1965.                         credenziali.setTipo(null);
  1966.                     }else{
  1967.                         credenziali.setTipo(CredenzialeTipo.toEnumConstant(tipoauthSA));
  1968.                     }
  1969.                     credenziali.setUser(utenteSA);
  1970.                     if(principalSA!=null && !"".equals(principalSA)){
  1971.                         credenziali.setUser(principalSA); // al posto di user
  1972.                     }
  1973.                     credenziali.setPassword(passwordSA);
  1974.                    
  1975.                     ApiKey apiKeyGenerated = null;
  1976.                    
  1977.                     if(tipoauthSA!=null && ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC.equals(tipoauthSA)){
  1978.                         if(ServletUtils.isCheckBoxEnabled(changepwd) || modificataTipoAutenticazione) {
  1979.                             credenziali.setCertificateStrictVerification(false); // se รจ abilitata la cifratura, verrร  impostata a true nel perform update
  1980.                             if(saCore.isApplicativiPasswordEncryptEnabled()) {
  1981.                                 secret = true;
  1982.                             }
  1983.                         }
  1984.                         else if(encryptOldPlainPwd) {
  1985.                             secret = true;
  1986.                         }
  1987.                         else {
  1988.                             credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  1989.                         }
  1990.                     }
  1991.                     else if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY.equals(tipoauthSA)){
  1992.                         credenziali.setAppId(multipleApiKeysEnabled);
  1993.                         credenziali.setUser(appId);
  1994.                         credenziali.setPassword(apiKey);
  1995.                         if(ServletUtils.isCheckBoxEnabled(changepwd) || modificataTipoAutenticazione) {
  1996.                             credenziali.setCertificateStrictVerification(false); // se รจ abilitata la cifratura, verrร  impostata a true nel perform update
  1997.                             IDServizioApplicativo idSA = new IDServizioApplicativo();
  1998.                             idSA.setNome(nomeParameter);
  1999.                             idSA.setIdSoggettoProprietario(idSoggetto);
  2000.                             if(multipleApiKeysEnabled) {
  2001.                                 apiKeyGenerated = saCore.newMultipleApiKey();
  2002.                                 if(!appIdModificabile) {
  2003.                                     appId = saCore.toAppId(nomeProtocollo, idSA, multipleApiKeysEnabled);
  2004.                                 }
  2005.                             }
  2006.                             else {
  2007.                                 appId = saCore.toAppId(nomeProtocollo, idSA, multipleApiKeysEnabled);
  2008.                                 apiKeyGenerated = saCore.newApiKey(nomeProtocollo, idSA);
  2009.                             }
  2010.                             credenziali.setUser(appId);
  2011.                             credenziali.setPassword(apiKeyGenerated.getPassword());
  2012.                             if(soggettiCore.isApplicativiPasswordEncryptEnabled()) {
  2013.                                 secret = true;
  2014.                             }
  2015.                         }
  2016.                         else {
  2017.                             credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  2018.                         }
  2019.                     }
  2020.                     else if(tipoauthSA !=null  && ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA)) {
  2021.                         if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  2022.                             Certificate cSelezionato = null;
  2023.                            
  2024.                             // il certificato non e' cambiato
  2025.                             if(tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD)) {
  2026.                                 cSelezionato = ArchiveLoader.load(oldCredenziali.getCertificate());
  2027.                             } else {
  2028.                                 if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  2029.                                     cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  2030.                                 }else {
  2031.                                     cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  2032.                                 }
  2033.                             }
  2034.                            
  2035.                             credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  2036.                             credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  2037.                             credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  2038.                             credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  2039.                         } else { // configurazione manuale
  2040.                             credenziali.setSubject(subjectSA);
  2041.                             if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  2042.                                 credenziali.setIssuer(subjectSA);
  2043.                             } else {
  2044.                                 credenziali.setIssuer(issuerSA);
  2045.                             }
  2046.                         }
  2047.                        
  2048.                         if(tokenWithHttsSupportato && tokenWithHttpsEnabledByConfigSA) {
  2049.                             credenziali.setTokenPolicy(tokenPolicySA);
  2050.                             credenziali.setUser(tokenClientIdSA);
  2051.                         }
  2052.                     }
  2053.                     else if (ConnettoriCostanti.AUTENTICAZIONE_TIPO_PRINCIPAL.equals(tipoauthSA)) {
  2054.                         credenziali.setUser(principalSA);
  2055.                     }
  2056.                     else if (ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN.equals(tipoauthSA)) {
  2057.                         credenziali.setTokenPolicy(tokenPolicySA);
  2058.                         credenziali.setUser(tokenClientIdSA);
  2059.                     }
  2060.                    
  2061.                     if(secret) {
  2062.                         secretUser = credenziali.getUser();
  2063.                         if (apiKeyGenerated!=null) {
  2064.                             secretPassword = apiKeyGenerated.getApiKey();
  2065.                         }
  2066.                         else {
  2067.                             secretPassword = credenziali.getPassword();
  2068.                         }
  2069.                         secretAppId = credenziali.isAppId();
  2070.                     }
  2071.                 }
  2072.                 else{
  2073.                     credenziali.setTipo(null);
  2074.                     credenziali.setUser(null);
  2075.                     credenziali.setPassword(null);
  2076.                     credenziali.setSubject(null);
  2077.                 }
  2078.                 invocazionePorta.addCredenziali(credenziali);
  2079.                                
  2080.                 InvocazionePortaGestioneErrore ipgeTmp = new InvocazionePortaGestioneErrore();
  2081.                 ipgeTmp.setFault(FaultIntegrazioneTipo.SOAP);
  2082.                 invocazionePorta.setGestioneErrore(ipgeTmp);
  2083.                
  2084.                 invocazionePorta.setSbustamentoInformazioniProtocollo(StatoFunzionalita.ABILITATO);

  2085.                 sa.setInvocazionePorta(invocazionePorta);              
  2086.             }
  2087.            
  2088.            
  2089.            
  2090.            
  2091.             // *** Invocazione Servizio ***
  2092.            
  2093.             boolean showInvocazioneServizio = interfacciaStandard && !TipologiaErogazione.DISABILITATO.getValue().equals(ruoloErogatore);
  2094.             if(isApplicativiServerEnabled) {
  2095.                 showInvocazioneServizio = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA);
  2096.             }
  2097.            
  2098.             if(showInvocazioneServizio){
  2099.            
  2100.                 if(sbustamento==null){
  2101.                     is.setSbustamentoSoap(CostantiConfigurazione.DISABILITATO);
  2102.                 }else{
  2103.                     is.setSbustamentoSoap(StatoFunzionalita.toEnumConstant(sbustamento));
  2104.                 }
  2105.                 if(sbustamentoInformazioniProtocolloRichiesta==null){
  2106.                     is.setSbustamentoInformazioniProtocollo(CostantiConfigurazione.ABILITATO);
  2107.                 }else{
  2108.                     is.setSbustamentoInformazioniProtocollo(StatoFunzionalita.toEnumConstant(sbustamentoInformazioniProtocolloRichiesta));
  2109.                 }
  2110.                 is.setGetMessage(StatoFunzionalita.toEnumConstant(getmsg));
  2111.                 is.setInvioPerRiferimento(StatoFunzionalita.toEnumConstant(invrifRichiesta));
  2112.                 is.setRispostaPerRiferimento(StatoFunzionalita.toEnumConstant(risprif));
  2113.                 if (tipoauthRichiesta!=null && tipoauthRichiesta.equals(CostantiConfigurazione.INVOCAZIONE_SERVIZIO_AUTENTICAZIONE_BASIC.toString())) {
  2114.                     if (cis == null) {
  2115.                         cis = new InvocazioneCredenziali();
  2116.                     }
  2117.                     cis.setUser(user);
  2118.                     cis.setPassword(password);
  2119.                     is.setCredenziali(cis);
  2120.                     is.setAutenticazione(InvocazioneServizioTipoAutenticazione.BASIC);
  2121.                 }
  2122.                 else if(endpointtype.equals(TipiConnettore.JMS.toString())){
  2123.                     if(user!=null && password!=null){
  2124.                         if (cis == null) {
  2125.                             cis = new InvocazioneCredenziali();
  2126.                         }
  2127.                         cis.setUser(user);
  2128.                         cis.setPassword(password);
  2129.                     }
  2130.                     is.setCredenziali(cis);
  2131.                     is.setAutenticazione(InvocazioneServizioTipoAutenticazione.BASIC);
  2132.                 }
  2133.                 else {
  2134.                     is.setCredenziali(null);
  2135.                     is.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
  2136.                 }
  2137.                 String oldConnT = connis.getTipo();
  2138.                 if ((connis.getCustom()!=null && connis.getCustom()) &&
  2139.                         !connis.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
  2140.                         !connis.getTipo().equals(TipiConnettore.FILE.toString()))
  2141.                     oldConnT = TipiConnettore.CUSTOM.toString();
  2142.                 saHelper.fillConnettore(connis, connettoreDebug, endpointtype, oldConnT, tipoconn, url,
  2143.                         nomeCodaJMS, tipoCodaJMS, user, password,
  2144.                         initcont, urlpgk, provurl, connfact,
  2145.                         sendas, httpsurl, httpstipologia, httpshostverify,
  2146.                         httpsTrustVerifyCert, httpspath, httpstipo,
  2147.                         httpspwd, httpsalgoritmo, httpsstato,
  2148.                         httpskeystore, httpspwdprivatekeytrust,
  2149.                         httpspathkey, httpstipokey,
  2150.                         httpspwdkey, httpspwdprivatekey,
  2151.                         httpsalgoritmokey,
  2152.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  2153.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  2154.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  2155.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  2156.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  2157.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  2158.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  2159.                         tokenPolicy,
  2160.                         apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  2161.                         connettoreStatusParams,
  2162.                         listExtendedConnettore);
  2163.                 is.setConnettore(connis);
  2164.                
  2165.                 sa.setInvocazioneServizio(is);
  2166.             }
  2167.             else if(interfacciaStandard &&
  2168.                     TipologiaErogazione.DISABILITATO.getValue().equals(ruoloErogatore)){
  2169.                 is.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
  2170.                 is.setCredenziali(cis);
  2171.                 is.setGetMessage(CostantiConfigurazione.DISABILITATO);
  2172.                 if(is.getConnettore()!=null){
  2173.                     is.getConnettore().setTipo(TipiConnettore.DISABILITATO.toString());
  2174.                 }
  2175.                 sa.setInvocazioneServizio(is);                  
  2176.             }
  2177.            
  2178.             //imposto properties custom
  2179.             sa.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesConfig(protocolProperties, consoleOperationType, oldProtocolPropertyList));
  2180.            
  2181.             // eseguo l'aggiornamento
  2182.             List<Object> listOggettiDaAggiornare = ServiziApplicativiUtilities.getOggettiDaAggiornare(saCore, oldIdServizioApplicativo, sa);
  2183.             saCore.performUpdateOperation(userLogin, saHelper.smista(), listOggettiDaAggiornare.toArray());

  2184.             saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  2185.        
  2186.             int idLista = -1;
  2187.             if(!useIdSogg){
  2188.                 idLista = Liste.SERVIZIO_APPLICATIVO;
  2189.             }
  2190.             else {
  2191.                 idLista = Liste.SERVIZI_APPLICATIVI_BY_SOGGETTO;
  2192.             }
  2193.             if(!sa.getNome().equals(oldIdServizioApplicativo.getNome())) {
  2194.                 ServletUtils.removeRisultatiRicercaFromSession(request, session, idLista);
  2195.             }
  2196.            
  2197.             // Messaggio 'Please Copy'
  2198.             if(secret) {
  2199.                 saHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, tipoauthSA, OggettoDialogEnum.APPLICATIVO, sa.getNome());
  2200.             }
  2201.            
  2202.             // Preparo la lista
  2203.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  2204.            

  2205.             List<ServizioApplicativo> lista = null;

  2206.             if(!useIdSogg){
  2207.                 ricerca = saHelper.checkSearchParameters(idLista, ricerca);

  2208.                 boolean filtroSoggetto = false;
  2209.                 if(saHelper.isSoggettoMultitenantSelezionato()) {
  2210.                     List<String> protocolli = saCore.getProtocolli(request, session,false);
  2211.                     if(protocolli!=null && protocolli.size()==1) { // dovrebbe essere l'unico caso in cui un soggetto multitenant รจ selezionato
  2212.                         String protocollo = protocolli.get(0);
  2213.                         filtroSoggetto = !saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(protocollo);  // devono essere fatti vedere anche quelli
  2214.                     }
  2215.                 }
  2216.                 if(filtroSoggetto) {
  2217.                     ricerca.addFilter(idLista, Filtri.FILTRO_SOGGETTO, saHelper.getSoggettoMultitenantSelezionato());
  2218.                 }
  2219.                
  2220.                 if(saCore.isVisioneOggettiGlobale(userLogin)){
  2221.                     lista = saCore.soggettiServizioApplicativoList(null, ricerca);
  2222.                 }else{
  2223.                     lista = saCore.soggettiServizioApplicativoList(userLogin, ricerca);
  2224.                 }
  2225.             }else {
  2226.                 ricerca = saHelper.checkSearchParameters(idLista, ricerca);
  2227.                
  2228.                 lista = saCore.soggettiServizioApplicativoList(ricerca,soggLong);
  2229.             }

  2230.             saHelper.prepareServizioApplicativoList(ricerca, lista, useIdSogg);

  2231.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  2232.             if(sbWarningCheck!=null && sbWarningCheck.length()>0 &&
  2233.                 (pd.getMessage()==null || StringUtils.isEmpty(pd.getMessage()))
  2234.                 ){
  2235.                 pd.setMessage(sbWarningCheck.toString(), MessageType.WARN);
  2236.             }
  2237.            
  2238.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.CHANGE());

  2239.         } catch (Exception e) {
  2240.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  2241.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.CHANGE());
  2242.         }
  2243.     }
  2244. }