DiagnosticConfig.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.utils.logger.config;

  21. import java.io.File;
  22. import java.net.URI;
  23. import java.net.URL;
  24. import java.util.Properties;

  25. import org.openspcoop2.utils.UtilsException;
  26. import org.openspcoop2.utils.logger.AbstractBaseDiagnosticManagerCore;
  27. import org.openspcoop2.utils.logger.DiagnosticProperties;

  28. /**
  29.  * DiagnosticConfig
  30.  *
  31.  * @author Poli Andrea (apoli@link.it)
  32.  * @author $Author$
  33.  * @version $Rev$, $Date$
  34.  */
  35. public class DiagnosticConfig {

  36.     public static DiagnosticConfig newEmptyDiagnosticConfig() {
  37.        
  38.         DiagnosticConfig config = new DiagnosticConfig();
  39.         Properties properties = new Properties();
  40.         properties.put(DiagnosticProperties.EMPTY, "true");
  41.         config.setDiagnosticConfigProperties(properties);
  42.         return config;
  43.        
  44.     }
  45.    
  46.     private Boolean throwExceptionPlaceholderFailedResolution;
  47.    
  48.     private File diagnosticConfigFile;
  49.     private String diagnosticConfigName;
  50.     private URI diagnosticConfigURI;
  51.     private URL diagnosticConfigURL;
  52.     private Properties diagnosticConfigProperties;
  53.    
  54.    
  55.     public File getDiagnosticConfigFile() {
  56.         return this.diagnosticConfigFile;
  57.     }
  58.     public void setDiagnosticConfigFile(File diagnosticConfigFile) {
  59.         this.diagnosticConfigFile = diagnosticConfigFile;
  60.     }
  61.     public Properties getDiagnosticConfigProperties() {
  62.         return this.diagnosticConfigProperties;
  63.     }
  64.     public void setDiagnosticConfigProperties(Properties diagnosticConfigProperties) {
  65.         this.diagnosticConfigProperties = diagnosticConfigProperties;
  66.     }
  67.     public String getDiagnosticConfigName() {
  68.         return this.diagnosticConfigName;
  69.     }
  70.     public void setDiagnosticConfigName(String diagnosticConfigName) {
  71.         this.diagnosticConfigName = diagnosticConfigName;
  72.     }
  73.     public URI getDiagnosticConfigURI() {
  74.         return this.diagnosticConfigURI;
  75.     }
  76.     public void setDiagnosticConfigURI(URI diagnosticConfigURI) {
  77.         this.diagnosticConfigURI = diagnosticConfigURI;
  78.     }
  79.     public URL getDiagnosticConfigURL() {
  80.         return this.diagnosticConfigURL;
  81.     }
  82.     public void setDiagnosticConfigURL(URL diagnosticConfigURL) {
  83.         this.diagnosticConfigURL = diagnosticConfigURL;
  84.     }
  85.    
  86.    
  87.     public Boolean getThrowExceptionPlaceholderFailedResolution() {
  88.         return this.throwExceptionPlaceholderFailedResolution;
  89.     }
  90.     public void setThrowExceptionPlaceholderFailedResolution(Boolean throwExceptionPlaceholderFailedResolution) {
  91.         this.throwExceptionPlaceholderFailedResolution = throwExceptionPlaceholderFailedResolution;
  92.     }


  93.     // Istanza statica per motivi di performance
  94.     private static Properties staticProperties = null;
  95.    
  96.     public static void validate(DiagnosticConfig config) throws UtilsException{
  97.         if(staticProperties==null){
  98.             _validate(config);
  99.         }
  100.     }
  101.     public static Properties readProperties(DiagnosticConfig config) throws UtilsException{
  102.         if(staticProperties==null){
  103.             return _readProperties(config);
  104.         }
  105.         return staticProperties;
  106.     }
  107.    
  108.     private static void _validate(DiagnosticConfig config) throws UtilsException{
  109.         if(staticProperties==null){
  110.             if(config==null){
  111.                 throw new UtilsException("Diagnostic Configuration undefined");
  112.             }
  113.             if(config.getThrowExceptionPlaceholderFailedResolution()==null){
  114.                 throw new UtilsException("Diagnostic configuration (property ThrowExceptionPlaceholderFailedResolution) undefined");
  115.             }
  116.             int diagnosticConfigMode = 0;
  117.             if(config.getDiagnosticConfigFile()!=null){
  118.                 diagnosticConfigMode++;
  119.             }
  120.             if(config.getDiagnosticConfigName()!=null){
  121.                 diagnosticConfigMode++;
  122.             }
  123.             if(config.getDiagnosticConfigURI()!=null){
  124.                 diagnosticConfigMode++;
  125.             }
  126.             if(config.getDiagnosticConfigURL()!=null){
  127.                 diagnosticConfigMode++;
  128.             }
  129.             if(config.getDiagnosticConfigProperties()!=null){
  130.                 diagnosticConfigMode++;
  131.             }
  132.             if(diagnosticConfigMode==0){
  133.                 throw new UtilsException("Diagnostic configuration uncorrect: source diagnostic configuration file undefined");
  134.             }
  135.             if(diagnosticConfigMode>1){
  136.                 throw new UtilsException("Diagnostic configuration uncorrect: found multiple source diagnostic configuration file");
  137.             }
  138.         }
  139.     }
  140.    
  141.     private static synchronized Properties _readProperties(DiagnosticConfig config) throws UtilsException{
  142.        
  143.         if(staticProperties==null){
  144.        
  145.             if(config==null){
  146.                 throw new UtilsException("Diagnostic Configuration undefined");
  147.             }
  148.             Properties diagProperties = null;
  149.             if(config.getDiagnosticConfigFile()!=null){
  150.                 diagProperties = AbstractBaseDiagnosticManagerCore.getProperties(config.getDiagnosticConfigFile());
  151.             }
  152.             else if(config.getDiagnosticConfigName()!=null){
  153.                 diagProperties = AbstractBaseDiagnosticManagerCore.getProperties(config.getDiagnosticConfigName());
  154.             }
  155.             else if(config.getDiagnosticConfigURI()!=null){
  156.                 diagProperties = AbstractBaseDiagnosticManagerCore.getProperties(config.getDiagnosticConfigURI());
  157.             }
  158.             else if(config.getDiagnosticConfigURL()!=null){
  159.                 diagProperties = AbstractBaseDiagnosticManagerCore.getProperties(config.getDiagnosticConfigURL());
  160.             }
  161.             else if(config.getDiagnosticConfigProperties()!=null){
  162.                 diagProperties = config.getDiagnosticConfigProperties();
  163.             }
  164.             staticProperties = diagProperties;
  165.         }
  166.         return staticProperties;
  167.     }
  168. }