AccordiServizioParteSpecificaFruitoriChange.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.net.URLEncoder;
  22. import java.text.MessageFormat;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Properties;

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

  32. import org.apache.commons.lang.StringUtils;
  33. import org.apache.struts.action.Action;
  34. import org.apache.struts.action.ActionForm;
  35. import org.apache.struts.action.ActionForward;
  36. import org.apache.struts.action.ActionMapping;
  37. import org.openspcoop2.core.commons.Filtri;
  38. import org.openspcoop2.core.commons.Liste;
  39. import org.openspcoop2.core.config.PortaDelegata;
  40. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  41. import org.openspcoop2.core.config.utils.UpdateProprietaOggetto;
  42. import org.openspcoop2.core.constants.CostantiConnettori;
  43. import org.openspcoop2.core.constants.CostantiDB;
  44. import org.openspcoop2.core.constants.TipiConnettore;
  45. import org.openspcoop2.core.constants.TransferLengthModes;
  46. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  47. import org.openspcoop2.core.id.IDFruizione;
  48. import org.openspcoop2.core.id.IDPortaDelegata;
  49. import org.openspcoop2.core.id.IDServizio;
  50. import org.openspcoop2.core.id.IDSoggetto;
  51. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  52. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  53. import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
  54. import org.openspcoop2.core.registry.Connettore;
  55. import org.openspcoop2.core.registry.Fruitore;
  56. import org.openspcoop2.core.registry.ProtocolProperty;
  57. import org.openspcoop2.core.registry.Soggetto;
  58. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  59. import org.openspcoop2.core.registry.constants.StatiAccordo;
  60. import org.openspcoop2.core.registry.constants.TipologiaServizio;
  61. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  62. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  63. import org.openspcoop2.core.registry.driver.ValidazioneStatoPackageException;
  64. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  65. import org.openspcoop2.protocol.sdk.ProtocolException;
  66. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  67. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  68. import org.openspcoop2.utils.BooleanNullable;
  69. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  70. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  71. import org.openspcoop2.web.ctrlstat.core.ControlStationCoreException;
  72. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  73. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  74. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  75. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  76. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  77. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
  78. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCostanti;
  79. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
  80. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniHelper;
  81. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  82. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  83. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  84. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  85. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCore;
  86. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateCostanti;
  87. import org.openspcoop2.web.ctrlstat.servlet.pd.PorteDelegateHelper;
  88. import org.openspcoop2.web.ctrlstat.servlet.protocol_properties.ProtocolPropertiesCostanti;
  89. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  90. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  91. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  92. import org.openspcoop2.web.lib.mvc.Costanti;
  93. import org.openspcoop2.web.lib.mvc.DataElement;
  94. import org.openspcoop2.web.lib.mvc.DataElementType;
  95. import org.openspcoop2.web.lib.mvc.ForwardParams;
  96. import org.openspcoop2.web.lib.mvc.GeneralData;
  97. import org.openspcoop2.web.lib.mvc.PageData;
  98. import org.openspcoop2.web.lib.mvc.Parameter;
  99. import org.openspcoop2.web.lib.mvc.ServletUtils;
  100. import org.openspcoop2.web.lib.mvc.TipoOperazione;
  101. import org.openspcoop2.web.lib.users.dao.PermessiUtente;

  102. /**
  103.  * serviziFruitoriChange
  104.  *
  105.  * @author Andrea Poli (apoli@link.it)
  106.  * @author Stefano Corallo (corallo@link.it)
  107.  * @author Sandra Giangrandi (sandra@link.it)
  108.  * @author $Author$
  109.  * @version $Rev$, $Date$
  110.  *
  111.  */
  112. public final class AccordiServizioParteSpecificaFruitoriChange extends Action {

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

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

  116.         // Inizializzo PageData
  117.         PageData pd = new PageData();

  118.         GeneralHelper generalHelper = new GeneralHelper(session);

  119.         // Inizializzo GeneralData
  120.         GeneralData gd = generalHelper.initGeneralData(request);

  121.         AccordiServizioParteSpecificaFruitoriChangeStrutsBean strutsBean = new AccordiServizioParteSpecificaFruitoriChangeStrutsBean();
  122.        
  123.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  124.         strutsBean.consoleOperationType = ConsoleOperationType.CHANGE;
  125.        
  126.         // Parametri relativi al tipo operazione
  127.         TipoOperazione tipoOp = TipoOperazione.CHANGE;
  128.         List<ProtocolProperty> oldProtocolPropertyList = null;

  129.         try {
  130.             AccordiServizioParteSpecificaHelper apsHelper = new AccordiServizioParteSpecificaHelper(request, pd, session);
  131.            
  132.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione delle porte delegate
  133.             Integer parentPD = ServletUtils.getIntegerAttributeFromSession(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT, session, request);
  134.             if(parentPD == null)
  135.                 parentPD = PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_NONE;
  136.            
  137.             Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session, request).getValue();
  138.            
  139.             // prendo i dati hidden del pdold e li metto nel pd attuale
  140.             PageData pdOld = ServletUtils.getPageDataFromSession(request, session);
  141.             pd.setHidden(pdOld.getHidden());

  142.            
  143.            
  144.             boolean isModalitaCompleta = apsHelper.isModalitaCompleta();
  145.            
  146.             strutsBean.editMode = apsHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);
  147.             strutsBean.protocolPropertiesSet = apsHelper.getParameter(ProtocolPropertiesCostanti.PARAMETRO_PP_SET);

  148.             String idServizio = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID);
  149.             long idServizioLong = Long.parseLong(idServizio);
  150.             String idServizioFruitore = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID);// id della fruizione
  151.             long idServizioFruitoreInt = Long.parseLong(idServizioFruitore);

  152.             // NOTA PARAMETRO_APS_MY_ID e' l'id della fruizoione, mentre PARAMETRO_APS_PROVIDER_FRUITORE e' l'id del soggetto fruitore
  153.             String idSoggettoFruitore = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_FRUITORE);
  154.             String correlato = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_CUSTOM_CORRELATO);
  155.            
  156.             String myTipo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_TIPO);
  157.             if(myTipo == null) myTipo = "";
  158.             String myNome = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_NOME);
  159.             if(myNome == null) myNome = "";

  160.             String endpointtype = apsHelper.readEndPointType();
  161.             String tipoconn = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO);
  162.             String autenticazioneHttp = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);
  163.             String user = null;
  164.             String password = null;

  165.             String connettoreDebug = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);

  166.             // token policy
  167.             String autenticazioneTokenS = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  168.             boolean autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  169.             String tokenPolicy = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  170.            
  171.             // proxy
  172.             String proxyEnabled = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  173.             String proxyHostname = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  174.             String proxyPort = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  175.             String proxyUsername = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  176.             String proxyPassword = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);

  177.             // tempi risposta
  178.             String tempiRispostaEnabled = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  179.             String tempiRispostaConnectionTimeout = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  180.             String tempiRispostaReadTimeout = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  181.             String tempiRispostaTempoMedioRisposta = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  182.            
  183.             // opzioni avanzate
  184.             String transferMode = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  185.             String transferModeChunkSize = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  186.             String redirectMode = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  187.             String redirectMaxHop = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  188.             String opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(apsHelper, transferMode, redirectMode);

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

  224.             // jms
  225.             String nome = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  226.             String tipo = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  227.             String initcont = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  228.             String urlpgk = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  229.             String provurl = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  230.             String connfact = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  231.             String sendas = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  232.             if(TipiConnettore.JMS.toString().equals(endpointtype)){
  233.                 user = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  234.                 password = apsHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  235.             }

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

  281.             //status
  282.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(apsHelper);
  283.            
  284.             String statoPackage = apsHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO_PACKAGE);

  285.             String backToStato = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_RIPRISTINA_STATO);
  286.             String actionConfirm = apsHelper.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
  287.            
  288.            
  289.             String tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  290.             boolean gestioneFruitori = false;
  291.             boolean gestioneErogatori = false;
  292.             if(tipologia!=null) {
  293.                 if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  294.                     gestioneFruitori = true;
  295.                 }
  296.                 else if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_EROGAZIONE.equals(tipologia)) {
  297.                     gestioneErogatori = true;
  298.                 }
  299.             }
  300.             String azioneConnettore = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_FRUITORE_VIEW_CONNETTORE_MAPPING_AZIONE);
  301.             String azioneConnettoreIdPorta = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_FRUITORE_VIEW_CONNETTORE_MAPPING_AZIONE_ID_PORTA);
  302.             boolean forceEnableConnettore =  gestioneFruitori;
  303.             if(endpointtype!=null && !"".equals(endpointtype) &&
  304.                 forceEnableConnettore &&
  305.                 TipiConnettore.DISABILITATO.toString().equals(endpointtype)) {
  306.                 forceEnableConnettore = false;
  307.             }
  308.            
  309.             String tmpModificaProfilo = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO);
  310.             boolean modificaProfilo = false;
  311.             if(tmpModificaProfilo!=null) {
  312.                 modificaProfilo = "true".equals(tmpModificaProfilo);
  313.             }
  314.            
  315.             boolean addPropertiesHidden = false;
  316.             if(!apsHelper.isModalitaCompleta() && !modificaProfilo) {
  317.                 addPropertiesHidden = true;
  318.             }
  319.            
  320.             boolean viewOnlyConnettore = gestioneFruitori || (PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE==parentPD);
  321.             if(modificaProfilo) {
  322.                 viewOnlyConnettore = false;
  323.             }
  324.             if(viewOnlyConnettore) {
  325.                 addPropertiesHidden = true;
  326.             }
  327.            
  328.             boolean accessoDaListaAPS = false;
  329.             String accessoDaAPSParametro = null;
  330.             if(gestioneFruitori) {
  331.                 accessoDaAPSParametro = apsHelper.getParameter(PorteDelegateCostanti.PARAMETRO_PORTE_DELEGATE_CONNETTORE_DA_LISTA_APS);
  332.                 if(Costanti.CHECK_BOX_ENABLED_TRUE.equals(accessoDaAPSParametro) || modificaProfilo) {
  333.                     accessoDaListaAPS = true;
  334.                 }
  335.             }
  336.                        
  337.             boolean validazioneDocumenti = true;
  338.             String tmpValidazioneDocumenti = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_VALIDAZIONE_DOCUMENTI);
  339.             if(apsHelper.isEditModeInProgress()){
  340.                 // primo accesso alla servlet
  341.                 if(tmpValidazioneDocumenti!=null){
  342.                     if(Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(tmpValidazioneDocumenti) || Costanti.CHECK_BOX_ENABLED.equalsIgnoreCase(tmpValidazioneDocumenti)){
  343.                         validazioneDocumenti = true;
  344.                     }
  345.                     else if("false".equalsIgnoreCase(tmpValidazioneDocumenti) || Costanti.CHECK_BOX_DISABLED.equalsIgnoreCase(tmpValidazioneDocumenti)){
  346.                         validazioneDocumenti = false;
  347.                     }
  348.                 }else{
  349.                     validazioneDocumenti = true;
  350.                 }
  351.             }else{
  352.                 if(Costanti.CHECK_BOX_ENABLED_TRUE.equalsIgnoreCase(tmpValidazioneDocumenti) || Costanti.CHECK_BOX_ENABLED.equalsIgnoreCase(tmpValidazioneDocumenti)){
  353.                     validazioneDocumenti = true;
  354.                 }
  355.                 else{
  356.                     validazioneDocumenti = false;
  357.                 }
  358.             }

  359.             String idTab = apsHelper.getParameter(CostantiControlStation.PARAMETRO_ID_TAB);
  360.             if(azioneConnettoreIdPorta!=null && !"".equals(azioneConnettoreIdPorta) && !apsHelper.isModalitaCompleta() && StringUtils.isNotEmpty(idTab)) {
  361.                 ServletUtils.setObjectIntoSession(request, session, idTab, CostantiControlStation.PARAMETRO_ID_TAB);
  362.             }
  363.            
  364.             // Prendo il servizio
  365.             AccordiServizioParteSpecificaCore apsCore = new AccordiServizioParteSpecificaCore();
  366.             SoggettiCore soggettiCore = new SoggettiCore(apsCore);
  367.             AccordiServizioParteComuneCore apcCore = new AccordiServizioParteComuneCore();

  368.             AccordoServizioParteSpecifica asps = apsCore.getAccordoServizioParteSpecifica(idServizioLong);
  369.             String nomeservizio = asps.getNome();
  370.             String tiposervizio = asps.getTipo();
  371.             Integer versioneservizio = asps.getVersione();

  372.             IDServizio idServizioObject = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  373.             idServizioObject.setUriAccordoServizioParteComune(asps.getAccordoServizioParteComune());
  374.             idServizioObject.setPortType(asps.getPortType());
  375.            
  376.             // se ho impostato nome e tipo del fruitore li utilizzo per ricostruire l'id del fruitore
  377.             if(StringUtils.isNotBlank(myTipo) && StringUtils.isNotBlank(myNome)){
  378.                 long idSoggetto = soggettiCore.getIdSoggetto(myNome,myTipo);
  379.                 idServizioFruitoreInt = apsCore.getServizioFruitore(idServizioObject, idSoggetto);
  380.             }
  381.            
  382.             // Prendo nome e tipo del fruitore dal db
  383.             Fruitore servFru = apsCore.getServizioFruitore(idServizioFruitoreInt);
  384.             myTipo = servFru.getTipo();
  385.             myNome = servFru.getNome();
  386.             // Prendo pero poi immagine del fruitore dall'asps
  387.             for (Fruitore check : asps.getFruitoreList()) {
  388.                 if(check.getTipo().equals(myTipo) && check.getNome().equals(myNome)) {
  389.                     servFru = check;
  390.                     break;
  391.                 }
  392.             }

  393.             Boolean isConnettoreCustomUltimaImmagineSalvata = servFru.getConnettore().getCustom();

  394.             List<ExtendedConnettore> listExtendedConnettore =
  395.                     ServletExtendedConnettoreUtils.getExtendedConnettore(servFru.getConnettore(), ConnettoreServletType.FRUIZIONE_ACCORDO_SERVIZIO_PARTE_SPECIFICA_CHANGE, apsHelper,
  396.                             (endpointtype==null), endpointtype); // uso endpointtype per capire se è la prima volta che entro

  397.             // Prendo il soggetto erogatore del servizio
  398.             String tipoSoggettoErogatore = asps.getTipoSoggettoErogatore();
  399.             String nomeSoggettoErogatore = asps.getNomeSoggettoErogatore();
  400.             String idSoggettoErogatoreDelServizio = apsHelper.getParameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE);
  401.             if ((idSoggettoErogatoreDelServizio == null) || idSoggettoErogatoreDelServizio.equals("")) {
  402.                 PageData oldPD = ServletUtils.getPageDataFromSession(request, session);

  403.                 idSoggettoErogatoreDelServizio = oldPD.getHidden(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE);

  404.                 if (idSoggettoErogatoreDelServizio == null || idSoggettoErogatoreDelServizio.equals("")) {
  405.                     IDSoggetto idSE = new IDSoggetto(tipoSoggettoErogatore, nomeSoggettoErogatore);
  406.                     Soggetto se = soggettiCore.getSoggettoRegistro(idSE);
  407.                     idSoggettoErogatoreDelServizio = "" + se.getId();
  408.                 }
  409.             }

  410.             if( correlato == null){
  411.                 correlato = TipologiaServizio.CORRELATO.equals(asps.getTipologiaServizio()) ?
  412.                         AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_CORRELATO :
  413.                             AccordiServizioParteSpecificaCostanti.DEFAULT_VALUE_NORMALE;
  414.             }
  415.            
  416.             boolean postBackViaPost = true;
  417.            
  418.             // setto i dati come campi hidden nel pd per portarmeli dietro

  419.             // Preparo il menu
  420.             apsHelper.makeMenu();

  421.             Soggetto soggettoFruitore = null;
  422.             if ((idSoggettoFruitore != null) && !idSoggettoFruitore.equals("")) {
  423.                 long idSoggettoFruitoreAsInt = Long.parseLong(idSoggettoFruitore);
  424.                 soggettoFruitore = soggettiCore.getSoggettoRegistro(idSoggettoFruitoreAsInt);
  425.             }
  426.             /**else {
  427.                 //              Soggetto soggetto = soggettiCore.getSoggettoRegistro(new IDSoggetto(servFru.getTipo(),servFru.getNome()));
  428.                 //              profiloSoggettoFruitore = soggetto.getVersioneProtocollo();
  429.             }*/
  430.             if(soggettoFruitore==null) {
  431.                 throw new ControlStationCoreException("Fruitore con id '"+idSoggettoFruitore+"' non trovato");
  432.             }

  433.             String protocollo = apsCore.getProtocolloAssociatoTipoServizio(tiposervizio);
  434.             List<String> versioniProtocollo = apsCore.getVersioniProtocollo(protocollo);
  435.             /**List<String> tipiSoggettiCompatibiliAccordo = soggettiCore.getTipiSoggettiGestitiProtocollo(protocollo);

  436.             // Prendo la lista di soggetti (tranne quello del servizio)
  437.             // e la metto in un array
  438. //          List<Soggetto> soggList = soggettiCore.soggettiRegistroList("", new Search(true));
  439. //          String[] soggettiList = null;
  440. //          String[] soggettiListLabel = null;
  441. //          List<String> soggettiListList = new ArrayList<>();
  442. //          List<String> soggettiListLabelList = new ArrayList<>();
  443. //          for (int i = 0; i < soggList.size(); i++) {
  444. //              Soggetto fru = soggList.get(i);
  445. //              if(tipiSoggettiCompatibiliAccordo.contains(fru.getTipo())){
  446. //                  soggettiListList.add("" + fru.getId());
  447. //                  soggettiListLabelList.add(fru.getTipo() + "/" + fru.getNome());
  448. //              }
  449. //          }
  450. //          soggettiList = soggettiListList.toArray(new String[1]);
  451. //          soggettiListLabel = soggettiListLabelList.toArray(new String[1]);*/
  452.             // Non serve una vera lista. Basta avere una lista di un elemento con la fruizione in corso
  453.             String[] soggettiList = new String [] { (idSoggettoFruitore+"") };
  454.             String[] soggettiListLabel = new String [] { (soggettoFruitore.getTipo() + "/" + soggettoFruitore.getNome()) };

  455.             // Versioni
  456.             String[] versioniValues = new String[versioniProtocollo.size()+1];
  457.             String[] versioniLabel = new String[versioniProtocollo.size()+1];
  458.             versioniLabel[0] = "usa versione fruitore";
  459.             versioniValues[0] = "-";
  460.             for (int i = 0; i < versioniProtocollo.size(); i++) {
  461.                 String tmp = versioniProtocollo.get(i);
  462.                 versioniLabel[i+1] = tmp;
  463.                 versioniValues[i+1] = tmp;
  464.             }

  465.             //se passo dal link diretto di ripristino stato imposto il nuovo stato
  466.             if(backToStato != null  && (actionConfirm == null || actionConfirm.equals(Costanti.PARAMETRO_ACTION_CONFIRM_VALUE_OK)))
  467.                 statoPackage = backToStato;


  468.             String nomefru = servFru.getNome();
  469.             String tipofru = servFru.getTipo();
  470.             IDSoggetto idSF = new IDSoggetto(tipofru, nomefru);
  471.             Soggetto soggFru = soggettiCore.getSoggettoRegistro(idSF);
  472.             idSoggettoFruitore = "" + soggFru.getId();
  473.             if(statoPackage==null)
  474.                 statoPackage = servFru.getStatoPackage();
  475.             String oldStatoPackage = servFru.getStatoPackage();

  476.            
  477.             IDFruizione idFruizione = new IDFruizione();
  478.             idFruizione.setIdServizio(idServizioObject);
  479.             idFruizione.setIdFruitore(idSF);

  480.             Connettore connettore = servFru.getConnettore();
  481.             ConfigurazioneServizioAzione configurazioneServizioAzione = null;
  482.             if(azioneConnettore!=null && !"".equals(azioneConnettore)) {
  483.                 for (ConfigurazioneServizioAzione check : servFru.getConfigurazioneAzioneList()) {
  484.                     if(check.getAzioneList().contains(azioneConnettore)) {
  485.                         configurazioneServizioAzione = check;
  486.                         connettore = configurazioneServizioAzione.getConnettore();
  487.                         break;
  488.                     }
  489.                 }
  490.             }

  491.             strutsBean.protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocollo);
  492.             strutsBean.consoleDynamicConfiguration =  strutsBean.protocolFactory.createDynamicConfigurationConsole();
  493.             strutsBean.registryReader = soggettiCore.getRegistryReader(strutsBean.protocolFactory);
  494.             strutsBean.configRegistryReader = soggettiCore.getConfigIntegrationReader(strutsBean.protocolFactory);
  495.            
  496.             strutsBean.consoleConfiguration = strutsBean.consoleDynamicConfiguration.getDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleOperationType, apsHelper,
  497.                     strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione  );
  498.             strutsBean.protocolProperties = apsHelper.estraiProtocolPropertiesDaRequest(strutsBean.consoleConfiguration, strutsBean.consoleOperationType);

  499.             oldProtocolPropertyList = servFru.getProtocolPropertyList();

  500.             if(strutsBean.protocolPropertiesSet == null){
  501.                 ProtocolPropertiesUtils.mergeProtocolPropertiesRegistry(strutsBean.protocolProperties, oldProtocolPropertyList, strutsBean.consoleOperationType);
  502.             }

  503.             Parameter pIdSoggettoFruitore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_PROVIDER_FRUITORE,idSoggettoFruitore);
  504.             Parameter pMyId = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_ID, idServizioFruitoreInt+"");
  505.             Parameter pMyTipo = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_TIPO, myTipo);
  506.             Parameter pMyNome = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MY_NOME, myNome);
  507.             Parameter pIdSoggettoErogatore = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID_SOGGETTO_EROGATORE, idSoggettoErogatoreDelServizio);
  508.             Parameter pId = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_ID, idServizio);
  509.             Parameter pModificaProfilo = new Parameter(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_MODIFICA_PROFILO, modificaProfilo+"");
  510.             Parameter urlChange = new Parameter("", AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, pMyId, pId, pIdSoggettoErogatore,pMyTipo,pMyNome,pIdSoggettoFruitore,pModificaProfilo);
  511.            
  512.             String fruitoreLabel = apsHelper.getLabelNomeSoggetto(protocollo, tipofru , nomefru);
  513.             Properties propertiesProprietario = new Properties();
  514.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_ID_PROPRIETARIO, idServizioFruitoreInt+"");
  515.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO, ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_PROPRIETARIO_VALUE_FRUITORE);
  516.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_NOME_PROPRIETARIO, fruitoreLabel);
  517.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_URL_ORIGINALE_CHANGE,
  518.                     URLEncoder.encode( urlChange.getValue() , "UTF-8"));
  519.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_PROTOCOLLO, protocollo);
  520.             propertiesProprietario.setProperty(ProtocolPropertiesCostanti.PARAMETRO_PP_TIPO_ACCORDO, "");
  521.            
  522.             String postBackElementName = apsHelper.getPostBackElementName();
  523.            
  524.             AccordoServizioParteComuneSintetico as = apcCore.getAccordoServizioSintetico(asps.getIdAccordo());
  525.            
  526.             boolean forceHttps = false;
  527.             boolean forceHttpsClient = false;
  528.             boolean forcePDND = false;
  529.             boolean forceOAuth = false;
  530.             if(apsHelper.isProfiloModIPA(protocollo)) {
  531.                 forceHttps = apsHelper.forceHttpsProfiloModiPA();
  532.                
  533.                 BooleanNullable forceHttpsClientWrapper = BooleanNullable.NULL();
  534.                 BooleanNullable forcePDNDWrapper = BooleanNullable.NULL();
  535.                 BooleanNullable forceOAuthWrapper = BooleanNullable.NULL();
  536.                
  537.                 apsHelper.readModIConfiguration(forceHttpsClientWrapper, forcePDNDWrapper, forceOAuthWrapper,
  538.                         IDAccordoFactory.getInstance().getIDAccordoFromAccordo(as), asps.getPortType(),
  539.                         configurazioneServizioAzione!=null?configurazioneServizioAzione.getAzioneList() : null);
  540.                
  541.                 if(forceHttpsClientWrapper.getValue()!=null) {
  542.                     forceHttpsClient = forceHttpsClientWrapper.getValue().booleanValue();
  543.                 }
  544.                 if(forcePDNDWrapper.getValue()!=null) {
  545.                     forcePDND = forcePDNDWrapper.getValue().booleanValue();
  546.                 }
  547.                 if(forceOAuthWrapper.getValue()!=null) {
  548.                     forceOAuth = forceOAuthWrapper.getValue().booleanValue();
  549.                 }
  550.             }
  551.            
  552.             // setto la barra del titolo
  553.             PorteDelegateHelper porteDelegateHelper = new PorteDelegateHelper(request, pdOld, session);
  554.             // Per il titolo utilizzo sempre e comunque il tipo PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE
  555.             List<Parameter> lstParm = porteDelegateHelper.getTitoloPD(PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE, idSoggettoFruitore,idServizio, idServizioFruitore);

  556.             if(viewOnlyConnettore) {
  557.                                
  558.                 String labelPerPorta = null;
  559.                 if(accessoDaListaAPS) {
  560.                     if(!isModalitaCompleta) {
  561.                         if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  562.                             labelPerPorta = ErogazioniCostanti.LABEL_ASPS_PORTE_DELEGATE_MODIFICA_CONNETTORE;
  563.                         } else {
  564.                             labelPerPorta = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE_DI+ porteDelegateHelper.getLabelIdServizio(asps);
  565.                         }
  566.                     }
  567.                     else {
  568.                         labelPerPorta = PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE;
  569.                     }
  570.                 }
  571.                 else {
  572.                     PorteDelegateCore porteDelegateCore = new PorteDelegateCore(apsCore);
  573.                     PortaDelegata portaDelegata = porteDelegateCore.getPortaDelegata(Long.parseLong(azioneConnettoreIdPorta));
  574.                     labelPerPorta = porteDelegateCore.getLabelRegolaMappingFruizionePortaDelegata(
  575.                             PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE_DI,
  576.                             PorteDelegateCostanti.LABEL_PARAMETRO_PORTE_DELEGATE_CONNETTORE,
  577.                             portaDelegata);
  578.                 }
  579.                
  580.                 Parameter pConnettore = new Parameter(labelPerPorta, null);
  581.                 if(accessoDaListaAPS) {
  582.                     lstParm.set(lstParm.size()-1, pConnettore);
  583.                 }
  584.                 else {
  585.                     lstParm.add(pConnettore);
  586.                 }
  587.             }
  588.             else if(modificaProfilo) {
  589.                 lstParm.set(lstParm.size()-1, new Parameter(AccordiServizioParteComuneCostanti.LABEL_PARAMETRO_APC_PROTOCOLLO, null));
  590.             }
  591.             else {
  592.                 lstParm.set(lstParm.size()-1, new Parameter(fruitoreLabel, null));
  593.             }
  594.            
  595.             // Se idhid = null, devo visualizzare la pagina per la
  596.             // modifica dati

  597.             if (ServletUtils.isEditModeInProgress(strutsBean.editMode)) {
  598.                 // setto la barra del titolo
  599.                 ServletUtils.setPageDataTitle(pd, lstParm );


  600.                 Map<String, String> props = connettore.getProperties();

  601.                 if (endpointtype == null) {
  602.                     if ((connettore.getCustom()!=null && connettore.getCustom()) &&
  603.                             !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_HTTPS) &&
  604.                             !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_FILE) &&
  605.                             !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_STATUS)) {
  606.                         endpointtype = ConnettoriCostanti.DEFAULT_CONNETTORE_TYPE_CUSTOM;
  607.                         tipoconn = connettore.getTipo();
  608.                     } else
  609.                         endpointtype = connettore.getTipo();
  610.                    
  611.                     if(forceEnableConnettore &&
  612.                         TipiConnettore.DISABILITATO.toString().equals(endpointtype)) {
  613.                         forceEnableConnettore = false;
  614.                     }
  615.                 }

  616.                 if(connettoreDebug==null && props!=null){
  617.                     String v = props.get(CostantiDB.CONNETTORE_DEBUG);
  618.                     if(v!=null){
  619.                         if("true".equals(v)){
  620.                             connettoreDebug = Costanti.CHECK_BOX_ENABLED;
  621.                         }
  622.                         else{
  623.                             connettoreDebug = Costanti.CHECK_BOX_DISABLED;
  624.                         }
  625.                     }
  626.                 }

  627.                 if(proxyEnabled==null && props!=null){
  628.                     String v = props.get(CostantiDB.CONNETTORE_PROXY_TYPE);
  629.                     if(v!=null && !"".equals(v)){
  630.                         proxyEnabled = Costanti.CHECK_BOX_ENABLED_TRUE;

  631.                         // raccolgo anche altre proprietà
  632.                         v = props.get(CostantiDB.CONNETTORE_PROXY_HOSTNAME);
  633.                         if(v!=null && !"".equals(v)){
  634.                             proxyHostname = v.trim();
  635.                         }
  636.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PORT);
  637.                         if(v!=null && !"".equals(v)){
  638.                             proxyPort = v.trim();
  639.                         }
  640.                         v = props.get(CostantiDB.CONNETTORE_PROXY_USERNAME);
  641.                         if(v!=null && !"".equals(v)){
  642.                             proxyUsername = v.trim();
  643.                         }
  644.                         v = props.get(CostantiDB.CONNETTORE_PROXY_PASSWORD);
  645.                         if(v!=null && !"".equals(v)){
  646.                             proxyPassword = v.trim();
  647.                         }
  648.                     }
  649.                 }
  650.                
  651.                 if(tempiRispostaEnabled == null ||
  652.                         tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout)
  653.                         ||
  654.                         tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout)
  655.                         ||
  656.                         tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ){
  657.                    
  658.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  659.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  660.                    
  661.                     if( props!=null ) {
  662.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  663.                             String v = props.get(CostantiDB.CONNETTORE_CONNECTION_TIMEOUT);
  664.                             if(v!=null && !"".equals(v)){
  665.                                 tempiRispostaConnectionTimeout = v.trim();
  666.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  667.                             }
  668.                             else {
  669.                                 tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  670.                             }
  671.                         }
  672.                            
  673.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  674.                             String v = props.get(CostantiDB.CONNETTORE_READ_CONNECTION_TIMEOUT);
  675.                             if(v!=null && !"".equals(v)){
  676.                                 tempiRispostaReadTimeout = v.trim();
  677.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  678.                             }
  679.                             else {
  680.                                 tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  681.                             }
  682.                         }
  683.                        
  684.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  685.                             String v = props.get(CostantiDB.CONNETTORE_TEMPO_MEDIO_RISPOSTA);
  686.                             if(v!=null && !"".equals(v)){
  687.                                 tempiRispostaTempoMedioRisposta = v.trim();
  688.                                 tempiRispostaEnabled =  Costanti.CHECK_BOX_ENABLED_TRUE;
  689.                             }
  690.                             else {
  691.                                 tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  692.                             }
  693.                         }
  694.                     }
  695.                     else {
  696.                         if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  697.                             tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaFruizione().getConnectionTimeout().intValue()+"";
  698.                         }
  699.                         if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  700.                             tempiRispostaReadTimeout = configGenerale.getTempiRispostaFruizione().getReadTimeout().intValue()+"";
  701.                         }
  702.                         if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  703.                             tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaFruizione().getTempoMedioRisposta().intValue()+"";
  704.                         }
  705.                     }
  706.                 }

  707.                 if(transferMode==null && props!=null){
  708.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE);
  709.                     if(v!=null && !"".equals(v)){

  710.                         transferMode = v.trim();

  711.                         if(TransferLengthModes.TRANSFER_ENCODING_CHUNKED.getNome().equals(transferMode)){
  712.                             // raccolgo anche altra proprietà correlata
  713.                             v = props.get(CostantiDB.CONNETTORE_HTTP_DATA_TRANSFER_MODE_CHUNK_SIZE);
  714.                             if(v!=null && !"".equals(v)){
  715.                                 transferModeChunkSize = v.trim();
  716.                             }
  717.                         }

  718.                     }
  719.                 }

  720.                 if(redirectMode==null && props!=null){
  721.                     String v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_FOLLOW);
  722.                     if(v!=null && !"".equals(v)){

  723.                         if("true".equalsIgnoreCase(v.trim()) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v.trim())){
  724.                             redirectMode = CostantiConfigurazione.ABILITATO.getValue();
  725.                         }
  726.                         else{
  727.                             redirectMode = CostantiConfigurazione.DISABILITATO.getValue();
  728.                         }                  

  729.                         if(CostantiConfigurazione.ABILITATO.getValue().equals(redirectMode)){
  730.                             // raccolgo anche altra proprietà correlata
  731.                             v = props.get(CostantiDB.CONNETTORE_HTTP_REDIRECT_MAX_HOP);
  732.                             if(v!=null && !"".equals(v)){
  733.                                 redirectMaxHop = v.trim();
  734.                             }
  735.                         }

  736.                     }
  737.                 }

  738.                 if(tokenPolicy==null && props!=null){
  739.                     String v = props.get(CostantiDB.CONNETTORE_TOKEN_POLICY);
  740.                     if(v!=null && !"".equals(v)){
  741.                         tokenPolicy = v;
  742.                         autenticazioneToken = true;
  743.                     }
  744.                 }
  745.                
  746.                 opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(apsHelper, transferMode, redirectMode);

  747.                 if (url == null) {
  748.                     url = props.get(CostantiDB.CONNETTORE_HTTP_LOCATION);
  749.                 }
  750.                 if (nome == null) {
  751.                     nome = props.get(CostantiDB.CONNETTORE_JMS_NOME);
  752.                     tipo = props.get(CostantiDB.CONNETTORE_JMS_TIPO);
  753.                     String userTmp = props.get(CostantiDB.CONNETTORE_USER);
  754.                     if(userTmp!=null && !"".equals(userTmp)){
  755.                         user = userTmp;
  756.                     }
  757.                     String passwordTmp = props.get(CostantiDB.CONNETTORE_PWD);
  758.                     if(passwordTmp!=null && !"".equals(passwordTmp)){
  759.                         password = passwordTmp;
  760.                     }
  761.                     initcont = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_INITIAL);
  762.                     urlpgk = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_FACTORY_URL_PKG);
  763.                     provurl = props.get(CostantiDB.CONNETTORE_JMS_CONTEXT_JAVA_NAMING_PROVIDER_URL);
  764.                     connfact = props.get(CostantiDB.CONNETTORE_JMS_CONNECTION_FACTORY);
  765.                     sendas = props.get(CostantiDB.CONNETTORE_JMS_SEND_AS);
  766.                 }

  767.                 autenticazioneHttp = apsHelper.getAutenticazioneHttp(autenticazioneHttp, endpointtype, user);

  768.                 if(autenticazioneApiKey==null || StringUtils.isEmpty(autenticazioneApiKey)) {
  769.                     apiKeyHeader = props.get(CostantiDB.CONNETTORE_APIKEY_HEADER);
  770.                     apiKeyValue = props.get(CostantiDB.CONNETTORE_APIKEY);
  771.                     appIdHeader = props.get(CostantiDB.CONNETTORE_APIKEY_APPID_HEADER);
  772.                     appIdValue = props.get(CostantiDB.CONNETTORE_APIKEY_APPID);
  773.                    
  774.                     autenticazioneApiKey = apsHelper.getAutenticazioneApiKey(autenticazioneApiKey, endpointtype, apiKeyValue);
  775.                     if(ServletUtils.isCheckBoxEnabled(autenticazioneApiKey)) {
  776.                         useOAS3Names = apsHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  777.                         useAppId = apsHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  778.                     }
  779.                     else {
  780.                         apiKeyValue=null;
  781.                         apiKeyHeader=null;
  782.                         appIdHeader=null;
  783.                         appIdValue=null;
  784.                     }
  785.                 }
  786.                
  787.                 if (httpstipologia == null) {
  788.                     httpsurl = props.get(CostantiDB.CONNETTORE_HTTPS_LOCATION);
  789.                     httpstipologia = props.get(CostantiDB.CONNETTORE_HTTPS_SSL_TYPE);
  790.                     httpshostverifyS = props.get(CostantiDB.CONNETTORE_HTTPS_HOSTNAME_VERIFIER);
  791.                     if(httpshostverifyS!=null){
  792.                         httpshostverify = Boolean.valueOf(httpshostverifyS);
  793.                     }
  794.                     httpsTrustVerifyCertS = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_ALL_CERTS);
  795.                     if(httpsTrustVerifyCertS!=null){
  796.                         httpsTrustVerifyCert = !Boolean.valueOf(httpsTrustVerifyCertS);
  797.                     }
  798.                     else {
  799.                         httpsTrustVerifyCert = true; // backward compatibility
  800.                     }
  801.                     httpspath = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  802.                     httpstipo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  803.                     httpspwd = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  804.                     httpsalgoritmo = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  805.                     httpspwdprivatekeytrust = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  806.                     httpspathkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  807.                     httpstipokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_TYPE);
  808.                     httpspwdkey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  809.                     httpspwdprivatekey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD);
  810.                     httpsalgoritmokey = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  811.                     httpsKeyAlias = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_ALIAS);
  812.                     httpsTrustStoreCRLs = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_CRLS);
  813.                     httpsTrustStoreOCSPPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  814.                     httpsKeyStoreBYOKPolicy = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  815.                     if (httpspathkey == null) {
  816.                         httpsstato = false;
  817.                         httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  818.                     } else {
  819.                         httpsstato = true;
  820.                         if (httpspathkey.equals(httpspath) &&
  821.                                 httpstipokey.equals(httpstipo) &&
  822.                                 (
  823.                                     (httpspwdkey!=null && httpspwdkey.equals(httpspwd))
  824.                                     ||
  825.                                     (httpspwdkey==null && httpspwd==null)
  826.                                 )
  827.                             )
  828.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_DEFAULT;
  829.                         else
  830.                             httpskeystore = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE_RIDEFINISCI;
  831.                     }
  832.                 }

  833.                 // default
  834.                 if(httpsalgoritmo==null || "".equals(httpsalgoritmo)){
  835.                     httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  836.                 }
  837.                 if(httpsalgoritmokey==null || "".equals(httpsalgoritmokey)){
  838.                     httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  839.                 }
  840.                 if(httpstipologia==null || "".equals(httpstipologia)){
  841.                     httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  842.                 }
  843.                 if(postBackElementName == null || "".equals(postBackElementName) ){
  844.                     // altrimenti sono checkbox
  845.                     if(httpshostverifyS==null || "".equals(httpshostverifyS)){
  846.                         httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  847.                         httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  848.                     }
  849.                     if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  850.                         httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  851.                         httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  852.                     }
  853.                 }
  854.                
  855.                 // file
  856.                 if(responseInputMode==null && props!=null){
  857.                    
  858.                     requestOutputFileName = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE);  
  859.                     requestOutputFileNamePermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_PERMISSIONS);  
  860.                     requestOutputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS);  
  861.                     requestOutputFileNameHeadersPermissions = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_FILE_HEADERS_PERMISSIONS);
  862.                     String v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  863.                     if(v!=null && !"".equals(v) &&
  864.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  865.                         ){
  866.                         requestOutputParentDirCreateIfNotExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  867.                     }                  
  868.                     v = props.get(CostantiDB.CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE);
  869.                     if(v!=null && !"".equals(v) &&
  870.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  871.                         ){
  872.                         requestOutputOverwriteIfExists = Costanti.CHECK_BOX_ENABLED_TRUE;
  873.                     }  
  874.                    
  875.                     v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  876.                     if(v!=null && !"".equals(v) &&
  877.                         ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  878.                         ){
  879.                         responseInputMode = CostantiConfigurazione.ABILITATO.getValue();
  880.                     }
  881.                     if(CostantiConfigurazione.ABILITATO.getValue().equals(responseInputMode)){                      
  882.                         responseInputFileName = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE);
  883.                         responseInputFileNameHeaders = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_HEADERS);
  884.                         v = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_FILE_DELETE_AFTER_READ);
  885.                         if(v!=null && !"".equals(v) &&
  886.                             ("true".equalsIgnoreCase(v) || CostantiConfigurazione.ABILITATO.getValue().equalsIgnoreCase(v) )
  887.                             ){
  888.                             responseInputDeleteAfterRead = Costanti.CHECK_BOX_ENABLED_TRUE;
  889.                         }                      
  890.                         responseInputWaitTime = props.get(CostantiDB.CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);                    
  891.                     }
  892.                    
  893.                 }

  894.                 if (props != null && connettoreStatusParams != null) {
  895.                     connettoreStatusParams.updateFromDB(props);
  896.                 }
  897.                 if(strutsBean.wsdlimpler == null){
  898.                     strutsBean.wsdlimpler = new BinaryParameter();
  899.                     strutsBean.wsdlimpler.setValue(servFru.getByteWsdlImplementativoErogatore());
  900.                 }

  901.                 if(strutsBean.wsdlimplfru == null){
  902.                     strutsBean.wsdlimplfru = new BinaryParameter();
  903.                     strutsBean.wsdlimplfru.setValue(servFru.getByteWsdlImplementativoFruitore());
  904.                 }

  905.                 if(backToStato == null){
  906.                     // preparo i campi
  907.                     List<DataElement> dati = new ArrayList<>();
  908.                     dati.add(ServletUtils.getDataElementForEditModeFinished());

  909.                     // update della configurazione
  910.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  911.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);

  912.                     dati = apsHelper.addHiddenFieldsToDati(tipoOp, idServizio, null, null, dati);

  913.                     dati = apsHelper.addServiziFruitoriToDati(dati, idSoggettoFruitore, strutsBean.wsdlimpler, strutsBean.wsdlimplfru, soggettiList, soggettiListLabel, idServizio,
  914.                             idServizioFruitore,tipoOp, idSoggettoErogatoreDelServizio, "", "", nomeservizio, tiposervizio, versioneservizio, correlato,
  915.                             statoPackage,oldStatoPackage,asps.getStatoPackage(),null,validazioneDocumenti,
  916.                             null,
  917.                             null,null,null,null,null,null,null,null,null,null,null,null,
  918.                             apcCore.toMessageServiceBinding(as.getServiceBinding()), apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica()),
  919.                             azioneConnettore, azioneConnettoreIdPorta, accessoDaAPSParametro, parentPD,null,null,null,null,null,null,null,null,null,
  920.                             null,null,null,null,null,
  921.                             null,null,
  922.                             null,null,null,null,
  923.                             null,null,null,null,null,
  924.                             null,
  925.                             null,null,null);

  926.                     dati = apsHelper.addFruitoreToDati(tipoOp, versioniLabel, versioniValues, dati,
  927.                             oldStatoPackage, idServizio, idServizioFruitore, idSoggettoErogatoreDelServizio,
  928.                             nomeservizio, tiposervizio, versioneservizio, idSoggettoFruitore,
  929.                             asps, servFru);

  930.                     if(modificaProfilo) {
  931.                         dati = apsHelper.addEndPointToDatiAsHidden(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug,
  932.                                 endpointtype, autenticazioneHttp,
  933.                                 url, nome,
  934.                                 tipo, user, password, initcont, urlpgk, provurl,
  935.                                 connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  936.                                 httpsurl, httpstipologia, httpshostverify,
  937.                                 httpsTrustVerifyCert, httpspath, httpstipo,
  938.                                 httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  939.                                 httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  940.                                 httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  941.                                 httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  942.                                 tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  943.                                 idSoggettoErogatoreDelServizio, null, null, null, null,
  944.                                 oldStatoPackage,
  945.                                 proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  946.                                 tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  947.                                 opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  948.                                 requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  949.                                 requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  950.                                 responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  951.                                 autenticazioneToken, tokenPolicy,
  952.                                 autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  953.                                 connettoreStatusParams);
  954.                     }
  955.                     else {
  956.                         dati = apsHelper.addEndPointToDati(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug, endpointtype, autenticazioneHttp,
  957.                                 null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX,
  958.                                 url, nome,
  959.                                 tipo, user, password, initcont, urlpgk, provurl,
  960.                                 connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  961.                                 httpsurl, httpstipologia, httpshostverify,
  962.                                 httpsTrustVerifyCert, httpspath, httpstipo,
  963.                                 httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  964.                                 httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  965.                                 httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  966.                                 httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  967.                                 tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  968.                                 idSoggettoErogatoreDelServizio, azioneConnettoreIdPorta, null, null, null,
  969.                                 oldStatoPackage, true,
  970.                                 isConnettoreCustomUltimaImmagineSalvata,
  971.                                 proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  972.                                 tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  973.                                 opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  974.                                 requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  975.                                 requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  976.                                 responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  977.                                 autenticazioneToken, tokenPolicy, forcePDND, forceOAuth,
  978.                                 listExtendedConnettore, forceEnableConnettore,
  979.                                 protocollo, forceHttps, forceHttpsClient, false, false, null, null,
  980.                                 autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  981.                                 connettoreStatusParams,
  982.                                 postBackViaPost);
  983.                     }

  984.                     // aggiunta campi custom
  985.                     if(addPropertiesHidden) {
  986.                         dati = apsHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  987.                     }else {
  988.                         dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  989.                     }

  990.                     pd.setDati(dati);

  991.                     if(apsHelper.isShowGestioneWorkflowStatoDocumenti() && StatiAccordo.finale.toString().equals(servFru.getStatoPackage())){
  992.                         pd.setMode(Costanti.DATA_ELEMENT_EDIT_MODE_DISABLE_NAME);
  993.                     }

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

  995.                     return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,
  996.                             ForwardParams.CHANGE());
  997.                 }
  998.             }

  999.             // Controlli sui campi immessi
  1000.             boolean isOk = apsHelper.serviziFruitoriCheckData(tipoOp,
  1001.                     soggettiList, idServizio, "", "", null, "", "", idSoggettoFruitore,
  1002.                     endpointtype, url, nome, tipo, user, password, initcont,
  1003.                     urlpgk, provurl, connfact, sendas, strutsBean.wsdlimpler, strutsBean.wsdlimplfru,
  1004.                     idServizioFruitore, httpsurl,
  1005.                     httpstipologia, httpshostverify,
  1006.                     httpsTrustVerifyCert, httpspath, httpstipo,
  1007.                     httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1008.                     httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1009.                     httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1010.                     httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1011.                     tipoconn,validazioneDocumenti,backToStato,autenticazioneHttp,
  1012.                     proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1013.                     tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1014.                     opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1015.                     requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1016.                     requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1017.                     responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1018.                     null,null,null,null,null,null,null,
  1019.                     null, null, null,null,null,
  1020.                     autenticazioneToken, tokenPolicy,
  1021.                     autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1022.                     listExtendedConnettore);

  1023.             // updateDynamic
  1024.             if(isOk){
  1025.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1026.                         strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);          
  1027.             }
  1028.            
  1029.             // Validazione base dei parametri custom
  1030.             if(isOk){
  1031.                 try{
  1032.                     apsHelper.validaProtocolProperties(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, strutsBean.protocolProperties);
  1033.                 }catch(ProtocolException e){
  1034.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1035.                     pd.setMessage(e.getMessage());
  1036.                     isOk = false;
  1037.                 }
  1038.             }

  1039.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  1040.             if(isOk){
  1041.                 try{
  1042.                     //validazione campi dinamici
  1043.                     strutsBean.consoleDynamicConfiguration.validateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1044.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);
  1045.                 }catch(ProtocolException e){
  1046.                     ControlStationCore.getLog().error(e.getMessage(),e);
  1047.                     pd.setMessage(e.getMessage());
  1048.                     isOk = false;
  1049.                 }
  1050.             }

  1051.             if (!isOk) {
  1052.                 // setto la barra del titolo
  1053.                 ServletUtils.setPageDataTitle(pd, lstParm );

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

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

  1057.                 // update della configurazione
  1058.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1059.                         strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);

  1060.                 dati = apsHelper.addHiddenFieldsToDati(tipoOp, idServizio, null, null, dati);

  1061.                 dati = apsHelper.addServiziFruitoriToDati(dati, idSoggettoFruitore, strutsBean.wsdlimpler, strutsBean.wsdlimplfru, soggettiList, soggettiListLabel, idServizio,
  1062.                         idServizioFruitore, tipoOp, idSoggettoErogatoreDelServizio, "", "", nomeservizio, tiposervizio, versioneservizio,  correlato,
  1063.                         statoPackage,oldStatoPackage,asps.getStatoPackage(),null,validazioneDocumenti,
  1064.                         null,
  1065.                         null,null,null,null,null,null,null,null,null,null,null,null,
  1066.                         apcCore.toMessageServiceBinding(as.getServiceBinding()), apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica()),
  1067.                         azioneConnettore, azioneConnettoreIdPorta, accessoDaAPSParametro, parentPD,null,null,null,null,null,null,null,null,null,
  1068.                         null,null,null,null,null,
  1069.                         null,null,
  1070.                         null,null,null,null,
  1071.                         null,null,null,null,null,
  1072.                         null,
  1073.                         null,null,null);

  1074.                 dati = apsHelper.addFruitoreToDati(tipoOp, versioniLabel, versioniValues, dati,
  1075.                         oldStatoPackage, idServizio, idServizioFruitore, idSoggettoErogatoreDelServizio, nomeservizio, tiposervizio, versioneservizio, idSoggettoFruitore,
  1076.                         asps, servFru);

  1077.                 if(modificaProfilo) {
  1078.                     dati = apsHelper.addEndPointToDatiAsHidden(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug,
  1079.                             endpointtype, autenticazioneHttp,
  1080.                             url, nome,
  1081.                             tipo, user, password, initcont, urlpgk, provurl,
  1082.                             connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1083.                             httpsurl, httpstipologia, httpshostverify,
  1084.                             httpsTrustVerifyCert, httpspath, httpstipo,
  1085.                             httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1086.                             httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1087.                             httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1088.                             httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1089.                             tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1090.                             idSoggettoErogatoreDelServizio, null, null, null, null,
  1091.                             oldStatoPackage,
  1092.                             proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1093.                             tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1094.                             opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1095.                             requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1096.                             requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1097.                             responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1098.                             autenticazioneToken, tokenPolicy,
  1099.                             autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1100.                             connettoreStatusParams
  1101.                             );
  1102.                 }
  1103.                 else {
  1104.                     dati = apsHelper.addEndPointToDati(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug, endpointtype, autenticazioneHttp,
  1105.                             null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX,
  1106.                             url, nome,
  1107.                             tipo, user, password, initcont, urlpgk, provurl,
  1108.                             connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1109.                             httpsurl, httpstipologia, httpshostverify,
  1110.                             httpsTrustVerifyCert, httpspath, httpstipo,
  1111.                             httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1112.                             httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1113.                             httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1114.                             httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1115.                             tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1116.                             idSoggettoErogatoreDelServizio, azioneConnettoreIdPorta, null, null, null,
  1117.                             oldStatoPackage, true,
  1118.                             isConnettoreCustomUltimaImmagineSalvata,
  1119.                             proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1120.                             tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1121.                             opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1122.                             requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1123.                             requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1124.                             responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1125.                             autenticazioneToken, tokenPolicy,  forcePDND, forceOAuth,
  1126.                             listExtendedConnettore, forceEnableConnettore,
  1127.                             protocollo, forceHttps, forceHttpsClient, false, false, null, null,
  1128.                             autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1129.                             connettoreStatusParams,
  1130.                             postBackViaPost);
  1131.                 }

  1132.                 // aggiunta campi custom
  1133.                 if(addPropertiesHidden) {
  1134.                     dati = apsHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1135.                 }else {
  1136.                     dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1137.                 }

  1138.                 pd.setDati(dati);

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

  1140.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,
  1141.                         ForwardParams.CHANGE());
  1142.             }

  1143.             if(actionConfirm == null &&
  1144.                 backToStato != null){

  1145.                 // setto la barra del titolo
  1146.                 ServletUtils.setPageDataTitle(pd, lstParm );

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

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

  1150.                 // update della configurazione
  1151.                 strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1152.                         strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);

  1153.                 dati = apsHelper.addHiddenFieldsToDati(tipoOp, idServizio, null, null, dati);
  1154.                
  1155.                 dati = apsHelper.addServiziFruitoriToDati(dati, idSoggettoFruitore, strutsBean.wsdlimpler, strutsBean.wsdlimplfru, soggettiList, soggettiListLabel, idServizio,
  1156.                         idServizioFruitore, tipoOp, idSoggettoErogatoreDelServizio, "", "", nomeservizio, tiposervizio, versioneservizio,  correlato,
  1157.                         statoPackage,oldStatoPackage,asps.getStatoPackage(),null,validazioneDocumenti,
  1158.                         null,
  1159.                         null,null,null,null,null,null,null,null,null,null,null,null,
  1160.                         apcCore.toMessageServiceBinding(as.getServiceBinding()), apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica()),
  1161.                         azioneConnettore, azioneConnettoreIdPorta, accessoDaAPSParametro, parentPD,null,null,null,null,null,null,null,null,null,
  1162.                         null,null,null,null,null,
  1163.                         null,null,
  1164.                         null,null,null,null,
  1165.                         null,null,null,null,null,
  1166.                         null,
  1167.                         null,null,null);

  1168.                 dati = apsHelper.addFruitoreToDati(tipoOp, versioniLabel, versioniValues, dati,
  1169.                         oldStatoPackage, idServizio, idServizioFruitore, idSoggettoErogatoreDelServizio, nomeservizio, tiposervizio, versioneservizio, idSoggettoFruitore,
  1170.                         asps, servFru);

  1171.                 dati = apsHelper.addEndPointToDati(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug, endpointtype, autenticazioneHttp,
  1172.                         null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX,
  1173.                         url, nome,
  1174.                         tipo, user, password, initcont, urlpgk, provurl,
  1175.                         connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1176.                         httpsurl, httpstipologia, httpshostverify,
  1177.                         httpsTrustVerifyCert, httpspath, httpstipo,
  1178.                         httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1179.                         httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1180.                         httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1181.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1182.                         tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1183.                         idSoggettoErogatoreDelServizio, azioneConnettoreIdPorta, null, null, null,
  1184.                         oldStatoPackage, true,
  1185.                         isConnettoreCustomUltimaImmagineSalvata,
  1186.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1187.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1188.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1189.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1190.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1191.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1192.                         autenticazioneToken, tokenPolicy, forcePDND, forceOAuth,
  1193.                         listExtendedConnettore, forceEnableConnettore,
  1194.                         protocollo, forceHttps, forceHttpsClient, false, false, null, null,
  1195.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1196.                         connettoreStatusParams,
  1197.                         postBackViaPost);

  1198.                 dati = apsHelper.addServiziFruitoriToDatiAsHidden(dati, idSoggettoFruitore, "", "", soggettiList, soggettiListLabel, idServizio,
  1199.                         idServizioFruitore, tipoOp, idSoggettoErogatoreDelServizio, "", "", nomeservizio, tiposervizio,  correlato,statoPackage,oldStatoPackage,asps.getStatoPackage(),null,validazioneDocumenti,
  1200.                         azioneConnettore);

  1201.                 dati = apsHelper.addFruitoreToDatiAsHidden(tipoOp, versioniLabel, versioniValues, dati,
  1202.                         oldStatoPackage, idServizio, idServizioFruitore, idSoggettoErogatoreDelServizio, nomeservizio, tiposervizio, idSoggettoFruitore);

  1203.                 dati = apsHelper.addEndPointToDatiAsHidden(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug,
  1204.                         endpointtype, autenticazioneHttp,
  1205.                         url, nome,
  1206.                         tipo, user, password, initcont, urlpgk, provurl,
  1207.                         connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1208.                         httpsurl, httpstipologia, httpshostverify,
  1209.                         httpsTrustVerifyCert, httpspath, httpstipo,
  1210.                         httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1211.                         httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1212.                         httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1213.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1214.                         tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1215.                         idSoggettoErogatoreDelServizio, null, null, null, null,
  1216.                         oldStatoPackage,
  1217.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1218.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1219.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1220.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1221.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1222.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1223.                         autenticazioneToken, tokenPolicy,
  1224.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1225.                         connettoreStatusParams
  1226.                         );
  1227.                
  1228.                 if(backToStato != null) {
  1229.                     // backtostato per chiudere la modifica dopo la conferma
  1230.                     DataElement de = new DataElement();
  1231.                     de.setLabel(CostantiControlStation.LABEL_PARAMETRO_NOME);
  1232.                     de.setValue(backToStato);
  1233.                     de.setType(DataElementType.HIDDEN);
  1234.                     de.setName(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_RIPRISTINA_STATO);
  1235.                     dati.add(de);
  1236.                 }

  1237.                 // aggiunta campi custom
  1238.                 if(addPropertiesHidden) {
  1239.                     dati = apsHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1240.                 }else {
  1241.                     dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1242.                    
  1243.                     // aggiunta campi custom come hidden, quelli sopra vengono bruciati dal no-edit
  1244.                     dati = apsHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1245.                 }

  1246.                 String msg = "&Egrave; stato richiesto di ripristinare lo stato dell soggetto fruitore [{0}] in operativo. Tale operazione permetter&agrave; successive modifiche all''accordo. Vuoi procedere?";
  1247.            
  1248.                 String pre = Costanti.HTML_MODAL_SPAN_PREFIX;
  1249.                 String post = Costanti.HTML_MODAL_SPAN_SUFFIX;
  1250.                 pd.setMessage(pre + MessageFormat.format(msg, fruitoreLabel) + post, Costanti.MESSAGE_TYPE_CONFIRM);
  1251.                
  1252.                 pd.setDati(dati);

  1253.                 String[][] bottoni = {
  1254.                         { Costanti.LABEL_MONITOR_BUTTON_ANNULLA,
  1255.                             Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_PREFIX +
  1256.                             Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_SUFFIX

  1257.                         },
  1258.                         { Costanti.LABEL_MONITOR_BUTTON_CONFERMA,
  1259.                             Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_PREFIX +
  1260.                             Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_SUFFIX }};

  1261.                 pd.setBottoni(bottoni);
  1262.                
  1263.                 // disabilito la form
  1264.                 pd.disableEditMode();

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

  1266.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,
  1267.                         ForwardParams.CHANGE());

  1268.             }

  1269.             // Modifico i dati del fruitore nel db
  1270.             Connettore connettoreNew = null;
  1271.             connettoreNew = new Connettore();
  1272.             connettoreNew.setNome(connettore.getNome());
  1273.             connettoreNew.setId(connettore.getId());

  1274.             String oldConnT = connettore.getTipo();
  1275.             if ((connettore.getCustom()!=null && connettore.getCustom()) &&
  1276.                     !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_HTTPS) &&
  1277.                     !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_FILE) &&
  1278.                     !connettore.getTipo().equals(CostantiDB.CONNETTORE_TIPO_STATUS)){
  1279.                 // mantengo vecchie proprieta connettore custom
  1280.                 for(int i=0; i<connettore.sizePropertyList(); i++){
  1281.                     connettoreNew.addProperty(connettore.getProperty(i));
  1282.                 }
  1283.                 oldConnT = ConnettoriCostanti.DEFAULT_CONNETTORE_TYPE_CUSTOM;
  1284.             }
  1285.             apsHelper.fillConnettore(connettoreNew, connettoreDebug, endpointtype, oldConnT, tipoconn, url,
  1286.                     nome, tipo, user, password,
  1287.                     initcont, urlpgk, provurl, connfact,
  1288.                     sendas, httpsurl, httpstipologia, httpshostverify,
  1289.                     httpsTrustVerifyCert, httpspath, httpstipo,
  1290.                     httpspwd, httpsalgoritmo, httpsstato,
  1291.                     httpskeystore, httpspwdprivatekeytrust,
  1292.                     httpspathkey, httpstipokey,
  1293.                     httpspwdkey, httpspwdprivatekey,
  1294.                     httpsalgoritmokey,
  1295.                     httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1296.                     proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1297.                     tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1298.                     opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1299.                     requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1300.                     requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1301.                     responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1302.                     tokenPolicy,
  1303.                     apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1304.                     connettoreStatusParams,
  1305.                     listExtendedConnettore);

  1306.             Fruitore fruitore = new Fruitore();
  1307.            
  1308.             fruitore.setConfigurazioneAzioneList(servFru.getConfigurazioneAzioneList());
  1309.            
  1310.             fruitore.setId(Long.valueOf(idSoggettoFruitore));
  1311.             if(configurazioneServizioAzione!=null) {
  1312.                 configurazioneServizioAzione.setConnettore(connettoreNew);
  1313.                 fruitore.setConnettore(servFru.getConnettore());
  1314.             }
  1315.             else {
  1316.                 fruitore.setConnettore(connettoreNew);
  1317.             }
  1318.             fruitore.setTipo(tipofru);
  1319.             fruitore.setNome(nomefru);
  1320.             fruitore.setByteWsdlImplementativoErogatore(servFru.getByteWsdlImplementativoErogatore());
  1321.             fruitore.setByteWsdlImplementativoFruitore(servFru.getByteWsdlImplementativoFruitore());
  1322.            
  1323.             // Prendo i dati del soggetto erogatore del servizio
  1324.             Soggetto soggettoErogatore = soggettiCore.getSoggettoRegistro(Integer.parseInt(idSoggettoErogatoreDelServizio));
  1325.             tipoSoggettoErogatore = soggettoErogatore.getTipo();
  1326.             nomeSoggettoErogatore = soggettoErogatore.getNome();

  1327.             AccordoServizioParteSpecifica serviziosp = apsCore.getAccordoServizioParteSpecifica(idServizioLong);

  1328.             // Elimino il vecchio fruitore ed aggiungo il nuovo
  1329.            
  1330.             for (int i = 0; i < serviziosp.sizeFruitoreList(); i++) {
  1331.                 Fruitore tmpFru = serviziosp.getFruitore(i);
  1332.                 if (tmpFru.getId().longValue() == servFru.getId().longValue()) {
  1333.                     serviziosp.removeFruitore(i);
  1334.                     break;
  1335.                 }
  1336.             }


  1337.             // stato
  1338.             fruitore.setStatoPackage(statoPackage);

  1339.             // Check stato
  1340.             if(apsHelper.isShowGestioneWorkflowStatoDocumenti()){

  1341.                 try{
  1342.                     apsCore.validaStatoFruitoreAccordoServizioParteSpecifica(fruitore, serviziosp);
  1343.                 }catch(ValidazioneStatoPackageException validazioneException){

  1344.                     // Setto messaggio di errore
  1345.                     pd.setMessage(validazioneException.toString());

  1346.                     // setto la barra del titolo
  1347.                     ServletUtils.setPageDataTitle(pd, lstParm );

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

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

  1351.                     // update della configurazione
  1352.                     strutsBean.consoleDynamicConfiguration.updateDynamicConfigFruizioneAccordoServizioParteSpecifica(strutsBean.consoleConfiguration, strutsBean.consoleOperationType, apsHelper, strutsBean.protocolProperties,
  1353.                             strutsBean.registryReader, strutsBean.configRegistryReader, idFruizione);

  1354.                     dati = apsHelper.addHiddenFieldsToDati(tipoOp, idServizio, null, null, dati);

  1355.                     dati = apsHelper.addServiziFruitoriToDati(dati, idSoggettoFruitore, strutsBean.wsdlimpler, strutsBean.wsdlimplfru, soggettiList, soggettiListLabel, idServizio,
  1356.                             idServizioFruitore, tipoOp, idSoggettoErogatoreDelServizio, "", "", nomeservizio, tiposervizio, versioneservizio,  
  1357.                             correlato,statoPackage,oldStatoPackage,asps.getStatoPackage(),null,validazioneDocumenti,
  1358.                             null,
  1359.                             null,null,null,null,null,null,null,null,null,null,null,null,
  1360.                             apcCore.toMessageServiceBinding(as.getServiceBinding()), apcCore.formatoSpecifica2InterfaceType(as.getFormatoSpecifica()),
  1361.                             azioneConnettore, azioneConnettoreIdPorta, accessoDaAPSParametro, parentPD,null,null,null,null,null,null,null,null,null,
  1362.                             null,null,null,null,null,
  1363.                             null,null,
  1364.                             null,null,null,null,
  1365.                             null,null,null,null,null,
  1366.                             null,
  1367.                             null,null,null);

  1368.                     dati = apsHelper.addFruitoreToDati(tipoOp, versioniLabel, versioniValues, dati,
  1369.                             oldStatoPackage, idServizio, idServizioFruitore, idSoggettoErogatoreDelServizio, nomeservizio, tiposervizio, versioneservizio, idSoggettoFruitore,
  1370.                             asps, servFru);

  1371.                     if(modificaProfilo) {
  1372.                         dati = apsHelper.addEndPointToDatiAsHidden(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug,
  1373.                                 endpointtype, autenticazioneHttp,
  1374.                                 url, nome,
  1375.                                 tipo, user, password, initcont, urlpgk, provurl,
  1376.                                 connfact, sendas, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1377.                                 httpsurl, httpstipologia, httpshostverify,
  1378.                                 httpsTrustVerifyCert, httpspath, httpstipo,
  1379.                                 httpspwd, httpsalgoritmo, httpsstato, httpskeystore,
  1380.                                 httpspwdprivatekeytrust, httpspathkey, httpstipokey,
  1381.                                 httpspwdkey, httpspwdprivatekey, httpsalgoritmokey,
  1382.                                 httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1383.                                 tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1384.                                 idSoggettoErogatoreDelServizio, null, null, null, null,
  1385.                                 oldStatoPackage,
  1386.                                 proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1387.                                 tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1388.                                 opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1389.                                 requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1390.                                 requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1391.                                 responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1392.                                 autenticazioneToken, tokenPolicy,
  1393.                                 autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1394.                                 connettoreStatusParams
  1395.                                 );
  1396.                     }
  1397.                     else {
  1398.                         dati = apsHelper.addEndPointToDati(dati, apcCore.toMessageServiceBinding(as.getServiceBinding()), connettoreDebug, endpointtype, autenticazioneHttp,
  1399.                                 null, //(apsHelper.isModalitaCompleta() || !multitenant)?null:AccordiServizioParteSpecificaCostanti.LABEL_APS_APPLICATIVO_ESTERNO_PREFIX,
  1400.                                 url,
  1401.                                 nome, tipo, user, password, initcont, urlpgk,
  1402.                                 provurl, connfact, sendas,
  1403.                                 AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,tipoOp,
  1404.                                 httpsurl, httpstipologia, httpshostverify,
  1405.                                 httpsTrustVerifyCert, httpspath,
  1406.                                 httpstipo, httpspwd, httpsalgoritmo, httpsstato,
  1407.                                 httpskeystore, httpspwdprivatekeytrust,
  1408.                                 httpspathkey, httpstipokey, httpspwdkey,
  1409.                                 httpspwdprivatekey, httpsalgoritmokey,
  1410.                                 httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1411.                                 tipoconn, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_FRUITORI_CHANGE, idServizio, idServizioFruitore,
  1412.                                 idSoggettoErogatoreDelServizio, azioneConnettoreIdPorta, null, null, null,
  1413.                                 oldStatoPackage, true,
  1414.                                 isConnettoreCustomUltimaImmagineSalvata,
  1415.                                 proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1416.                                 tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1417.                                 opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1418.                                 requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1419.                                 requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1420.                                 responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1421.                                 autenticazioneToken, tokenPolicy, forcePDND, forceOAuth,
  1422.                                 listExtendedConnettore, forceEnableConnettore,
  1423.                                 protocollo, forceHttps, forceHttpsClient, false, false, null, null,
  1424.                                 autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1425.                                 connettoreStatusParams,
  1426.                                 postBackViaPost);
  1427.                     }

  1428.                     // aggiunta campi custom
  1429.                     if(addPropertiesHidden) {
  1430.                         dati = apsHelper.addProtocolPropertiesToDatiAsHidden(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1431.                     }else {
  1432.                         dati = apsHelper.addProtocolPropertiesToDatiRegistry(dati, strutsBean.consoleConfiguration,strutsBean.consoleOperationType, strutsBean.protocolProperties,oldProtocolPropertyList,propertiesProprietario);
  1433.                     }

  1434.                     pd.setDati(dati);

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

  1436.                     return ServletUtils.getStrutsForwardEditModeCheckError(mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,
  1437.                             ForwardParams.CHANGE());
  1438.                 }
  1439.             }

  1440.             //imposto properties custom
  1441.             fruitore.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesRegistry(strutsBean.protocolProperties, strutsBean.consoleOperationType, oldProtocolPropertyList));
  1442.                    
  1443.             serviziosp.addFruitore(fruitore);
  1444.             apsCore.setDataAggiornamentoFruitore(fruitore);
  1445.            
  1446.             String superUser = ServletUtils.getUserLoginFromSession(session);
  1447.            
  1448.             UpdateProprietaOggetto updateProprietaOggetto = null;
  1449.            
  1450.             if(azioneConnettoreIdPorta!=null && !"".equals(azioneConnettoreIdPorta)){
  1451.                 updateProprietaOggetto = getUpdateProprietaOggettoSafe(apsCore, azioneConnettoreIdPorta, superUser);
  1452.             }
  1453.            
  1454.             if(updateProprietaOggetto!=null) {
  1455.                 apsCore.performUpdateOperation(superUser, apsHelper.smista(), serviziosp, updateProprietaOggetto);
  1456.             }
  1457.             else {
  1458.                 apsCore.performUpdateOperation(superUser, apsHelper.smista(), serviziosp);
  1459.             }

  1460.             // Preparo la lista
  1461.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  1462.             if(accessoDaListaAPS) {
  1463.                 if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  1464.                     ErogazioniHelper erogazioniHelper = new ErogazioniHelper(request, pd, session);
  1465.                     asps = apsCore.getAccordoServizioParteSpecifica(idServizioLong);
  1466.                     erogazioniHelper.prepareErogazioneChange(TipoOperazione.CHANGE, asps, new IDSoggetto(fruitore.getTipo(), fruitore.getNome()));
  1467.                     ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  1468.                     return ServletUtils.getStrutsForwardEditModeFinished(mapping, ErogazioniCostanti.OBJECT_NAME_ASPS_EROGAZIONI, ForwardParams.CHANGE());
  1469.                 }
  1470.                
  1471.                 int idLista = Liste.SERVIZI;
  1472.                
  1473.                 ricerca = apsHelper.checkSearchParameters(idLista, ricerca);
  1474.                
  1475.                 ricerca.addFilter(idLista, Filtri.FILTRO_DOMINIO, SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE);
  1476.                
  1477.                 PermessiUtente pu = ServletUtils.getUserFromSession(request, session).getPermessi();
  1478.                 boolean [] permessi = new boolean[2];
  1479.                 permessi[0] = pu.isServizi();
  1480.                 permessi[1] = pu.isAccordiCooperazione();
  1481.                 List<AccordoServizioParteSpecifica> lista2 = null;
  1482.                 if(apsCore.isVisioneOggettiGlobale(superUser)){
  1483.                     lista2 = apsCore.soggettiServizioList(null, ricerca,permessi, gestioneFruitori, gestioneErogatori);
  1484.                 }else{
  1485.                     lista2 = apsCore.soggettiServizioList(superUser, ricerca, permessi, gestioneFruitori, gestioneErogatori);
  1486.                 }

  1487.                 apsHelper.prepareServiziList(ricerca, lista2);
  1488.                
  1489.             }
  1490.             else if(gestioneFruitori || (PorteDelegateCostanti.ATTRIBUTO_PORTE_DELEGATE_PARENT_CONFIGURAZIONE==parentPD)) {
  1491.                 int idLista = Liste.CONFIGURAZIONE_FRUIZIONE;
  1492.                 ricerca = apsHelper.checkSearchParameters(idLista, ricerca);
  1493.                 IDServizio idServizioFromAccordo = IDServizioFactory.getInstance().getIDServizioFromAccordo(asps);
  1494.                 IDSoggetto idSoggettoFruitoreObj = new IDSoggetto();
  1495.                 String tipoSoggettoFruitore = null;
  1496.                 String nomeSoggettoFruitore = null;
  1497.                 if(apsCore.isRegistroServiziLocale()){
  1498.                     org.openspcoop2.core.registry.Soggetto soggettoFruitoreObj = soggettiCore.getSoggettoRegistro(Integer.parseInt(idSoggettoFruitore));
  1499.                     tipoSoggettoFruitore = soggettoFruitoreObj.getTipo();
  1500.                     nomeSoggettoFruitore = soggettoFruitoreObj.getNome();
  1501.                 }else{
  1502.                     org.openspcoop2.core.config.Soggetto soggettoFruitoreObj = soggettiCore.getSoggetto(Integer.parseInt(idSoggettoFruitore));
  1503.                     tipoSoggettoFruitore = soggettoFruitoreObj.getTipo();
  1504.                     nomeSoggettoFruitore = soggettoFruitoreObj.getNome();
  1505.                 }
  1506.                 idSoggettoFruitoreObj.setTipo(tipoSoggettoFruitore);
  1507.                 idSoggettoFruitoreObj.setNome(nomeSoggettoFruitore);
  1508.                 List<MappingFruizionePortaDelegata> lista = apsCore.serviziFruitoriMappingList(idServizioFruitoreInt, idSoggettoFruitoreObj , idServizioFromAccordo, ricerca);
  1509.                 apsHelper.serviziFruitoriMappingList(lista, idServizio, idSoggettoFruitore, idSoggettoFruitoreObj, idServizioFruitore, ricerca);
  1510.             }
  1511.             else{
  1512.                 int idLista = Liste.SERVIZI_FRUITORI;
  1513.                 ricerca = apsHelper.checkSearchParameters(idLista, ricerca);
  1514.                 List<Fruitore> lista = apsCore.serviziFruitoriList(idServizioLong, ricerca);
  1515.                 apsHelper.prepareServiziFruitoriList(lista, idServizio, ricerca);
  1516.             }
  1517.            
  1518.             ForwardParams fwP = ForwardParams.CHANGE();
  1519.             if( azioneConnettoreIdPorta!=null && !"".equals(azioneConnettoreIdPorta) && !apsHelper.isModalitaCompleta()) {
  1520.                 fwP = PorteDelegateCostanti.TIPO_OPERAZIONE_CONFIGURAZIONE;
  1521.             }
  1522.    
  1523.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  1524.             return ServletUtils.getStrutsForwardEditModeFinished( mapping, AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,fwP);
  1525.         } catch (Exception e) {
  1526.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  1527.                     AccordiServizioParteSpecificaCostanti.OBJECT_NAME_APS_FRUITORI,
  1528.                     ForwardParams.CHANGE());
  1529.         }
  1530.     }
  1531.    
  1532.     private UpdateProprietaOggetto getUpdateProprietaOggettoSafe(AccordiServizioParteSpecificaCore apsCore, String azioneConnettoreIdPorta, String superUser) {
  1533.         try {
  1534.             PorteDelegateCore porteDelegateCore = new PorteDelegateCore(apsCore);
  1535.             PortaDelegata portaDelegata = porteDelegateCore.getPortaDelegata(Long.parseLong(azioneConnettoreIdPorta));
  1536.             if(portaDelegata!=null) {
  1537.                 IDPortaDelegata idPD = new IDPortaDelegata();
  1538.                 idPD.setNome(portaDelegata.getNome());
  1539.                 return new UpdateProprietaOggetto(idPD, superUser);
  1540.             }
  1541.         }catch(Exception e) {
  1542.             ControlStationCore.logError(e.getMessage(),e);
  1543.         }
  1544.         return null;
  1545.     }
  1546. }