AccordiServizioParteSpecificaAdd.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.aps;

  21. import java.text.MessageFormat;
  22. import java.util.ArrayList;
  23. import java.util.Iterator;
  24. import java.util.List;

  25. import javax.net.ssl.KeyManagerFactory;
  26. import javax.net.ssl.TrustManagerFactory;
  27. import javax.servlet.http.HttpServletRequest;
  28. import javax.servlet.http.HttpServletResponse;
  29. import javax.servlet.http.HttpSession;

  30. import org.apache.commons.lang.StringUtils;
  31. import org.apache.struts.action.Action;
  32. import org.apache.struts.action.ActionForm;
  33. import org.apache.struts.action.ActionForward;
  34. import org.apache.struts.action.ActionMapping;
  35. import org.openspcoop2.core.commons.Filtri;
  36. import org.openspcoop2.core.commons.Liste;
  37. import org.openspcoop2.core.config.CanaleConfigurazione;
  38. import org.openspcoop2.core.config.CanaliConfigurazione;
  39. import org.openspcoop2.core.config.GenericProperties;
  40. import org.openspcoop2.core.config.Property;
  41. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  42. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  43. import org.openspcoop2.core.config.constants.TipoAutenticazione;
  44. import org.openspcoop2.core.config.constants.TipoAutenticazionePrincipal;
  45. import org.openspcoop2.core.config.constants.TipoAutorizzazione;
  46. import org.openspcoop2.core.config.driver.db.IDServizioApplicativoDB;
  47. import org.openspcoop2.core.constants.CostantiConnettori;
  48. import org.openspcoop2.core.constants.TipiConnettore;
  49. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  50. import org.openspcoop2.core.id.IDFruizione;
  51. import org.openspcoop2.core.id.IDServizio;
  52. import org.openspcoop2.core.id.IDSoggetto;
  53. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  54. import org.openspcoop2.core.registry.ConfigurazioneServizio;
  55. import org.openspcoop2.core.registry.Connettore;
  56. import org.openspcoop2.core.registry.Fruitore;
  57. import org.openspcoop2.core.registry.Soggetto;
  58. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  59. import org.openspcoop2.core.registry.beans.OperationSintetica;
  60. import org.openspcoop2.core.registry.beans.PortTypeSintetico;
  61. import org.openspcoop2.core.registry.constants.CredenzialeTipo;
  62. import org.openspcoop2.core.registry.constants.FormatoSpecifica;
  63. import org.openspcoop2.core.registry.constants.PddTipologia;
  64. import org.openspcoop2.core.registry.constants.StatiAccordo;
  65. import org.openspcoop2.core.registry.constants.TipologiaServizio;
  66. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  67. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  68. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  69. import org.openspcoop2.core.registry.driver.ValidazioneStatoPackageException;
  70. import org.openspcoop2.core.registry.driver.db.IDAccordoDB;
  71. import org.openspcoop2.core.registry.driver.db.IDSoggettoDB;
  72. import org.openspcoop2.message.constants.ServiceBinding;
  73. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  74. import org.openspcoop2.protocol.sdk.ProtocolException;
  75. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  76. import org.openspcoop2.utils.BooleanNullable;
  77. import org.openspcoop2.web.ctrlstat.core.AutorizzazioneUtilities;
  78. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  79. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  80. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  81. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  82. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  83. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  84. import org.openspcoop2.web.ctrlstat.servlet.ApiKeyState;
  85. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  86. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
  87. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCostanti;
  88. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
  89. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniHelper;
  90. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  91. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCostanti;
  92. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  93. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  94. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  95. import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
  96. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore;
  97. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCostanti;
  98. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiHelper;
  99. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  100. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  101. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  102. import org.openspcoop2.web.lib.mvc.Costanti;
  103. import org.openspcoop2.web.lib.mvc.DataElement;
  104. import org.openspcoop2.web.lib.mvc.ForwardParams;
  105. import org.openspcoop2.web.lib.mvc.GeneralData;
  106. import org.openspcoop2.web.lib.mvc.PageData;
  107. import org.openspcoop2.web.lib.mvc.ServletUtils;
  108. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  109. /**
  110.  * serviziAdd
  111.  *
  112.  * @author Andrea Poli (apoli@link.it)
  113.  * @author Stefano Corallo (corallo@link.it)
  114.  * @author Sandra Giangrandi (sandra@link.it)
  115.  * @author $Author$
  116.  * @version $Rev$, $Date$
  117.  *
  118.  */
  119. public final class AccordiServizioParteSpecificaAdd extends Action {

  120.     @Override
  121.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

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

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

  125.         GeneralHelper generalHelper = new GeneralHelper(session);

  126.         // Inizializzo GeneralData
  127.         GeneralData gd = generalHelper.initGeneralData(request);

  128.         String userLogin = ServletUtils.getUserLoginFromSession(session);  
  129.        
  130.         IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();

  131.         AccordiServizioParteSpecificaAddStrutsBean strutsBean = new AccordiServizioParteSpecificaAddStrutsBean();
  132.        
  133.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  134.         strutsBean.consoleOperationType = ConsoleOperationType.ADD;
  135.        
  136.         // Parametri relativi al tipo operazione
  137.         TipoOperazione tipoOp = TipoOperazione.ADD;

  138.         try {
  139.            
  140.             ErogazioniHelper apsHelper = new ErogazioniHelper(request, pd, session);
  141.            
  142.             strutsBean.editMode = apsHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);

  143.             strutsBean.nomeservizio = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SERVIZIO);
  144.             strutsBean.tiposervizio = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_SERVIZIO);
  145.             strutsBean.provider = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_EROGATORE);
  146.             strutsBean.accordo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ACCORDO);
  147.             strutsBean.servcorr = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_SERVIZIO_CORRELATO);
  148.            
  149.             String erogazioneServizioApplicativoServerEnabledS = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ABILITA_USO_APPLICATIVO_SERVER);
  150.             strutsBean.erogazioneServizioApplicativoServerEnabled = ServletUtils.isCheckBoxEnabled(erogazioneServizioApplicativoServerEnabledS);
  151.             strutsBean.erogazioneServizioApplicativoServer = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_APPLICATIVO_SERVER);
  152.            
  153.             strutsBean.endpointtype = apsHelper.readEndPointType();
  154.             strutsBean.tipoconn = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO );
  155.             strutsBean.autenticazioneHttp = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);

  156.             strutsBean.connettoreDebug = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);

  157.             strutsBean.controlloAccessiStato = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_CONTROLLO_ACCESSI_STATO);
  158.            
  159.             strutsBean.erogazioneRuolo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_RUOLO);
  160.             strutsBean.erogazioneAutenticazione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTENTICAZIONE);
  161.             strutsBean.erogazioneAutenticazioneOpzionale = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTENTICAZIONE_OPZIONALE);
  162.             String erogazioneAutenticazionePrincipalTipo = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_PRINCIPAL_TIPO);
  163.             strutsBean.erogazioneAutenticazionePrincipal = TipoAutenticazionePrincipal.toEnumConstant(erogazioneAutenticazionePrincipalTipo, false);
  164.             strutsBean.erogazioneAutenticazioneParametroList = apsHelper.convertFromDataElementValue_parametroAutenticazioneList(strutsBean.erogazioneAutenticazione, strutsBean.erogazioneAutenticazionePrincipal);
  165.             strutsBean.erogazioneAutorizzazione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE);
  166.             strutsBean.erogazioneAutorizzazioneAutenticati = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_AUTENTICAZIONE);
  167.             strutsBean.erogazioneAutorizzazioneRuoli = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLI);
  168.             strutsBean.erogazioneAutorizzazioneRuoliTipologia = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLO_TIPOLOGIA);
  169.             strutsBean.erogazioneAutorizzazioneRuoliMatch = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLO_MATCH);
  170.             strutsBean.erogazioneSoggettoAutenticato = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_SOGGETTO_AUTENTICATO);

  171.             // token policy
  172.             String autenticazioneTokenS = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  173.             strutsBean.autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  174.             strutsBean.tokenPolicy = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  175.            
  176.             // proxy
  177.             strutsBean.proxyEnabled = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  178.             strutsBean.proxyHostname = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  179.             strutsBean.proxyPort = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  180.             strutsBean.proxyUsername = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  181.             strutsBean.proxyPassword = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);

  182.             // tempi risposta
  183.             strutsBean.tempiRispostaEnabled = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  184.             strutsBean.tempiRispostaConnectionTimeout = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  185.             strutsBean.tempiRispostaReadTimeout = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  186.             strutsBean.tempiRispostaTempoMedioRisposta = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  187.            
  188.             // opzioni avanzate
  189.             strutsBean.transferMode = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  190.             strutsBean.transferModeChunkSize = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  191.             strutsBean.redirectMode = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  192.             strutsBean.redirectMaxHop = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  193.             strutsBean.opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(apsHelper,strutsBean.transferMode, strutsBean.redirectMode);

  194.             // http
  195.             strutsBean.url = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL  );
  196.             if(TipiConnettore.HTTP.toString().equals(strutsBean.endpointtype)){
  197.                 strutsBean.user = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  198.                 strutsBean.password = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  199.             }
  200.            
  201.             // api key
  202.             strutsBean.autenticazioneApiKey = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_API_KEY);
  203.             strutsBean.apiKeyHeader = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_HEADER);
  204.             if(strutsBean.apiKeyHeader==null || StringUtils.isEmpty(strutsBean.apiKeyHeader)) {
  205.                 strutsBean.apiKeyHeader = CostantiConnettori.DEFAULT_HEADER_API_KEY;
  206.             }
  207.             strutsBean.apiKeyValue = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_VALUE);
  208.             strutsBean.appIdHeader = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_HEADER);
  209.             if(strutsBean.appIdHeader==null || StringUtils.isEmpty(strutsBean.appIdHeader)) {
  210.                 strutsBean.appIdHeader = CostantiConnettori.DEFAULT_HEADER_APP_ID;
  211.             }
  212.             strutsBean.appIdValue = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_VALUE);
  213.             String useOAS3NamesTmp = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_NOMI_OAS);
  214.             strutsBean.useOAS3Names=true;
  215.             if(useOAS3NamesTmp!=null && StringUtils.isNotEmpty(useOAS3NamesTmp)) {
  216.                 strutsBean.useOAS3Names = ServletUtils.isCheckBoxEnabled(useOAS3NamesTmp);
  217.             }
  218.             else {
  219.                 strutsBean.useOAS3Names = apsHelper.isAutenticazioneApiKeyUseOAS3Names(strutsBean.apiKeyHeader, strutsBean.appIdHeader);
  220.             }
  221.             String useAppIdTmp = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_USE_APP_ID);
  222.             strutsBean.useAppId=false;
  223.             if(useAppIdTmp!=null && StringUtils.isNotEmpty(useAppIdTmp)) {
  224.                 strutsBean.useAppId = ServletUtils.isCheckBoxEnabled(useAppIdTmp);
  225.             }
  226.             else {
  227.                 strutsBean.useAppId = apsHelper.isAutenticazioneApiKeyUseAppId(strutsBean.appIdValue);
  228.             }

  229.             // jms
  230.             strutsBean.nome = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  231.             strutsBean.tipo = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  232.             strutsBean.initcont = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  233.             strutsBean.urlpgk = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  234.             strutsBean.provurl = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  235.             strutsBean.connfact = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  236.             strutsBean.sendas = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  237.             if(TipiConnettore.JMS.toString().equals(strutsBean.endpointtype)){
  238.                 strutsBean.user = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  239.                 strutsBean.password = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  240.             }

  241.             // https
  242.             strutsBean.httpsurl = strutsBean.url;
  243.             strutsBean.httpstipologia = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_SSL_TYPE );
  244.             strutsBean.httpshostverifyS = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_HOST_VERIFY);
  245.             String httpsTrustVerifyCertS = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS );
  246.             strutsBean.httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  247.             strutsBean.httpspath = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_LOCATION );
  248.             strutsBean.httpstipo = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  249.             strutsBean.httpspwd = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  250.             strutsBean.httpsalgoritmo = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  251.             strutsBean.httpsstatoS = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO);
  252.             strutsBean.httpskeystore = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE);
  253.             strutsBean.httpspwdprivatekeytrust = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_STORE);
  254.             strutsBean.httpspathkey = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  255.             strutsBean.httpstipokey = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_TYPE);
  256.             strutsBean.httpspwdkey = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  257.             strutsBean.httpspwdprivatekey = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_KEYSTORE);
  258.             strutsBean.httpsalgoritmokey = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  259.             strutsBean.httpsKeyAlias = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_ALIAS_PRIVATE_KEY_KEYSTORE);
  260.             strutsBean.httpsTrustStoreCRLs = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_CRL);
  261.             strutsBean.httpsTrustStoreOCSPPolicy = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  262.             strutsBean.httpsKeyStoreBYOKPolicy = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  263.             if(TipiConnettore.HTTPS.toString().equals(strutsBean.endpointtype)){
  264.                 strutsBean.user = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  265.                 strutsBean.password = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  266.             }
  267.            
  268.             // file
  269.             strutsBean.requestOutputFileName = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME);
  270.             strutsBean.requestOutputFileNamePermissions = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_PERMISSIONS);
  271.             strutsBean.requestOutputFileNameHeaders = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS);
  272.             strutsBean.requestOutputFileNameHeadersPermissions = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS_PERMISSIONS);
  273.             strutsBean.requestOutputParentDirCreateIfNotExists = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  274.             strutsBean.requestOutputOverwriteIfExists = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE_NAME);
  275.             strutsBean.responseInputMode = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  276.             strutsBean.responseInputFileName = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME);
  277.             strutsBean.responseInputFileNameHeaders = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_HEADERS);
  278.             strutsBean.responseInputDeleteAfterRead = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_DELETE_AFTER_READ);
  279.             strutsBean.responseInputWaitTime = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);

  280.             //status
  281.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(apsHelper);


  282.             strutsBean.profilo = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROFILO);

  283.             strutsBean.wsdlimpler = apsHelper.getBinaryParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_WSDL_EROGATORE);
  284.             strutsBean.wsdlimplfru = apsHelper.getBinaryParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_WSDL_FRUITORE);
  285.             strutsBean.portType = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PORT_TYPE);

  286.             String priv = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PRIVATO);
  287.             strutsBean.privato = ServletUtils.isCheckBoxEnabled(priv);

  288.             strutsBean.descrizione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_DESCRIZIONE);
  289.             strutsBean.statoPackage = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO_PACKAGE);

  290.             strutsBean.versione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_VERSIONE);
  291.             strutsBean.nomeSA = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_SA);
  292.            
  293.            
  294.             strutsBean.providerSoggettoFruitore = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_FRUITORE);
  295.            
  296.             strutsBean.fruizioneServizioApplicativo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_FRUIZIONE_NOME_SA);
  297.             strutsBean.fruizioneRuolo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_NOME_RUOLO);
  298.             strutsBean.fruizioneAutenticazione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTENTICAZIONE);
  299.             strutsBean.fruizioneAutenticazioneOpzionale = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTENTICAZIONE_OPZIONALE);
  300.             String fruizioneAutenticazionePrincipalTipo = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_PRINCIPAL_TIPO);
  301.             strutsBean.fruizioneAutenticazionePrincipal = TipoAutenticazionePrincipal.toEnumConstant(fruizioneAutenticazionePrincipalTipo, false);
  302.             strutsBean.fruizioneAutenticazioneParametroList = apsHelper.convertFromDataElementValue_parametroAutenticazioneList(strutsBean.fruizioneAutenticazione, strutsBean.fruizioneAutenticazionePrincipal);
  303.             strutsBean.fruizioneAutorizzazione = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE);
  304.             strutsBean.fruizioneAutorizzazioneAutenticati = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_AUTENTICAZIONE);
  305.             strutsBean.fruizioneAutorizzazioneRuoli = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLI);
  306.             strutsBean.fruizioneAutorizzazioneRuoliTipologia = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLO_TIPOLOGIA);
  307.             strutsBean.fruizioneAutorizzazioneRuoliMatch = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_AUTORIZZAZIONE_RUOLO_MATCH);
  308.            
  309.             String gestioneToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN);
  310.             String gestioneTokenPolicy = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_POLICY);
  311.             String gestioneTokenOpzionale = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_OPZIONALE);
  312.             String gestioneTokenValidazioneInput = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_VALIDAZIONE_INPUT);
  313.             String gestioneTokenIntrospection = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_INTROSPECTION);
  314.             String gestioneTokenUserInfo = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_USERINFO);
  315.             String gestioneTokenForward = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_GESTIONE_TOKEN_TOKEN_FORWARD);
  316.            
  317.             String autenticazioneTokenIssuer = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_TOKEN_ISSUER);
  318.             String autenticazioneTokenClientId = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_TOKEN_CLIENT_ID);
  319.             String autenticazioneTokenSubject = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_TOKEN_SUBJECT);
  320.             String autenticazioneTokenUsername = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_TOKEN_USERNAME);
  321.             String autenticazioneTokenEMail = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTENTICAZIONE_TOKEN_MAIL);
  322.            
  323.             String autorizzazioneAutenticatiToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTORIZZAZIONE_AUTENTICAZIONE_TOKEN);
  324.             String autorizzazioneRuoliToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTORIZZAZIONE_RUOLI_TOKEN);
  325.             String autorizzazioneRuoliTipologiaToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_RUOLO_TIPOLOGIA_TOKEN);
  326.             String autorizzazioneRuoliMatchToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_RUOLO_MATCH_TOKEN);
  327.            
  328.             String autorizzazioneToken = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTORIZZAZIONE_TOKEN);
  329.             String autorizzazioneTokenOptions = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTORIZZAZIONE_TOKEN_OPTIONS);
  330.             String autorizzazioneScope = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_AUTORIZZAZIONE_SCOPE);
  331.             String autorizzazioneScopeMatch = apsHelper.getParameter(CostantiControlStation.PARAMETRO_SCOPE_MATCH);
  332.             String scope = apsHelper.getParameter(CostantiControlStation.PARAMETRO_SCOPE);
  333.            
  334.             BinaryParameter allegatoXacmlPolicy = apsHelper.getBinaryParameter(CostantiControlStation.PARAMETRO_DOCUMENTO_SICUREZZA_XACML_POLICY);
  335.            
  336.             String identificazioneAttributiStato = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_ATTRIBUTI_STATO);
  337.             String [] attributeAuthoritySelezionate = apsHelper.getParameterValues(CostantiControlStation.PARAMETRO_PORTE_ATTRIBUTI_AUTHORITY);
  338.             String attributeAuthorityAttributi = apsHelper.getParameter(CostantiControlStation.PARAMETRO_PORTE_ATTRIBUTI_AUTHORITY_ATTRIBUTI);

  339.             if(apsHelper.isMultipart()){
  340.                 strutsBean.decodeRequestValidazioneDocumenti = true;
  341.             }
  342.            
  343.             strutsBean.canale = apsHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CANALI_CANALE);
  344.             strutsBean.canaleStato = apsHelper.getParameter(CostantiControlStation.PARAMETRO_CONFIGURAZIONE_CANALI_CANALE_STATO);

  345.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore();
  346.             SoggettiCore soggettiCore = new SoggettiCore(apsCore);
  347.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore(apsCore);
  348.             ServiziApplicativiCore saCore = new ServiziApplicativiCore(apsCore);
  349.             ConfigurazioneCore confCore = new ConfigurazioneCore(apsCore);
  350.             PddCore pddCore = new PddCore(apsCore);
  351.            
  352.             // carico i canali
  353.             CanaliConfigurazione gestioneCanali = confCore.getCanaliConfigurazione(false);
  354.             List<CanaleConfigurazione> canaleList = gestioneCanali != null ? gestioneCanali.getCanaleList() : new ArrayList<>();
  355.             boolean gestioneCanaliEnabled = gestioneCanali != null && org.openspcoop2.core.config.constants.StatoFunzionalita.ABILITATO.equals(gestioneCanali.getStato());

  356.             String tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  357.             boolean gestioneFruitori = false;
  358.             boolean gestioneErogatori = false;
  359.             if(tipologia!=null) {
  360.                 if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  361.                     gestioneErogatori = true;
  362.                 }
  363.                 else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  364.                     gestioneFruitori = true;
  365.                 }
  366.             }
  367.            
  368.             boolean visualizzaSezioneApplicativiServerEnabled = gestioneErogatori && saCore.isApplicativiServerEnabled(apsHelper);
  369.            
  370.             PddTipologia pddTipologiaSoggettoAutenticati = null;
  371.             if(gestioneErogatori) {
  372.                 pddTipologiaSoggettoAutenticati = PddTipologia.ESTERNO;
  373.             }
  374.            
  375.            
  376.             if(ServletUtils.isEditModeInProgress(strutsBean.editMode)){
  377.                 // primo accesso alla servlet
  378.                 strutsBean.validazioneDocumenti = true;
  379.                 if (apsHelper.isModalitaAvanzata()) {
  380.                     String tmpValidazioneDocumenti = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_VALIDAZIONE_DOCUMENTI);
  381.                     if(tmpValidazioneDocumenti!=null){
  382.                         if(Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(tmpValidazioneDocumenti) || Costanti.CHECK_BOX_ENABLED.equalsIgnoreCase(tmpValidazioneDocumenti)){
  383.                             strutsBean.validazioneDocumenti = true;
  384.                         }else{
  385.                             strutsBean.validazioneDocumenti = false;
  386.                         }
  387.                     }
  388.                 }
  389.             }else{
  390.                 if(!strutsBean.decodeRequestValidazioneDocumenti){
  391.                     String tmpValidazioneDocumenti = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_VALIDAZIONE_DOCUMENTI);
  392.                     if(Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(tmpValidazioneDocumenti) || Costanti.CHECK_BOX_ENABLED.equalsIgnoreCase(tmpValidazioneDocumenti)){
  393.                         strutsBean.validazioneDocumenti = true;
  394.                     }else{
  395.                         strutsBean.validazioneDocumenti = false;
  396.                     }
  397.                 }
  398.             }

  399.             strutsBean.httpshostverify = false;
  400.             if (strutsBean.httpshostverifyS != null && strutsBean.httpshostverifyS.equals(Costanti.CHECK_BOX_ENABLED))
  401.                 strutsBean.httpshostverify = true;
  402.             strutsBean.httpsstato = false;
  403.             if (strutsBean.httpsstatoS != null && strutsBean.httpsstatoS.equals(Costanti.CHECK_BOX_ENABLED))
  404.                 strutsBean.httpsstato = true;

  405.             Boolean isConnettoreCustomUltimaImmagineSalvata = null;

  406.             Connettore conTmp = null;
  407.             List<ExtendedConnettore> listExtendedConnettore =
  408.                     ServletExtendedConnettoreUtils.getExtendedConnettore(conTmp, ConnettoreServletType.ACCORDO_SERVIZIO_PARTE_SPECIFICA_ADD, apsHelper,
  409.                             null, //strutsBean.parametersPOST,
  410.                             (strutsBean.endpointtype==null), strutsBean.endpointtype); // uso endpointtype per capire se è la prima volta che entro

  411.             // Tipi protocollo supportati
  412.             boolean filtraSoggettiEsistenti = true;
  413.             boolean filtraAccordiEsistenti = true;
  414.             List<String> listaTipiProtocollo = apcCore.getProtocolliByFilter(request, session, filtraSoggettiEsistenti, null, filtraAccordiEsistenti, false, true);
  415.                    
  416.             boolean postBackViaPost = true;
  417.            
  418.             // Preparo il menu
  419.             apsHelper.makeMenu();

  420.             if(listaTipiProtocollo.isEmpty()) {
  421.                
  422.                 List<String> listaTipiProtocolloSoloSoggetti = apcCore.getProtocolliByFilter(request, session, filtraSoggettiEsistenti, null, !filtraAccordiEsistenti, false, true);            
  423.                 if(!listaTipiProtocolloSoloSoggetti.isEmpty()) {
  424.                     pd.setMessage("Non risultano registrate API", Costanti.MESSAGE_TYPE_INFO);
  425.                 }
  426.                 else {
  427.                     if(gestioneFruitori) {
  428.                         pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTO_EROGATORI_DI_API, Costanti.MESSAGE_TYPE_INFO);
  429.                     }
  430.                     else {
  431.                         pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTI, Costanti.MESSAGE_TYPE_INFO);
  432.                     }
  433.                 }
  434.                 pd.disableEditMode();

  435.                 List<DataElement> dati = new ArrayList<>();

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

  437.                 pd.setDati(dati);

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

  439.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  440.                         ForwardParams.ADD());
  441.             }
  442.            
  443.             strutsBean.tipoProtocollo = apsHelper.getParameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_PROTOCOLLO);
  444.             if(strutsBean.tipoProtocollo == null){
  445.                 strutsBean.tipoProtocollo = apsCore.getProtocolloDefault(request, session, listaTipiProtocollo);
  446.             }
  447.            
  448.             boolean connettoreStatic = false;
  449.             if(gestioneFruitori) {
  450.                 connettoreStatic = apsCore.isConnettoreStatic(strutsBean.tipoProtocollo);
  451.             }
  452.            
  453.             String[] ptList = null;
  454.             // Prendo la lista di soggetti e la metto in un array
  455.             // Prendo la lista di accordi e la metto in un array
  456.             String[] soggettiList = null;
  457.             String[] soggettiListLabel = null;
  458.             String[] accordiList = null;
  459.             String[] accordiListLabel = null;
  460.             String[] soggettiFruitoriList = null;
  461.             String[] soggettiFruitoriListLabel = null;

  462.             boolean generaPortaApplicativa = !gestioneFruitori;
  463.             boolean generaPortaDelegata = gestioneFruitori;
  464.             boolean accordoPrivato = false;
  465.             String uriAccordo = null;
  466.             IDSoggetto soggettoReferente = null;
  467.             long idReferente = -1;

  468.             List<IDAccordoDB> listaIdAPI = AccordiServizioParteSpecificaUtilities.getListaIdAPI(strutsBean.tipoProtocollo, userLogin, apsCore, apsHelper);

  469.            

  470.             int accordoPrimoAccesso = -1;

  471.             if (listaIdAPI!=null && !listaIdAPI.isEmpty()) {
  472.                 int i = 0;
  473.                 if(listaIdAPI.size() > 1) {
  474.                     accordiList = new String[listaIdAPI.size()+1];
  475.                     accordiListLabel = new String[listaIdAPI.size()+1];
  476.                     accordiList[0] = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO;
  477.                     accordiListLabel[0] = AccordiServizioParteSpecificaCostanti.LABEL_DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO;
  478.                     i = 1;
  479.                 } else {
  480.                     accordiList = new String[listaIdAPI.size()];
  481.                     accordiListLabel = new String[listaIdAPI.size()];
  482.                 }
  483.                 for (IDAccordoDB as : listaIdAPI) {
  484.                     accordiList[i] = as.getId().toString();
  485.                     soggettoReferente = null;
  486.                     idReferente = -1;
  487.                     if(as.getSoggettoReferenteDB()!=null && as.getSoggettoReferenteDB().getId()!=null)
  488.                         idReferente = as.getSoggettoReferenteDB().getId();

  489.                     if(idReferente>0){
  490.                         soggettoReferente = new IDSoggetto();
  491.                         soggettoReferente.setTipo(as.getSoggettoReferente().getTipo());
  492.                         soggettoReferente.setNome(as.getSoggettoReferente().getNome());

  493.                         // se ancora non ho scelto l'accordo da mostrare quando entro
  494.                         if(accordoPrimoAccesso == -1 &&
  495.                             //mostro il primo accordo che ha tipo che corrisponde a quello di default
  496.                             apcCore.getProtocolloDefault(request, session,listaTipiProtocollo).equals(soggettiCore.getProtocolloAssociatoTipoSoggetto(as.getSoggettoReferente().getTipo()))){
  497.                             accordoPrimoAccesso = i;
  498.                         }
  499.                     }
  500.                     accordiListLabel[i] = apsHelper.getLabelIdAccordo(strutsBean.tipoProtocollo, as);
  501.                     i++;
  502.                 }
  503.             }

  504.             // se ancora non ho scelto l'accordo da mostrare quando entro
  505.             if(accordoPrimoAccesso == -1 && !listaIdAPI.isEmpty()){
  506.                 // Se entro in questo caso significa che tutti gli accordi di servizio parte comune esistente s
  507.                 // possiedono come soggetto referente un tipo di protocollo differente da quello di default.
  508.                 // in questo caso prendo il primo che trovo
  509.                 accordoPrimoAccesso = 0;
  510.             }

  511.            
  512.             // dopo il primo accesso le variabili della classe rimangono inizializzate
  513.             strutsBean.serviceBinding = null;
  514.             strutsBean.formatoSpecifica = null;
  515.            
  516.             String postBackElementName = apsHelper.getPostBackElementName();

  517.             // Controllo se ho modificato l'accordo, se si allora suggerisco il referente dell'accordo
  518.             AccordoServizioParteComuneSintetico as = null;
  519.             if(postBackElementName != null ){
  520.                 if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ACCORDO) ||
  521.                         postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROTOCOLLO)){
  522.                    
  523.                     if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROTOCOLLO)){
  524.                         strutsBean.accordo = null;
  525.                         strutsBean.versione = null;
  526.                         strutsBean.erogazioneAutenticazione = null;
  527.                         strutsBean.fruizioneAutenticazione = null;
  528.                         strutsBean.erogazioneAutorizzazione = null;
  529.                         strutsBean.fruizioneAutorizzazione = null;
  530.                        
  531.                         strutsBean.providerSoggettoFruitore = null;
  532.                     }
  533.                    
  534.                     strutsBean.erogazioneServizioApplicativoServerEnabled = false;
  535.                     strutsBean.url = null;
  536.                    
  537.                     if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ACCORDO) && strutsBean.tipoProtocollo!=null) {
  538.                         boolean showReferente = apcCore.isSupportatoSoggettoReferente(strutsBean.tipoProtocollo);
  539.                         if(showReferente) {
  540.                             boolean annullaProvider = true;
  541.                             if (!gestioneFruitori && strutsBean.accordo != null && !"".equals(strutsBean.accordo)) {
  542.                                 as = apcCore.getAccordoServizioSintetico(Long.parseLong(strutsBean.accordo));
  543.                                 if(as.getSoggettoReferente()!=null) {
  544.                                     Soggetto s = soggettiCore.getSoggettoRegistro(new IDSoggetto(as.getSoggettoReferente().getTipo(), as.getSoggettoReferente().getNome()));
  545.                                     if(pddCore.isPddEsterna(s.getPortaDominio())) {
  546.                                         annullaProvider = false;
  547.                                     }
  548.                                 }
  549.                             }
  550.                             if(annullaProvider) {
  551.                                 strutsBean.provider = null;
  552.                             }
  553.                         }
  554.                     }
  555.                     else {
  556.                         strutsBean.provider = null;
  557.                     }
  558.                    
  559.                     strutsBean.tiposervizio = null;
  560.                    
  561.                     // reset protocol properties
  562.                     apsHelper.deleteBinaryParameters(strutsBean.wsdlimpler,strutsBean.wsdlimplfru);
  563.                     apsHelper.deleteProtocolPropertiesBinaryParameters(strutsBean.wsdlimpler,strutsBean.wsdlimplfru);

  564.                     strutsBean.portType = null;
  565.                     strutsBean.nomeservizio = "";
  566.                 }  
  567.                
  568.                 if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PORT_TYPE)){
  569.                     strutsBean.nomeservizio = "";
  570.                     strutsBean.url = null;
  571.                     strutsBean.erogazioneServizioApplicativoServerEnabled = false;
  572.                 }
  573.                
  574.                 if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_EROGATORE)){
  575.                     strutsBean.erogazioneServizioApplicativoServerEnabled = false;
  576.                 }
  577.                
  578.                 if(postBackElementName.equalsIgnoreCase(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ABILITA_USO_APPLICATIVO_SERVER)){
  579.                     strutsBean.erogazioneServizioApplicativoServer = null;
  580.                 }
  581.             }

  582.             // Lista port-type associati all'accordo di servizio
  583.             boolean forceHttps = false;
  584.             boolean forceHttpsClient = false;
  585.             boolean forcePDND = false;
  586.             boolean forceOAuth = false;
  587.             if(as==null) {
  588.                 if (strutsBean.accordo != null && !"".equals(strutsBean.accordo)) {
  589.                     as = apcCore.getAccordoServizioSintetico(Long.parseLong(strutsBean.accordo));
  590.                 } else {
  591.                     strutsBean.accordo = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO;
  592.                     if (accordiList != null){
  593.                         if(accordiList.length == 1)
  594.                             as = apcCore.getAccordoServizioSintetico(Long.parseLong(accordiList[accordoPrimoAccesso]));
  595.                        
  596.                         if(as!=null)
  597.                             strutsBean.accordo = as.getId() + "";
  598.                     }
  599.                 }
  600.             }
  601.             if(as!=null){
  602.                 // salvo il soggetto referente
  603.                 soggettoReferente = new IDSoggetto(as.getSoggettoReferente().getTipo(), as.getSoggettoReferente().getNome());
  604.                 idReferente = as.getSoggettoReferente().getId();

  605.                 strutsBean.serviceBinding = apcCore.toMessageServiceBinding(as.getServiceBinding());
  606.                 strutsBean.formatoSpecifica = apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica());
  607.                

  608.                 accordoPrivato = as.getPrivato()!=null && as.getPrivato();
  609.                 uriAccordo = idAccordoFactory.getUriFromAccordo(as);

  610.                 List<PortTypeSintetico> portTypes = AccordiServizioParteSpecificaUtilities.getListaPortTypes(as, apsHelper);
  611.                
  612.                 if (!portTypes.isEmpty()) {
  613.                     ptList = new String[portTypes.size() + 1];
  614.                     ptList[0] = "-";
  615.                     int i = 1;
  616.                     for (Iterator<PortTypeSintetico> iterator = portTypes.iterator(); iterator.hasNext();) {
  617.                         PortTypeSintetico portType2 = iterator.next();
  618.                         ptList[i] = portType2.getNome();
  619.                         i++;
  620.                     }
  621.                 }

  622.                 if( apsCore.isShowCorrelazioneAsincronaInAccordi() &&
  623.                     strutsBean.portType != null && !"".equals(strutsBean.portType) && !"-".equals(strutsBean.portType)){
  624.                     PortTypeSintetico pt = null;
  625.                     for(int i=0; i<as.getPortType().size(); i++){
  626.                         if(strutsBean.portType.equals(as.getPortType().get(i).getNome())){
  627.                             pt = as.getPortType().get(i);
  628.                             break;
  629.                         }
  630.                     }
  631.                     boolean servizioCorrelato = false;
  632.                     if(pt!=null){
  633.                         for(int i=0; i<pt.getAzione().size(); i++){
  634.                             OperationSintetica op = pt.getAzione().get(i);
  635.                             if(op.getCorrelataServizio()!=null && !pt.getNome().equals(op.getCorrelataServizio()) && op.getCorrelata()!=null){
  636.                                 servizioCorrelato = true;
  637.                                 break;
  638.                             }
  639.                         }
  640.                     }
  641.                     if(servizioCorrelato){
  642.                         strutsBean.servcorr=Costanti.CHECK_BOX_ENABLED;
  643.                     }
  644.                     else{
  645.                         strutsBean.servcorr=Costanti.CHECK_BOX_DISABLED;
  646.                     }
  647.                 }
  648.                
  649.                 if(generaPortaDelegata && apsHelper.isProfiloModIPA(strutsBean.tipoProtocollo)) {
  650.                     forceHttps = apsHelper.forceHttpsProfiloModiPA();
  651.                    
  652.                     BooleanNullable forceHttpsClientWrapper = BooleanNullable.NULL();
  653.                     BooleanNullable forcePDNDWrapper = BooleanNullable.NULL();
  654.                     BooleanNullable forceOAuthWrapper = BooleanNullable.NULL();
  655.                    
  656.                     apsHelper.readModIConfiguration(forceHttpsClientWrapper, forcePDNDWrapper, forceOAuthWrapper,
  657.                             IDAccordoFactory.getInstance().getIDAccordoFromAccordo(as), strutsBean.portType,
  658.                             null);
  659.                    
  660.                     if(forceHttpsClientWrapper.getValue()!=null) {
  661.                         forceHttpsClient = forceHttpsClientWrapper.getValue().booleanValue();
  662.                     }
  663.                     if(forcePDNDWrapper.getValue()!=null) {
  664.                         forcePDND = forcePDNDWrapper.getValue().booleanValue();
  665.                     }
  666.                     if(forceOAuthWrapper.getValue()!=null) {
  667.                         forceOAuth = forceOAuthWrapper.getValue().booleanValue();
  668.                     }
  669.                 }

  670.             }

  671.             // Fix per bug che accadeva in modalita' standard quando si seleziona un servizio di un accordo operativo, poi si cambia idea e si seleziona un accordo bozza.
  672.             // lo stato del package rimaneva operativo.
  673.             if(strutsBean.statoPackage!=null && apsHelper.isModalitaStandard() &&
  674.                 apsHelper.isShowGestioneWorkflowStatoDocumenti() &&
  675.                 (StatiAccordo.operativo.toString().equals(strutsBean.statoPackage) || StatiAccordo.finale.toString().equals(strutsBean.statoPackage))
  676.                 &&
  677.                 (as!=null && as.getStatoPackage().equals(StatiAccordo.bozza.toString()))
  678.             ){
  679.                 strutsBean.statoPackage = StatiAccordo.bozza.toString();
  680.             }
  681.            
  682.             // Calcolo url presente nell'API
  683.             String urlAPI = apcCore.readEndpoint(as, strutsBean.portType, strutsBean.servcorr, strutsBean.wsdlimpler, strutsBean.wsdlimplfru);
  684.            
  685.             List<String> versioniProtocollo = apsCore.getVersioniProtocollo(strutsBean.tipoProtocollo);
  686.             List<String> tipiSoggettiCompatibiliAccordo = soggettiCore.getTipiSoggettiGestitiProtocollo(strutsBean.tipoProtocollo);
  687.             List<String> tipiServizioCompatibiliAccordo = apsCore.getTipiServiziGestitiProtocollo(strutsBean.tipoProtocollo,strutsBean.serviceBinding);
  688.             boolean erogazioneIsSupportatoAutenticazioneSoggetti = soggettiCore.isSupportatoAutenticazioneSoggetti(strutsBean.tipoProtocollo);

  689.             // calcolo soggetti compatibili con accordi
  690.             List<Soggetto> listSoggetti = null;
  691.             ConsoleSearch searchSoggetti = new ConsoleSearch(true);
  692.             searchSoggetti.addFilter(Liste.SOGGETTI, Filtri.FILTRO_PROTOCOLLO, strutsBean.tipoProtocollo);
  693.             boolean gestioneFruitoriSoggettiErogatoriEscludiSoggettoFruitore = false;
  694.             if(gestioneFruitori) {
  695.                 boolean filtraSoloEsterni = true;
  696.                 if(apsCore.isMultitenant() && apsCore.getMultitenantSoggettiFruizioni()!=null) {
  697.                     switch (apsCore.getMultitenantSoggettiFruizioni()) {
  698.                     case SOLO_SOGGETTI_ESTERNI:
  699.                         filtraSoloEsterni = true;
  700.                         break;
  701.                     case ESCLUDI_SOGGETTO_FRUITORE:
  702.                         filtraSoloEsterni = false;
  703.                         gestioneFruitoriSoggettiErogatoriEscludiSoggettoFruitore = true;
  704.                         break;
  705.                     case TUTTI:
  706.                         filtraSoloEsterni = false;
  707.                         break;
  708.                     }
  709.                 }
  710.                 if(filtraSoloEsterni) {
  711.                     searchSoggetti.addFilter(Liste.SOGGETTI, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
  712.                 }
  713.             }
  714.             if(gestioneErogatori) {
  715.                 searchSoggetti.addFilter(Liste.SOGGETTI, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
  716.                 if(apsHelper.isSoggettoMultitenantSelezionato()) {
  717.                     IDSoggetto idSoggettoSelezionato = soggettiCore.convertSoggettoSelezionatoToID(apsHelper.getSoggettoMultitenantSelezionato());
  718.                     listSoggetti = new ArrayList<>();
  719.                     try {
  720.                         listSoggetti.add(soggettiCore.getSoggettoRegistro(idSoggettoSelezionato));
  721.                     }catch(DriverRegistroServiziNotFound notFound) {
  722.                         // ignore
  723.                     }
  724.                 }
  725.             }
  726.             if(listSoggetti==null) {
  727.                 if(apsCore.isVisioneOggettiGlobale(userLogin)){
  728.                     listSoggetti = soggettiCore.soggettiRegistroList(null, searchSoggetti);
  729.                 }else{
  730.                     listSoggetti = soggettiCore.soggettiRegistroList(userLogin, searchSoggetti);
  731.                 }
  732.             }
  733.            
  734.             if(listSoggetti==null || listSoggetti.isEmpty()) {
  735.                 if(gestioneFruitori) {
  736.                     pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTO_EROGATORI_DI_API, Costanti.MESSAGE_TYPE_INFO);
  737.                 }
  738.                 else {
  739.                     pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTI, Costanti.MESSAGE_TYPE_INFO);
  740.                 }
  741.                
  742.                 pd.disableEditMode();

  743.                 List<DataElement> dati = new ArrayList<>();

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

  745.                 pd.setDati(dati);

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

  747.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  748.                         ForwardParams.ADD());
  749.             }

  750.             boolean existsAPCCompatibili = false;
  751.             if (!listSoggetti.isEmpty()) {
  752.                 List<String> soggettiListTmp = new ArrayList<>();
  753.                 List<String> soggettiListLabelTmp = new ArrayList<>();
  754.                 for (Soggetto soggetto : listSoggetti) {
  755.                     soggettiListTmp.add(soggetto.getId().toString());
  756.                     soggettiListLabelTmp.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo() , soggetto.getNome()));
  757.                 }

  758.                 existsAPCCompatibili = listaIdAPI!=null && !listaIdAPI.isEmpty();

  759.                 if(!soggettiListTmp.isEmpty() && existsAPCCompatibili){
  760.                     soggettiList = soggettiListTmp.toArray(new String[1]);
  761.                     soggettiListLabel = soggettiListLabelTmp.toArray(new String[1]);
  762.                 }
  763.                 else{
  764.                     if(listaIdAPI.isEmpty()){
  765.                         pd.setMessage("Non risultano registrate API", Costanti.MESSAGE_TYPE_INFO);
  766.                         pd.disableEditMode();

  767.                         List<DataElement> dati = new ArrayList<>();

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

  769.                         pd.setDati(dati);

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

  771.                         return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  772.                                 ForwardParams.ADD());
  773.                     }

  774.                     // refresh di tutte le infromazioni
  775.                     versioniProtocollo = apsCore.getVersioniProtocollo(strutsBean.tipoProtocollo);
  776.                     tipiSoggettiCompatibiliAccordo = soggettiCore.getTipiSoggettiGestitiProtocollo(strutsBean.tipoProtocollo);
  777.                     tipiServizioCompatibiliAccordo = apsCore.getTipiServiziGestitiProtocollo(strutsBean.tipoProtocollo,strutsBean.serviceBinding);

  778.                     searchSoggetti = new ConsoleSearch(true);
  779.                     searchSoggetti.addFilter(Liste.SOGGETTI, Filtri.FILTRO_PROTOCOLLO, strutsBean.tipoProtocollo);
  780.                     if(apsCore.isVisioneOggettiGlobale(userLogin)){
  781.                         listSoggetti = soggettiCore.soggettiRegistroList(null, searchSoggetti);
  782.                     }else{
  783.                         listSoggetti = soggettiCore.soggettiRegistroList(userLogin, searchSoggetti);
  784.                     }
  785.                    
  786.                     for (Soggetto soggetto : listSoggetti) {
  787.                         soggettiListTmp.add(soggetto.getId().toString());
  788.                         soggettiListLabelTmp.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo() , soggetto.getNome()));
  789.                     }
  790.                     soggettiList = soggettiListTmp.toArray(new String[1]);
  791.                     soggettiListLabel = soggettiListLabelTmp.toArray(new String[1]);

  792.                 }
  793.             }
  794.            
  795.            
  796.            
  797.            

  798.             // calcolo soggetti fruitori
  799.             List<Soggetto> listFruitori = null;
  800.             if(gestioneFruitori) {
  801.                
  802.                 if(apsHelper.isSoggettoMultitenantSelezionato()) {
  803.                     IDSoggetto idSoggettoSelezionato = soggettiCore.convertSoggettoSelezionatoToID(apsHelper.getSoggettoMultitenantSelezionato());
  804.                     listFruitori = new ArrayList<>();
  805.                     try {
  806.                         listFruitori.add(soggettiCore.getSoggettoRegistro(idSoggettoSelezionato));
  807.                     }catch(DriverRegistroServiziNotFound notFound) {
  808.                         // ignore
  809.                     }
  810.                 }
  811.                 else {
  812.                     ConsoleSearch searchSoggettiFruitori = new ConsoleSearch(true);
  813.                     searchSoggettiFruitori.addFilter(Liste.SOGGETTI, Filtri.FILTRO_PROTOCOLLO, strutsBean.tipoProtocollo);
  814.                     searchSoggettiFruitori.addFilter(Liste.SOGGETTI, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE);
  815.                     if(apsCore.isVisioneOggettiGlobale(userLogin)){
  816.                         listFruitori = soggettiCore.soggettiRegistroList(null, searchSoggettiFruitori);
  817.                     }else{
  818.                         listFruitori = soggettiCore.soggettiRegistroList(userLogin, searchSoggettiFruitori);
  819.                     }
  820.                 }
  821.                
  822.                 if (!listFruitori.isEmpty()) {
  823.                     List<String> soggettiListTmp = new ArrayList<>();
  824.                     List<String> soggettiListLabelTmp = new ArrayList<>();
  825.                     for (Soggetto soggetto : listFruitori) {
  826.                         soggettiListTmp.add(soggetto.getId().toString());
  827.                         soggettiListLabelTmp.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo() , soggetto.getNome()));
  828.                     }
  829.    
  830.                     if(!soggettiListTmp.isEmpty()){
  831.                         soggettiFruitoriList = soggettiListTmp.toArray(new String[1]);
  832.                         soggettiFruitoriListLabel = soggettiListLabelTmp.toArray(new String[1]);
  833.                     }
  834.                     else {
  835.                         pd.setMessage("Non esistono soggetti nel dominio interno", Costanti.MESSAGE_TYPE_INFO);
  836.                         pd.disableEditMode();

  837.                         List<DataElement> dati = new ArrayList<>();

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

  839.                         pd.setDati(dati);

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

  841.                         return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  842.                                 ForwardParams.ADD());
  843.                     }
  844.                 }
  845.             }
  846.            
  847.             if(gestioneFruitori) {
  848.                 if ((strutsBean.providerSoggettoFruitore != null) && !strutsBean.providerSoggettoFruitore.equals("")) {
  849.                     long idFruitore = Long.parseLong(strutsBean.providerSoggettoFruitore);
  850.                     Soggetto soggetto = soggettiCore.getSoggettoRegistro(idFruitore);
  851.                     strutsBean.nomeSoggettoFruitore = soggetto.getNome();
  852.                     strutsBean.tipoSoggettoFruitore = soggetto.getTipo();
  853.                 }
  854.                 else {
  855.                     Soggetto soggetto = listFruitori.get(0);
  856.                     strutsBean.providerSoggettoFruitore = soggetto.getId()+"";
  857.                     strutsBean.nomeSoggettoFruitore = soggetto.getNome();
  858.                     strutsBean.tipoSoggettoFruitore = soggetto.getTipo();
  859.                 }
  860.             }
  861.            
  862.             if(gestioneFruitoriSoggettiErogatoriEscludiSoggettoFruitore) {
  863.                 boolean found = false;
  864.                 for (int i = 0; i < listSoggetti.size(); i++) {
  865.                     Soggetto soggettoCheck = listSoggetti.get(i);
  866.                     if(soggettoCheck.getTipo().equals(strutsBean.tipoSoggettoFruitore) && soggettoCheck.getNome().equals(strutsBean.nomeSoggettoFruitore)) {
  867.                         listSoggetti.remove(i);
  868.                         found = true;
  869.                         break;
  870.                     }
  871.                 }
  872.                 if(found) {
  873.                     if(listSoggetti.isEmpty()) {
  874.                         if(gestioneFruitori) {
  875.                             pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTO_EROGATORI_DI_API, Costanti.MESSAGE_TYPE_INFO);
  876.                         }
  877.                         else {
  878.                             pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_NON_ESISTONO_SOGGETTI, Costanti.MESSAGE_TYPE_INFO);
  879.                         }
  880.                        
  881.                         pd.disableEditMode();
  882.    
  883.                         List<DataElement> dati = new ArrayList<>();
  884.    
  885.                         dati.add(ServletUtils.getDataElementForEditModeFinished());
  886.    
  887.                         pd.setDati(dati);
  888.    
  889.                         ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  890.    
  891.                         return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  892.                                 ForwardParams.ADD());
  893.                     }
  894.                    
  895.                     // aggiorno soggetti
  896.                     List<String> soggettiListTmp = new ArrayList<>();
  897.                     List<String> soggettiListLabelTmp = new ArrayList<>();
  898.                     for (Soggetto soggetto : listSoggetti) {
  899.                         soggettiListTmp.add(soggetto.getId().toString());
  900.                         soggettiListLabelTmp.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo() , soggetto.getNome()));
  901.                     }
  902.                     soggettiList = soggettiListTmp.toArray(new String[1]);
  903.                     soggettiListLabel = soggettiListLabelTmp.toArray(new String[1]);
  904.    
  905.                 }
  906.             }
  907.            
  908.            
  909.            

  910.             if ((strutsBean.provider != null) && !strutsBean.provider.equals("")) {
  911.                 long idErogatore = Long.parseLong(strutsBean.provider);
  912.                 Soggetto soggetto = soggettiCore.getSoggettoRegistro(idErogatore);
  913.                 strutsBean.nomeSoggettoErogatore = soggetto.getNome();
  914.                 strutsBean.tipoSoggettoErogatore = soggetto.getTipo();
  915.             } else {
  916.                 if(soggettoReferente != null ){
  917.                     for (Soggetto soggettoCheck : listSoggetti) {
  918.                         if(soggettoCheck.getTipo().equals(soggettoReferente.getTipo()) && soggettoCheck.getNome().equals(soggettoReferente.getNome())) {
  919.                             strutsBean.provider = idReferente + "";
  920.                             strutsBean.nomeSoggettoErogatore = soggettoReferente.getNome();
  921.                             strutsBean.tipoSoggettoErogatore = soggettoReferente.getTipo();
  922.                             break;
  923.                         }
  924.                     }
  925.                 }
  926.                 // Se ancora non l'ho trovato prendo il primo della lista nel caso di gestione erogazione
  927.                 if (
  928.                         ((strutsBean.provider == null) || strutsBean.provider.equals(""))
  929.                         &&
  930.                         ( (gestioneErogatori || gestioneFruitori) && listSoggetti!=null && !listSoggetti.isEmpty())
  931.                     ){
  932.                     Soggetto soggetto = listSoggetti.get(0);
  933.                     strutsBean.provider = soggetto.getId() + "";
  934.                     strutsBean.nomeSoggettoErogatore = soggetto.getNome();
  935.                     strutsBean.tipoSoggettoErogatore = soggetto.getTipo();
  936.                 }
  937.             }
  938.            
  939.            
  940.             if(strutsBean.tiposervizio == null){
  941.                 strutsBean.tiposervizio = apsCore.getTipoServizioDefaultProtocollo(strutsBean.tipoProtocollo,strutsBean.serviceBinding);
  942.             }


  943.             // La lista degli SA viene filtrata per tipo se sono abilitati gli applicativiServer.
  944.             String tipoSA = (visualizzaSezioneApplicativiServerEnabled && gestioneErogatori) ? ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER : null;
  945.            
  946.             // Lista dei servizi applicativi per la creazione automatica
  947.             List<IDServizioApplicativoDB> listaIdSA = null;
  948.             if ((strutsBean.provider != null) && !strutsBean.provider.equals("")) {
  949.                 long idErogatore = Long.parseLong(strutsBean.provider);
  950.                
  951.                 // I servizi applicativi da visualizzare sono quelli che hanno
  952.                 // -Integration Manager (getMessage abilitato)
  953.                 // -connettore != disabilitato
  954.                 listaIdSA = saCore.getIdServiziApplicativiWithIdErogatore(idErogatore, tipoSA, true, true);

  955.                 if(tipoSA == null) {
  956.                     List<IDServizioApplicativoDB> newListaIdSA = new ArrayList<>();
  957.                     IDServizioApplicativoDB idSA = new IDServizioApplicativoDB();
  958.                     idSA.setNome("-"); // elemento nullo di default
  959.                     idSA.setIdSoggettoProprietario(new IDSoggetto("-", "-"));
  960.                     newListaIdSA.add(idSA);
  961.                     if(listaIdSA!=null && !listaIdSA.isEmpty()) {
  962.                         newListaIdSA.addAll(listaIdSA);
  963.                     }
  964.                     listaIdSA = newListaIdSA;
  965.                 }
  966.             }
  967.             String [] saSoggetti = ServiziApplicativiHelper.toArray(listaIdSA);
  968.            
  969.            
  970.             // ServiziApplicativi
  971.            
  972.             boolean escludiSAServer = saCore.isApplicativiServerEnabled(apsHelper);
  973.             String filtroTipoSA = escludiSAServer ? ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT : null;
  974.                        
  975.             List<String> saFruitoriList = new ArrayList<>();
  976.             saFruitoriList.add("-");
  977.             IDSoggetto idSoggettoFruitoreSelected = null;
  978.             if(gestioneFruitori && strutsBean.nomeSoggettoFruitore!=null && strutsBean.tipoSoggettoFruitore!=null){
  979.                    
  980.                 idSoggettoFruitoreSelected = new IDSoggetto(strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore);
  981.                
  982.                 String auth = strutsBean.fruizioneAutenticazione;
  983.                 if(auth==null || "".equals(auth)){
  984.                     auth = apsCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
  985.                 }
  986.                
  987.                 org.openspcoop2.core.config.constants.CredenzialeTipo tipoAutenticazione = org.openspcoop2.core.config.constants.CredenzialeTipo.toEnumConstant(auth);
  988.                 Boolean appId = null;
  989.                 if(org.openspcoop2.core.config.constants.CredenzialeTipo.APIKEY.equals(tipoAutenticazione)) {
  990.                     ApiKeyState apiKeyState =  new ApiKeyState(null);
  991.                     appId = apiKeyState.appIdSelected;
  992.                 }
  993.                 boolean bothSslAndToken = false;
  994.                 String tokenPolicy = null;
  995.                 boolean tokenPolicyOR = false;
  996.                
  997.                 List<IDServizioApplicativoDB> oldSilList = null;
  998.                 if(apsCore.isVisioneOggettiGlobale(userLogin)){
  999.                     oldSilList = saCore.soggettiServizioApplicativoList(idSoggettoFruitoreSelected,null,
  1000.                             tipoAutenticazione, appId, filtroTipoSA,
  1001.                             bothSslAndToken, tokenPolicy, tokenPolicyOR);
  1002.                 }
  1003.                 else {
  1004.                     oldSilList = saCore.soggettiServizioApplicativoList(idSoggettoFruitoreSelected,userLogin,
  1005.                             tipoAutenticazione, appId, filtroTipoSA,
  1006.                             bothSslAndToken, tokenPolicy, tokenPolicyOR);
  1007.                 }
  1008.                 if(oldSilList!=null && !oldSilList.isEmpty()){
  1009.                     for (int i = 0; i < oldSilList.size(); i++) {
  1010.                         saFruitoriList.add(oldSilList.get(i).getNome());        
  1011.                     }
  1012.                 }

  1013.             }
  1014.            
  1015.             List<String> soggettiAutenticati = new ArrayList<>();
  1016.             List<String> soggettiAutenticatiLabel = new ArrayList<>();
  1017.             // lista soggetti autenticati per la creazione automatica
  1018.             CredenzialeTipo credenziale =  null;
  1019.             Boolean appIdSoggetti = null;
  1020.             if((strutsBean.erogazioneAutenticazione !=null && !"".equals(strutsBean.erogazioneAutenticazione)) && erogazioneIsSupportatoAutenticazioneSoggetti) {
  1021.                 TipoAutenticazione tipoAutenticazione = TipoAutenticazione.toEnumConstant(strutsBean.erogazioneAutenticazione);
  1022.                 credenziale = !tipoAutenticazione.equals(TipoAutenticazione.DISABILITATO) ? CredenzialeTipo.toEnumConstant(strutsBean.erogazioneAutenticazione) : null;
  1023.                 if(CredenzialeTipo.APIKEY.equals(credenziale)) {
  1024.                     ApiKeyState apiKeyState =  new ApiKeyState(null);
  1025.                     appIdSoggetti = apiKeyState.appIdSelected;
  1026.                 }
  1027.             }
  1028.            
  1029.             List<IDSoggettoDB> listSoggettiCompatibili = null;
  1030.              
  1031.             if(apsCore.isVisioneOggettiGlobale(userLogin)){
  1032.                 listSoggettiCompatibili = soggettiCore.getSoggettiFromTipoAutenticazione(tipiSoggettiCompatibiliAccordo, null, credenziale, appIdSoggetti, pddTipologiaSoggettoAutenticati );
  1033.             }else{
  1034.                 listSoggettiCompatibili = soggettiCore.getSoggettiFromTipoAutenticazione(tipiSoggettiCompatibiliAccordo, userLogin, credenziale, appIdSoggetti, pddTipologiaSoggettoAutenticati);
  1035.             }
  1036.            
  1037.             if(listSoggettiCompatibili != null && !listSoggettiCompatibili.isEmpty() ) {
  1038.                
  1039.                 soggettiAutenticati.add("-"); // elemento nullo di default
  1040.                 soggettiAutenticatiLabel.add("-");
  1041.                 for (IDSoggettoDB soggetto : listSoggettiCompatibili) {
  1042.                     soggettiAutenticati.add(soggetto.getTipo() + "/"+ soggetto.getNome());
  1043.                     soggettiAutenticatiLabel.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo(), soggetto.getNome()));
  1044.                 }
  1045.             }
  1046.            

  1047.             // Controllo se il soggetto erogare appartiene ad una pdd di tipo operativo.
  1048.             if(strutsBean.tipoSoggettoErogatore!=null && !"".equals(strutsBean.tipoSoggettoErogatore)
  1049.                     &&  strutsBean.nomeSoggettoErogatore!=null && !"".equals(strutsBean.nomeSoggettoErogatore)){
  1050.                 IDSoggetto idSoggettoEr = new IDSoggetto(strutsBean.tipoSoggettoErogatore, strutsBean.nomeSoggettoErogatore);
  1051.                 if(!AccordiServizioParteSpecificaUtilities.isSoggettoOperativo(idSoggettoEr, apsCore)) {
  1052.                     generaPortaApplicativa = false;
  1053.                 }
  1054.             }
  1055.            
  1056.             strutsBean.protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(strutsBean.tipoProtocollo);
  1057.             strutsBean.consoleDynamicConfiguration =  strutsBean.protocolFactory.createDynamicConfigurationConsole();
  1058.             strutsBean.registryReader = soggettiCore.getRegistryReader(strutsBean.protocolFactory);
  1059.             strutsBean.configRegistryReader = soggettiCore.getConfigIntegrationReader(strutsBean.protocolFactory);
  1060.                        
  1061.             // ID Accordo, i dati del servizio sono null, è presente solamente l'id dell'API
  1062.             IDServizio idAps = null;
  1063.             if ((strutsBean.provider != null) && !strutsBean.provider.equals("")) {
  1064.                 long idErogatore = Long.parseLong(strutsBean.provider);
  1065.                 IDSoggetto idSoggettoErogatore = null;
  1066.                 if(idErogatore>0) {
  1067.                     idSoggettoErogatore = soggettiCore.getIdSoggettoRegistro(idErogatore);
  1068.                 }
  1069.                 if(idSoggettoErogatore!=null) {
  1070.                     idAps = IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(null, null, idSoggettoErogatore.getTipo(), idSoggettoErogatore.getNome(), -1);
  1071.                 }
  1072.             }
  1073.             if(idAps==null) {
  1074.                 idAps = new IDServizio();
  1075.             }
  1076.             if(as!=null) {
  1077.                 idAps.setUriAccordoServizioParteComune(idAccordoFactory.getUriFromAccordo(as));
  1078.             }
  1079.             idAps.setPortType(strutsBean.portType);
  1080.             IDFruizione idFruizione = null;
  1081.             if(idSoggettoFruitoreSelected!=null) {
  1082.                 idFruizione = new IDFruizione();
  1083.                 idFruizione.setIdServizio(idAps);
  1084.                 idFruizione.setIdFruitore(idSoggettoFruitoreSelected);
  1085.             }
  1086.             if(gestioneFruitori) {
  1087.                 strutsBean.consoleConfiguration = strutsBean.consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleOperationType, apsHelper,
  1088.                         strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1089.             }
  1090.             else {
  1091.                 strutsBean.consoleConfiguration = strutsBean.consoleDynamicConfiguration.getDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleOperationType, apsHelper,
  1092.                         strutsBean.registryReader, strutsBean.configRegistryReader, idAps );
  1093.             }
  1094.             strutsBean.protocolProperties = apsHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);
  1095.            
  1096.             // Token Policy
  1097.             List<GenericProperties> gestorePolicyTokenList = confCore.gestorePolicyTokenList(null, ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_GESTIONE_POLICY_TOKEN, null);
  1098.             String [] policyLabels = new String[gestorePolicyTokenList.size() + 1];
  1099.             String [] policyValues = new String[gestorePolicyTokenList.size() + 1];
  1100.            
  1101.             policyLabels[0] = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
  1102.             policyValues[0] = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
  1103.            
  1104.             for (int i = 0; i < gestorePolicyTokenList.size(); i++) {
  1105.             GenericProperties genericProperties = gestorePolicyTokenList.get(i);
  1106.                 policyLabels[(i+1)] = genericProperties.getNome();
  1107.                 policyValues[(i+1)] = genericProperties.getNome();
  1108.             }
  1109.            
  1110.             // AttributeAuthority
  1111.             List<GenericProperties> attributeAuthorityList = confCore.gestorePolicyTokenList(null, ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_ATTRIBUTE_AUTHORITY, null);
  1112.             String [] attributeAuthorityLabels = new String[attributeAuthorityList.size()];
  1113.             String [] attributeAuthorityValues = new String[attributeAuthorityList.size()];
  1114.             for (int i = 0; i < attributeAuthorityList.size(); i++) {
  1115.                 GenericProperties genericProperties = attributeAuthorityList.get(i);
  1116.                 attributeAuthorityLabels[i] = genericProperties.getNome();
  1117.                 attributeAuthorityValues[i] = genericProperties.getNome();
  1118.             }
  1119.            
  1120.             String servletList = null;
  1121.             String labelList = null;
  1122.            
  1123.             Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session, request).getValue();
  1124.             if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  1125.                 servletList = ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST;
  1126.                 if(gestioneFruitori) {
  1127.                     labelList = ErogazioniCostanti.LABEL_ASPS_FRUIZIONI;
  1128.                 }
  1129.                 else {
  1130.                     labelList = ErogazioniCostanti.LABEL_ASPS_EROGAZIONI;
  1131.                 }
  1132.             } else {
  1133.                 servletList = AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_LIST;
  1134.                 if(gestioneFruitori) {
  1135.                     labelList = AccordiServizioParteSpecificaCostanti.LABEL_APS_FRUITORI;
  1136.                 }
  1137.                 else {
  1138.                     labelList = AccordiServizioParteSpecificaCostanti.LABEL_APS;
  1139.                 }
  1140.             }
  1141.            
  1142.             String canaleAPI = as != null ? as.getCanale() : null;  

  1143.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento dati
  1144.             if(ServletUtils.isEditModeInProgress(strutsBean.editMode)){
  1145.                 // setto la barra del titolo
  1146.                 ServletUtils.setPageDataTitle_ServletAdd(pd, labelList,servletList);
  1147.                

  1148.                 if(apsHelper.isShowGestioneWorkflowStatoDocumenti()){
  1149.                     if(strutsBean.nomeservizio==null || "".equals(strutsBean.nomeservizio)){
  1150.                         strutsBean.statoPackage=StatiAccordo.bozza.toString();
  1151.                     }

  1152.                     // Se l'accordo Comune che si riferisce ha stato operativo o finale modifico lo stato in operativo
  1153.                     // Per visualizzare immediatamente all'utente
  1154.                     if(as!=null &&
  1155.                             (as.getStatoPackage().equals(StatiAccordo.operativo.toString()) || as.getStatoPackage().equals(StatiAccordo.finale.toString()))
  1156.                             ){
  1157.                         strutsBean.statoPackage = StatiAccordo.operativo.toString();
  1158.                     }

  1159.                 }else{
  1160.                     strutsBean.statoPackage=StatiAccordo.finale.toString();
  1161.                 }

  1162.                 if (strutsBean.nomeservizio == null) {
  1163.                     strutsBean.nomeservizio = "";
  1164.                     strutsBean.servcorr = "";
  1165.                     strutsBean.tipoconn = "";
  1166.                     strutsBean.url = "";
  1167.                     strutsBean.nome = "";
  1168.                     strutsBean.tipo = ConnettoriCostanti.TIPI_CODE_JMS[0];
  1169.                     strutsBean.user = "";
  1170.                     strutsBean.password = "";
  1171.                     strutsBean.initcont = "";
  1172.                     strutsBean.urlpgk = "";
  1173.                     strutsBean.provurl = "";
  1174.                     strutsBean.connfact = "";
  1175.                     strutsBean.sendas = ConnettoriCostanti.TIPO_SEND_AS[0];
  1176.                     strutsBean.profilo = "-";
  1177.                     if(ServiceBinding.SOAP.equals(strutsBean.serviceBinding)) {
  1178.                         if(ptList!=null && ptList.length==2){
  1179.                             strutsBean.portType = ptList[1]; // al posto 0 è presente '-'
  1180.                             strutsBean.nomeservizio = strutsBean.portType;
  1181.                         }
  1182.                         else {
  1183.                             strutsBean.portType = "-";
  1184.                         }
  1185.                     }else {
  1186.                         strutsBean.portType = "-";
  1187.                     }
  1188.                     strutsBean.descrizione = "";
  1189.                     strutsBean.httpsurl = "";
  1190.                     strutsBean.httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  1191.                     strutsBean.httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  1192.                     strutsBean.httpshostverify = true;
  1193.                     strutsBean.httpsTrustVerifyCert = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS;
  1194.                     strutsBean.httpspath = "";
  1195.                     strutsBean.httpstipo = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TIPOLOGIA_KEYSTORE_TYPE;
  1196.                     strutsBean.httpspwd = "";
  1197.                     strutsBean.httpsstato = false;
  1198.                     strutsBean.httpskeystore = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_DEFAULT;
  1199.                     strutsBean.httpspwdprivatekeytrust = "";
  1200.                     strutsBean.httpspathkey = "";
  1201.                     strutsBean.httpstipokey =ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TIPOLOGIA_KEYSTORE_TYPE;
  1202.                     strutsBean.httpspwdkey = "";
  1203.                     strutsBean.httpspwdprivatekey = "";
  1204.                     strutsBean.versione="1";
  1205.                     strutsBean.canaleStato = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CANALE_STATO_DEFAULT;
  1206.                     strutsBean.canale = "";
  1207.                 }
  1208.                
  1209.                 if(strutsBean.endpointtype==null) {
  1210.                     if(!apsHelper.isModalitaCompleta()) {
  1211.                         strutsBean.endpointtype = TipiConnettore.HTTP.getNome();
  1212.                     }
  1213.                     else {
  1214.                         strutsBean.endpointtype = AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_DISABILITATO;
  1215.                     }
  1216.                 }
  1217.                
  1218.                 if(strutsBean.serviceBinding != null) {
  1219.                     switch (strutsBean.serviceBinding) {
  1220.                         case REST:
  1221.                             if(strutsBean.nomeservizio==null || "".equals(strutsBean.nomeservizio)){
  1222.                                 strutsBean.nomeservizio = as.getNome();
  1223.                             }
  1224.                            
  1225.                             break;
  1226.                         case SOAP:
  1227.                         default:
  1228.                             if(strutsBean.portType!=null && !"".equals(strutsBean.portType) && !"-".equals(strutsBean.portType)){
  1229.            
  1230.                                 boolean ptValid = true;
  1231.            
  1232.                                 if(ptList!=null && ptList.length>0){
  1233.                                     // controllo che l'attuale port Type sia tra quelli presenti nell'accordo.
  1234.                                     boolean found = false;
  1235.                                     for (String portType : ptList) {
  1236.                                         if(portType.equals(strutsBean.portType)){
  1237.                                             found = true;
  1238.                                             break;
  1239.                                         }
  1240.                                     }
  1241.                                     if(!found){
  1242.                                         ptValid = false;
  1243.                                     }
  1244.            
  1245.                                 }
  1246.            
  1247.                                 if(ptValid){
  1248.            
  1249.                                     if(
  1250.                                             (strutsBean.nomeservizio==null || "".equals(strutsBean.nomeservizio))
  1251.                                             ||
  1252.                                             (strutsBean.nomeservizio.equals(strutsBean.oldPortType))
  1253.                                     ){
  1254.                                         strutsBean.nomeservizio = strutsBean.portType;
  1255.                                     }
  1256.            
  1257.                                     strutsBean.oldPortType = strutsBean.portType;
  1258.            
  1259.                                 }
  1260.                                 else{
  1261.            
  1262.                                     strutsBean.nomeservizio = null;
  1263.                                     strutsBean.portType = null;
  1264.                                     strutsBean.oldPortType = null;
  1265.            
  1266.                                 }
  1267.                             }  else {
  1268.                                 if(ptList ==null || ptList.length < 1){
  1269.                                     strutsBean.nomeservizio = as.getNome();
  1270.                                 }
  1271.                                 else if(ptList!=null && ptList.length==2){
  1272.                                     strutsBean.portType = ptList[1]; // al posto 0 è presente '-'
  1273.                                     strutsBean.nomeservizio = strutsBean.portType;
  1274.                                 }
  1275.                             }
  1276.            
  1277.                        
  1278.                         break;
  1279.                     }
  1280.                 }
  1281.                
  1282.                 if(strutsBean.erogazioneServizioApplicativoServer==null)
  1283.                     strutsBean.erogazioneServizioApplicativoServer = "";

  1284.                 if(strutsBean.erogazioneRuolo==null || "".equals(strutsBean.erogazioneRuolo))
  1285.                     strutsBean.erogazioneRuolo = "-";
  1286.                 if(strutsBean.erogazioneAutenticazione==null || "".equals(strutsBean.erogazioneAutenticazione)) {
  1287.                     strutsBean.erogazioneAutenticazione = apsCore.getAutenticazione_generazioneAutomaticaPorteApplicative();
  1288.                    
  1289.                     soggettiAutenticati = new ArrayList<>();
  1290.                     soggettiAutenticatiLabel = new ArrayList<>();
  1291.                     if(erogazioneIsSupportatoAutenticazioneSoggetti) {
  1292.                         TipoAutenticazione tipoAutenticazione = TipoAutenticazione.toEnumConstant(strutsBean.erogazioneAutenticazione);
  1293.                         credenziale = !tipoAutenticazione.equals(TipoAutenticazione.DISABILITATO) ? CredenzialeTipo.toEnumConstant(strutsBean.erogazioneAutenticazione) : null;
  1294.                     }
  1295.                      
  1296.                     if(apsCore.isVisioneOggettiGlobale(userLogin)){
  1297.                         listSoggettiCompatibili = soggettiCore.getSoggettiFromTipoAutenticazione(tipiSoggettiCompatibiliAccordo, null, credenziale, appIdSoggetti, pddTipologiaSoggettoAutenticati );
  1298.                     }else{
  1299.                         listSoggettiCompatibili = soggettiCore.getSoggettiFromTipoAutenticazione(tipiSoggettiCompatibiliAccordo, userLogin, credenziale, appIdSoggetti, pddTipologiaSoggettoAutenticati);
  1300.                     }
  1301.                    
  1302.                     if(listSoggettiCompatibili != null && !listSoggettiCompatibili.isEmpty() ) {
  1303.                         soggettiAutenticati.add("-"); // elemento nullo di default
  1304.                         soggettiAutenticatiLabel.add("-");
  1305.                         for (IDSoggettoDB soggetto : listSoggettiCompatibili) {
  1306.                             soggettiAutenticati.add(soggetto.getTipo() + "/"+ soggetto.getNome());
  1307.                             soggettiAutenticatiLabel.add(apsHelper.getLabelNomeSoggetto(strutsBean.tipoProtocollo, soggetto.getTipo(), soggetto.getNome()));
  1308.                         }
  1309.                     }
  1310.                    
  1311.                 }
  1312.                 if(strutsBean.erogazioneAutorizzazione==null || "".equals(strutsBean.erogazioneAutorizzazione)){
  1313.                     String tipoAutorizzazione = apsCore.getAutorizzazione_generazioneAutomaticaPorteApplicative();
  1314.                     strutsBean.erogazioneAutorizzazione = AutorizzazioneUtilities.convertToStato(tipoAutorizzazione);
  1315.                     if(TipoAutorizzazione.isAuthenticationRequired(tipoAutorizzazione))
  1316.                         strutsBean.erogazioneAutorizzazioneAutenticati = Costanti.CHECK_BOX_ENABLED;
  1317.                     if(TipoAutorizzazione.isRolesRequired(tipoAutorizzazione))
  1318.                         strutsBean.erogazioneAutorizzazioneRuoli = Costanti.CHECK_BOX_ENABLED;
  1319.                     strutsBean.erogazioneAutorizzazioneRuoliTipologia = AutorizzazioneUtilities.convertToRuoloTipologia(tipoAutorizzazione).getValue();
  1320.                 }
  1321.                
  1322.                 if(gestioneFruitori) {
  1323.                     if(strutsBean.fruizioneServizioApplicativo==null || "".equals(strutsBean.fruizioneServizioApplicativo))
  1324.                         strutsBean.fruizioneServizioApplicativo = "-";
  1325.                     if(strutsBean.fruizioneRuolo==null || "".equals(strutsBean.fruizioneRuolo))
  1326.                         strutsBean.fruizioneRuolo = "-";
  1327.                     if(strutsBean.fruizioneAutenticazione==null || "".equals(strutsBean.fruizioneAutenticazione))
  1328.                         strutsBean.fruizioneAutenticazione = apsCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
  1329.                     if(strutsBean.fruizioneAutorizzazione==null || "".equals(strutsBean.fruizioneAutorizzazione)){
  1330.                         String tipoAutorizzazione = apsCore.getAutorizzazione_generazioneAutomaticaPorteDelegate();
  1331.                         strutsBean.fruizioneAutorizzazione = AutorizzazioneUtilities.convertToStato(tipoAutorizzazione);
  1332.                         if(TipoAutorizzazione.isAuthenticationRequired(tipoAutorizzazione))
  1333.                             strutsBean.fruizioneAutorizzazioneAutenticati = Costanti.CHECK_BOX_ENABLED;
  1334.                         if(TipoAutorizzazione.isRolesRequired(tipoAutorizzazione))
  1335.                             strutsBean.fruizioneAutorizzazioneRuoli = Costanti.CHECK_BOX_ENABLED;
  1336.                         strutsBean.fruizioneAutorizzazioneRuoliTipologia = AutorizzazioneUtilities.convertToRuoloTipologia(tipoAutorizzazione).getValue();
  1337.                     }
  1338.                 }
  1339.                
  1340.                 // default
  1341.                 if(strutsBean.httpsalgoritmo==null || "".equals(strutsBean.httpsalgoritmo)){
  1342.                     strutsBean.httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  1343.                 }
  1344.                 if(strutsBean.httpsalgoritmokey==null || "".equals(strutsBean.httpsalgoritmokey)){
  1345.                     strutsBean.httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  1346.                 }
  1347.                 if(strutsBean.httpstipologia==null || "".equals(strutsBean.httpstipologia)){
  1348.                     strutsBean.httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  1349.                 }
  1350.                 if(strutsBean.httpshostverifyS==null || "".equals(strutsBean.httpshostverifyS)){
  1351.                     strutsBean.httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  1352.                     strutsBean.httpshostverify = true;
  1353.                 }
  1354.                 if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  1355.                     httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  1356.                     strutsBean.httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  1357.                 }


  1358.                 String tipoSendas = ConnettoriCostanti.TIPO_SEND_AS[0];
  1359.                 String tipoJms = ConnettoriCostanti.TIPI_CODE_JMS[0];

  1360.                 strutsBean.autenticazioneHttp = apsHelper.getAutenticazioneHttp(strutsBean.autenticazioneHttp, strutsBean.endpointtype, strutsBean.user);

  1361.                 if(strutsBean.tempiRispostaConnectionTimeout==null || "".equals(strutsBean.tempiRispostaConnectionTimeout)
  1362.                         ||
  1363.                         strutsBean.tempiRispostaReadTimeout==null || "".equals(strutsBean.tempiRispostaReadTimeout)
  1364.                         ||
  1365.                         strutsBean.tempiRispostaTempoMedioRisposta==null || "".equals(strutsBean.tempiRispostaTempoMedioRisposta) ){
  1366.                    
  1367.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  1368.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  1369.                    
  1370.                     if(strutsBean.tempiRispostaConnectionTimeout==null || "".equals(strutsBean.tempiRispostaConnectionTimeout) ) {
  1371.                         strutsBean.tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  1372.                     }
  1373.                     if(strutsBean.tempiRispostaReadTimeout==null || "".equals(strutsBean.tempiRispostaReadTimeout) ) {
  1374.                         strutsBean.tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  1375.                     }
  1376.                     if(strutsBean.tempiRispostaTempoMedioRisposta==null || "".equals(strutsBean.tempiRispostaTempoMedioRisposta) ) {
  1377.                         strutsBean.tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  1378.                     }
  1379.                    
  1380.                 }
  1381.                 if(gestioneToken == null) {
  1382.                     gestioneToken = StatoFunzionalita.DISABILITATO.getValue();
  1383.                     gestioneTokenPolicy = CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO;
  1384.                     gestioneTokenOpzionale = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_OPZIONALE;
  1385.                     gestioneTokenValidazioneInput = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_VALIDAZIONE_INPUT;
  1386.                     gestioneTokenIntrospection = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_INTROSPECTION;
  1387.                     gestioneTokenUserInfo = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_USER_INFO;
  1388.                     gestioneTokenForward = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TOKEN_FORWARD;
  1389.                     autenticazioneTokenIssuer = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_ISSUER;
  1390.                     autenticazioneTokenClientId = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_CLIENT_ID;
  1391.                     autenticazioneTokenSubject = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_SUBJECT;
  1392.                     autenticazioneTokenUsername = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_USERNAME;
  1393.                     autenticazioneTokenEMail = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_AUTENTICAZIONE_EMAIL;
  1394.                 }
  1395.                
  1396.                 if(scope ==null || "".equals(scope))
  1397.                     scope = "-";
  1398.                 if(autorizzazioneScope ==null)
  1399.                     autorizzazioneScope = "";
  1400.                
  1401.                 if(identificazioneAttributiStato==null) {
  1402.                     identificazioneAttributiStato = StatoFunzionalita.DISABILITATO.getValue();
  1403.                 }
  1404.                
  1405.                 // preparo i campi
  1406.                 List<DataElement> dati = new ArrayList<>();

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

  1408.                 // update della configurazione
  1409.                 if(gestioneFruitori) {
  1410.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1411.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1412.                 }
  1413.                 else {
  1414.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1415.                             strutsBean.registryReader, strutsBean.configRegistryReader, idAps);
  1416.                 }

  1417.                 dati = apsHelper.addServiziToDati(dati, strutsBean.nomeservizio, strutsBean.tiposervizio,  null, null,
  1418.                         strutsBean.provider, null, null,
  1419.                         soggettiList, soggettiListLabel, strutsBean.accordo, strutsBean.serviceBinding, strutsBean.formatoSpecifica, accordiList, accordiListLabel, strutsBean.servcorr,
  1420.                         strutsBean.wsdlimpler, strutsBean.wsdlimplfru, tipoOp, "0", tipiServizioCompatibiliAccordo,
  1421.                         strutsBean.profilo, strutsBean.portType, ptList, strutsBean.privato,uriAccordo,
  1422.                         strutsBean.descrizione,null,
  1423.                         -1l,strutsBean.statoPackage,strutsBean.statoPackage,
  1424.                         strutsBean.versione,versioniProtocollo,strutsBean.validazioneDocumenti,
  1425.                         saSoggetti,strutsBean.nomeSA,generaPortaApplicativa,null,
  1426.                         strutsBean.controlloAccessiStato,
  1427.                         strutsBean.erogazioneRuolo,strutsBean.erogazioneAutenticazione,strutsBean.erogazioneAutenticazioneOpzionale,strutsBean.erogazioneAutenticazionePrincipal, strutsBean.erogazioneAutenticazioneParametroList,strutsBean.erogazioneAutorizzazione,erogazioneIsSupportatoAutenticazioneSoggetti,
  1428.                         strutsBean.erogazioneAutorizzazioneAutenticati, strutsBean.erogazioneAutorizzazioneRuoli, strutsBean.erogazioneAutorizzazioneRuoliTipologia, strutsBean.erogazioneAutorizzazioneRuoliMatch,
  1429.                         soggettiAutenticati,soggettiAutenticatiLabel, strutsBean.erogazioneSoggettoAutenticato,
  1430.                         strutsBean.tipoProtocollo, listaTipiProtocollo,
  1431.                         soggettiFruitoriList, soggettiFruitoriListLabel, strutsBean.providerSoggettoFruitore, strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore,
  1432.                         strutsBean.fruizioneServizioApplicativo,strutsBean.fruizioneRuolo,strutsBean.fruizioneAutenticazione,strutsBean.fruizioneAutenticazioneOpzionale,strutsBean.fruizioneAutenticazionePrincipal, strutsBean.fruizioneAutenticazioneParametroList, strutsBean.fruizioneAutorizzazione,
  1433.                         strutsBean.fruizioneAutorizzazioneAutenticati, strutsBean.fruizioneAutorizzazioneRuoli, strutsBean.fruizioneAutorizzazioneRuoliTipologia, strutsBean.fruizioneAutorizzazioneRuoliMatch,
  1434.                         saFruitoriList,gestioneToken, policyLabels, policyValues,
  1435.                         gestioneTokenPolicy, gestioneTokenOpzionale,
  1436.                         gestioneTokenValidazioneInput, gestioneTokenIntrospection, gestioneTokenUserInfo, gestioneTokenForward,
  1437.                         autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
  1438.                         autorizzazioneToken,autorizzazioneTokenOptions,
  1439.                         autorizzazioneScope,scope,autorizzazioneScopeMatch,allegatoXacmlPolicy,false,
  1440.                         strutsBean.canaleStato, canaleAPI, strutsBean.canale, canaleList, gestioneCanaliEnabled,
  1441.                         identificazioneAttributiStato, attributeAuthorityLabels, attributeAuthorityValues, attributeAuthoritySelezionate, attributeAuthorityAttributi,
  1442.                         autorizzazioneAutenticatiToken,
  1443.                         autorizzazioneRuoliToken,  autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken);

  1444.                 // Controllo se richiedere il connettore
  1445.                
  1446.                 if(!connettoreStatic) {
  1447.                     boolean forceEnableConnettore = false;
  1448.                     if( gestioneFruitori || generaPortaApplicativa ) {
  1449.                         forceEnableConnettore = true;
  1450.                     }
  1451.                    
  1452.                     if(!(strutsBean.accordo == null || strutsBean.accordo.equals(AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO))) {
  1453.                    
  1454.                         dati = apsHelper.addEndPointToDati(dati, strutsBean.serviceBinding, strutsBean.connettoreDebug, strutsBean.endpointtype, strutsBean.autenticazioneHttp,
  1455.                                 null,//(apsHelper.isModalitaCompleta() || !multitenant)?null:
  1456.                                 //  (generaPortaApplicativa?AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_INTERNO_PREFIX : AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX),
  1457.                                 strutsBean.url, strutsBean.nome,
  1458.                                 tipoJms, strutsBean.user,
  1459.                                 strutsBean.password, strutsBean.initcont, strutsBean.urlpgk,
  1460.                                 strutsBean.provurl, strutsBean.connfact, tipoSendas,
  1461.                                 AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,tipoOp,
  1462.                                 strutsBean.httpsurl, strutsBean.httpstipologia, strutsBean.httpshostverify,
  1463.                                 strutsBean.httpsTrustVerifyCert, strutsBean.httpspath, strutsBean.httpstipo, strutsBean.httpspwd,
  1464.                                 strutsBean.httpsalgoritmo, strutsBean.httpsstato, strutsBean.httpskeystore,
  1465.                                 strutsBean.httpspwdprivatekeytrust, strutsBean.httpspathkey,
  1466.                                 strutsBean.httpstipokey, strutsBean.httpspwdkey,
  1467.                                 strutsBean.httpspwdprivatekey, strutsBean.httpsalgoritmokey,
  1468.                                 strutsBean.httpsKeyAlias, strutsBean.httpsTrustStoreCRLs, strutsBean.httpsTrustStoreOCSPPolicy, strutsBean.httpsKeyStoreBYOKPolicy,
  1469.                                 strutsBean.tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_ADD, null, null,
  1470.                                 null, null, null, null, null, null, true,
  1471.                                 isConnettoreCustomUltimaImmagineSalvata,
  1472.                                 strutsBean.proxyEnabled, strutsBean.proxyHostname, strutsBean.proxyPort, strutsBean.proxyUsername, strutsBean.proxyPassword,
  1473.                                 strutsBean.tempiRispostaEnabled, strutsBean.tempiRispostaConnectionTimeout, strutsBean.tempiRispostaReadTimeout, strutsBean.tempiRispostaTempoMedioRisposta,
  1474.                                 strutsBean.opzioniAvanzate, strutsBean.transferMode, strutsBean.transferModeChunkSize, strutsBean.redirectMode, strutsBean.redirectMaxHop,
  1475.                                 strutsBean.requestOutputFileName, strutsBean.requestOutputFileNamePermissions, strutsBean.requestOutputFileNameHeaders, strutsBean.requestOutputFileNameHeadersPermissions,
  1476.                                 strutsBean.requestOutputParentDirCreateIfNotExists,strutsBean.requestOutputOverwriteIfExists,
  1477.                                 strutsBean.responseInputMode, strutsBean.responseInputFileName, strutsBean.responseInputFileNameHeaders, strutsBean.responseInputDeleteAfterRead, strutsBean.responseInputWaitTime,
  1478.                                 strutsBean.autenticazioneToken,strutsBean.tokenPolicy,forcePDND,forceOAuth,
  1479.                                 listExtendedConnettore, forceEnableConnettore,
  1480.                                 strutsBean.tipoProtocollo, forceHttps, forceHttpsClient, visualizzaSezioneApplicativiServerEnabled, strutsBean.erogazioneServizioApplicativoServerEnabled,
  1481.                                 strutsBean.erogazioneServizioApplicativoServer, saSoggetti,
  1482.                                 strutsBean.autenticazioneApiKey, strutsBean.useOAS3Names, strutsBean.useAppId, strutsBean.apiKeyHeader, strutsBean.apiKeyValue, strutsBean.appIdHeader, strutsBean.appIdValue,
  1483.                                 connettoreStatusParams,
  1484.                                 postBackViaPost);
  1485.                        
  1486.                         // url suggerita
  1487.                         if(urlAPI!=null) {
  1488.                             for (DataElement dataElement : dati) {
  1489.                                 if(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL.equals(dataElement.getName())) {
  1490.                                     if(dataElement.getValue()==null || dataElement.getValue().endsWith("://")) {
  1491.                                         dataElement.setValue(urlAPI);
  1492.                                     }
  1493.                                     break;
  1494.                                 }
  1495.                             }
  1496.                         }
  1497.                     }
  1498.                 }
  1499.                    
  1500.                 if(!(strutsBean.accordo == null || strutsBean.accordo.equals(AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO))) {
  1501.                     //  aggiunta campi custom
  1502.                     dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties);
  1503.                 }
  1504.                
  1505.                 pd.setDati(dati);

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

  1507.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  1508.                         ForwardParams.ADD());
  1509.             }

  1510.             if (apsHelper.isModalitaStandard() && strutsBean.serviceBinding != null) {
  1511.                     switch (strutsBean.serviceBinding) {
  1512.                     case REST:
  1513.                         // il nome del servizio e' quello dell'accordo
  1514.                         strutsBean.nomeservizio = as.getNome();
  1515.                         break;
  1516.                     case SOAP:
  1517.                     default:
  1518.                         // il nome del servizio e' quello del porttype selezionato
  1519.                         strutsBean.nomeservizio = strutsBean.portType;
  1520.                         break;
  1521.                     }
  1522.             }

  1523.             // Controlli sui campi immessi
  1524.             boolean isOk = apsHelper.serviziCheckData(tipoOp, soggettiList,
  1525.                     accordiList, strutsBean.nomeservizio, strutsBean.tiposervizio,
  1526.                     (strutsBean.versione!=null && !"".equals(strutsBean.versione)) ? Integer.parseInt(strutsBean.versione) : 1,
  1527.                     strutsBean.nomeservizio, strutsBean.tiposervizio, strutsBean.provider,
  1528.                     strutsBean.nomeSoggettoErogatore, strutsBean.tipoSoggettoErogatore,
  1529.                     strutsBean.accordo, strutsBean.serviceBinding, strutsBean.servcorr, strutsBean.endpointtype,
  1530.                     strutsBean.url, strutsBean.nome, strutsBean.tipo, strutsBean.user,
  1531.                     strutsBean.password, strutsBean.initcont, strutsBean.urlpgk, strutsBean.provurl,
  1532.                     strutsBean.connfact, strutsBean.sendas, strutsBean.wsdlimpler,
  1533.                     strutsBean.wsdlimplfru, "0", strutsBean.profilo, strutsBean.portType, ptList,
  1534.                     accordoPrivato,strutsBean.privato,
  1535.                     strutsBean.httpsurl, strutsBean.httpstipologia, strutsBean.httpshostverify,
  1536.                     strutsBean.httpsTrustVerifyCert, strutsBean.httpspath, strutsBean.httpstipo,
  1537.                     strutsBean.httpspwd, strutsBean.httpsalgoritmo, strutsBean.httpsstato,
  1538.                     strutsBean.httpskeystore, strutsBean.httpspwdprivatekeytrust,
  1539.                     strutsBean.httpspathkey, strutsBean.httpstipokey,
  1540.                     strutsBean.httpspwdkey, strutsBean.httpspwdprivatekey,
  1541.                     strutsBean.httpsalgoritmokey,
  1542.                     strutsBean.httpsKeyAlias, strutsBean.httpsTrustStoreCRLs, strutsBean.httpsTrustStoreOCSPPolicy, strutsBean.httpsKeyStoreBYOKPolicy,
  1543.                     strutsBean.tipoconn,strutsBean.versione,strutsBean.validazioneDocumenti,null,strutsBean.autenticazioneHttp,
  1544.                     strutsBean.proxyEnabled, strutsBean.proxyHostname, strutsBean.proxyPort, strutsBean.proxyUsername, strutsBean.proxyPassword,
  1545.                     strutsBean.tempiRispostaEnabled, strutsBean.tempiRispostaConnectionTimeout, strutsBean.tempiRispostaReadTimeout, strutsBean.tempiRispostaTempoMedioRisposta,
  1546.                     strutsBean.opzioniAvanzate, strutsBean.transferMode, strutsBean.transferModeChunkSize, strutsBean.redirectMode, strutsBean.redirectMaxHop,
  1547.                     strutsBean.requestOutputFileName, strutsBean.requestOutputFileNamePermissions, strutsBean.requestOutputFileNameHeaders, strutsBean.requestOutputFileNameHeadersPermissions,
  1548.                     strutsBean.requestOutputParentDirCreateIfNotExists,strutsBean.requestOutputOverwriteIfExists,
  1549.                     strutsBean.responseInputMode, strutsBean.responseInputFileName, strutsBean.responseInputFileNameHeaders, strutsBean.responseInputDeleteAfterRead, strutsBean.responseInputWaitTime,
  1550.                     null,strutsBean.erogazioneRuolo,strutsBean.erogazioneAutenticazione,strutsBean.erogazioneAutenticazioneOpzionale,strutsBean.erogazioneAutenticazionePrincipal,strutsBean.erogazioneAutenticazioneParametroList,strutsBean.erogazioneAutorizzazione,
  1551.                     strutsBean.erogazioneAutorizzazioneAutenticati, strutsBean.erogazioneAutorizzazioneRuoli, strutsBean.erogazioneAutorizzazioneRuoliTipologia, strutsBean.erogazioneAutorizzazioneRuoliMatch,erogazioneIsSupportatoAutenticazioneSoggetti,
  1552.                     generaPortaApplicativa, listExtendedConnettore,
  1553.                     strutsBean.fruizioneServizioApplicativo,strutsBean.fruizioneRuolo,strutsBean.fruizioneAutenticazione,strutsBean.fruizioneAutenticazioneOpzionale,strutsBean.fruizioneAutenticazionePrincipal, strutsBean.fruizioneAutenticazioneParametroList, strutsBean.fruizioneAutorizzazione,
  1554.                     strutsBean.fruizioneAutorizzazioneAutenticati, strutsBean.fruizioneAutorizzazioneRuoli, strutsBean.fruizioneAutorizzazioneRuoliTipologia, strutsBean.fruizioneAutorizzazioneRuoliMatch,
  1555.                     strutsBean.tipoProtocollo, allegatoXacmlPolicy,
  1556.                     strutsBean.descrizione, strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore,
  1557.                     strutsBean.autenticazioneToken,strutsBean.tokenPolicy,
  1558.                     strutsBean.autenticazioneApiKey, strutsBean.useOAS3Names, strutsBean.useAppId, strutsBean.apiKeyHeader, strutsBean.apiKeyValue, strutsBean.appIdHeader, strutsBean.appIdValue,
  1559.                     strutsBean.erogazioneServizioApplicativoServerEnabled,
  1560.                     strutsBean.erogazioneServizioApplicativoServer, strutsBean.canaleStato, strutsBean.canale, gestioneCanaliEnabled);

  1561.             if(isOk &&
  1562.                 (generaPortaApplicativa && apsHelper.isModalitaCompleta() && (strutsBean.nomeSA==null || "".equals(strutsBean.nomeSA) || "-".equals(strutsBean.nomeSA)))
  1563.                 ){
  1564.                 if(saSoggetti==null || saSoggetti.length==0 || (saSoggetti.length==1 && "-".equals(saSoggetti[0]))){
  1565.                     pd.setMessage(MessageFormat.format(AccordiServizioParteSpecificaCostanti.MESSAGGIO_ERRORE_PRIMA_DI_POTER_DEFINIRE_UN_ACCORDO_PARTE_SPECIFICA_DEVE_ESSERE_CREATO_UN_SERVIZIO_APPLICATIVO_EROGATO_DAL_SOGGETTO_X_Y,
  1566.                             strutsBean.tipoSoggettoErogatore, strutsBean.nomeSoggettoErogatore));
  1567.                 }
  1568.                 else{
  1569.                     pd.setMessage(AccordiServizioParteSpecificaCostanti.MESSAGGIO_ERRORE_NON_E_POSSIBILE_CREARE_L_ACCORDO_PARTE_SPECIFICA_SENZA_SELEZIONARE_UN_SERVIZIO_APPLICATIVO_EROGATORE);
  1570.                 }
  1571.                 isOk = false;
  1572.             }

  1573.             // updateDynamic
  1574.             if(isOk) {
  1575.                 if(gestioneFruitori) {
  1576.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1577.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1578.                 }
  1579.                 else {
  1580.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1581.                             strutsBean.registryReader, strutsBean.configRegistryReader, idAps);
  1582.                 }
  1583.             }
  1584.            
  1585.             // Validazione base dei parametri custom
  1586.             if(isOk){
  1587.                 try{
  1588.                     apsHelper.validaProtocolProperties(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, strutsBean.protocolProperties);
  1589.                 }catch(ProtocolException e){
  1590.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1591.                     pd.setMessage(e.getMessage());
  1592.                     isOk = false;
  1593.                 }
  1594.             }

  1595.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  1596.             if(isOk){
  1597.                 try{
  1598.                     idAps = apsHelper.getIDServizioFromValues(strutsBean.tiposervizio, strutsBean.nomeservizio, strutsBean.provider, strutsBean.versione);
  1599.                     idAps.setUriAccordoServizioParteComune(uriAccordo);
  1600.                     //validazione campi dinamici
  1601.                     if(gestioneFruitori) {
  1602.                         strutsBean.consoleDynamicConfiguration.validateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,  
  1603.                                 strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1604.                     }
  1605.                     else {
  1606.                         strutsBean.consoleDynamicConfiguration.validateDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1607.                                 strutsBean.registryReader, strutsBean.configRegistryReader, idAps);
  1608.                     }
  1609.                 }catch(ProtocolException e){
  1610.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1611.                     pd.setMessage(e.getMessage());
  1612.                     isOk = false;
  1613.                 }
  1614.             }

  1615.             if (!isOk) {
  1616.                 // setto la barra del titolo
  1617.                 ServletUtils.setPageDataTitle_ServletAdd(pd, labelList, servletList);

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

  1620.                 // update della configurazione
  1621.                 if(gestioneFruitori) {
  1622.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1623.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1624.                 }
  1625.                 else {
  1626.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1627.                             strutsBean.registryReader, strutsBean.configRegistryReader, idAps);
  1628.                 }

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

  1630.                 dati = apsHelper.addServiziToDati(dati, strutsBean.nomeservizio, strutsBean.tiposervizio, null, null,  
  1631.                         strutsBean.provider, null, null,
  1632.                         soggettiList, soggettiListLabel, strutsBean.accordo, strutsBean.serviceBinding, strutsBean.formatoSpecifica, accordiList, accordiListLabel,
  1633.                         strutsBean.servcorr, strutsBean.wsdlimpler, strutsBean.wsdlimplfru, tipoOp, "0", tipiServizioCompatibiliAccordo,
  1634.                         strutsBean.profilo, strutsBean.portType, ptList, strutsBean.privato,uriAccordo,
  1635.                         strutsBean.descrizione, null,
  1636.                         -1l,strutsBean.statoPackage,
  1637.                         strutsBean.statoPackage,strutsBean.versione,versioniProtocollo,strutsBean.validazioneDocumenti,
  1638.                         saSoggetti,strutsBean.nomeSA,generaPortaApplicativa,null,
  1639.                         strutsBean.controlloAccessiStato,
  1640.                         strutsBean.erogazioneRuolo,strutsBean.erogazioneAutenticazione,strutsBean.erogazioneAutenticazioneOpzionale,strutsBean.erogazioneAutenticazionePrincipal, strutsBean.erogazioneAutenticazioneParametroList, strutsBean.erogazioneAutorizzazione,erogazioneIsSupportatoAutenticazioneSoggetti,
  1641.                         strutsBean.erogazioneAutorizzazioneAutenticati, strutsBean.erogazioneAutorizzazioneRuoli, strutsBean.erogazioneAutorizzazioneRuoliTipologia, strutsBean.erogazioneAutorizzazioneRuoliMatch,
  1642.                         soggettiAutenticati, soggettiAutenticatiLabel, strutsBean.erogazioneSoggettoAutenticato,
  1643.                         strutsBean.tipoProtocollo, listaTipiProtocollo,
  1644.                         soggettiFruitoriList, soggettiFruitoriListLabel, strutsBean.providerSoggettoFruitore, strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore,
  1645.                         strutsBean.fruizioneServizioApplicativo,strutsBean.fruizioneRuolo,strutsBean.fruizioneAutenticazione,strutsBean.fruizioneAutenticazioneOpzionale,strutsBean.fruizioneAutenticazionePrincipal, strutsBean.fruizioneAutenticazioneParametroList, strutsBean.fruizioneAutorizzazione,
  1646.                         strutsBean.fruizioneAutorizzazioneAutenticati, strutsBean.fruizioneAutorizzazioneRuoli, strutsBean.fruizioneAutorizzazioneRuoliTipologia, strutsBean.fruizioneAutorizzazioneRuoliMatch,
  1647.                         saFruitoriList,gestioneToken, policyLabels, policyValues,
  1648.                         gestioneTokenPolicy,  gestioneTokenOpzionale,
  1649.                         gestioneTokenValidazioneInput, gestioneTokenIntrospection, gestioneTokenUserInfo, gestioneTokenForward,
  1650.                         autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
  1651.                         autorizzazioneToken,autorizzazioneTokenOptions,
  1652.                         autorizzazioneScope,scope,autorizzazioneScopeMatch,allegatoXacmlPolicy,false,
  1653.                         strutsBean.canaleStato, canaleAPI, strutsBean.canale, canaleList, gestioneCanaliEnabled,
  1654.                         identificazioneAttributiStato, attributeAuthorityLabels, attributeAuthorityValues, attributeAuthoritySelezionate, attributeAuthorityAttributi,
  1655.                         autorizzazioneAutenticatiToken,
  1656.                         autorizzazioneRuoliToken,  autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken);

  1657.                 if(!connettoreStatic) {
  1658.                     boolean forceEnableConnettore = false;
  1659.                     if( gestioneFruitori || generaPortaApplicativa ) {
  1660.                         forceEnableConnettore = true;
  1661.                     }
  1662.                    
  1663.                     if(!(strutsBean.accordo == null || strutsBean.accordo.equals(AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO))) {
  1664.                         dati = apsHelper.addEndPointToDati(dati, strutsBean.serviceBinding, strutsBean.connettoreDebug, strutsBean.endpointtype, strutsBean.autenticazioneHttp,
  1665.                                 null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:
  1666.                                 //  (generaPortaApplicativa?AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_INTERNO_PREFIX : AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX),
  1667.                                 strutsBean.url, strutsBean.nome, strutsBean.tipo, strutsBean.user,
  1668.                                 strutsBean.password, strutsBean.initcont, strutsBean.urlpgk,
  1669.                                 strutsBean.provurl, strutsBean.connfact, strutsBean.sendas,
  1670.                                 AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,tipoOp,
  1671.                                 strutsBean.httpsurl, strutsBean.httpstipologia, strutsBean.httpshostverify,
  1672.                                 strutsBean.httpsTrustVerifyCert, strutsBean.httpspath, strutsBean.httpstipo,
  1673.                                 strutsBean.httpspwd, strutsBean.httpsalgoritmo, strutsBean.httpsstato,
  1674.                                 strutsBean.httpskeystore, strutsBean.httpspwdprivatekeytrust,
  1675.                                 strutsBean.httpspathkey, strutsBean.httpstipokey,
  1676.                                 strutsBean.httpspwdkey, strutsBean.httpspwdprivatekey,
  1677.                                 strutsBean.httpsalgoritmokey,
  1678.                                 strutsBean.httpsKeyAlias, strutsBean.httpsTrustStoreCRLs, strutsBean.httpsTrustStoreOCSPPolicy, strutsBean.httpsKeyStoreBYOKPolicy,
  1679.                                 strutsBean.tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_ADD, null, null,
  1680.                                 null, null, null, null, null, null, true,
  1681.                                 isConnettoreCustomUltimaImmagineSalvata,
  1682.                                 strutsBean.proxyEnabled, strutsBean.proxyHostname, strutsBean.proxyPort, strutsBean.proxyUsername, strutsBean.proxyPassword,
  1683.                                 strutsBean.tempiRispostaEnabled, strutsBean.tempiRispostaConnectionTimeout, strutsBean.tempiRispostaReadTimeout, strutsBean.tempiRispostaTempoMedioRisposta,
  1684.                                 strutsBean.opzioniAvanzate, strutsBean.transferMode, strutsBean.transferModeChunkSize, strutsBean.redirectMode, strutsBean.redirectMaxHop,
  1685.                                 strutsBean.requestOutputFileName, strutsBean.requestOutputFileNamePermissions, strutsBean.requestOutputFileNameHeaders, strutsBean.requestOutputFileNameHeadersPermissions,
  1686.                                 strutsBean.requestOutputParentDirCreateIfNotExists,strutsBean.requestOutputOverwriteIfExists,
  1687.                                 strutsBean.responseInputMode, strutsBean.responseInputFileName, strutsBean.responseInputFileNameHeaders, strutsBean.responseInputDeleteAfterRead, strutsBean.responseInputWaitTime,
  1688.                                 strutsBean.autenticazioneToken,strutsBean.tokenPolicy,forcePDND,forceOAuth,
  1689.                                 listExtendedConnettore, forceEnableConnettore,
  1690.                                 strutsBean.tipoProtocollo, forceHttps, forceHttpsClient, visualizzaSezioneApplicativiServerEnabled, strutsBean.erogazioneServizioApplicativoServerEnabled,
  1691.                                 strutsBean.erogazioneServizioApplicativoServer, saSoggetti,
  1692.                                 strutsBean.autenticazioneApiKey, strutsBean.useOAS3Names, strutsBean.useAppId, strutsBean.apiKeyHeader, strutsBean.apiKeyValue, strutsBean.appIdHeader, strutsBean.appIdValue,
  1693.                                 connettoreStatusParams,
  1694.                                 postBackViaPost);
  1695.                        
  1696.                         // url suggerita
  1697.                         if(urlAPI!=null) {
  1698.                             for (DataElement dataElement : dati) {
  1699.                                 if(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL.equals(dataElement.getName())) {
  1700.                                     if(dataElement.getValue()==null || dataElement.getValue().endsWith("://")) {
  1701.                                         dataElement.setValue(urlAPI);
  1702.                                     }
  1703.                                     break;
  1704.                                 }
  1705.                             }
  1706.                         }
  1707.                     }
  1708.                    
  1709.                 }
  1710.                 if(!(strutsBean.accordo == null || strutsBean.accordo.equals(AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_PARAMETRO_ACCORDO_NON_SELEZIONATO))) {
  1711.                     // aggiunta campi custom
  1712.                     dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties);
  1713.                 }
  1714.                
  1715.                 pd.setDati(dati);

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

  1717.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  1718.                         ForwardParams.ADD());
  1719.             }

  1720.             // Inserisco il servizio nel db
  1721.             long idProv = Long.parseLong(strutsBean.provider);
  1722.             long idAcc = Long.parseLong(strutsBean.accordo);

  1723.             // Fix per versione
  1724.             AccordoServizioParteSpecifica asps = null;
  1725.             boolean alreadyExists = false;
  1726.             if(gestioneFruitori || gestioneErogatori) {
  1727.                 if(apsCore.existsAccordoServizioParteSpecifica(idAps)) {
  1728.                     asps = apsCore.getServizio(idAps);
  1729.                     alreadyExists = true;
  1730.                 }
  1731.                 else {
  1732.                     asps = new AccordoServizioParteSpecifica();
  1733.                 }
  1734.             }
  1735.             else {
  1736.                 asps = new AccordoServizioParteSpecifica();
  1737.             }
  1738.            
  1739.             // nome accordo
  1740.             as = apcCore.getAccordoServizioSintetico(idAcc);
  1741.            
  1742.             if(!alreadyExists) {
  1743.                 asps.setNome(strutsBean.nomeservizio);
  1744.                 asps.setTipo(strutsBean.tiposervizio);
  1745.                 asps.setDescrizione(strutsBean.descrizione);
  1746.                
  1747.                 // Che i seguenti valori siano identici vengono controllati nel check
  1748.                 asps.setIdAccordo(idAcc);
  1749.                 asps.setAccordoServizioParteComune(idAccordoFactory.getUriFromAccordo(as));
  1750.                
  1751.                 asps.setIdSoggetto(idProv);
  1752.                 asps.setNomeSoggettoErogatore(strutsBean.nomeSoggettoErogatore);
  1753.                 asps.setTipoSoggettoErogatore(strutsBean.tipoSoggettoErogatore);
  1754.                
  1755.                 // Tipologia di Servizio
  1756.                 asps.setTipologiaServizio(((strutsBean.servcorr != null) && strutsBean.servcorr.equals(Costanti.CHECK_BOX_ENABLED)) ? TipologiaServizio.CORRELATO : TipologiaServizio.NORMALE);
  1757.                
  1758.                 // Utente
  1759.                 asps.setSuperUser(ServletUtils.getUserLoginFromSession(session));
  1760.                
  1761.                 // Versione Protocollo
  1762.                 if (!"-".equals(strutsBean.profilo))
  1763.                     asps.setVersioneProtocollo(strutsBean.profilo);
  1764.                 else
  1765.                     asps.setVersioneProtocollo(null);

  1766.                 // Privato
  1767.                 asps.setPrivato(strutsBean.privato);

  1768.                 // Wsdl
  1769.                 FormatoSpecifica formato = null;
  1770.                 if(as!=null) {
  1771.                     formato = as.getFormatoSpecifica();
  1772.                 }
  1773.                 String wsdlimplerS = strutsBean.wsdlimpler.getValue() != null ? new String(strutsBean.wsdlimpler.getValue()) : null;
  1774.                 asps.setByteWsdlImplementativoErogatore(apsCore.getInterfaceAsByteArray(formato, wsdlimplerS));
  1775.                 String wsdlimplfruS = strutsBean.wsdlimplfru.getValue() != null ? new String(strutsBean.wsdlimplfru.getValue()) : null;
  1776.                 asps.setByteWsdlImplementativoFruitore(apsCore.getInterfaceAsByteArray(formato, wsdlimplfruS));
  1777.                
  1778.                 // PortType
  1779.                 if (strutsBean.portType != null && !"".equals(strutsBean.portType) && !"-".equals(strutsBean.portType))
  1780.                     asps.setPortType(strutsBean.portType);
  1781.                
  1782.                 // Versione
  1783.                 if(apsCore.isSupportatoVersionamentoAccordiServizioParteSpecifica(strutsBean.tipoProtocollo)){
  1784.                     if(strutsBean.versione!=null && !"".equals(strutsBean.versione))
  1785.                         asps.setVersione(Integer.parseInt(strutsBean.versione));
  1786.                     else
  1787.                         asps.setVersione(1);
  1788.                 }else{
  1789.                     asps.setVersione(1);
  1790.                 }

  1791.                 // stato
  1792.                 asps.setStatoPackage(strutsBean.statoPackage);
  1793.             }

  1794.            

  1795.             // Connettore
  1796.             Connettore connettore = null;
  1797.             if(!connettoreStatic) {
  1798.                 connettore = new Connettore();
  1799.                 if (strutsBean.endpointtype.equals(ConnettoriCostanti.DEFAULT_CONNETTORE_TYPE_CUSTOM))
  1800.                     connettore.setTipo(strutsBean.tipoconn);
  1801.                 else
  1802.                     connettore.setTipo(strutsBean.endpointtype);
  1803.    
  1804.                 apsHelper.fillConnettore(connettore, strutsBean.connettoreDebug, strutsBean.endpointtype, strutsBean.endpointtype, strutsBean.tipoconn, strutsBean.url,
  1805.                         strutsBean.nome, strutsBean.tipo, strutsBean.user, strutsBean.password,
  1806.                         strutsBean.initcont, strutsBean.urlpgk, strutsBean.url, strutsBean.connfact,
  1807.                         strutsBean.sendas, strutsBean.httpsurl, strutsBean.httpstipologia, strutsBean.httpshostverify,
  1808.                         strutsBean.httpsTrustVerifyCert, strutsBean.httpspath, strutsBean.httpstipo,
  1809.                         strutsBean.httpspwd, strutsBean.httpsalgoritmo, strutsBean.httpsstato,
  1810.                         strutsBean.httpskeystore, strutsBean.httpspwdprivatekeytrust,
  1811.                         strutsBean.httpspathkey, strutsBean.httpstipokey,
  1812.                         strutsBean.httpspwdkey, strutsBean.httpspwdprivatekey,
  1813.                         strutsBean.httpsalgoritmokey,
  1814.                         strutsBean.httpsKeyAlias, strutsBean.httpsTrustStoreCRLs, strutsBean.httpsTrustStoreOCSPPolicy, strutsBean.httpsKeyStoreBYOKPolicy,
  1815.                         strutsBean.proxyEnabled, strutsBean.proxyHostname, strutsBean.proxyPort, strutsBean.proxyUsername, strutsBean.proxyPassword,
  1816.                         strutsBean.tempiRispostaEnabled, strutsBean.tempiRispostaConnectionTimeout, strutsBean.tempiRispostaReadTimeout, strutsBean.tempiRispostaTempoMedioRisposta,
  1817.                         strutsBean.opzioniAvanzate, strutsBean.transferMode, strutsBean.transferModeChunkSize, strutsBean.redirectMode, strutsBean.redirectMaxHop,
  1818.                         strutsBean.requestOutputFileName, strutsBean.requestOutputFileNamePermissions, strutsBean.requestOutputFileNameHeaders, strutsBean.requestOutputFileNameHeadersPermissions,
  1819.                         strutsBean.requestOutputParentDirCreateIfNotExists,strutsBean.requestOutputOverwriteIfExists,
  1820.                         strutsBean.responseInputMode, strutsBean.responseInputFileName, strutsBean.responseInputFileNameHeaders, strutsBean.responseInputDeleteAfterRead, strutsBean.responseInputWaitTime,
  1821.                         strutsBean.tokenPolicy,
  1822.                         strutsBean.apiKeyHeader, strutsBean.apiKeyValue, strutsBean.appIdHeader, strutsBean.appIdValue,
  1823.                         connettoreStatusParams,
  1824.                         listExtendedConnettore);
  1825.             }

  1826.             if(asps.getConfigurazioneServizio()==null)
  1827.                 asps.setConfigurazioneServizio(new ConfigurazioneServizio());
  1828.             if(apsHelper.isModalitaCompleta() || (!generaPortaApplicativa && !gestioneFruitori)) {
  1829.                 asps.getConfigurazioneServizio().setConnettore(connettore);
  1830.             }

  1831.             if(gestioneFruitori) {
  1832.                 Fruitore fruitore = new Fruitore();
  1833.                 fruitore.setTipo(strutsBean.tipoSoggettoFruitore);
  1834.                 fruitore.setNome(strutsBean.nomeSoggettoFruitore);
  1835.                 fruitore.setStatoPackage(strutsBean.statoPackage);
  1836.                 fruitore.setConnettore(connettore);
  1837.                 asps.addFruitore(fruitore);
  1838.             }
  1839.            
  1840.             /**         Spostato sopra a livello di edit in progress            
  1841.             //          // Se l'accordo Comune che si riferisce ha stato operativo o finale modifico lo stato in operativo
  1842.             //          if(as.getStatoPackage().equals(StatiAccordo.operativo.toString()) || as.getStatoPackage().equals(StatiAccordo.finale.toString())){
  1843.             //              asps.setStatoPackage(StatiAccordo.operativo.toString());
  1844.             //          }*/

  1845.             // Check stato
  1846.             if(apsHelper.isShowGestioneWorkflowStatoDocumenti()){

  1847.                 ValidazioneStatoPackageException validazione = null;
  1848.                 try{
  1849.                     boolean gestioneWsdlImplementativo = apcCore.showPortiAccesso(strutsBean.tipoProtocollo, strutsBean.serviceBinding, strutsBean.formatoSpecifica);
  1850.                     boolean checkConnettore = !gestioneFruitori && !gestioneErogatori;
  1851.                     apsCore.validaStatoAccordoServizioParteSpecifica(asps, gestioneWsdlImplementativo, checkConnettore);
  1852.                 }catch(ValidazioneStatoPackageException validazioneException){
  1853.                     validazione = validazioneException;
  1854.                 }
  1855.                 if(validazione==null && gestioneFruitori) {
  1856.                     try{
  1857.                         apsCore.validaStatoFruitoreAccordoServizioParteSpecifica(asps.getFruitore(0), asps);
  1858.                     }catch(ValidazioneStatoPackageException validazioneException){
  1859.                         validazione = validazioneException;
  1860.                     }
  1861.                 }
  1862.                 if(validazione!=null) {

  1863.                     // Setto messaggio di errore
  1864.                     pd.setMessage(validazione.toString());

  1865.                     // setto la barra del titolo
  1866.                     ServletUtils.setPageDataTitle_ServletAdd(pd, labelList,servletList);

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

  1869.                     // update della configurazione
  1870.                     if(gestioneFruitori) {
  1871.                         strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1872.                                 strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1873.                     }
  1874.                     else {
  1875.                         strutsBean.consoleDynamicConfiguration.updateDynamicConfigAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1876.                                 strutsBean.registryReader, strutsBean.configRegistryReader, idAps);
  1877.                     }

  1878.                     dati.add(ServletUtils.getDataElementForEditModeFinished());
  1879.                    
  1880.                     dati = apsHelper.addServiziToDati(dati, strutsBean.nomeservizio, strutsBean.tiposervizio, null, null,  
  1881.                             strutsBean.provider, null, null,
  1882.                             soggettiList, soggettiListLabel, strutsBean.accordo, strutsBean.serviceBinding, strutsBean.formatoSpecifica, accordiList, accordiListLabel, strutsBean.servcorr,
  1883.                             strutsBean.wsdlimpler, strutsBean.wsdlimplfru, tipoOp, "0", tipiServizioCompatibiliAccordo,
  1884.                             strutsBean.profilo, strutsBean.portType, ptList, strutsBean.privato,uriAccordo,
  1885.                             strutsBean.descrizione, null,
  1886.                             -1l,strutsBean.statoPackage,
  1887.                             strutsBean.statoPackage,strutsBean.versione,versioniProtocollo,strutsBean.validazioneDocumenti,
  1888.                             saSoggetti,strutsBean.nomeSA,generaPortaApplicativa,null,
  1889.                             strutsBean.controlloAccessiStato,
  1890.                             strutsBean.erogazioneRuolo,strutsBean.erogazioneAutenticazione,strutsBean.erogazioneAutenticazioneOpzionale,strutsBean.erogazioneAutenticazionePrincipal, strutsBean.erogazioneAutenticazioneParametroList, strutsBean.erogazioneAutorizzazione,erogazioneIsSupportatoAutenticazioneSoggetti,
  1891.                             strutsBean.erogazioneAutorizzazioneAutenticati, strutsBean.erogazioneAutorizzazioneRuoli, strutsBean.erogazioneAutorizzazioneRuoliTipologia, strutsBean.erogazioneAutorizzazioneRuoliMatch,
  1892.                             soggettiAutenticati, soggettiAutenticatiLabel, strutsBean.erogazioneSoggettoAutenticato,
  1893.                             strutsBean.tipoProtocollo, listaTipiProtocollo,
  1894.                             soggettiFruitoriList, soggettiFruitoriListLabel, strutsBean.providerSoggettoFruitore, strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore,
  1895.                             strutsBean.fruizioneServizioApplicativo,strutsBean.fruizioneRuolo,strutsBean.fruizioneAutenticazione,strutsBean.fruizioneAutenticazioneOpzionale,strutsBean.fruizioneAutenticazionePrincipal, strutsBean.fruizioneAutenticazioneParametroList, strutsBean.fruizioneAutorizzazione,
  1896.                             strutsBean.fruizioneAutorizzazioneAutenticati, strutsBean.fruizioneAutorizzazioneRuoli, strutsBean.fruizioneAutorizzazioneRuoliTipologia, strutsBean.fruizioneAutorizzazioneRuoliMatch,
  1897.                             saFruitoriList,gestioneToken, policyLabels, policyValues,
  1898.                             gestioneTokenPolicy,  gestioneTokenOpzionale,
  1899.                             gestioneTokenValidazioneInput, gestioneTokenIntrospection, gestioneTokenUserInfo, gestioneTokenForward,
  1900.                             autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
  1901.                             autorizzazioneToken,autorizzazioneTokenOptions,
  1902.                             autorizzazioneScope,scope,autorizzazioneScopeMatch,allegatoXacmlPolicy,false,
  1903.                             strutsBean.canaleStato, canaleAPI, strutsBean.canale, canaleList, gestioneCanaliEnabled,
  1904.                             identificazioneAttributiStato, attributeAuthorityLabels, attributeAuthorityValues, attributeAuthoritySelezionate, attributeAuthorityAttributi,
  1905.                             autorizzazioneAutenticatiToken,
  1906.                             autorizzazioneRuoliToken,  autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken);

  1907.                     if(!connettoreStatic) {
  1908.                    
  1909.                         boolean forceEnableConnettore = false;
  1910.                         if( gestioneFruitori || generaPortaApplicativa ) {
  1911.                             forceEnableConnettore = true;
  1912.                         }
  1913.                        
  1914.                         dati = apsHelper.addEndPointToDati(dati, strutsBean.serviceBinding, strutsBean.connettoreDebug, strutsBean.endpointtype, strutsBean.autenticazioneHttp,
  1915.                                 null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:
  1916.                                 //  (generaPortaApplicativa?AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_INTERNO_PREFIX : AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX),
  1917.                                 strutsBean.url, strutsBean.nome, strutsBean.tipo, strutsBean.user,
  1918.                                 strutsBean.password, strutsBean.initcont, strutsBean.urlpgk,
  1919.                                 strutsBean.provurl, strutsBean.connfact, strutsBean.sendas,
  1920.                                 AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,tipoOp,
  1921.                                 strutsBean.httpsurl, strutsBean.httpstipologia, strutsBean.httpshostverify,
  1922.                                 strutsBean.httpsTrustVerifyCert, strutsBean.httpspath, strutsBean.httpstipo,
  1923.                                 strutsBean.httpspwd, strutsBean.httpsalgoritmo, strutsBean.httpsstato,
  1924.                                 strutsBean.httpskeystore, strutsBean.httpspwdprivatekeytrust,
  1925.                                 strutsBean.httpspathkey, strutsBean.httpstipokey,
  1926.                                 strutsBean.httpspwdkey, strutsBean.httpspwdprivatekey,
  1927.                                 strutsBean.httpsalgoritmokey,
  1928.                                 strutsBean.httpsKeyAlias, strutsBean.httpsTrustStoreCRLs, strutsBean.httpsTrustStoreOCSPPolicy, strutsBean.httpsKeyStoreBYOKPolicy,
  1929.                                 strutsBean.tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_ADD, null, null,
  1930.                                 null, null, null, null, null, null, true,
  1931.                                 isConnettoreCustomUltimaImmagineSalvata,
  1932.                                 strutsBean.proxyEnabled, strutsBean.proxyHostname, strutsBean.proxyPort, strutsBean.proxyUsername, strutsBean.proxyPassword,
  1933.                                 strutsBean.tempiRispostaEnabled, strutsBean.tempiRispostaConnectionTimeout, strutsBean.tempiRispostaReadTimeout, strutsBean.tempiRispostaTempoMedioRisposta,
  1934.                                 strutsBean.opzioniAvanzate, strutsBean.transferMode, strutsBean.transferModeChunkSize, strutsBean.redirectMode, strutsBean.redirectMaxHop,
  1935.                                 strutsBean.requestOutputFileName, strutsBean.requestOutputFileNamePermissions, strutsBean.requestOutputFileNameHeaders, strutsBean.requestOutputFileNameHeadersPermissions,
  1936.                                 strutsBean.requestOutputParentDirCreateIfNotExists,strutsBean.requestOutputOverwriteIfExists,
  1937.                                 strutsBean.responseInputMode, strutsBean.responseInputFileName, strutsBean.responseInputFileNameHeaders, strutsBean.responseInputDeleteAfterRead, strutsBean.responseInputWaitTime,
  1938.                                 strutsBean.autenticazioneToken,strutsBean.tokenPolicy,forcePDND,forceOAuth,
  1939.                                 listExtendedConnettore, forceEnableConnettore,
  1940.                                 strutsBean.tipoProtocollo, forceHttps, forceHttpsClient, visualizzaSezioneApplicativiServerEnabled, strutsBean.erogazioneServizioApplicativoServerEnabled,
  1941.                                 strutsBean.erogazioneServizioApplicativoServer, saSoggetti,
  1942.                                 strutsBean.autenticazioneApiKey, strutsBean.useOAS3Names, strutsBean.useAppId, strutsBean.apiKeyHeader, strutsBean.apiKeyValue, strutsBean.appIdHeader, strutsBean.appIdValue,
  1943.                                 connettoreStatusParams,
  1944.                                 postBackViaPost);
  1945.                        
  1946.                     }

  1947.                     // aggiunta campi custom
  1948.                     dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties);

  1949.                     pd.setDati(dati);


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

  1951.                     return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  1952.                             ForwardParams.ADD());

  1953.                 }
  1954.             }

  1955.             IDSoggetto soggettoErogatore = new IDSoggetto(strutsBean.tipoSoggettoErogatore,strutsBean.nomeSoggettoErogatore);
  1956.             IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(strutsBean.tiposervizio, strutsBean.nomeservizio, soggettoErogatore,
  1957.                     (strutsBean.versione==null || "".equals(strutsBean.versione))? 1 : Integer.parseInt(strutsBean.versione));

  1958.             IDSoggetto idFruitore = null;
  1959.             if(generaPortaDelegata){
  1960.                 idFruitore = new IDSoggetto(strutsBean.tipoSoggettoFruitore, strutsBean.nomeSoggettoFruitore);
  1961.             }
  1962.            
  1963.             boolean forceDisableOptional = false;
  1964.             if(!CostantiControlStation.VALUE_PARAMETRO_PORTE_CONTROLLO_ACCESSI_STATO_PUBBLICO.equals(strutsBean.controlloAccessiStato) &&
  1965.                     generaPortaApplicativa &&
  1966.                     apsHelper.isProfiloModIPA(strutsBean.tipoProtocollo)) {
  1967.                 BooleanNullable forceHttpsClientWrapper = BooleanNullable.NULL();
  1968.                 BooleanNullable forcePDNDWrapper = BooleanNullable.NULL();
  1969.                 BooleanNullable forceOAuthWrapper = BooleanNullable.NULL();
  1970.                
  1971.                 apsHelper.readModIConfiguration(forceHttpsClientWrapper, forcePDNDWrapper, forceOAuthWrapper,
  1972.                         IDAccordoFactory.getInstance().getIDAccordoFromAccordo(as), strutsBean.portType,
  1973.                         null);
  1974.                
  1975.                 if(forceHttpsClientWrapper.getValue()!=null) {
  1976.                     forceDisableOptional = forceHttpsClientWrapper.getValue().booleanValue();
  1977.                 }
  1978.                 if(forcePDNDWrapper.getValue()!=null) {
  1979.                     forcePDND = forcePDNDWrapper.getValue().booleanValue();
  1980.                 }
  1981.                 if(forceOAuthWrapper.getValue()!=null) {
  1982.                     forceOAuth = forceOAuthWrapper.getValue().booleanValue();
  1983.                 }
  1984.             }
  1985.            
  1986.             if(CostantiControlStation.VALUE_PARAMETRO_PORTE_CONTROLLO_ACCESSI_STATO_PUBBLICO.equals(strutsBean.controlloAccessiStato)) {
  1987.                 // nop
  1988.             }
  1989.             else {
  1990.                 if(generaPortaApplicativa &&
  1991.                     apsHelper.isProfiloModIPA(strutsBean.tipoProtocollo) &&
  1992.                     (forcePDND || forceOAuth)
  1993.                 ){
  1994.                     gestioneToken = StatoFunzionalita.ABILITATO.getValue();
  1995.                     if(forcePDND) {
  1996.                         List<String> tokenPolicies = apsHelper.getTokenPolicyGestione(true, false,
  1997.                                 false, // alla posizione 0 NON viene aggiunto -
  1998.                                 null, TipoOperazione.ADD);
  1999.                         if(tokenPolicies!=null && !tokenPolicies.isEmpty() &&
  2000.                             (gestioneTokenPolicy==null || StringUtils.isEmpty(gestioneTokenPolicy))
  2001.                         ){
  2002.                             gestioneTokenPolicy = tokenPolicies.get(0); // dovrebbe già essere stata selezionata prima
  2003.                         }
  2004.                     }
  2005.                     else {
  2006.                         List<String> tokenPolicies = apsHelper.getTokenPolicyGestione(false, true,
  2007.                                 false, // alla posizione 0 NON viene aggiunto -
  2008.                                 null, TipoOperazione.ADD);
  2009.                         if(tokenPolicies!=null && !tokenPolicies.isEmpty() &&
  2010.                             (gestioneTokenPolicy==null || StringUtils.isEmpty(gestioneTokenPolicy))
  2011.                         ){
  2012.                             gestioneTokenPolicy = tokenPolicies.get(0); // dovrebbe già essere stata selezionata prima
  2013.                         }
  2014.                     }
  2015.                    
  2016.                     gestioneTokenOpzionale = StatoFunzionalita.DISABILITATO.getValue();
  2017.                    
  2018.                     if(gestioneTokenPolicy!=null && StringUtils.isNotEmpty(gestioneTokenPolicy) &&
  2019.                             !CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO.equals(gestioneTokenPolicy)) {
  2020.                         GenericProperties gp = confCore.getGenericProperties(gestioneTokenPolicy, CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION, false);
  2021.                         if(gp!=null && gp.sizePropertyList()>0) {
  2022.                             for (Property p : gp.getPropertyList()) {
  2023.                                 if(org.openspcoop2.pdd.core.token.Costanti.POLICY_VALIDAZIONE_STATO.equals(p.getNome())) {
  2024.                                     if("true".equalsIgnoreCase(p.getValore())) {
  2025.                                         gestioneTokenValidazioneInput = StatoFunzionalita.ABILITATO.getValue();
  2026.                                     }
  2027.                                     else {
  2028.                                         gestioneTokenValidazioneInput = StatoFunzionalita.DISABILITATO.getValue();
  2029.                                     }
  2030.                                 }
  2031.                                 else if(org.openspcoop2.pdd.core.token.Costanti.POLICY_INTROSPECTION_STATO.equals(p.getNome())) {
  2032.                                     if("true".equalsIgnoreCase(p.getValore())) {
  2033.                                         gestioneTokenIntrospection = StatoFunzionalita.ABILITATO.getValue();
  2034.                                     }
  2035.                                     else {
  2036.                                         gestioneTokenIntrospection = StatoFunzionalita.DISABILITATO.getValue();
  2037.                                     }
  2038.                                 }
  2039.                                 else if(org.openspcoop2.pdd.core.token.Costanti.POLICY_USER_INFO_STATO.equals(p.getNome())) {
  2040.                                     if("true".equalsIgnoreCase(p.getValore())) {
  2041.                                         gestioneTokenUserInfo = StatoFunzionalita.ABILITATO.getValue();
  2042.                                     }
  2043.                                     else {
  2044.                                         gestioneTokenUserInfo = StatoFunzionalita.DISABILITATO.getValue();
  2045.                                     }
  2046.                                 }
  2047.                                 else if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_STATO.equals(p.getNome())) {
  2048.                                     if("true".equalsIgnoreCase(p.getValore())) {
  2049.                                         gestioneTokenForward = StatoFunzionalita.ABILITATO.getValue();
  2050.                                     }
  2051.                                     else {
  2052.                                         gestioneTokenForward = StatoFunzionalita.DISABILITATO.getValue();
  2053.                                     }
  2054.                                 }
  2055.                             }
  2056.                         }
  2057.                     }
  2058.                 }
  2059.             }
  2060.            
  2061.             String autenticazione = null;
  2062.             String autenticazioneOpzionale = null;
  2063.             TipoAutenticazionePrincipal autenticazionePrincipal = null;
  2064.             List<String> autenticazioneParametroList = null;
  2065.             if(CostantiControlStation.VALUE_PARAMETRO_PORTE_CONTROLLO_ACCESSI_STATO_PUBBLICO.equals(strutsBean.controlloAccessiStato)) {
  2066.                 autenticazione = TipoAutenticazione.DISABILITATO.getValue();
  2067.             }
  2068.             else {
  2069.                 if(generaPortaApplicativa){
  2070.                     autenticazione = strutsBean.erogazioneAutenticazione;
  2071.                     if(forceDisableOptional) {
  2072.                         autenticazioneOpzionale = Costanti.CHECK_BOX_DISABLED;
  2073.                     }
  2074.                     else{
  2075.                         if(apsHelper.isProfiloModIPA(strutsBean.tipoProtocollo)) {
  2076.                             autenticazioneOpzionale = Costanti.CHECK_BOX_ENABLED;
  2077.                         }
  2078.                         else {
  2079.                             autenticazioneOpzionale = strutsBean.erogazioneAutenticazioneOpzionale;
  2080.                         }
  2081.                     }
  2082.                     autenticazionePrincipal = strutsBean.erogazioneAutenticazionePrincipal;
  2083.                     autenticazioneParametroList = strutsBean.erogazioneAutenticazioneParametroList;
  2084.                 }
  2085.                 if(generaPortaDelegata){
  2086.                     autenticazione = strutsBean.fruizioneAutenticazione;
  2087.                     autenticazioneOpzionale = strutsBean.fruizioneAutenticazioneOpzionale;
  2088.                     autenticazionePrincipal = strutsBean.fruizioneAutenticazionePrincipal;
  2089.                     autenticazioneParametroList = strutsBean.fruizioneAutenticazioneParametroList;
  2090.                 }
  2091.             }
  2092.            
  2093.             String autorizzazione = null;
  2094.             String autorizzazioneAutenticati = null;
  2095.             String autorizzazioneRuoli = null;
  2096.             String autorizzazioneRuoliTipologia = null;
  2097.             String autorizzazioneRuoliMatch = null;
  2098.             if(CostantiControlStation.VALUE_PARAMETRO_PORTE_CONTROLLO_ACCESSI_STATO_PUBBLICO.equals(strutsBean.controlloAccessiStato)) {
  2099.                 autorizzazione = TipoAutorizzazione.DISABILITATO.getValue();
  2100.             }
  2101.             else {
  2102.                 if(generaPortaApplicativa){
  2103.                     if(apsHelper.isProfiloModIPA(strutsBean.tipoProtocollo)) {
  2104.                         if(!forceDisableOptional) {
  2105.                             autorizzazione = AutorizzazioneUtilities.STATO_DISABILITATO;
  2106.                         }
  2107.                         else {
  2108.                             autorizzazione = strutsBean.erogazioneAutorizzazione;
  2109.                         }
  2110.                     }
  2111.                     else {
  2112.                         autorizzazione = strutsBean.erogazioneAutorizzazione;
  2113.                     }
  2114.                     autorizzazioneAutenticati = strutsBean.erogazioneAutorizzazioneAutenticati;
  2115.                     autorizzazioneRuoli = strutsBean.erogazioneAutorizzazioneRuoli;
  2116.                     autorizzazioneRuoliTipologia = strutsBean.erogazioneAutorizzazioneRuoliTipologia;
  2117.                     autorizzazioneRuoliMatch = strutsBean.erogazioneAutorizzazioneRuoliMatch;
  2118.                 }
  2119.                 if(generaPortaDelegata){
  2120.                     autorizzazione = strutsBean.fruizioneAutorizzazione;
  2121.                     autorizzazioneAutenticati = strutsBean.fruizioneAutorizzazioneAutenticati;
  2122.                     autorizzazioneRuoli = strutsBean.fruizioneAutorizzazioneRuoli;
  2123.                     autorizzazioneRuoliTipologia = strutsBean.fruizioneAutorizzazioneRuoliTipologia;
  2124.                     autorizzazioneRuoliMatch = strutsBean.fruizioneAutorizzazioneRuoliMatch;
  2125.                 }
  2126.             }
  2127.        
  2128.             String servizioApplicativo = null;
  2129.             String ruolo = null;
  2130.             String soggettoAutenticato = null;
  2131.             if(generaPortaApplicativa){
  2132.                 servizioApplicativo = strutsBean.nome;
  2133.                 ruolo = strutsBean.erogazioneRuolo;
  2134.                 soggettoAutenticato = strutsBean.erogazioneSoggettoAutenticato;
  2135.             }
  2136.             if(generaPortaDelegata){
  2137.                 servizioApplicativo = strutsBean.fruizioneServizioApplicativo;
  2138.                 ruolo = strutsBean.fruizioneRuolo;
  2139.             }
  2140.            
  2141.             AccordiServizioParteSpecificaUtilities.create(asps, alreadyExists,
  2142.                     idServizio, idFruitore, strutsBean.tipoProtocollo, strutsBean.serviceBinding,
  2143.                     idProv,
  2144.                     connettore,
  2145.                     generaPortaApplicativa, generaPortaDelegata,
  2146.                     autenticazione, autenticazioneOpzionale, autenticazionePrincipal, autenticazioneParametroList,
  2147.                     autorizzazione, autorizzazioneAutenticati, autorizzazioneRuoli, autorizzazioneRuoliTipologia, autorizzazioneRuoliMatch,
  2148.                     servizioApplicativo, ruolo, soggettoAutenticato,
  2149.                     autorizzazioneAutenticatiToken,
  2150.                     autorizzazioneRuoliToken,  autorizzazioneRuoliTipologiaToken, autorizzazioneRuoliMatchToken,
  2151.                     autorizzazioneTokenOptions,
  2152.                     autorizzazioneScope, scope, autorizzazioneScopeMatch, allegatoXacmlPolicy,
  2153.                     gestioneToken,
  2154.                     gestioneTokenPolicy, gestioneTokenOpzionale,
  2155.                     gestioneTokenValidazioneInput, gestioneTokenIntrospection, gestioneTokenUserInfo, gestioneTokenForward,
  2156.                     autenticazioneTokenIssuer, autenticazioneTokenClientId, autenticazioneTokenSubject, autenticazioneTokenUsername, autenticazioneTokenEMail,
  2157.                     strutsBean.protocolProperties, strutsBean.consoleOperationType,
  2158.                     apsCore, apsHelper, strutsBean.erogazioneServizioApplicativoServer, strutsBean.canaleStato, strutsBean.canale, gestioneCanaliEnabled,
  2159.                     identificazioneAttributiStato, attributeAuthoritySelezionate, attributeAuthorityAttributi);

  2160.             // cancello i file temporanei
  2161.             apsHelper.deleteBinaryParameters(strutsBean.wsdlimpler,strutsBean.wsdlimplfru);
  2162.             apsHelper.deleteBinaryProtocolPropertiesTmpFiles(strutsBean.protocolProperties);
  2163.            
  2164.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  2165.            
  2166.             if(apsCore.isSetSearchAfterAdd()) {
  2167.                 apsCore.setSearchAfterAdd(Liste.SERVIZI, asps.getNome(), request, session, ricerca);
  2168.             }
  2169.            
  2170.             boolean [] permessi = AccordiServizioParteSpecificaUtilities.getPermessiUtente(apsHelper);
  2171.             List<AccordoServizioParteSpecifica> listaAccordi = null;
  2172.             if(apsCore.isVisioneOggettiGlobale(userLogin)){
  2173.                 listaAccordi = apsCore.soggettiServizioList(null, ricerca,permessi, gestioneFruitori, gestioneErogatori);
  2174.             }else{
  2175.                 listaAccordi = apsCore.soggettiServizioList(userLogin, ricerca, permessi, gestioneFruitori, gestioneErogatori);
  2176.             }
  2177.            
  2178.             if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  2179.                 apsHelper.prepareErogazioniList(ricerca, listaAccordi);
  2180.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  2181.                 return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, ForwardParams.ADD());
  2182.             }

  2183.             apsHelper.prepareServiziList(ricerca, listaAccordi);

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

  2185.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS, ForwardParams.ADD());



  2186.         } catch (Exception e) {
  2187.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  2188.                     AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS,
  2189.                     ForwardParams.ADD());
  2190.         }  
  2191.     }
  2192.    
  2193. }