SoggettiCredenzialiAdd.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.soggetti;

  21. import java.util.ArrayList;
  22. import java.util.Collections;
  23. import java.util.List;

  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.commons.lang.StringUtils;
  28. import org.apache.struts.action.Action;
  29. import org.apache.struts.action.ActionForm;
  30. import org.apache.struts.action.ActionForward;
  31. import org.apache.struts.action.ActionMapping;
  32. import org.openspcoop2.core.registry.CredenzialiSoggetto;
  33. import org.openspcoop2.core.registry.Soggetto;
  34. import org.openspcoop2.core.registry.constants.CredenzialeTipo;
  35. import org.openspcoop2.utils.UtilsException;
  36. import org.openspcoop2.utils.certificate.ArchiveLoader;
  37. import org.openspcoop2.utils.certificate.ArchiveType;
  38. import org.openspcoop2.utils.certificate.Certificate;
  39. import org.openspcoop2.utils.certificate.KeystoreType;
  40. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  41. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  42. import org.openspcoop2.web.ctrlstat.dao.SoggettoCtrlStat;
  43. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  44. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  45. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  46. import org.openspcoop2.web.lib.mvc.Costanti;
  47. import org.openspcoop2.web.lib.mvc.DataElement;
  48. import org.openspcoop2.web.lib.mvc.ForwardParams;
  49. import org.openspcoop2.web.lib.mvc.GeneralData;
  50. import org.openspcoop2.web.lib.mvc.MessageType;
  51. import org.openspcoop2.web.lib.mvc.PageData;
  52. import org.openspcoop2.web.lib.mvc.Parameter;
  53. import org.openspcoop2.web.lib.mvc.ServletUtils;
  54. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  55. /**
  56.  * soggettiAdd
  57.  *
  58.  * @author Andrea Poli (apoli@link.it)
  59.  * @author Giuliano Pintori (pintori@link.it)
  60.  * @author $Author$
  61.  * @version $Rev$, $Date$
  62.  *
  63.  */
  64. public final class SoggettiCredenzialiAdd extends Action {

  65.     @Override
  66.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
  67.         HttpSession session = request.getSession(true);

  68.         // Inizializzo PageData
  69.         PageData pd = new PageData();

  70.         GeneralHelper generalHelper = new GeneralHelper(session);

  71.         // Inizializzo GeneralData
  72.         GeneralData gd = generalHelper.initGeneralData(request);

  73.         // Parametri relativi al tipo operazione
  74.         TipoOperazione tipoOperazione = TipoOperazione.ADD;

  75.         try {
  76.             SoggettiHelper soggettiHelper = new SoggettiHelper(request, pd, session);
  77.            
  78.             String id = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID);
  79.             int idSogg = Integer.parseInt(id);
  80.             String nomeprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME);
  81.             String tipoprov = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO);
  82.             String idCredenziale = null;
  83.            
  84.             String protocollo = soggettiHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_PROTOCOLLO);

  85.             String userLogin = ServletUtils.getUserLoginFromSession(session);

  86.             String editMode = soggettiHelper.getParameter(Costanti.DATA_ELEMENT_EDIT_MODE_NAME);
  87.            
  88.             String tipoauthSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
  89.             if (tipoauthSoggetto == null) {
  90.                 tipoauthSoggetto = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL; // forzato ad https
  91.             }
  92.             String subjectSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);

  93.             String tipoCredenzialiSSLSorgente = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
  94.             if(tipoCredenzialiSSLSorgente == null) {
  95.                 tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  96.             }
  97.             String tipoCredenzialiSSLTipoArchivioS = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
  98.             org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
  99.             if(tipoCredenzialiSSLTipoArchivioS == null) {
  100.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
  101.             } else {
  102.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
  103.             }
  104.             BinaryParameter tipoCredenzialiSSLFileCertificato = soggettiHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
  105.             String tipoCredenzialiSSLFileCertificatoPassword = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
  106.             List<String> listaAliasEstrattiCertificato = new ArrayList<>();
  107.             String tipoCredenzialiSSLAliasCertificato = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
  108.             if (tipoCredenzialiSSLAliasCertificato == null) {
  109.                 tipoCredenzialiSSLAliasCertificato = "";
  110.             }
  111.             String tipoCredenzialiSSLAliasCertificatoSubject= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
  112.             String tipoCredenzialiSSLAliasCertificatoIssuer= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
  113.             String tipoCredenzialiSSLAliasCertificatoType= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_TYPE);
  114.             String tipoCredenzialiSSLAliasCertificatoVersion= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_VERSION);
  115.             String tipoCredenzialiSSLAliasCertificatoSerialNumber= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SERIAL_NUMBER);
  116.             String tipoCredenzialiSSLAliasCertificatoSelfSigned= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SELF_SIGNED);
  117.             String tipoCredenzialiSSLAliasCertificatoNotBefore= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
  118.             String tipoCredenzialiSSLAliasCertificatoNotAfter = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
  119.             String tipoCredenzialiSSLVerificaTuttiICampi = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
  120.             if ( (tipoCredenzialiSSLVerificaTuttiICampi == null || StringUtils.isEmpty(tipoCredenzialiSSLVerificaTuttiICampi))
  121.                     ||
  122.                      SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO.equalsIgnoreCase(soggettiHelper.getPostBackElementName())
  123.                      ||
  124.                      SoggettiCostanti.PARAMETRO_SOGGETTO_TIPOLOGIA.equalsIgnoreCase(soggettiHelper.getPostBackElementName())) {
  125.                 if(soggettiHelper.isEditModeInProgress() && soggettiHelper.getPostBackElementName()==null) { // prima volta
  126.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  127.                 }
  128.             }
  129.             String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
  130.             if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
  131.                 tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  132.             }

  133.             String issuerSoggetto = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);

  134.             String tipoCredenzialiSSLWizardStep = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP);
  135.             if (tipoCredenzialiSSLWizardStep == null) {
  136.                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  137.             }
  138.             String oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;
  139.            
  140.             String promuoviCertificato = soggettiHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PROMUOVI);
  141.             if(promuoviCertificato == null) {
  142.                 promuoviCertificato = Costanti.CHECK_BOX_DISABLED;
  143.             }

  144.             boolean visualizzaPromuoviCertificato = true; // ADD sempre true per far spuntare la checkbox
  145.             String servletCredenzialiChange = null;
  146.             List<Parameter> parametersServletCredenzialiChange = null;
  147.             String toCall = SoggettiCostanti.SERVLET_NAME_SOGGETTI_CREDENZIALI_ADD;
  148.            
  149.             // Preparo il menu
  150.             soggettiHelper.makeMenu();

  151.             SoggettiCore soggettiCore = new SoggettiCore();
  152.            
  153.             Soggetto soggettoRegistry = null;
  154.             org.openspcoop2.core.config.Soggetto soggettoConfig = null;
  155.            
  156.             if(soggettiCore.isRegistroServiziLocale()){
  157.                 soggettoRegistry = soggettiCore.getSoggettoRegistro(idSogg);// core.getSoggettoRegistro(new
  158.             }

  159.             soggettoConfig = soggettiCore.getSoggetto(idSogg);// core.getSoggetto(new
  160.            
  161.             if(soggettiCore.isRegistroServiziLocale()){
  162.                 nomeprov = soggettoRegistry.getNome();
  163.                 tipoprov = soggettoRegistry.getTipo();
  164.             }
  165.             else{
  166.                 nomeprov = soggettoConfig.getNome();
  167.                 tipoprov = soggettoConfig.getTipo();
  168.             }

  169.             protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(tipoprov);
  170.            
  171.             List<Parameter> parametersServletSoggettoChange = new ArrayList<>();
  172.             Parameter pIdSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_ID, id);
  173.             Parameter pNomeSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_NOME, nomeprov);
  174.             Parameter pTipoSoggetto = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_TIPO, tipoprov);
  175.             parametersServletSoggettoChange.add(pIdSoggetto);
  176.             parametersServletSoggettoChange.add(pNomeSoggetto);
  177.             parametersServletSoggettoChange.add(pTipoSoggetto);
  178.            
  179.             String postBackElementName = soggettiHelper.getPostBackElementName();
  180.             String labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;

  181.             // Controllo se ho modificato il protocollo, ricalcolo il default della versione del protocollo
  182.             if(postBackElementName != null ){
  183.                 // tipo autenticazione
  184.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE)){
  185.                     if(tipoauthSoggetto.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  186.                         // reset impostazioni sezione ssl
  187.                         tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  188.                         tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  189.                         tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  190.                         tipoCredenzialiSSLAliasCertificato = "";
  191.                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  192.                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  193.                         tipoCredenzialiSSLAliasCertificatoType= "";
  194.                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  195.                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  196.                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  197.                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  198.                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  199.                         listaAliasEstrattiCertificato = new ArrayList<>();
  200.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  201.                     } else {
  202.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  203.                     }
  204.                 }

  205.                 // tipo di configurazione SSL
  206.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL) ||
  207.                         postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_MODIFICA)) {
  208.                     listaAliasEstrattiCertificato = new ArrayList<>();
  209.                     tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  210.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  211.                     tipoCredenzialiSSLAliasCertificato = "";
  212.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  213.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  214.                     tipoCredenzialiSSLAliasCertificatoType= "";
  215.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  216.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  217.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  218.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  219.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  220.                     soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  221.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;

  222.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
  223.                         subjectSoggetto = "";
  224.                         issuerSoggetto = "";
  225.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  226.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  227.                     }
  228.                 }

  229.                 // cambio il tipo archivio butto via il vecchio certificato            
  230.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO)) {
  231.                     soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  232.                     tipoCredenzialiSSLAliasCertificato = "";
  233.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  234.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  235.                     tipoCredenzialiSSLAliasCertificatoType= "";
  236.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  237.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  238.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  239.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  240.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  241.                     listaAliasEstrattiCertificato = new ArrayList<>();
  242.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  243.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  244.                 }

  245.                 // selezione alias
  246.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO)) {
  247.                     if(StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  248.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  249.                     } else {
  250.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  251.                     }
  252.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  253.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  254.                     tipoCredenzialiSSLAliasCertificatoType= "";
  255.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  256.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  257.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  258.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  259.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  260.                 }
  261.                
  262.             }

  263.             boolean checkWizard = false;
  264.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSoggetto)) {
  265.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  266.                     if(tipoCredenzialiSSLFileCertificato.getValue() != null && tipoCredenzialiSSLFileCertificato.getValue().length > 0) {
  267.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  268.                         if(!tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  269.                             if(StringUtils.isNotEmpty(tipoCredenzialiSSLFileCertificatoPassword) ||
  270.                                     (KeystoreType.JKS.isType(tipoCredenzialiSSLTipoArchivio.name()) && !soggettiCore.isLoadCertificateWizardJksPasswordRequiredRequired()) ||
  271.                                     (KeystoreType.PKCS12.isType(tipoCredenzialiSSLTipoArchivio.name()) && !soggettiCore.isLoadCertificateWizardPkcs12PasswordRequiredRequired())
  272.                                     ) {
  273.                                 try {
  274.                                     listaAliasEstrattiCertificato = ArchiveLoader.readAliases(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLFileCertificatoPassword);
  275.                                     Collections.sort(listaAliasEstrattiCertificato);
  276.    
  277.                                     //se ho un solo alias lo imposto
  278.                                     if(!listaAliasEstrattiCertificato.isEmpty() && listaAliasEstrattiCertificato.size() == 1) {
  279.                                         tipoCredenzialiSSLAliasCertificato = listaAliasEstrattiCertificato.get(0);
  280.                                     }
  281.                                    
  282.                                     // ho appena caricato il file devo solo far vedere la form senza segnalare il messaggio di errore
  283.                                     if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  284.                                             ||oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  285.                                             || oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)) {
  286.                                         checkWizard = true;
  287.                                         if(listaAliasEstrattiCertificato.size() > 1) {
  288.                                             pd.setMessage("Il file caricato contiene pi&ugrave; certificati, selezionare un'"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO, MessageType.INFO);
  289.                                         }  
  290.                                     }
  291.                                 }catch(UtilsException e) {
  292.                                     pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  293.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  294.                                     tipoCredenzialiSSLAliasCertificato = "";
  295.                                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  296.                                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  297.                                     tipoCredenzialiSSLAliasCertificatoType= "";
  298.                                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  299.                                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  300.                                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  301.                                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  302.                                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  303.                                 }
  304.    
  305.                                 if(!listaAliasEstrattiCertificato.isEmpty() && StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  306.                                     try {
  307.                                         Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  308.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  309.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  310.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  311.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  312.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  313.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  314.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = soggettiHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  315.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = soggettiHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  316.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  317.                                     }catch(UtilsException e) {
  318.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  319.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  320.                                         tipoCredenzialiSSLAliasCertificato = "";
  321.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  322.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  323.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  324.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  325.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  326.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  327.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  328.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  329.                                     }
  330.                                 }
  331.                             } else {
  332.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE;
  333.                             }
  334.                         } else {
  335.                             try {
  336.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  337.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  338.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  339.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  340.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  341.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  342.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  343.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = soggettiHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  344.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = soggettiHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  345.                                
  346.                                 // dalla seconda volta che passo, posso salvare, la prima mostro il recap del certificato estratto
  347.                                
  348.                                 if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER)||
  349.                                         oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK)) {
  350.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  351.                                 } else {
  352.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER;
  353.                                     checkWizard = true;
  354.                                 }
  355.                             }catch(UtilsException e) {
  356.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  357.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  358.                                 tipoCredenzialiSSLAliasCertificato = "";
  359.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  360.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  361.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  362.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  363.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  364.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  365.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  366.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  367.                             }
  368.                         }
  369.                     } else {
  370.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  371.                     }
  372.                 }
  373.                
  374.                 if(StringUtils.isNotEmpty(tipoCredenzialiSSLWizardStep) && ( tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  375.                         ||tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  376.                         || tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
  377.                         )) {
  378.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  379.                         labelButtonSalva = ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO;
  380.                     }
  381.                 }else {
  382.                     labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  383.                 }
  384.             } else {
  385.                 labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  386.             }
  387.            
  388.             if(labelButtonSalva!= null) {
  389.                 pd.setLabelBottoneInvia(labelButtonSalva);
  390.             }

  391.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento dati
  392.            
  393.             if(ServletUtils.isEditModeInProgress(editMode) || checkWizard){

  394.                 // setto la barra del titolo
  395.                 List<Parameter> listParameter = new ArrayList<>();
  396.                 listParameter.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  397.                 if(soggettoRegistry!=null) {
  398.                     listParameter.add(new Parameter(soggettiHelper.getLabelNomeSoggetto(protocollo, soggettoRegistry.getTipo() , soggettoRegistry.getNome()),
  399.                                     SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE, parametersServletSoggettoChange.toArray(new Parameter[parametersServletSoggettoChange.size()])));
  400.                 }
  401.                 if(soggettoRegistry!=null && soggettoRegistry.sizeCredenzialiList()>1) {
  402.                     listParameter.add(new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI,
  403.                                 SoggettiCostanti.SERVLET_NAME_SOGGETTI_CREDENZIALI_LIST, parametersServletSoggettoChange.toArray(new Parameter[parametersServletSoggettoChange.size()])));
  404.                 }
  405.                 listParameter.add(ServletUtils.getParameterAggiungi());
  406.                 ServletUtils.setPageDataTitle(pd, listParameter.toArray(new Parameter[1]));
  407.                
  408.                 // preparo i campi
  409.                 List<DataElement> dati = new ArrayList<>();

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

  411.                 dati = soggettiHelper.addSoggettoHiddenToDati(dati, id,nomeprov, tipoprov);
  412.                
  413.                 dati = soggettiHelper.addCredenzialiCertificatiToDati(dati, tipoOperazione, idCredenziale, tipoauthSoggetto, subjectSoggetto, toCall,
  414.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  415.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  416.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  417.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  418.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  419.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSoggetto, tipoCredenzialiSSLWizardStep,
  420.                         promuoviCertificato,
  421.                         visualizzaPromuoviCertificato, null, servletCredenzialiChange, parametersServletCredenzialiChange);

  422.                 pd.setDati(dati);

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

  424.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_CREDENZIALI, ForwardParams.ADD());
  425.             }

  426.             // Controlli sui campi immessi
  427.             boolean isOk = soggettiHelper.soggettiCredenzialiCertificatiCheckData(TipoOperazione.CHANGE, id, soggettoRegistry, -1, protocollo);

  428.             if (!isOk) {

  429.                 // setto la barra del titolo
  430.                 List<Parameter> listParameter = new ArrayList<>();
  431.                 listParameter.add(new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST));
  432.                 if(soggettoRegistry!=null) {
  433.                     listParameter.add(new Parameter(soggettiHelper.getLabelNomeSoggetto(protocollo, soggettoRegistry.getTipo() , soggettoRegistry.getNome()),
  434.                                     SoggettiCostanti.SERVLET_NAME_SOGGETTI_CHANGE, parametersServletSoggettoChange.toArray(new Parameter[parametersServletSoggettoChange.size()])));
  435.                 }
  436.                 if(soggettoRegistry!=null && soggettoRegistry.sizeCredenzialiList()>1) {
  437.                     listParameter.add(new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI,
  438.                             SoggettiCostanti.SERVLET_NAME_SOGGETTI_CREDENZIALI_LIST, parametersServletSoggettoChange.toArray(new Parameter[parametersServletSoggettoChange.size()])));
  439.                 }
  440.                 listParameter.add(ServletUtils.getParameterAggiungi());
  441.                 ServletUtils.setPageDataTitle(pd, listParameter.toArray(new Parameter[1]));

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

  444.                 dati = soggettiHelper.addSoggettoHiddenToDati(dati, id,nomeprov, tipoprov);
  445.                
  446.                 dati = soggettiHelper.addCredenzialiCertificatiToDati(dati, tipoOperazione, idCredenziale, tipoauthSoggetto, subjectSoggetto, toCall,
  447.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  448.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  449.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  450.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  451.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  452.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSoggetto, tipoCredenzialiSSLWizardStep,
  453.                         promuoviCertificato,
  454.                         visualizzaPromuoviCertificato, null, servletCredenzialiChange, parametersServletCredenzialiChange);

  455.                 pd.setDati(dati);

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

  457.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_CREDENZIALI, ForwardParams.ADD());
  458.             }
  459.            
  460.             // Nuove Credenziali
  461.             CredenzialiSoggetto credenziali = new CredenzialiSoggetto();
  462.             credenziali.setTipo(CredenzialeTipo.toEnumConstant(tipoauthSoggetto));
  463.             credenziali.setUser("");
  464.             credenziali.setPassword("");
  465.            
  466.             credenziali.setAppId(false);
  467.            
  468.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSoggetto)) {
  469.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  470.                     Certificate cSelezionato = null;
  471.                     if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  472.                         cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  473.                     }else {
  474.                         cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  475.                     }

  476.                     credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  477.                     credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  478.                     credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  479.                     credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  480.                 } else { // configurazione manuale
  481.                     credenziali.setSubject(subjectSoggetto);
  482.                     if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  483.                         credenziali.setIssuer(subjectSoggetto);
  484.                     } else {
  485.                         credenziali.setIssuer(issuerSoggetto);
  486.                     }
  487.                 }
  488.             }
  489.            
  490.             boolean promuovi = ServletUtils.isCheckBoxEnabled(promuoviCertificato);
  491.            
  492.             if(promuovi) {
  493.                 soggettoRegistry.getCredenzialiList().add(0, credenziali); // promozione = set in posizione 0
  494.             } else {
  495.                 soggettoRegistry.addCredenziali(credenziali);
  496.             }

  497.             SoggettoCtrlStat sog = new SoggettoCtrlStat(soggettoRegistry, soggettoConfig);
  498.             sog.setOldNomeForUpdate(nomeprov);
  499.             sog.setOldTipoForUpdate(tipoprov);

  500.             // eseguo l'aggiornamento
  501.             List<Object> listOggettiDaAggiornare = SoggettiUtilities.getOggettiDaAggiornare(soggettiCore, nomeprov, nomeprov, tipoprov, tipoprov, sog);
  502.             soggettiCore.performUpdateOperation(userLogin, soggettiHelper.smista(), listOggettiDaAggiornare.toArray());
  503.        
  504.             // cancello file temporanei
  505.             soggettiHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  506.                        
  507.             soggettoRegistry = soggettiCore.getSoggettoRegistro(idSogg);
  508.            
  509.             soggettiHelper.prepareSoggettiCredenzialiList(soggettoRegistry, id);

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

  511.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, SoggettiCostanti.OBJECT_NAME_SOGGETTI_CREDENZIALI, ForwardParams.ADD());

  512.         } catch (Exception e) {
  513.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  514.                     SoggettiCostanti.OBJECT_NAME_SOGGETTI_CREDENZIALI, ForwardParams.ADD());
  515.         }
  516.     }
  517. }