TrasparenteProperties.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.protocol.trasparente.config;

  21. import java.util.Properties;

  22. import org.openspcoop2.protocol.basic.BasicStaticInstanceConfig;
  23. import org.openspcoop2.protocol.sdk.ProtocolException;
  24. import org.openspcoop2.utils.BooleanNullable;
  25. import org.openspcoop2.utils.LoggerWrapperFactory;
  26. import org.openspcoop2.utils.resources.Loader;
  27. import org.slf4j.Logger;

  28. /**
  29.  * Classe che gestisce il file di properties 'trasparente.properties' del protocollo Trasparente
  30.  *
  31.  * @author Poli Andrea (apoli@link.it)
  32.  * @author $Author$
  33.  * @version $Rev$, $Date$
  34.  */
  35. public class TrasparenteProperties {

  36.     /** Logger utilizzato per errori eventuali. */
  37.     private Logger log = null;


  38.     /** Copia Statica */
  39.     private static TrasparenteProperties trasparenteProperties = null;

  40.     /* ********  F I E L D S  P R I V A T I  ******** */

  41.     /** Reader delle proprieta' impostate nel file 'trasparente.properties' */
  42.     private TrasparenteInstanceProperties reader;





  43.     /* ********  C O S T R U T T O R E  ******** */

  44.     /**
  45.      * Viene chiamato in causa per istanziare il properties reader
  46.      *
  47.      *
  48.      */
  49.     private TrasparenteProperties(String confDir,Logger log) throws ProtocolException{

  50.         if(log != null)
  51.             this.log = log;
  52.         else
  53.             this.log = LoggerWrapperFactory.getLogger("TrasparenteProperties");

  54.         /* ---- Lettura del cammino del file di configurazione ---- */

  55.         Properties propertiesReader = new Properties();
  56.         java.io.InputStream properties = null;
  57.         try{  
  58.             properties = TrasparenteProperties.class.getResourceAsStream("/trasparente.properties");
  59.             if(properties==null){
  60.                 throw new Exception("File '/trasparente.properties' not found");
  61.             }
  62.             propertiesReader.load(properties);
  63.         }catch(Exception e) {
  64.             this.log.error("Riscontrato errore durante la lettura del file 'trasparente.properties': "+e.getMessage());
  65.             throw new ProtocolException("TrasparenteProperties initialize error: "+e.getMessage(),e);
  66.         }finally{
  67.             try{
  68.                 if(properties!=null)
  69.                     properties.close();
  70.             }catch(Throwable er){
  71.                 // close
  72.             }
  73.         }
  74.         try{
  75.             this.reader = new TrasparenteInstanceProperties(propertiesReader, this.log);
  76.         }catch(Exception e){
  77.             throw new ProtocolException(e.getMessage(),e);
  78.         }

  79.     }

  80.     /**
  81.      * Il Metodo si occupa di inizializzare il propertiesReader
  82.      *
  83.      *
  84.      */
  85.     public static synchronized void initialize(String confDir,Logger log) throws ProtocolException{

  86.         if(TrasparenteProperties.trasparenteProperties==null)
  87.             TrasparenteProperties.trasparenteProperties = new TrasparenteProperties(confDir,log);  

  88.     }

  89.     /**
  90.      * Ritorna l'istanza di questa classe
  91.      *
  92.      * @return Istanza di OpenTrasparenteProperties
  93.      * @throws Exception
  94.      *
  95.      */
  96.     public static TrasparenteProperties getInstance() throws ProtocolException{

  97.         if(TrasparenteProperties.trasparenteProperties==null) {
  98.             // spotbugs warning 'SING_SINGLETON_GETTER_NOT_SYNCHRONIZED': l'istanza viene creata allo startup
  99.             synchronized (TrasparenteProperties.class) {
  100.                 throw new ProtocolException("TrasparenteProperties not initialized (use init method in factory)");
  101.             }
  102.         }

  103.         return TrasparenteProperties.trasparenteProperties;
  104.     }




  105.     public void validaConfigurazione(Loader loader) throws ProtocolException  {
  106.         try{  

  107.             generateIDasUUID();
  108.            
  109.             isRiferimentoIDRichiesta_PD_Required();
  110.             isRiferimentoIDRichiesta_PA_Required();
  111.            
  112.             this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativo();
  113.             this.isAggiungiDetailErroreApplicativo_SoapFaultPdD();
  114.             this.isGenerazioneDetailsSOAPFaultProtocolValidazione();
  115.             this.isGenerazioneDetailsSOAPFaultProtocolProcessamento();
  116.             this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace();
  117.             this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche();
  118.            
  119.             this.isGenerazioneDetailsSOAPFaultIntegrationServerError();
  120.             this.isGenerazioneDetailsSOAPFaultIntegrationClientError();
  121.             this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace();
  122.             this.isGenerazioneDetailsSOAPFaultIntegrazionConInformazioniGeneriche();
  123.            
  124.             this.isPortaApplicativaBustaErrore_personalizzaElementiFault();
  125.             this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativo();
  126.            
  127.             this.isUtilizzaTestSuiteGenerazioneTracce();
  128.             this.isUtilizzaTestSuiteProtocolProperties();
  129.            
  130.             this.useConfigStaticInstance();
  131.             this.useErroreApplicativoStaticInstance();
  132.             this.useEsitoStaticInstance();
  133.             this.getStaticInstanceConfig();

  134.         }catch(java.lang.Exception e) {
  135.             String msg = "Riscontrato errore durante la validazione della proprieta' del protocollo trasparente, "+e.getMessage();
  136.             this.log.error(msg,e);
  137.             throw new ProtocolException(msg,e);
  138.         }
  139.     }


  140.     /**
  141.      * Esempio di read property
  142.      *  
  143.      * @return Valore della property
  144.      *
  145.      */
  146.     private Boolean generateIDasUUID = null;
  147.     public Boolean generateIDasUUID(){
  148.         if(this.generateIDasUUID==null){
  149.            
  150.             Boolean defaultValue = true;
  151.             String propertyName = "org.openspcoop2.protocol.trasparente.id.uuid";
  152.            
  153.             try{  
  154.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  155.                 if (value != null){
  156.                     value = value.trim();
  157.                     this.generateIDasUUID = Boolean.parseBoolean(value);
  158.                 }else{
  159.                     this.log.warn("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  160.                     this.generateIDasUUID = defaultValue;
  161.                 }

  162.             }catch(java.lang.Exception e) {
  163.                 this.log.warn("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  164.                 this.generateIDasUUID = defaultValue;
  165.             }
  166.         }

  167.         return this.generateIDasUUID;
  168.     }
  169.    
  170.    
  171.    
  172.     /* **** CONFIGURAZIONE **** */
  173.    
  174.     /**
  175.      * Restituisce l'indicazione se la funzionalita' 'Riferimento ID Richiesta' richiede che venga fornito obbligatoriamente l'informazione sull'identificativo della richiesta tramite i meccanismi di integrazione
  176.      *
  177.      * @return True se la funzionalita' 'Riferimento ID Richiesta' richiede che venga fornito obbligatoriamente l'informazione sull'identificativo della richiesta tramite i meccanismi di integrazione
  178.      *
  179.      */
  180.     private Boolean isRiferimentoIDRichiesta_PD_Required= null;
  181.     private Boolean isRiferimentoIDRichiesta_PD_RequiredRead= null;
  182.     public Boolean isRiferimentoIDRichiesta_PD_Required(){
  183.         if(this.isRiferimentoIDRichiesta_PD_RequiredRead==null){
  184.             try{  
  185.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.pd.riferimentoIdRichiesta.required");
  186.                
  187.                 if (value != null){
  188.                     value = value.trim();
  189.                     this.isRiferimentoIDRichiesta_PD_Required = Boolean.parseBoolean(value);
  190.                 }else{
  191.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pd.riferimentoIdRichiesta.required' non impostata, viene utilizzato il default 'true'");
  192.                     this.isRiferimentoIDRichiesta_PD_Required = true;
  193.                 }
  194.                
  195.                 this.isRiferimentoIDRichiesta_PD_RequiredRead = true;
  196.                
  197.             }catch(java.lang.Exception e) {
  198.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pd.riferimentoIdRichiesta.required' non impostata, viene utilizzato il default 'true', errore:"+e.getMessage());
  199.                 this.isRiferimentoIDRichiesta_PD_Required = true;
  200.                
  201.                 this.isRiferimentoIDRichiesta_PD_RequiredRead = true;
  202.             }
  203.         }
  204.        
  205.         return this.isRiferimentoIDRichiesta_PD_Required;
  206.     }
  207.    
  208.     private Boolean isRiferimentoIDRichiesta_PA_Required= null;
  209.     private Boolean isRiferimentoIDRichiesta_PA_RequiredRead= null;
  210.     public Boolean isRiferimentoIDRichiesta_PA_Required(){
  211.         if(this.isRiferimentoIDRichiesta_PA_RequiredRead==null){
  212.             try{  
  213.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.pa.riferimentoIdRichiesta.required");
  214.                
  215.                 if (value != null){
  216.                     value = value.trim();
  217.                     this.isRiferimentoIDRichiesta_PA_Required = Boolean.parseBoolean(value);
  218.                 }else{
  219.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.riferimentoIdRichiesta.required' non impostata, viene utilizzato il default 'true'");
  220.                     this.isRiferimentoIDRichiesta_PA_Required = true;
  221.                 }
  222.                
  223.                 this.isRiferimentoIDRichiesta_PA_RequiredRead = true;
  224.                
  225.             }catch(java.lang.Exception e) {
  226.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.riferimentoIdRichiesta.required' non impostata, viene utilizzato il default 'true', errore:"+e.getMessage());
  227.                 this.isRiferimentoIDRichiesta_PA_Required = true;
  228.                
  229.                 this.isRiferimentoIDRichiesta_PA_RequiredRead = true;
  230.             }
  231.         }
  232.        
  233.         return this.isRiferimentoIDRichiesta_PA_Required;
  234.     }
  235.    
  236.    

  237.     /* **** SOAP FAULT (Protocollo, Porta Applicativa) **** */
  238.    
  239.     /**
  240.      * Indicazione se ritornare un soap fault personalizzato nel codice/actor/faultString per i messaggi di errore di protocollo (Porta Applicativa)
  241.      *  
  242.      * @return Indicazione se ritornare un soap fault personalizzato nel codice/actor/faultString per i messaggi di errore di protocollo (Porta Applicativa)
  243.      *
  244.      */
  245.     private Boolean isPortaApplicativaBustaErrore_personalizzaElementiFault= null;
  246.     private Boolean isPortaApplicativaBustaErrore_personalizzaElementiFaultRead= null;
  247.     public Boolean isPortaApplicativaBustaErrore_personalizzaElementiFault(){
  248.         if(this.isPortaApplicativaBustaErrore_personalizzaElementiFaultRead==null){
  249.             try{  
  250.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.pa.bustaErrore.personalizzaElementiFault");
  251.                
  252.                 if (value != null){
  253.                     value = value.trim();
  254.                     this.isPortaApplicativaBustaErrore_personalizzaElementiFault = Boolean.parseBoolean(value);
  255.                 }else{
  256.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.bustaErrore.personalizzaElementiFault' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails)");
  257.                     this.isPortaApplicativaBustaErrore_personalizzaElementiFault = null;
  258.                 }
  259.                
  260.                 this.isPortaApplicativaBustaErrore_personalizzaElementiFaultRead = true;
  261.                
  262.             }catch(java.lang.Exception e) {
  263.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.bustaErrore.personalizzaElementiFault' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails), errore:"+e.getMessage());
  264.                 this.isPortaApplicativaBustaErrore_personalizzaElementiFault = null;
  265.                
  266.                 this.isPortaApplicativaBustaErrore_personalizzaElementiFaultRead = true;
  267.             }
  268.         }
  269.        
  270.         return this.isPortaApplicativaBustaErrore_personalizzaElementiFault;
  271.     }
  272.    
  273.    
  274.     /**
  275.      * Indicazione se deve essere aggiunto un errore-applicativo nei details di un messaggio di errore di protocollo (Porta Applicativa)
  276.      *  
  277.      * @return Indicazione se deve essere aggiunto un errore-applicativo nei details di un messaggio di errore di protocollo (Porta Applicativa)
  278.      *
  279.      */
  280.     private Boolean isPortaApplicativaBustaErrore_aggiungiErroreApplicativo= null;
  281.     private Boolean isPortaApplicativaBustaErrore_aggiungiErroreApplicativoRead= null;
  282.     public Boolean isPortaApplicativaBustaErrore_aggiungiErroreApplicativo(){
  283.         if(this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativoRead==null){
  284.             try{  
  285.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.pa.bustaErrore.aggiungiErroreApplicativo");
  286.                
  287.                 if (value != null){
  288.                     value = value.trim();
  289.                     this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativo = Boolean.parseBoolean(value);
  290.                 }else{
  291.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.bustaErrore.aggiungiErroreApplicativo' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails)");
  292.                     this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativo = null;
  293.                 }
  294.                
  295.                 this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativoRead = true;
  296.                
  297.             }catch(java.lang.Exception e) {
  298.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.pa.bustaErrore.aggiungiErroreApplicativo' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails), errore:"+e.getMessage());
  299.                 this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativo = null;
  300.                
  301.                 this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativoRead = true;
  302.             }
  303.         }
  304.        
  305.         return this.isPortaApplicativaBustaErrore_aggiungiErroreApplicativo;
  306.     }
  307.    
  308.     /**
  309.      * Indicazione se generare i details in caso di SOAPFault *_001 (senza buste Errore)
  310.      *  
  311.      * @return Indicazione se generare i details in caso di SOAPFault *_001 (senza buste Errore)
  312.      *
  313.      */
  314.     private Boolean isGenerazioneDetailsSOAPFaultProtocolValidazione = null;
  315.     public boolean isGenerazioneDetailsSOAPFaultProtocolValidazione(){
  316.         if(this.isGenerazioneDetailsSOAPFaultProtocolValidazione==null){
  317.             try{  
  318.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneIntestazione");
  319.                
  320.                 if (value != null){
  321.                     value = value.trim();
  322.                     this.isGenerazioneDetailsSOAPFaultProtocolValidazione = Boolean.parseBoolean(value);
  323.                 }else{
  324.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneIntestazione' non impostata, viene utilizzato il default=false");
  325.                     this.isGenerazioneDetailsSOAPFaultProtocolValidazione = false;
  326.                 }
  327.                
  328.             }catch(java.lang.Exception e) {
  329.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneIntestazione' non impostata, viene utilizzato il default=false, errore:"+e.getMessage());
  330.                 this.isGenerazioneDetailsSOAPFaultProtocolValidazione = false;
  331.             }
  332.         }
  333.        
  334.         return this.isGenerazioneDetailsSOAPFaultProtocolValidazione;
  335.     }
  336.    
  337.     /**
  338.      * Indicazione se generare i details in caso di SOAPFault *_300
  339.      *  
  340.      * @return Indicazione se generare i details in caso di SOAPFault *_300
  341.      *
  342.      */
  343.     private Boolean isGenerazioneDetailsSOAPFaultProtocolProcessamento = null;
  344.     public boolean isGenerazioneDetailsSOAPFaultProtocolProcessamento(){
  345.         if(this.isGenerazioneDetailsSOAPFaultProtocolProcessamento==null){
  346.             try{  
  347.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneProcessamento");
  348.                
  349.                 if (value != null){
  350.                     value = value.trim();
  351.                     this.isGenerazioneDetailsSOAPFaultProtocolProcessamento = Boolean.parseBoolean(value);
  352.                 }else{
  353.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneProcessamento' non impostata, viene utilizzato il default=true");
  354.                     this.isGenerazioneDetailsSOAPFaultProtocolProcessamento = true;
  355.                 }
  356.                
  357.             }catch(java.lang.Exception e) {
  358.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.eccezioneProcessamento' non impostata, viene utilizzato il default=true, errore:"+e.getMessage());
  359.                 this.isGenerazioneDetailsSOAPFaultProtocolProcessamento = true;
  360.             }
  361.         }
  362.        
  363.         return this.isGenerazioneDetailsSOAPFaultProtocolProcessamento;
  364.     }
  365.    
  366.    
  367.     /**
  368.      * Indicazione se generare nei details in caso di SOAPFault *_300 lo stack trace
  369.      *  
  370.      * @return Indicazione se generare nei details in caso di SOAPFault *_300 lo stack trace
  371.      *
  372.      */
  373.     private Boolean isGenerazioneDetailsSOAPFaultProtocolWithStackTrace = null;
  374.     public boolean isGenerazioneDetailsSOAPFaultProtocolWithStackTrace(){
  375.         if(this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace==null){
  376.             try{  
  377.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.stackTrace");
  378.                
  379.                 if (value != null){
  380.                     value = value.trim();
  381.                     this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace = Boolean.parseBoolean(value);
  382.                 }else{
  383.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.stackTrace' non impostata, viene utilizzato il default=false");
  384.                     this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace = false;
  385.                 }
  386.                
  387.             }catch(java.lang.Exception e) {
  388.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.stackTrace' non impostata, viene utilizzato il default=false, errore:"+e.getMessage());
  389.                 this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace = false;
  390.             }
  391.         }
  392.        
  393.         return this.isGenerazioneDetailsSOAPFaultProtocolWithStackTrace;
  394.     }
  395.    
  396.     /**
  397.      * Indicazione se generare nei details in caso di SOAPFault informazioni generiche
  398.      *  
  399.      * @return Indicazione se generare nei details in caso di SOAPFault informazioni generiche
  400.      *
  401.      */
  402.     private Boolean isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche = null;
  403.     public boolean isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche(){
  404.         if(this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche==null){
  405.             try{  
  406.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.informazioniGeneriche");
  407.                
  408.                 if (value != null){
  409.                     value = value.trim();
  410.                     this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche = Boolean.parseBoolean(value);
  411.                 }else{
  412.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.informazioniGeneriche' non impostata, viene utilizzato il default=true");
  413.                     this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche = true;
  414.                 }
  415.                
  416.             }catch(java.lang.Exception e) {
  417.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.protocol.informazioniGeneriche' non impostata, viene utilizzato il default=true, errore:"+e.getMessage());
  418.                 this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche = true;
  419.             }
  420.         }
  421.        
  422.         return this.isGenerazioneDetailsSOAPFaultProtocolConInformazioniGeneriche;
  423.     }
  424.    
  425.    
  426.    
  427.     /* **** SOAP FAULT (Integrazione, Porta Delegata) **** */
  428.    
  429.     /**
  430.      * Indicazione se generare i details in Casi di errore 5XX
  431.      *  
  432.      * @return Indicazione se generare i details in Casi di errore 5XX
  433.      *
  434.      */
  435.     private Boolean isGenerazioneDetailsSOAPFaultIntegrationServerError = null;
  436.     public boolean isGenerazioneDetailsSOAPFaultIntegrationServerError(){
  437.         if(this.isGenerazioneDetailsSOAPFaultIntegrationServerError==null){
  438.             try{  
  439.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.serverError");
  440.                
  441.                 if (value != null){
  442.                     value = value.trim();
  443.                     this.isGenerazioneDetailsSOAPFaultIntegrationServerError = Boolean.parseBoolean(value);
  444.                 }else{
  445.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.serverError' non impostata, viene utilizzato il default=true");
  446.                     this.isGenerazioneDetailsSOAPFaultIntegrationServerError = true;
  447.                 }
  448.                
  449.             }catch(java.lang.Exception e) {
  450.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.serverError' non impostata, viene utilizzato il default=true, errore:"+e.getMessage());
  451.                 this.isGenerazioneDetailsSOAPFaultIntegrationServerError = true;
  452.             }
  453.         }
  454.        
  455.         return this.isGenerazioneDetailsSOAPFaultIntegrationServerError;
  456.     }
  457.    
  458.     /**
  459.      * Indicazione se generare i details in Casi di errore 4XX
  460.      *  
  461.      * @return Indicazione se generare i details in Casi di errore 4XX
  462.      *
  463.      */
  464.     private Boolean isGenerazioneDetailsSOAPFaultIntegrationClientError = null;
  465.     public boolean isGenerazioneDetailsSOAPFaultIntegrationClientError(){
  466.         if(this.isGenerazioneDetailsSOAPFaultIntegrationClientError==null){
  467.             try{  
  468.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.clientError");
  469.                
  470.                 if (value != null){
  471.                     value = value.trim();
  472.                     this.isGenerazioneDetailsSOAPFaultIntegrationClientError = Boolean.parseBoolean(value);
  473.                 }else{
  474.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.clientError' non impostata, viene utilizzato il default=false");
  475.                     this.isGenerazioneDetailsSOAPFaultIntegrationClientError = false;
  476.                 }
  477.                
  478.             }catch(java.lang.Exception e) {
  479.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.clientError' non impostata, viene utilizzato il default=false, errore:"+e.getMessage());
  480.                 this.isGenerazioneDetailsSOAPFaultIntegrationClientError = false;
  481.             }
  482.         }
  483.        
  484.         return this.isGenerazioneDetailsSOAPFaultIntegrationClientError;
  485.     }
  486.    
  487.     /**
  488.      * Indicazione se generare nei details lo stack trace all'interno
  489.      *  
  490.      * @return Indicazione se generare nei details lo stack trace all'interno
  491.      *
  492.      */
  493.     private Boolean isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace = null;
  494.     public boolean isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace(){
  495.         if(this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace==null){
  496.             try{  
  497.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.stackTrace");
  498.                
  499.                 if (value != null){
  500.                     value = value.trim();
  501.                     this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace = Boolean.parseBoolean(value);
  502.                 }else{
  503.                     this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.stackTrace' non impostata, viene utilizzato il default=false");
  504.                     this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace = false;
  505.                 }
  506.                
  507.             }catch(java.lang.Exception e) {
  508.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.stackTrace' non impostata, viene utilizzato il default=false, errore:"+e.getMessage());
  509.                 this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace = false;
  510.             }
  511.         }
  512.        
  513.         return this.isGenerazioneDetailsSOAPFaultIntegrationWithStackTrace;
  514.     }
  515.    
  516.     /**
  517.      * Indicazione se generare nei details informazioni dettagliate o solo di carattere generale
  518.      *  
  519.      * @return Indicazione se generare nei details informazioni dettagliate o solo di carattere generale
  520.      *
  521.      */
  522.     private Boolean isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGeneriche= null;
  523.     private Boolean isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGenericheRead= null;
  524.     public Boolean isGenerazioneDetailsSOAPFaultIntegrazionConInformazioniGeneriche(){
  525.         if(this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGenericheRead==null){
  526.             try{  
  527.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.informazioniGeneriche");
  528.                
  529.                 if (value != null){
  530.                     value = value.trim();
  531.                     this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGeneriche = Boolean.parseBoolean(value);
  532.                 }else{
  533.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.informazioniGeneriche' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultAsGenericCode)");
  534.                     this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGeneriche = null;
  535.                 }
  536.                
  537.                 this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGenericheRead = true;
  538.                
  539.             }catch(java.lang.Exception e) {
  540.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.generazioneDetailsSoapFault.integration.informazioniGeneriche' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultAsGenericCode), errore:"+e.getMessage());
  541.                 this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGeneriche = null;
  542.                
  543.                 this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGenericheRead = true;
  544.             }
  545.         }
  546.        
  547.         return this.isGenerazioneDetailsSOAPFaultIntegrationConInformazioniGeneriche;
  548.     }
  549.    
  550.    
  551.    
  552.    
  553.     /* **** SOAP FAULT (Generati dagli attori esterni) **** */
  554.    
  555.     /**
  556.      * Indicazione se aggiungere un detail contenente descrizione dell'errore nel SoapFaultApplicativo originale
  557.      *  
  558.      * @return Indicazione se aggiungere un detail contenente descrizione dell'errore nel SoapFaultApplicativo originale
  559.      *
  560.      */
  561.     private BooleanNullable isAggiungiDetailErroreApplicativo_SoapFaultApplicativo= null;
  562.     private Boolean isAggiungiDetailErroreApplicativo_SoapFaultApplicativoRead= null;
  563.     public BooleanNullable isAggiungiDetailErroreApplicativo_SoapFaultApplicativo(){
  564.         if(this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativoRead==null){
  565.             try{  
  566.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.erroreApplicativo.faultApplicativo.enrichDetails");
  567.                
  568.                 if (value != null){
  569.                     value = value.trim();
  570.                     Boolean b = Boolean.parseBoolean(value);
  571.                     this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativo = b ? BooleanNullable.TRUE() : BooleanNullable.FALSE();
  572.                 }else{
  573.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.erroreApplicativo.faultApplicativo.enrichDetails' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails)");
  574.                     this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativo = BooleanNullable.NULL();
  575.                 }
  576.                
  577.                 this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativoRead = true;
  578.                
  579.             }catch(java.lang.Exception e) {
  580.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.erroreApplicativo.faultApplicativo.enrichDetails' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultApplicativo.enrichDetails), errore:"+e.getMessage());
  581.                 this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativo = BooleanNullable.NULL();
  582.                
  583.                 this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativoRead = true;
  584.             }
  585.         }
  586.        
  587.         return this.isAggiungiDetailErroreApplicativo_SoapFaultApplicativo;
  588.     }
  589.    
  590.     /**
  591.      * Indicazione se aggiungere un detail contenente descrizione dell'errore nel SoapFaultPdD originale
  592.      *  
  593.      * @return Indicazione se aggiungere un detail contenente descrizione dell'errore nel SoapFaultPdD originale
  594.      *
  595.      */
  596.     private BooleanNullable isAggiungiDetailErroreApplicativo_SoapFaultPdD= null;
  597.     private Boolean isAggiungiDetailErroreApplicativo_SoapFaultPdDRead= null;
  598.     public BooleanNullable isAggiungiDetailErroreApplicativo_SoapFaultPdD(){
  599.         if(this.isAggiungiDetailErroreApplicativo_SoapFaultPdDRead==null){
  600.             try{  
  601.                 String value = this.reader.getValueConvertEnvProperties("org.openspcoop2.protocol.trasparente.erroreApplicativo.faultPdD.enrichDetails");
  602.                
  603.                 if (value != null){
  604.                     value = value.trim();
  605.                     Boolean b = Boolean.parseBoolean(value);
  606.                     this.isAggiungiDetailErroreApplicativo_SoapFaultPdD = b ? BooleanNullable.TRUE() : BooleanNullable.FALSE();
  607.                 }else{
  608.                     this.log.debug("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.erroreApplicativo.faultPdD.enrichDetails' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultPdD.enrichDetails)");
  609.                     this.isAggiungiDetailErroreApplicativo_SoapFaultPdD = BooleanNullable.NULL();
  610.                 }
  611.                
  612.                 this.isAggiungiDetailErroreApplicativo_SoapFaultPdDRead = true;
  613.                
  614.             }catch(java.lang.Exception e) {
  615.                 this.log.warn("Proprieta' di openspcoop 'org.openspcoop2.protocol.trasparente.erroreApplicativo.faultPdD.enrichDetails' non impostata, viene utilizzato il default associato al Servizio Applicativo (faultPdD.enrichDetails), errore:"+e.getMessage());
  616.                 this.isAggiungiDetailErroreApplicativo_SoapFaultPdD = BooleanNullable.NULL();
  617.                
  618.                 this.isAggiungiDetailErroreApplicativo_SoapFaultPdDRead = true;
  619.             }
  620.         }
  621.        
  622.         return this.isAggiungiDetailErroreApplicativo_SoapFaultPdD;
  623.     }

  624.    
  625.     /* **** TESTSUITE PROTOCOL PROPERTIES **** */
  626.    
  627.     private Boolean utilizzaTestSuiteGenerazioneTracce = null;
  628.     public Boolean isUtilizzaTestSuiteGenerazioneTracce(){
  629.         if(this.utilizzaTestSuiteGenerazioneTracce==null){
  630.            
  631.             Boolean defaultValue = false;
  632.             String propertyName = "org.openspcoop2.protocol.trasparente.generazioneTracce.testsuite.enabled";
  633.            
  634.             try{  
  635.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  636.                 if (value != null){
  637.                     value = value.trim();
  638.                     this.utilizzaTestSuiteGenerazioneTracce = Boolean.parseBoolean(value);
  639.                 }else{
  640.                     this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  641.                     this.utilizzaTestSuiteGenerazioneTracce = defaultValue;
  642.                 }

  643.             }catch(java.lang.Exception e) {
  644.                 this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  645.                 this.utilizzaTestSuiteGenerazioneTracce = defaultValue;
  646.             }
  647.         }

  648.         return this.utilizzaTestSuiteGenerazioneTracce;
  649.     }
  650.    
  651.     private Boolean utilizzaTestSuiteProtocolProperties = null;
  652.     public Boolean isUtilizzaTestSuiteProtocolProperties(){
  653.         if(this.utilizzaTestSuiteProtocolProperties==null){
  654.            
  655.             Boolean defaultValue = false;
  656.             String propertyName = "org.openspcoop2.protocol.trasparente.protocolProperties.testsuite.enabled";
  657.            
  658.             try{  
  659.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  660.                 if (value != null){
  661.                     value = value.trim();
  662.                     this.utilizzaTestSuiteProtocolProperties = Boolean.parseBoolean(value);
  663.                 }else{
  664.                     this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  665.                     this.utilizzaTestSuiteProtocolProperties = defaultValue;
  666.                 }

  667.             }catch(java.lang.Exception e) {
  668.                 this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  669.                 this.utilizzaTestSuiteProtocolProperties = defaultValue;
  670.             }
  671.         }

  672.         return this.utilizzaTestSuiteProtocolProperties;
  673.     }
  674.    
  675.    
  676.    
  677.     private Boolean useConfigStaticInstance = null;
  678.     private Boolean useConfigStaticInstance(){
  679.         if(this.useConfigStaticInstance==null){
  680.            
  681.             Boolean defaultValue = true;
  682.             String propertyName = "org.openspcoop2.protocol.trasparente.factory.config.staticInstance";
  683.            
  684.             try{  
  685.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  686.                 if (value != null){
  687.                     value = value.trim();
  688.                     this.useConfigStaticInstance = Boolean.parseBoolean(value);
  689.                 }else{
  690.                     this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  691.                     this.useConfigStaticInstance = defaultValue;
  692.                 }

  693.             }catch(java.lang.Exception e) {
  694.                 this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  695.                 this.useConfigStaticInstance = defaultValue;
  696.             }
  697.         }

  698.         return this.useConfigStaticInstance;
  699.     }
  700.    
  701.     private Boolean useErroreApplicativoStaticInstance = null;
  702.     private Boolean useErroreApplicativoStaticInstance(){
  703.         if(this.useErroreApplicativoStaticInstance==null){
  704.            
  705.             Boolean defaultValue = true;
  706.             String propertyName = "org.openspcoop2.protocol.trasparente.factory.erroreApplicativo.staticInstance";
  707.            
  708.             try{  
  709.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  710.                 if (value != null){
  711.                     value = value.trim();
  712.                     this.useErroreApplicativoStaticInstance = Boolean.parseBoolean(value);
  713.                 }else{
  714.                     this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  715.                     this.useErroreApplicativoStaticInstance = defaultValue;
  716.                 }

  717.             }catch(java.lang.Exception e) {
  718.                 this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  719.                 this.useErroreApplicativoStaticInstance = defaultValue;
  720.             }
  721.         }

  722.         return this.useErroreApplicativoStaticInstance;
  723.     }
  724.    
  725.     private Boolean useEsitoStaticInstance = null;
  726.     private Boolean useEsitoStaticInstance(){
  727.         if(this.useEsitoStaticInstance==null){
  728.            
  729.             Boolean defaultValue = true;
  730.             String propertyName = "org.openspcoop2.protocol.trasparente.factory.esito.staticInstance";
  731.            
  732.             try{  
  733.                 String value = this.reader.getValueConvertEnvProperties(propertyName);

  734.                 if (value != null){
  735.                     value = value.trim();
  736.                     this.useEsitoStaticInstance = Boolean.parseBoolean(value);
  737.                 }else{
  738.                     this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue);
  739.                     this.useEsitoStaticInstance = defaultValue;
  740.                 }

  741.             }catch(java.lang.Exception e) {
  742.                 this.log.debug("Proprieta' di openspcoop '"+propertyName+"' non impostata, viene utilizzato il default="+defaultValue+", errore:"+e.getMessage());
  743.                 this.useEsitoStaticInstance = defaultValue;
  744.             }
  745.         }

  746.         return this.useEsitoStaticInstance;
  747.     }
  748.    
  749.     private BasicStaticInstanceConfig staticInstanceConfig = null;
  750.     public BasicStaticInstanceConfig getStaticInstanceConfig(){
  751.         if(this.staticInstanceConfig==null){
  752.             this.staticInstanceConfig = new BasicStaticInstanceConfig();
  753.             if(useConfigStaticInstance()!=null) {
  754.                 this.staticInstanceConfig.setStaticConfig(useConfigStaticInstance());
  755.             }
  756.             if(useErroreApplicativoStaticInstance()!=null) {
  757.                 this.staticInstanceConfig.setStaticErrorBuilder(useErroreApplicativoStaticInstance());
  758.             }
  759.             if(useEsitoStaticInstance()!=null) {
  760.                 this.staticInstanceConfig.setStaticEsitoBuilder(useEsitoStaticInstance());
  761.             }
  762.         }
  763.         return this.staticInstanceConfig;
  764.     }
  765. }