CostantiProprieta.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.pdd.config;

  21. import java.io.File;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Objects;
  27. import java.util.Properties;

  28. import org.apache.commons.lang.StringUtils;
  29. import org.openspcoop2.core.commons.CoreException;
  30. import org.openspcoop2.core.config.Proprieta;
  31. import org.openspcoop2.pdd.core.dynamic.InformazioniIntegrazioneCodifica;
  32. import org.openspcoop2.pdd.core.dynamic.InformazioniIntegrazioneSorgente;
  33. import org.openspcoop2.pdd.core.integrazione.peer.PeerHeaderDescriptor;
  34. import org.openspcoop2.pdd.core.integrazione.peer.RegexpPeerHeaderDescriptor;
  35. import org.openspcoop2.pdd.core.integrazione.peer.StringPeerHeaderDescriptor;
  36. import org.openspcoop2.utils.BooleanNullable;
  37. import org.openspcoop2.utils.certificate.KeystoreType;
  38. import org.openspcoop2.utils.resources.Charset;
  39. import org.openspcoop2.utils.security.CertificateValidityCheck;
  40. import org.openspcoop2.utils.transport.http.RFC2047Encoding;

  41. /**
  42.  * Classe che raccoglie le proprieta
  43.  *
  44.  * @author Poli Andrea (apoli@link.it)
  45.  * @author $Author$
  46.  * @version $Rev$, $Date$
  47.  */

  48. public class CostantiProprieta {

  49.     private CostantiProprieta() {}
  50.    
  51.    
  52.     public static final String VALUE_ENABLED = "true";
  53.     public static final String VALUE_DISABLED = "false";
  54.    
  55.    
  56.    
  57.     // ****  VALIDAZIONE *****
  58.    
  59.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_ENABLED = VALUE_ENABLED;
  60.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_DISABLED = VALUE_DISABLED;
  61.    
  62.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RICHIESTA_ENABLED = "validation.request.enabled";
  63.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RISPOSTA_ENABLED = "validation.response.enabled";
  64.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RICHIESTA_TIPO = "validation.request.type";
  65.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RISPOSTA_TIPO = "validation.response.type";
  66.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RICHIESTA_ACCEPT_MTOM_MESSAGE = "validation.request.acceptMtom";
  67.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RISPOSTA_ACCEPT_MTOM_MESSAGE = "validation.response.acceptMtom";
  68.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_WARNING_ONLY = "warning";
  69.    
  70.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_ENABLED_SUFFIX= "enabled";
  71.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_MERGE_API_SPEC_SUFFIX= "mergeAPISpec";
  72.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_API_SPEC_SUFFIX= "validateAPISpec";
  73.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_PATH_SUFFIX= "validateRequestPath";
  74.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_QUERY_SUFFIX= "validateRequestQuery";
  75.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM_SUFFIX= "validateRequestUnexpectedQueryParam";
  76.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_HEADERS_SUFFIX= "validateRequestHeaders";
  77.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_COOKIES_SUFFIX= "validateRequestCookies";
  78.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_BODY_SUFFIX= "validateRequestBody";
  79.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_HEADERS_SUFFIX= "validateResponseHeaders";
  80.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_BODY_SUFFIX= "validateResponseBody";
  81.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_WILDCARD_SUBTYPE_AS_JSON_SUFFIX="validateWildcardSubtypeAsJson";
  82.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_MULTIPART_OPTIMIZATION_SUFFIX="validateMultipartOptimization";
  83.    
  84.     private static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX= "validation.openApi.";
  85.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_COMMONS_ENABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_ENABLED;
  86.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_COMMONS_DISABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_DISABLED;
  87.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_MERGE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_MERGE_API_SPEC_SUFFIX;
  88.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_API_SPEC_SUFFIX;
  89.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_PATH= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_PATH_SUFFIX;
  90.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_QUERY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_QUERY_SUFFIX;
  91.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM_SUFFIX;
  92.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_HEADERS_SUFFIX;
  93.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_COOKIES= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_COOKIES_SUFFIX;
  94.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_BODY_SUFFIX;
  95.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_HEADERS_SUFFIX;
  96.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_BODY_SUFFIX;
  97.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_WILDCARD_SUBTYPE_AS_JSON= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_WILDCARD_SUBTYPE_AS_JSON_SUFFIX;
  98.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_MULTIPART_OPTIMIZATION= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_MULTIPART_OPTIMIZATION_SUFFIX;
  99.    
  100.     private static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX= "validation.openApi4j.";
  101.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_OPENAPI4J_ENABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_ENABLED;
  102.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_OPENAPI4J_DISABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_DISABLED;
  103.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_ENABLED= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_ENABLED_SUFFIX;
  104.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_MERGE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_MERGE_API_SPEC_SUFFIX;
  105.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_API_SPEC_SUFFIX;
  106.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_PATH= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_PATH_SUFFIX;
  107.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_QUERY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_QUERY_SUFFIX;
  108.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM_SUFFIX;
  109.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_HEADERS_SUFFIX;
  110.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_COOKIES= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_COOKIES_SUFFIX;
  111.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_REQUEST_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_BODY_SUFFIX;
  112.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_RESPONSE_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_HEADERS_SUFFIX;
  113.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_RESPONSE_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_BODY_SUFFIX;
  114.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_WILDCARD_SUBTYPE_AS_JSON= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_WILDCARD_SUBTYPE_AS_JSON_SUFFIX;
  115.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_VALIDATE_MULTIPART_OPTIMIZATION= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_OPENAPI4J_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_MULTIPART_OPTIMIZATION_SUFFIX;
  116.    
  117.     private static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX= "validation.swaggerRequestValidator.";
  118.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_SWAGGER_REQUEST_VALIDATOR_ENABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_ENABLED;
  119.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_SWAGGER_REQUEST_VALIDATOR_DISABLED = VALIDAZIONE_CONTENUTI_PROPERTY_VALUE_DISABLED;
  120.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_ENABLED= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_ENABLED_SUFFIX;
  121.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_MERGE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_MERGE_API_SPEC_SUFFIX;
  122.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_API_SPEC_SUFFIX;
  123.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_PATH= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_PATH_SUFFIX;
  124.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_QUERY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_QUERY_SUFFIX;
  125.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_UNEXPECTED_QUERY_PARAM_SUFFIX;
  126.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_HEADERS_SUFFIX;
  127.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_COOKIES= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_COOKIES_SUFFIX;
  128.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_REQUEST_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_REQUEST_BODY_SUFFIX;
  129.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_RESPONSE_HEADERS= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_HEADERS_SUFFIX;
  130.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_RESPONSE_BODY= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_RESPONSE_BODY_SUFFIX;
  131.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_VALIDATE_WILDCARD_SUBTYPE_AS_JSON= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+VALIDAZIONE_CONTENUTI_PROPERTY_NAME_COMMONS_VALIDATE_WILDCARD_SUBTYPE_AS_JSON_SUFFIX;
  132.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_INJECTING_ADDITIONAL_PROPERTIES_FALSE= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+"injectingAdditionalPropertiesFalse";
  133.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_RESOLVE_FULLY_API_SPEC= VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SWAGGER_REQUEST_VALIDATOR_PREFIX+"resolveFullyApiSpec";    
  134.    
  135.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_BUFFER_ENABLED = "validation.buffer.enabled";
  136.    
  137.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_SOAPACTION_ENABLED = "validation.soapAction.enabled";
  138.    
  139.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_RPC_ACCEPT_ROOT_ELEMENT_UNQUALIFIED_ENABLED = "validation.rpc.rootElementUnqualified.accept";
  140.    
  141.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_FAULT_GOVWAY_ENABLED = "validation.faultGovway.enabled";
  142.    
  143.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_PROBLEM_DETAIL_ENABLED = "validation.problemDetails.enabled";
  144.    
  145.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_EMPTY_RESPONSE_ENABLED = "validation.emptyResponse.enabled";
  146.    
  147.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_RETURN_CODE_LIST_ENABLED = "validation.returnCode";
  148.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_RETURN_CODE_LIST_SEPARATOR = ",";
  149.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_RETURN_CODE_LIST_INTERVAL_SEPARATOR = "-";
  150.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_RETURN_CODE_NOT = "validation.returnCode.not";
  151.    
  152.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_CONTENT_TYPE_LIST_ENABLED = "validation.contentType";
  153.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_CONTENT_TYPE_LIST_SEPARATOR = ",";
  154.     public static final String VALIDAZIONE_CONTENUTI_PROPERTY_NAME_REST_CONTENT_TYPE_NOT = "validation.contentType.not";    
  155.    
  156.    
  157.    
  158.    
  159.     // ****  TOKEN VALIDATION *****
  160.    
  161.     public static final String TOKEN_VALIDATION_VALUE_ENABLED = CertificateValidityCheck.CONFIG_VALUE_ENABLED;
  162.     public static final String TOKEN_VALIDATION_VALUE_DISABLED = CertificateValidityCheck.CONFIG_VALUE_DISABLED;
  163.     public static final String TOKEN_VALIDATION_VALUE_IF_NOT_IN_TRUSTSTORE = CertificateValidityCheck.CONFIG_VALUE_IF_NOT_IN_TRUSTSTORE;
  164.    
  165.     public static final String TOKEN_VALIDATION_VALIDITY_CHECK = "tokenValidation.validityCheck";
  166.    
  167.     public static CertificateValidityCheck getTokenValidationCertificateValidityCheck(List<Proprieta> proprieta, CertificateValidityCheck defaultValue) {
  168.         String v = readValue(proprieta, TOKEN_VALIDATION_VALIDITY_CHECK);
  169.         if(v!=null && !StringUtils.isEmpty(v)){
  170.             v=v.trim();
  171.             CertificateValidityCheck c = CertificateValidityCheck.parseCertificateValidityCheck(v);
  172.             if(c!=null) {
  173.                 return c;
  174.             }
  175.         }
  176.         return defaultValue;
  177.     }
  178.    
  179.     public static final String TOKEN_VALIDATION_CLAIMS_VALUE_ENABLED = VALUE_ENABLED;
  180.     public static final String TOKEN_VALIDATION_CLAIMS_VALUE_DISABLED = VALUE_DISABLED;

  181.     public static final String TOKEN_VALIDATION_CLAIMS_IAT_REQUIRED = "tokenValidation.iat.required";
  182.     public static final String TOKEN_VALIDATION_CLAIMS_EXP_REQUIRED = "tokenValidation.exp.required";
  183.     public static final String TOKEN_VALIDATION_CLAIMS_NBF_REQUIRED = "tokenValidation.nbf.required";
  184.    
  185.     public static boolean isTokenValidationClaimsIatRequired(List<Proprieta> proprieta, boolean defaultValue) {
  186.         return readBooleanValueWithDefault(proprieta, TOKEN_VALIDATION_CLAIMS_IAT_REQUIRED, defaultValue, TOKEN_VALIDATION_CLAIMS_VALUE_ENABLED, TOKEN_VALIDATION_CLAIMS_VALUE_DISABLED);
  187.     }
  188.     public static boolean isTokenValidationClaimsExpRequired(List<Proprieta> proprieta, boolean defaultValue) {
  189.         return readBooleanValueWithDefault(proprieta, TOKEN_VALIDATION_CLAIMS_EXP_REQUIRED, defaultValue, TOKEN_VALIDATION_CLAIMS_VALUE_ENABLED, TOKEN_VALIDATION_CLAIMS_VALUE_DISABLED);
  190.     }
  191.     public static boolean isTokenValidationClaimsNbfRequired(List<Proprieta> proprieta, boolean defaultValue) {
  192.         return readBooleanValueWithDefault(proprieta, TOKEN_VALIDATION_CLAIMS_NBF_REQUIRED, defaultValue, TOKEN_VALIDATION_CLAIMS_VALUE_ENABLED, TOKEN_VALIDATION_CLAIMS_VALUE_DISABLED);
  193.     }
  194.    
  195.    
  196.    
  197.    
  198.    
  199.    
  200.     // ****  ATTRIBUTE AUTHORITY *****
  201.    
  202.     public static final String ATTRIBUTE_AUTHORITY_VALUE_ENABLED = CertificateValidityCheck.CONFIG_VALUE_ENABLED;
  203.     public static final String ATTRIBUTE_AUTHORITY_VALUE_DISABLED = CertificateValidityCheck.CONFIG_VALUE_DISABLED;
  204.     public static final String ATTRIBUTE_AUTHORITY_VALUE_IF_NOT_IN_TRUSTSTORE = CertificateValidityCheck.CONFIG_VALUE_IF_NOT_IN_TRUSTSTORE;
  205.    
  206.     public static final String ATTRIBUTE_AUTHORITY_VALIDITY_CHECK = "attributeAuthority.validityCheck";
  207.    
  208.    
  209.     public static CertificateValidityCheck getAttributeAuthorityCertificateValidityCheck(List<Proprieta> proprieta, CertificateValidityCheck defaultValue) {
  210.         String v = readValue(proprieta, ATTRIBUTE_AUTHORITY_VALIDITY_CHECK);
  211.         if(v!=null && !StringUtils.isEmpty(v)){
  212.             v=v.trim();
  213.             CertificateValidityCheck c = CertificateValidityCheck.parseCertificateValidityCheck(v);
  214.             if(c!=null) {
  215.                 return c;
  216.             }
  217.         }
  218.         return defaultValue;
  219.     }
  220.    
  221.    
  222.    
  223.    
  224.    
  225.    
  226.    
  227.    
  228.    
  229.     // ****  AUTENTICAZIONE HTTPS *****
  230.    
  231.     public static final String AUTENTICAZIONE_VALUE_ENABLED = VALUE_ENABLED;
  232.     public static final String AUTENTICAZIONE_VALUE_DISABLED = VALUE_DISABLED;
  233.    
  234.     public static final String AUTENTICAZIONE_HTTPS_VALIDITY_CHECK = "authentication.https.validityCheck";
  235.    
  236.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE_ENABLED = "authentication.https.truststore.enabled";
  237.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE = "authentication.https.truststore";
  238.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE_PASSWORD = "authentication.https.truststore.password";
  239.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE_TYPE = "authentication.https.truststore.type";
  240.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE_CRLS = "authentication.https.truststore.crls";
  241.     public static final String AUTENTICAZIONE_HTTPS_TRUSTSTORE_OCSP_POLICY = "authentication.https.truststore.ocspPolicy";
  242.    
  243.     public static boolean isAutenticazioneHttpsValidityCheck(List<Proprieta> proprieta, boolean defaultValue) {
  244.         return readBooleanValueWithDefault(proprieta, AUTENTICAZIONE_HTTPS_VALIDITY_CHECK, defaultValue, AUTENTICAZIONE_VALUE_ENABLED, AUTENTICAZIONE_VALUE_DISABLED);
  245.     }
  246.    
  247.     public static boolean isAutenticazioneHttpsTrustStore(List<Proprieta> proprieta, File pathDefaultValue) {
  248.         String enabled = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE_ENABLED);
  249.         boolean isEnabled = true;
  250.         if(enabled!=null && !StringUtils.isEmpty(enabled) &&
  251.                 AUTENTICAZIONE_VALUE_DISABLED.equals(enabled.trim())) {
  252.             isEnabled = false;
  253.         }
  254.         if(!isEnabled) {
  255.             return false; // la proprietà serve soprattutto a disabilitarlo se definito in govway.properties
  256.         }
  257.        
  258.         String path = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE);
  259.         if(
  260.                 (path==null || StringUtils.isEmpty(path))
  261.                 &&
  262.                 pathDefaultValue!=null
  263.             ) {
  264.             path = pathDefaultValue.getAbsolutePath();
  265.         }
  266.        
  267.         // La presenza di un path, basta ad abilitarlo. La proprietà enabled serve per disabilitarlo
  268.         return path!=null && StringUtils.isNotEmpty(path);
  269.     }
  270.    
  271.     public static String getAutenticazioneHttpsTrustStorePath(List<Proprieta> proprieta, File pathDefaultValue) {
  272.         String path = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE);
  273.         if(
  274.                 (path==null || StringUtils.isEmpty(path))
  275.                 &&
  276.                 pathDefaultValue!=null
  277.             ) {
  278.             path = pathDefaultValue.getAbsolutePath();
  279.         }
  280.         return path;
  281.     }
  282.     public static String getAutenticazioneHttpsTrustStorePassword(List<Proprieta> proprieta, String passwordDefaultValue) {
  283.         String password = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE_PASSWORD);
  284.         if(password==null) {
  285.             password = passwordDefaultValue;
  286.         }
  287.         return password;
  288.     }
  289.     public static String getAutenticazioneHttpsTrustStoreType(List<Proprieta> proprieta, String typeDefaultValue) {
  290.         String type = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE_TYPE);
  291.         if(type==null) {
  292.             type = typeDefaultValue;
  293.         }
  294.         if(type==null) {
  295.             type = KeystoreType.JKS.getNome();
  296.         }
  297.         return type;
  298.     }
  299.     public static String getAutenticazioneHttpsTrustStoreCRLs(List<Proprieta> proprieta, String crlsDefaultValue) {
  300.         String crls = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE_CRLS);
  301.         if(crls==null) {
  302.             crls = crlsDefaultValue;
  303.         }
  304.         return crls;
  305.     }
  306.     public static String getAutenticazioneHttpsTrustStoreOCSPPolicy(List<Proprieta> proprieta, String crlsDefaultValue) {
  307.         String crls = readValue(proprieta, AUTENTICAZIONE_HTTPS_TRUSTSTORE_OCSP_POLICY);
  308.         if(crls==null) {
  309.             crls = crlsDefaultValue;
  310.         }
  311.         return crls;
  312.     }
  313.    
  314.    
  315.     // ****  CORRELAZIONE APPLICATIVA *****
  316.    
  317.     public static final String CORRELAZIONE_APPLICATIVA_VALUE_ENABLED = VALUE_ENABLED;
  318.     public static final String CORRELAZIONE_APPLICATIVA_VALUE_DISABLED = VALUE_DISABLED;
  319.    
  320.     public static final String CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_TRUNCATE_ID = "correlation.truncate";
  321.     public static final String CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.acceptIdentificationFailed.truncate";
  322.     public static final String CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.blockIdentificationFailed.truncate";
  323.    
  324.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_TRUNCATE_ID = "correlation.request.truncate";
  325.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.request.acceptIdentificationFailed.truncate";
  326.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.request.blockIdentificationFailed.truncate";
  327.    
  328.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_TRUNCATE_ID = "correlation.response.truncate";
  329.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.response.acceptIdentificationFailed.truncate";
  330.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID = "correlation.response.blockIdentificationFailed.truncate";
  331.    
  332.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_NULL_ABORT_TRANSACTION_ID = "correlation.request.extractedIdentifierIsNull.abortTransaction";
  333.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_NULL_ABORT_TRANSACTION_ID = "correlation.response.extractedIdentifierIsNull.abortTransaction";
  334.    
  335.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_EMPTY_ABORT_TRANSACTION_ID = "correlation.request.extractedIdentifierIsEmpty.abortTransaction";
  336.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_EMPTY_ABORT_TRANSACTION_ID = "correlation.response.extractedIdentifierIsEmpty.abortTransaction";
  337.            
  338.     public static final String CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_RULE_NOT_FOUND_ABORT_TRANSACTION_ID = "correlation.request.ruleNotFound.abortTransaction";
  339.     public static final String CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_RULE_NOT_FOUND_ABORT_TRANSACTION_ID = "correlation.response.ruleNotFound.abortTransaction";
  340.    
  341.     public static boolean isCorrelazioneApplicativaRichiestaIdentificazioneFallitaBloccaTruncate(List<Proprieta> proprieta, boolean defaultValue) {
  342.         return isCorrelazioneApplicativaTruncate(proprieta, defaultValue,
  343.                 CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID,
  344.                 CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_TRUNCATE_ID,
  345.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID,
  346.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_TRUNCATE_ID);
  347.     }
  348.     public static boolean isCorrelazioneApplicativaRichiestaIdentificazioneFallitaAccettaTruncate(List<Proprieta> proprieta, boolean defaultValue) {
  349.         return isCorrelazioneApplicativaTruncate(proprieta, defaultValue,
  350.                 CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID,
  351.                 CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_TRUNCATE_ID,
  352.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID,
  353.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_TRUNCATE_ID);
  354.     }
  355.     public static boolean isCorrelazioneApplicativaRispostaIdentificazioneFallitaBloccaTruncate(List<Proprieta> proprieta, boolean defaultValue) {
  356.         return isCorrelazioneApplicativaTruncate(proprieta, defaultValue,
  357.                 CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID,
  358.                 CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_TRUNCATE_ID,
  359.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_BLOCK_IDENTIFICATION_FAILED_TRUNCATE_ID,
  360.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_TRUNCATE_ID);
  361.     }
  362.     public static boolean isCorrelazioneApplicativaRispostaIdentificazioneFallitaAccettaTruncate(List<Proprieta> proprieta, boolean defaultValue) {
  363.         return isCorrelazioneApplicativaTruncate(proprieta, defaultValue,
  364.                 CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID,
  365.                 CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_TRUNCATE_ID,
  366.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_ACCEPT_IDENTIFICATION_FAILED_TRUNCATE_ID,
  367.                 CORRELAZIONE_APPLICATIVA_PROPERTY_NAME_TRUNCATE_ID);
  368.     }
  369.     private static boolean isCorrelazioneApplicativaTruncate(List<Proprieta> proprieta, boolean defaultValue,
  370.             String propertyNameIdentificationFailedFlow, String propertyNameFlow,
  371.             String propertyNameIdentificationFailed, String propertyName) {
  372.        
  373.         BooleanNullable flow = isCorrelazioneApplicativaTruncateFlow(proprieta,
  374.                 propertyNameIdentificationFailedFlow, propertyNameFlow);
  375.         if(flow!=null && flow.getValue()!=null) {
  376.             return flow.getValue().booleanValue();
  377.         }
  378.                
  379.         String valueS = readValue(proprieta, propertyNameIdentificationFailed);
  380.         if(valueS!=null && StringUtils.isNotEmpty(valueS)) {
  381.             if(CORRELAZIONE_APPLICATIVA_VALUE_ENABLED.equals(valueS.trim())) {
  382.                 return true;
  383.             }
  384.             else if(CORRELAZIONE_APPLICATIVA_VALUE_DISABLED.equals(valueS.trim())) {
  385.                 return false;
  386.             }
  387.         }
  388.        
  389.         valueS = readValue(proprieta, propertyName);
  390.         if(valueS!=null && StringUtils.isNotEmpty(valueS)) {
  391.             if(CORRELAZIONE_APPLICATIVA_VALUE_ENABLED.equals(valueS.trim())) {
  392.                 return true;
  393.             }
  394.             else if(CORRELAZIONE_APPLICATIVA_VALUE_DISABLED.equals(valueS.trim())) {
  395.                 return false;
  396.             }
  397.         }
  398.        
  399.         return defaultValue;
  400.     }
  401.     private static BooleanNullable isCorrelazioneApplicativaTruncateFlow(List<Proprieta> proprieta,
  402.             String propertyNameIdentificationFailedFlow, String propertyNameFlow) {
  403.         String valueS = readValue(proprieta, propertyNameIdentificationFailedFlow);
  404.         if(valueS!=null && StringUtils.isNotEmpty(valueS)) {
  405.             if(CORRELAZIONE_APPLICATIVA_VALUE_ENABLED.equals(valueS.trim())) {
  406.                 return BooleanNullable.TRUE();
  407.             }
  408.             else if(CORRELAZIONE_APPLICATIVA_VALUE_DISABLED.equals(valueS.trim())) {
  409.                 return BooleanNullable.FALSE();
  410.             }
  411.         }
  412.        
  413.         valueS = readValue(proprieta, propertyNameFlow);
  414.         if(valueS!=null && StringUtils.isNotEmpty(valueS)) {
  415.             if(CORRELAZIONE_APPLICATIVA_VALUE_ENABLED.equals(valueS.trim())) {
  416.                 return BooleanNullable.TRUE();
  417.             }
  418.             else if(CORRELAZIONE_APPLICATIVA_VALUE_DISABLED.equals(valueS.trim())) {
  419.                 return BooleanNullable.FALSE();
  420.             }
  421.         }
  422.        
  423.         return BooleanNullable.NULL();
  424.     }
  425.    
  426.     public static boolean isCorrelazioneApplicativaRichiestaIdentificativoEstrattoIsNullTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  427.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_NULL_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  428.     }
  429.     public static boolean isCorrelazioneApplicativaRispostaIdentificativoEstrattoIsNullTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  430.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_NULL_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  431.     }
  432.    
  433.     public static boolean isCorrelazioneApplicativaRichiestaIdentificativoEstrattoIsEmptyTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  434.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_EMPTY_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  435.     }
  436.     public static boolean isCorrelazioneApplicativaRispostaIdentificativoEstrattoIsEmptyTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  437.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_EXTRACTED_IDENTIFIER_IS_EMPTY_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  438.     }
  439.    
  440.     public static boolean isCorrelazioneApplicativaRichiestaRegolaNonTrovataTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  441.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RICHIESTA_PROPERTY_NAME_RULE_NOT_FOUND_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  442.     }
  443.     public static boolean isCorrelazioneApplicativaRispostaRegolaNonTrovataTerminaTransazioneConErrore(List<Proprieta> proprieta, boolean defaultValue) {
  444.         return readBooleanValueWithDefault(proprieta, CORRELAZIONE_APPLICATIVA_RISPOSTA_PROPERTY_NAME_RULE_NOT_FOUND_ABORT_TRANSACTION_ID, defaultValue, CORRELAZIONE_APPLICATIVA_VALUE_ENABLED, CORRELAZIONE_APPLICATIVA_VALUE_DISABLED);
  445.     }
  446.    
  447.    
  448.     // ****  CONNETTORI *****
  449.    
  450.     public static final String CONNETTORE_VALUE_ENABLED = VALUE_ENABLED;
  451.     public static final String CONNETTORE_VALUE_DISABLED = VALUE_DISABLED;
  452.    
  453.     private static final String CONNETTORE_TIMEOUT_INPUT_STREAM_ENABLED = "connettori.timeoutInputStream.enabled";
  454.     private static final String CONNETTORE_TIMEOUT_INPUT_STREAM_REQUEST_TIMEOUT = "connettori.request.timeoutMs";
  455.    
  456.     public static boolean isConnettoriUseTimeoutInputStream(List<Proprieta> proprieta, boolean defaultValue) {
  457.         return readBooleanValueWithDefault(proprieta, CONNETTORE_TIMEOUT_INPUT_STREAM_ENABLED, defaultValue, CONNETTORE_VALUE_ENABLED, CONNETTORE_VALUE_DISABLED);
  458.     }
  459.     public static int getConnettoriRequestTimeout(List<Proprieta> proprieta, int defaultValue) {
  460.         return readIntValueWithDefault(proprieta, CONNETTORE_TIMEOUT_INPUT_STREAM_REQUEST_TIMEOUT, defaultValue);
  461.     }
  462.     public static boolean existsConnettoriRequestTimeout(List<Proprieta> proprieta) {
  463.         return readIntValueWithDefault(proprieta, CONNETTORE_TIMEOUT_INPUT_STREAM_REQUEST_TIMEOUT, -1) > 0;
  464.     }
  465.    
  466.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_ENABLED = "connettori.header.value.encodingRFC2047.request.enabled";
  467.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_ENABLED = "connettori.header.value.encodingRFC2047.response.enabled";
  468.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_ENABLED = "connettori.header.value.encodingRFC2047.enabled";
  469.    
  470.     public static boolean isConnettoriHeaderValueEncodingRFC2047RequestEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  471.         String isEnabled = readValue(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_ENABLED);
  472.         if(isEnabled!=null && !"".equals(isEnabled)) {
  473.             if(CONNETTORE_VALUE_ENABLED.equals(isEnabled.trim())) {
  474.                 return true;
  475.             }
  476.             else if(CONNETTORE_VALUE_DISABLED.equals(isEnabled.trim())) {
  477.                 return false;
  478.             }
  479.         }
  480.         return readBooleanValueWithDefault(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_ENABLED, defaultValue, CONNETTORE_VALUE_ENABLED, CONNETTORE_VALUE_DISABLED);
  481.     }
  482.     public static boolean isConnettoriHeaderValueEncodingRFC2047ResponseEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  483.         String isEnabled = readValue(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_ENABLED);
  484.         if(isEnabled!=null && !"".equals(isEnabled)) {
  485.             if(CONNETTORE_VALUE_ENABLED.equals(isEnabled.trim())) {
  486.                 return true;
  487.             }
  488.             else if(CONNETTORE_VALUE_DISABLED.equals(isEnabled.trim())) {
  489.                 return false;
  490.             }
  491.         }
  492.         return readBooleanValueWithDefault(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_ENABLED, defaultValue, CONNETTORE_VALUE_ENABLED, CONNETTORE_VALUE_DISABLED);
  493.     }
  494.    
  495.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_ENCODING = "connettori.header.value.encodingRFC2047.request.type";
  496.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_ENCODING = "connettori.header.value.encodingRFC2047.response.type";
  497.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_ENCODING = "connettori.header.value.encodingRFC2047.type";
  498.    
  499.     public static RFC2047Encoding getConnettoriHeaderValueEncodingRFC2047RequestType(List<Proprieta> proprieta, RFC2047Encoding defaultValue) {
  500.         return getConnettoriHeaderValueEncodingRFC2047Type(CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_ENCODING, proprieta, defaultValue);
  501.     }
  502.     public static RFC2047Encoding getConnettoriHeaderValueEncodingRFC2047ResponseType(List<Proprieta> proprieta, RFC2047Encoding defaultValue) {
  503.         return getConnettoriHeaderValueEncodingRFC2047Type(CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_ENCODING, proprieta, defaultValue);
  504.     }
  505.     private static RFC2047Encoding getConnettoriHeaderValueEncodingRFC2047Type(String pName, List<Proprieta> proprieta, RFC2047Encoding defaultValue) {
  506.         String type = readValue(proprieta, pName);
  507.         if(type!=null && !"".equals(type)) {
  508.             try {
  509.                 RFC2047Encoding t = RFC2047Encoding.valueOf(type);
  510.                 if(t!=null) {
  511.                     return t;
  512.                 }
  513.             }catch(Exception e) {
  514.                 // ignore
  515.             }
  516.         }
  517.         type = readValue(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_ENCODING);
  518.         if(type!=null && !"".equals(type)) {
  519.             try {
  520.                 RFC2047Encoding t = RFC2047Encoding.valueOf(type);
  521.                 if(t!=null) {
  522.                     return t;
  523.                 }
  524.             }catch(Exception e) {
  525.                 // ignore
  526.             }
  527.         }
  528.         return defaultValue;
  529.     }
  530.    
  531.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_CHARSET = "connettori.header.value.encodingRFC2047.request.charset";
  532.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_CHARSET = "connettori.header.value.encodingRFC2047.response.charset";
  533.     public static final String CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_CHARSET = "connettori.header.value.encodingRFC2047.charset";
  534.    
  535.     public static Charset getConnettoriHeaderValueEncodingRFC2047RequestCharset(List<Proprieta> proprieta, Charset defaultValue) {
  536.         return getConnettoriHeaderValueEncodingRFC2047Charset(CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RICHIESTA_CHARSET, proprieta, defaultValue);
  537.     }
  538.     public static Charset getConnettoriHeaderValueEncodingRFC2047ResponseCharset(List<Proprieta> proprieta, Charset defaultValue) {
  539.         return getConnettoriHeaderValueEncodingRFC2047Charset(CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_RISPOSTA_CHARSET, proprieta, defaultValue);
  540.     }
  541.     private static Charset getConnettoriHeaderValueEncodingRFC2047Charset(String pName, List<Proprieta> proprieta, Charset defaultValue) {
  542.         String type = readValue(proprieta, pName);
  543.         if(type!=null && !"".equals(type)) {
  544.             Charset t =  parseCharset(type);
  545.             if(t!=null) {
  546.                 return t;
  547.             }
  548.         }
  549.         type = readValue(proprieta, CONNETTORE_HEADER_VALUE_ENCODING_RFC2047_CHARSET);
  550.         if(type!=null && !"".equals(type)) {
  551.             Charset t =  parseCharset(type);
  552.             if(t!=null) {
  553.                 return t;
  554.             }
  555.         }
  556.         return defaultValue;
  557.     }
  558.     private static Charset parseCharset(String type) {
  559.         if(type!=null && !"".equals(type)) {
  560.             try {
  561.                 Charset t = Charset.toEnumConstant(type);
  562.                 if(t!=null) {
  563.                     return t;
  564.                 }
  565.                 else {
  566.                     throw new CoreException("Type '"+type+"' invalid");
  567.                 }
  568.             }catch(Exception e) {
  569.                 // ignore
  570.                 try {
  571.                     Charset t = Charset.valueOf(type);
  572.                     if(t!=null) {
  573.                         return t;
  574.                     }
  575.                 }catch(Exception eInternal) {
  576.                     // ignore
  577.                 }
  578.             }
  579.         }
  580.         return null;
  581.     }
  582.    
  583.     public static final String CONNETTORE_HEADER_VALIDATION_RICHIESTA_ENABLED = "connettori.header.validation.request.enabled";
  584.     public static final String CONNETTORE_HEADER_VALIDATION_RISPOSTA_ENABLED = "connettori.header.validation.response.enabled";
  585.     public static final String CONNETTORE_HEADER_VALIDATION_ENABLED = "connettori.header.validation.enabled";
  586.    
  587.     public static boolean isConnettoriHeaderValidationRequestEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  588.         String isEnabled = readValue(proprieta, CONNETTORE_HEADER_VALIDATION_RICHIESTA_ENABLED);
  589.         if(isEnabled!=null && !"".equals(isEnabled)) {
  590.             if(CONNETTORE_VALUE_ENABLED.equals(isEnabled.trim())) {
  591.                 return true;
  592.             }
  593.             else if(CONNETTORE_VALUE_DISABLED.equals(isEnabled.trim())) {
  594.                 return false;
  595.             }
  596.         }
  597.         return readBooleanValueWithDefault(proprieta, CONNETTORE_HEADER_VALIDATION_ENABLED, defaultValue, CONNETTORE_VALUE_ENABLED, CONNETTORE_VALUE_DISABLED);
  598.     }
  599.     public static boolean isConnettoriHeaderValidationResponseEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  600.         String isEnabled = readValue(proprieta, CONNETTORE_HEADER_VALIDATION_RISPOSTA_ENABLED);
  601.         if(isEnabled!=null && !"".equals(isEnabled)) {
  602.             if(CONNETTORE_VALUE_ENABLED.equals(isEnabled.trim())) {
  603.                 return true;
  604.             }
  605.             else if(CONNETTORE_VALUE_DISABLED.equals(isEnabled.trim())) {
  606.                 return false;
  607.             }
  608.         }
  609.         return readBooleanValueWithDefault(proprieta, CONNETTORE_HEADER_VALIDATION_ENABLED, defaultValue, CONNETTORE_VALUE_ENABLED, CONNETTORE_VALUE_DISABLED);
  610.     }
  611.    
  612.    
  613.     public static final String CONNETTORE_PEER_HEADER_PREFIX = "connettori.peer-header.";
  614.     public static final String CONNETTORE_PEER_HEADER_ENABLED = "connettori.peer-header.default.enabled";
  615.    
  616.     public static boolean isPeerHeaderDefaultEnabled(List<Proprieta> proprieta) {
  617.         String value = readValue(proprieta, CONNETTORE_PEER_HEADER_ENABLED);
  618.         return !(value != null && value.equals(Boolean.FALSE.toString()));
  619.     }
  620.    
  621.     public static List<PeerHeaderDescriptor> getPeerHeaderDescriptors(List<Proprieta> proprieta) {
  622.         List<PeerHeaderDescriptor> desc = new ArrayList<>();
  623.        
  624.         for (Proprieta prop : proprieta) {
  625.             String nome = prop.getNome();
  626.             if (nome.startsWith(CONNETTORE_PEER_HEADER_PREFIX)) {
  627.                 String valore = prop.getValore();
  628.                 final String endRegexp = ".regexp";
  629.                 if (nome.endsWith(endRegexp)) {
  630.                     nome = nome.substring(CONNETTORE_PEER_HEADER_PREFIX.length(), nome.length() - endRegexp.length());
  631.                     desc.add(new RegexpPeerHeaderDescriptor(nome, valore));
  632.                 } else {
  633.                     nome = nome.substring(CONNETTORE_PEER_HEADER_PREFIX.length());
  634.                     desc.add(new StringPeerHeaderDescriptor(nome, valore));
  635.                 }
  636.             }
  637.         }
  638.        
  639.         return desc;
  640.     }
  641.    
  642.     // ****  CONNETTORI PROXY PASS *****
  643.    
  644.     public static final String CONNETTORE_PROXY_PASS_VALUE_ENABLED = VALUE_ENABLED;
  645.     public static final String CONNETTORE_PROXY_PASS_VALUE_DISABLED = VALUE_DISABLED;
  646.        
  647.     private static final String CONNETTORE_PROXY_PASS_REVERSE_ENABLED = "connettori.proxyPassReverse.enabled";
  648.     private static final String CONNETTORE_PROXY_PASS_REVERSE_HEADERS = "connettori.proxyPassReverse.headers";
  649.    
  650.     private static final String CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_ENABLED = "connettori.proxyPassReverse.setCookie.enabled";
  651.     private static final String CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_PATH_ENABLED = "connettori.proxyPassReverse.setCookie.path.enabled";
  652.     private static final String CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_DOMAIN_ENABLED = "connettori.proxyPassReverse.setCookie.domain.enabled";
  653.     private static final String CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_HEADERS = "connettori.proxyPassReverse.setCookie.headers";
  654.    
  655.     private static final String CONNETTORE_PROXY_PASS_REVERSE_USE_PROTOCOL_PREFIX = "connettori.proxyPassReverse.useProtocolPrefix";
  656.    
  657.    
  658.     public static boolean isConnettoriProxyPassReverseEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  659.         return readBooleanValueWithDefault(proprieta, CONNETTORE_PROXY_PASS_REVERSE_ENABLED, defaultValue, CONNETTORE_PROXY_PASS_VALUE_ENABLED, CONNETTORE_PROXY_PASS_VALUE_DISABLED);
  660.     }
  661.     public static List<String> getConnettoriProxyPassReverseHeaders(List<Proprieta> proprieta, List<String> defaultValue) {
  662.         return engineGetConnettoriProxyPassReverseHeaders(CONNETTORE_PROXY_PASS_REVERSE_HEADERS, proprieta, defaultValue);
  663.     }
  664.    
  665.     public static boolean isConnettoriProxyPassReverseSetCookiePathEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  666.         String setCookieEnabled = readValue(proprieta, CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_PATH_ENABLED);
  667.         if(setCookieEnabled!=null && !"".equals(setCookieEnabled)) {
  668.             if(CONNETTORE_PROXY_PASS_VALUE_ENABLED.equals(setCookieEnabled.trim())) {
  669.                 return true;
  670.             }
  671.             else if(CONNETTORE_PROXY_PASS_VALUE_DISABLED.equals(setCookieEnabled.trim())) {
  672.                 return false;
  673.             }
  674.         }
  675.         return readBooleanValueWithDefault(proprieta, CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_ENABLED, defaultValue, CONNETTORE_PROXY_PASS_VALUE_ENABLED, CONNETTORE_PROXY_PASS_VALUE_DISABLED);
  676.     }
  677.     public static boolean isConnettoriProxyPassReverseSetCookieDomainEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  678.         String setCookieEnabled = readValue(proprieta, CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_DOMAIN_ENABLED);
  679.         if(setCookieEnabled!=null && !"".equals(setCookieEnabled)) {
  680.             if(CONNETTORE_PROXY_PASS_VALUE_ENABLED.equals(setCookieEnabled.trim())) {
  681.                 return true;
  682.             }
  683.             else if(CONNETTORE_PROXY_PASS_VALUE_DISABLED.equals(setCookieEnabled.trim())) {
  684.                 return false;
  685.             }
  686.         }
  687.         return readBooleanValueWithDefault(proprieta, CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_ENABLED, defaultValue, CONNETTORE_PROXY_PASS_VALUE_ENABLED, CONNETTORE_PROXY_PASS_VALUE_DISABLED);
  688.     }
  689.     public static List<String> getConnettoriProxyPassReverseSetCookieHeaders(List<Proprieta> proprieta, List<String> defaultValue) {
  690.         return engineGetConnettoriProxyPassReverseHeaders(CONNETTORE_PROXY_PASS_REVERSE_SETCOOKIE_HEADERS, proprieta, defaultValue);
  691.     }
  692.    
  693.     public static boolean isConnettoriProxyPassReverseUseProtocolPrefix(List<Proprieta> proprieta, boolean defaultValue) {
  694.         return readBooleanValueWithDefault(proprieta, CONNETTORE_PROXY_PASS_REVERSE_USE_PROTOCOL_PREFIX, defaultValue, CONNETTORE_PROXY_PASS_VALUE_ENABLED, CONNETTORE_PROXY_PASS_VALUE_DISABLED);
  695.     }
  696.    
  697.     private static List<String> engineGetConnettoriProxyPassReverseHeaders(String pName, List<Proprieta> proprieta, List<String> defaultValue) {
  698.         String v = readValue(proprieta, pName);
  699.         if(v==null || StringUtils.isEmpty(v)) {
  700.             return defaultValue;
  701.         }
  702.         List<String> l = new ArrayList<>();
  703.         if(v.contains(",")) {
  704.             String [] tmp = v.split(",");
  705.             for (int i = 0; i < tmp.length; i++) {
  706.                 l.add(tmp[i].trim());
  707.             }
  708.         }
  709.         else {
  710.             l.add(v);
  711.         }
  712.         return l;
  713.     }
  714.    
  715.    
  716.    
  717.    
  718.     // ****  CONNETTORI HTTPS *****
  719.    
  720.     public static final String CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_VALUE_ENABLED = VALUE_ENABLED;
  721.     public static final String CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_VALUE_DISABLED = VALUE_DISABLED;
  722.    
  723.     private static final String CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_ENABLED = "connettori.httpsEndpoint.jvmConfigOverride.enabled";
  724.     private static final String CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_REPOSITORY = "connettori.httpsEndpoint.jvmConfigOverride.repository";
  725.     private static final String CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_CONFIG = "connettori.httpsEndpoint.jvmConfigOverride.config";
  726.    
  727.     public static boolean isConnettoriHttpsEndpointJvmConfigOverrideEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  728.         return readBooleanValueWithDefault(proprieta, CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_ENABLED, defaultValue, CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_VALUE_ENABLED, CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_VALUE_DISABLED);
  729.     }
  730.    
  731.     public static String getConnettoriHttpsEndpointJvmConfigOverrideRepository(List<Proprieta> proprieta, String defaultValue) {
  732.         String v = readValue(proprieta, CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_REPOSITORY);
  733.         if(v==null || StringUtils.isEmpty(v)) {
  734.             return defaultValue;
  735.         }
  736.         return v;
  737.     }
  738.    
  739.     public static String getConnettoriHttpsEndpointJvmConfigOverrideConfig(List<Proprieta> proprieta, String defaultValue) {
  740.         String v = readValue(proprieta, CONNETTORE_HTTPS_ENDPOINT_JVM_CONFIG_OVERRIDE_CONFIG);
  741.         if(v==null || StringUtils.isEmpty(v)) {
  742.             return defaultValue;
  743.         }
  744.         return v;
  745.     }
  746.    
  747.    
  748.    
  749.    
  750.     // ****  REGISTRAZIONE MESSAGGI *****
  751.        
  752.     private static final String REGISTRAZIONE_MESSAGGI_WHITE_LIST = "registrazioneMessaggi.whiteList";
  753.     private static final String REGISTRAZIONE_MESSAGGI_BLACK_LIST = "registrazioneMessaggi.blackList";
  754.    
  755.     private static final String REGISTRAZIONE_MESSAGGI_RICHIESTA_INGRESSO_WHITE_LIST = "registrazioneMessaggi.richiestaIngresso.whiteList";
  756.     private static final String REGISTRAZIONE_MESSAGGI_RICHIESTA_INGRESSO_BLACK_LIST = "registrazioneMessaggi.richiestaIngresso.blackList";
  757.    
  758.     private static final String REGISTRAZIONE_MESSAGGI_RICHIESTA_USCITA_WHITE_LIST = "registrazioneMessaggi.richiestaUscita.whiteList";
  759.     private static final String REGISTRAZIONE_MESSAGGI_RICHIESTA_USCITA_BLACK_LIST = "registrazioneMessaggi.richiestaUscita.blackList";
  760.    
  761.     private static final String REGISTRAZIONE_MESSAGGI_RISPOSTA_INGRESSO_WHITE_LIST = "registrazioneMessaggi.rispostaIngresso.whiteList";
  762.     private static final String REGISTRAZIONE_MESSAGGI_RISPOSTA_INGRESSO_BLACK_LIST = "registrazioneMessaggi.rispostaIngresso.blackList";
  763.    
  764.     private static final String REGISTRAZIONE_MESSAGGI_RISPOSTA_USCITA_WHITE_LIST = "registrazioneMessaggi.rispostaUscita.whiteList";
  765.     private static final String REGISTRAZIONE_MESSAGGI_RISPOSTA_USCITA_BLACK_LIST = "registrazioneMessaggi.rispostaUscita.blackList";
  766.    
  767.     public static List<String> getRegistrazioneMessaggiWhiteList(List<Proprieta> proprieta) {
  768.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_WHITE_LIST);
  769.     }
  770.     public static List<String> getRegistrazioneMessaggiBlackList(List<Proprieta> proprieta) {
  771.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_BLACK_LIST);
  772.     }
  773.    
  774.     public static List<String> getRegistrazioneMessaggiRichiestaIngressoWhiteList(List<Proprieta> proprieta) {
  775.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RICHIESTA_INGRESSO_WHITE_LIST);
  776.     }
  777.     public static List<String> getRegistrazioneMessaggiRichiestaIngressoBlackList(List<Proprieta> proprieta) {
  778.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RICHIESTA_INGRESSO_BLACK_LIST);
  779.     }
  780.    
  781.     public static List<String> getRegistrazioneMessaggiRichiestaUscitaWhiteList(List<Proprieta> proprieta) {
  782.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RICHIESTA_USCITA_WHITE_LIST);
  783.     }
  784.     public static List<String> getRegistrazioneMessaggiRichiestaUscitaBlackList(List<Proprieta> proprieta) {
  785.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RICHIESTA_USCITA_BLACK_LIST);
  786.     }
  787.    
  788.     public static List<String> getRegistrazioneMessaggiRispostaIngressoWhiteList(List<Proprieta> proprieta) {
  789.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RISPOSTA_INGRESSO_WHITE_LIST);
  790.     }
  791.     public static List<String> getRegistrazioneMessaggiRispostaIngressoBlackList(List<Proprieta> proprieta) {
  792.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RISPOSTA_INGRESSO_BLACK_LIST);
  793.     }
  794.    
  795.     public static List<String> getRegistrazioneMessaggiRispostaUscitaWhiteList(List<Proprieta> proprieta) {
  796.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RISPOSTA_USCITA_WHITE_LIST);
  797.     }
  798.     public static List<String> getRegistrazioneMessaggiRispostaUscitaBlackList(List<Proprieta> proprieta) {
  799.         return getRegistrazioneMessaggiLista(proprieta, REGISTRAZIONE_MESSAGGI_RISPOSTA_USCITA_BLACK_LIST);
  800.     }
  801.    
  802.     private static List<String> getRegistrazioneMessaggiLista(List<Proprieta> proprieta, String propertyName) {
  803.        
  804.         List<String> l = new ArrayList<>();
  805.        
  806.         String v = readValue(proprieta, propertyName);
  807.         if(v==null || StringUtils.isEmpty(v)) {
  808.             return l;
  809.         }
  810.        
  811.         initList(l, v);
  812.         return l;
  813.     }
  814.    

  815.    
  816.    
  817.    
  818.    
  819.     // ****  FILE TRACE *****
  820.        
  821.     private static final String FILE_TRACE_VALUE_ENABLED = VALUE_ENABLED;
  822.     private static final String FILE_TRACE_VALUE_DISABLED = VALUE_DISABLED;
  823.    
  824.     private static final String FILE_TRACE_ENABLED = "fileTrace.enabled";
  825.    
  826.     private static final String FILE_TRACE_DUMP_BINARIO_ENABLED = "fileTrace.dumpBinario.enabled";
  827.     private static final String FILE_TRACE_DUMP_BINARIO_PAYLOAD_ENABLED = "fileTrace.dumpBinario.payload.enabled";
  828.     private static final String FILE_TRACE_DUMP_BINARIO_HEADERS_ENABLED = "fileTrace.dumpBinario.headers.enabled";
  829.    
  830.     private static final String FILE_TRACE_DUMP_BINARIO_CONNETTORE_ENABLED = "fileTrace.dumpBinario.connettore.enabled";
  831.     private static final String FILE_TRACE_DUMP_BINARIO_CONNETTORE_PAYLOAD_ENABLED = "fileTrace.dumpBinario.connettore.payload.enabled";
  832.     private static final String FILE_TRACE_DUMP_BINARIO_CONNETTORE_HEADERS_ENABLED = "fileTrace.dumpBinario.connettore.headers.enabled";

  833.    
  834.     private static final String FILE_TRACE_CONFIG = "fileTrace.config";
  835.    
  836.     public static boolean isFileTraceEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  837.         return readBooleanValueWithDefault(proprieta, FILE_TRACE_ENABLED, defaultValue, FILE_TRACE_VALUE_ENABLED, FILE_TRACE_VALUE_DISABLED);
  838.     }
  839.    
  840.     public static boolean isFileTraceDumpBinarioPayloadEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  841.         String fileTraceEnabled = readValue(proprieta, FILE_TRACE_DUMP_BINARIO_PAYLOAD_ENABLED);
  842.         if(fileTraceEnabled!=null && !"".equals(fileTraceEnabled)) {
  843.             if(FILE_TRACE_VALUE_ENABLED.equals(fileTraceEnabled.trim())) {
  844.                 return true;
  845.             }
  846.             else if(FILE_TRACE_VALUE_DISABLED.equals(fileTraceEnabled.trim())) {
  847.                 return false;
  848.             }
  849.         }
  850.         return readBooleanValueWithDefault(proprieta, FILE_TRACE_DUMP_BINARIO_ENABLED, defaultValue, FILE_TRACE_VALUE_ENABLED, FILE_TRACE_VALUE_DISABLED);
  851.     }
  852.     public static boolean isFileTraceDumpBinarioHeadersEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  853.         String fileTraceEnabled = readValue(proprieta, FILE_TRACE_DUMP_BINARIO_HEADERS_ENABLED);
  854.         if(fileTraceEnabled!=null && !"".equals(fileTraceEnabled)) {
  855.             if(FILE_TRACE_VALUE_ENABLED.equals(fileTraceEnabled.trim())) {
  856.                 return true;
  857.             }
  858.             else if(FILE_TRACE_VALUE_DISABLED.equals(fileTraceEnabled.trim())) {
  859.                 return false;
  860.             }
  861.         }
  862.         return readBooleanValueWithDefault(proprieta, FILE_TRACE_DUMP_BINARIO_ENABLED, defaultValue, FILE_TRACE_VALUE_ENABLED, FILE_TRACE_VALUE_DISABLED);
  863.     }
  864.    
  865.     public static boolean isFileTraceDumpBinarioConnettorePayloadEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  866.         String fileTraceEnabled = readValue(proprieta, FILE_TRACE_DUMP_BINARIO_CONNETTORE_PAYLOAD_ENABLED);
  867.         if(fileTraceEnabled!=null && !"".equals(fileTraceEnabled)) {
  868.             if(FILE_TRACE_VALUE_ENABLED.equals(fileTraceEnabled.trim())) {
  869.                 return true;
  870.             }
  871.             else if(FILE_TRACE_VALUE_DISABLED.equals(fileTraceEnabled.trim())) {
  872.                 return false;
  873.             }
  874.         }
  875.         return readBooleanValueWithDefault(proprieta, FILE_TRACE_DUMP_BINARIO_CONNETTORE_ENABLED, defaultValue, FILE_TRACE_VALUE_ENABLED, FILE_TRACE_VALUE_DISABLED);
  876.     }
  877.     public static boolean isFileTraceDumpBinarioConnettoreHeadersEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  878.         String fileTraceEnabled = readValue(proprieta, FILE_TRACE_DUMP_BINARIO_CONNETTORE_HEADERS_ENABLED);
  879.         if(fileTraceEnabled!=null && !"".equals(fileTraceEnabled)) {
  880.             if(FILE_TRACE_VALUE_ENABLED.equals(fileTraceEnabled.trim())) {
  881.                 return true;
  882.             }
  883.             else if(FILE_TRACE_VALUE_DISABLED.equals(fileTraceEnabled.trim())) {
  884.                 return false;
  885.             }
  886.         }
  887.         return readBooleanValueWithDefault(proprieta, FILE_TRACE_DUMP_BINARIO_CONNETTORE_ENABLED, defaultValue, FILE_TRACE_VALUE_ENABLED, FILE_TRACE_VALUE_DISABLED);
  888.     }
  889.    
  890.    
  891.     public static File getFileTraceConfig(List<Proprieta> proprieta, File defaultValue) throws CoreException {
  892.         String v = readValue(proprieta, FILE_TRACE_CONFIG);
  893.         if(v==null || StringUtils.isEmpty(v)) {
  894.             return defaultValue;
  895.         }
  896.        
  897.         File getTransazioniFileTraceConfig = new File(v);
  898.         if(!getTransazioniFileTraceConfig.exists()) {
  899.             String rootDir = OpenSPCoop2Properties.getInstance().getRootDirectory();
  900.             if(rootDir!=null && !"".equals(rootDir)) {
  901.                 getTransazioniFileTraceConfig = new File(rootDir, v);
  902.             }
  903.         }
  904.        
  905.         checkFile(getTransazioniFileTraceConfig);
  906.                
  907.         return getTransazioniFileTraceConfig;
  908.     }
  909.    
  910.    
  911.     // ****  FILTRO DUPLICATI *****
  912.    
  913.     public static final String FILTRO_DUPLICATI_TEST_ENABLED = VALUE_ENABLED;
  914.     public static final String FILTRO_DUPLICATI_TEST_DISABLED = VALUE_DISABLED;
  915.    
  916.     private static final String FILTRO_DUPLICATI_TEST = "duplicates-filter-test.enabled";
  917.    
  918.     public static boolean isFiltroDuplicatiTestEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  919.         return readBooleanValueWithDefault(proprieta, FILTRO_DUPLICATI_TEST, defaultValue, FILTRO_DUPLICATI_TEST_ENABLED, FILTRO_DUPLICATI_TEST_DISABLED);
  920.     }
  921.    
  922.    
  923.    
  924.    
  925.     // ****  INFORMAZIONI INTEGRAZIONE *****
  926.    
  927.     public static final String INFORMAZIONI_INTEGRAZIONE_VALUE_ENABLED = VALUE_ENABLED;
  928.     public static final String INFORMAZIONI_INTEGRAZIONE_VALUE_DISABLED = VALUE_DISABLED;
  929.        
  930.     private static final String INFORMAZIONI_INTEGRAZIONE_ENABLED = "integrationInfo.enabled";
  931.     private static final String INFORMAZIONI_INTEGRAZIONE_TYPE = "integrationInfo.type";
  932.     private static final String INFORMAZIONI_INTEGRAZIONE_NAME = "integrationInfo.name";
  933.     private static final String INFORMAZIONI_INTEGRAZIONE_ENCODE = "integrationInfo.encode";
  934.     private static final String INFORMAZIONI_INTEGRAZIONE_REQUIRED = "integrationInfo.required";
  935.        
  936.     public static boolean isInformazioniIntegrazioneEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  937.         return readBooleanValueWithDefault(proprieta, INFORMAZIONI_INTEGRAZIONE_ENABLED, defaultValue, INFORMAZIONI_INTEGRAZIONE_VALUE_ENABLED, INFORMAZIONI_INTEGRAZIONE_VALUE_DISABLED);
  938.     }
  939.     public static InformazioniIntegrazioneSorgente getTipoInformazioniIntegrazione(List<Proprieta> proprieta, InformazioniIntegrazioneSorgente defaultValue) throws CoreException {
  940.         String valueS = readValue(proprieta, INFORMAZIONI_INTEGRAZIONE_TYPE);
  941.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  942.             try {
  943.                 return InformazioniIntegrazioneSorgente.valueOf(valueS);
  944.             }catch(Exception t) {
  945.                 throw newTipoInformazioniIntegrazioneException(valueS);
  946.             }
  947.         }
  948.         return defaultValue;
  949.     }
  950.     private static CoreException newTipoInformazioniIntegrazioneException(String valueS) {
  951.         InformazioniIntegrazioneSorgente [] s = InformazioniIntegrazioneSorgente.values();
  952.         StringBuilder sb = new StringBuilder();
  953.         if(s!=null) {
  954.             for (InformazioniIntegrazioneSorgente informazioniIntegrazioneSorgente : s) {
  955.                 if(sb.length()>0) {
  956.                     sb.append(", ");
  957.                 }
  958.                 sb.append(informazioniIntegrazioneSorgente);
  959.             }
  960.         }
  961.         return newCoreException(valueS, INFORMAZIONI_INTEGRAZIONE_TYPE, sb.toString());
  962.     }
  963.     public static String getNomeSorgenteInformazioniIntegrazione(List<Proprieta> proprieta, String defaultValue) {
  964.         String valueS = readValue(proprieta, INFORMAZIONI_INTEGRAZIONE_NAME);
  965.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  966.             return valueS;
  967.         }
  968.         return defaultValue;
  969.     }
  970.     public static InformazioniIntegrazioneCodifica getTipoCodificaInformazioniIntegrazione(List<Proprieta> proprieta, InformazioniIntegrazioneCodifica defaultValue) throws CoreException {
  971.         String valueS = readValue(proprieta, INFORMAZIONI_INTEGRAZIONE_ENCODE);
  972.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  973.             try {
  974.                 return InformazioniIntegrazioneCodifica.valueOf(valueS);
  975.             }catch(Exception t) {
  976.                 throw newTipoCodificaInformazioniIntegrazioneException(valueS);
  977.             }
  978.         }
  979.         return defaultValue;
  980.     }
  981.     private static CoreException newTipoCodificaInformazioniIntegrazioneException(String valueS) {
  982.         InformazioniIntegrazioneCodifica [] s = InformazioniIntegrazioneCodifica.values();
  983.         StringBuilder sb = new StringBuilder();
  984.         if(s!=null) {
  985.             for (InformazioniIntegrazioneCodifica informazioniIntegrazioneCodifica : s) {
  986.                 if(sb.length()>0) {
  987.                     sb.append(", ");
  988.                 }
  989.                 sb.append(informazioniIntegrazioneCodifica);
  990.             }
  991.         }
  992.         return newCoreException(valueS, INFORMAZIONI_INTEGRAZIONE_ENCODE, sb.toString());
  993.     }
  994.     public static boolean isInformazioniIntegrazioneRequired(List<Proprieta> proprieta, boolean defaultValue) {
  995.         return readBooleanValueWithDefault(proprieta, INFORMAZIONI_INTEGRAZIONE_REQUIRED, defaultValue, INFORMAZIONI_INTEGRAZIONE_VALUE_ENABLED, INFORMAZIONI_INTEGRAZIONE_VALUE_DISABLED);
  996.     }
  997.    
  998.     // ****  INFORMAZIONI INTEGRAZIONE RISPOSTA *****
  999.    
  1000.     public static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_ENABLED = VALUE_ENABLED;
  1001.     public static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_DISABLED = VALUE_DISABLED;
  1002.    
  1003.     private static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_ENABLED = "responseIntegrationInfo.enabled";
  1004.     private static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_NAME = "responseIntegrationInfo.name";
  1005.     private static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_ENCODE = "responseIntegrationInfo.encode";
  1006.     private static final String INFORMAZIONI_INTEGRAZIONE_RISPOSTA_REQUIRED = "responseIntegrationInfo.required";
  1007.        
  1008.     public static boolean isInformazioniIntegrazioneRispostaEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  1009.         return readBooleanValueWithDefault(proprieta, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_ENABLED, defaultValue, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_ENABLED, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_DISABLED);
  1010.     }
  1011.     public static String getNomeSorgenteInformazioniIntegrazioneRisposta(List<Proprieta> proprieta, String defaultValue) {
  1012.         String valueS = readValue(proprieta, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_NAME);
  1013.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1014.             return valueS;
  1015.         }
  1016.         return defaultValue;
  1017.     }
  1018.     public static InformazioniIntegrazioneCodifica getTipoCodificaInformazioniIntegrazioneRisposta(List<Proprieta> proprieta, InformazioniIntegrazioneCodifica defaultValue) throws CoreException {
  1019.         String valueS = readValue(proprieta, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_ENCODE);
  1020.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1021.             try {
  1022.                 return InformazioniIntegrazioneCodifica.valueOf(valueS);
  1023.             }catch(Exception t) {
  1024.                 throw newTipoCodificaInformazioniIntegrazioneRispostaException(valueS);
  1025.             }
  1026.         }
  1027.         return defaultValue;
  1028.     }
  1029.     private static CoreException newTipoCodificaInformazioniIntegrazioneRispostaException(String valueS) {
  1030.         InformazioniIntegrazioneCodifica [] s = InformazioniIntegrazioneCodifica.values();
  1031.         StringBuilder sb = new StringBuilder();
  1032.         if(s!=null) {
  1033.             for (InformazioniIntegrazioneCodifica informazioniIntegrazioneCodifica : s) {
  1034.                 if(sb.length()>0) {
  1035.                     sb.append(", ");
  1036.                 }
  1037.                 sb.append(informazioniIntegrazioneCodifica);
  1038.             }
  1039.         }
  1040.         return newCoreException(valueS, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_ENCODE, sb.toString());
  1041.     }
  1042.     public static boolean isInformazioniIntegrazioneRispostaRequired(List<Proprieta> proprieta, boolean defaultValue) {
  1043.         return readBooleanValueWithDefault(proprieta, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_REQUIRED, defaultValue, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_ENABLED, INFORMAZIONI_INTEGRAZIONE_RISPOSTA_VALUE_DISABLED);
  1044.     }
  1045.    
  1046.    
  1047.    
  1048.     // ****  SECURITY HEADERS *****
  1049.    
  1050.     public static final String SECURITY_HEADERS_VALUE_ENABLED = VALUE_ENABLED;
  1051.     public static final String SECURITY_HEADERS_VALUE_DISABLED = VALUE_DISABLED;
  1052.        
  1053.     private static final String SECURITY_HEADERS_ENABLED = "securityHeaders.enabled";
  1054.     private static final String SECURITY_HEADERS_DEFAULT_ENABLED = "securityHeaders.default";
  1055.     private static final String SECURITY_HEADERS_LIST = "securityHeaders"; // separati con la virgola
  1056.     private static final String SECURITY_HEADERS_PREFIX = "securityHeaders.";

  1057.     public static boolean isSecurityHeadersEnabled(List<Proprieta> proprieta, boolean defaultValue) {
  1058.         return readBooleanValueWithDefault(proprieta, SECURITY_HEADERS_ENABLED, defaultValue, SECURITY_HEADERS_VALUE_ENABLED, SECURITY_HEADERS_VALUE_DISABLED);
  1059.     }
  1060.     public static Map<String, String> getSecurityHeaders(List<Proprieta> proprieta, Properties defaultConfig) {
  1061.        
  1062.         Map<String, String> p = new HashMap<>();
  1063.        
  1064.         boolean useDefault = readBooleanValueWithDefault(proprieta, SECURITY_HEADERS_DEFAULT_ENABLED, true, SECURITY_HEADERS_VALUE_ENABLED, SECURITY_HEADERS_VALUE_DISABLED);
  1065.         if(useDefault) {
  1066.             for (Object oKey : defaultConfig.keySet()) {
  1067.                 if(oKey instanceof String) {
  1068.                     String key = (String) oKey;
  1069.                     String value = defaultConfig.getProperty(key);
  1070.                     if(StringUtils.isNotEmpty(key) &&
  1071.                         value!=null && StringUtils.isNotEmpty(value)) {
  1072.                         p.put(key, value);
  1073.                     }
  1074.                 }
  1075.             }
  1076.         }
  1077.    
  1078.         fillSecurityHeaders(p, proprieta);
  1079.        
  1080.         return p;
  1081.     }
  1082.     private static void fillSecurityHeaders(Map<String, String> p, List<Proprieta> proprieta) {
  1083.         String pLista = readValue(proprieta, SECURITY_HEADERS_LIST);
  1084.         if(pLista!=null && StringUtils.isNotEmpty(pLista)) {
  1085.             String [] tmp = pLista.split(",");
  1086.             if(tmp!=null && tmp.length>0) {
  1087.                 for (String key : tmp) {
  1088.                     addSecurityHeader(p, key, proprieta);
  1089.                 }
  1090.             }
  1091.         }
  1092.     }
  1093.     private static void addSecurityHeader(Map<String, String> p, String key, List<Proprieta> proprieta) {
  1094.         if(key!=null) {
  1095.             key = key.trim();
  1096.             if(StringUtils.isNotEmpty(key)) {
  1097.                 String pName = (SECURITY_HEADERS_PREFIX+key);
  1098.                 String value = readValue(proprieta, pName);
  1099.                 if(value!=null) {
  1100.                     value = value.trim();
  1101.                     p.put(key, value); // se gia' esiste viene sovrascritto
  1102.                 }
  1103.             }
  1104.         }
  1105.     }
  1106.    
  1107.    
  1108.    
  1109.     // ****  RATE LIMITING *****
  1110.    
  1111.     public static final String RATE_LIMITING_VALUE_ENABLED = VALUE_ENABLED;
  1112.     public static final String RATE_LIMITING_VALUE_DISABLED = VALUE_DISABLED;
  1113.    
  1114.     private static final String RATE_LIMITING_USE_HTTP_CONTENT_LENGTH = "rateLimiting.useHttpContentLength";
  1115.     private static final String RATE_LIMITING_USE_HTTP_CONTENT_LENGTH_ACCEPT_ZERO_VALUE = "rateLimiting.useHttpContentLength.acceptZeroValue";
  1116.        
  1117.     public static boolean isRateLimitingUseHttpContentLength(List<Proprieta> proprieta, boolean defaultValue) {
  1118.         return readBooleanValueWithDefault(proprieta, RATE_LIMITING_USE_HTTP_CONTENT_LENGTH, defaultValue, RATE_LIMITING_VALUE_ENABLED, RATE_LIMITING_VALUE_DISABLED);
  1119.     }
  1120.     public static boolean isRateLimitingUseHttpContentLengthAcceptZeroValue(List<Proprieta> proprieta, boolean defaultValue) {
  1121.         return readBooleanValueWithDefault(proprieta, RATE_LIMITING_USE_HTTP_CONTENT_LENGTH_ACCEPT_ZERO_VALUE, defaultValue, RATE_LIMITING_VALUE_ENABLED, RATE_LIMITING_VALUE_DISABLED);
  1122.     }
  1123.    
  1124.    
  1125.    
  1126.    
  1127.     // ****  MODI *****
  1128.    
  1129.     public static final String MODI_VALUE_ENABLED = VALUE_ENABLED;
  1130.     public static final String MODI_VALUE_DISABLED = VALUE_DISABLED;
  1131.    
  1132.     private static final String MODI_AUDIT_CLAIM_PREFIX = "modi.audit.";
  1133.     private static final String MODI_AUDIT_SUFFIX_TRACE_ENABLED = ".trace.enabled";
  1134.     private static final String MODI_AUDIT_SUFFIX_FORWARD_BACKEND_ENABLED = ".forwardBackend.enabled";
  1135.     private static final String MODI_AUDIT_SUFFIX_FORWARD_BACKEND = ".forwardBackend";
  1136.    
  1137.     public static boolean isModIAuditTraceEnabled(List<Proprieta> proprieta, String claim, boolean defaultValue) {
  1138.         String p = MODI_AUDIT_CLAIM_PREFIX+claim+MODI_AUDIT_SUFFIX_TRACE_ENABLED;
  1139.         return readBooleanValueWithDefault(proprieta, p, defaultValue, MODI_VALUE_ENABLED, MODI_VALUE_DISABLED);
  1140.     }
  1141.     public static boolean isModIAuditForwardBackendEnabled(List<Proprieta> proprieta, String claim, boolean defaultValue) {
  1142.         String p = MODI_AUDIT_CLAIM_PREFIX+claim+MODI_AUDIT_SUFFIX_FORWARD_BACKEND_ENABLED;
  1143.         return readBooleanValueWithDefault(proprieta, p, defaultValue, MODI_VALUE_ENABLED, MODI_VALUE_DISABLED);
  1144.     }
  1145.     public static String getModIAuditForwardBackend(List<Proprieta> proprieta, String claim, String defaultValue) {
  1146.         String p = MODI_AUDIT_CLAIM_PREFIX+claim+MODI_AUDIT_SUFFIX_FORWARD_BACKEND;
  1147.         String valueS = readValue(proprieta, p);
  1148.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1149.             return valueS;
  1150.         }
  1151.         return defaultValue;
  1152.     }
  1153.    
  1154.     private static final String MODI_TRACE_JTI_SOURCE = "modi.trace.jti.source";
  1155.     public static final String MODI_TRACE_JTI_SOURCE_VALUE_AUTHORIZATION = "authorization";
  1156.     public static final String MODI_TRACE_JTI_SOURCE_VALUE_INTEGRITY = "integrity";
  1157.    
  1158.     public static boolean isModITraceJtiSourceAuthorization(List<Proprieta> proprieta, boolean defaultValue) {
  1159.         String p = MODI_TRACE_JTI_SOURCE;
  1160.         String valueS = readValue(proprieta, p);
  1161.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1162.             return valueS.equalsIgnoreCase(MODI_TRACE_JTI_SOURCE_VALUE_AUTHORIZATION);
  1163.         }
  1164.         return defaultValue;
  1165.     }
  1166.     public static boolean isModITraceJtiSourceIntegrity(List<Proprieta> proprieta, boolean defaultValue) {
  1167.         String p = MODI_TRACE_JTI_SOURCE;
  1168.         String valueS = readValue(proprieta, p);
  1169.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1170.             return valueS.equalsIgnoreCase(MODI_TRACE_JTI_SOURCE_VALUE_INTEGRITY);
  1171.         }
  1172.         return defaultValue;
  1173.     }
  1174.    
  1175.    
  1176.     // ****  PDND *****
  1177.    
  1178.    
  1179.     private static final String PDND_ABORT_TRANSACTION_ORGANIZATION_READ_ERROR = "pdnd.readByApiInterop.organization.failed.abortTransaction";
  1180.     private static final String PDND_ABORT_TRANSACTION_CLIENT_READ_ERROR = "pdnd.readByApiInterop.client.failed.abortTransaction";

  1181.     private static final String PDND_ABORT_TRANSACTION_ORGANIZATION_NOT_AVAILABLE_RATE_LIMITING = "pdnd.rateLimitingByOrganization.infoNotAvailable.abortTransaction";
  1182.    
  1183.     public static final String PDND_SIGNAL_HUB_NAMESPACE = "pdnd.signalHub.namespace";


  1184.     public static final String PDND_VALUE_ENABLED = VALUE_ENABLED;
  1185.     public static final String PDND_VALUE_DISABLED = VALUE_DISABLED;
  1186.    
  1187.     public static boolean isPdndReadByApiInteropOrganizationFailedAbortTransaction(List<Proprieta> proprieta, boolean defaultValue) {
  1188.         String p = PDND_ABORT_TRANSACTION_ORGANIZATION_READ_ERROR;
  1189.         String valueS = readValue(proprieta, p);
  1190.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1191.             return valueS.equalsIgnoreCase(PDND_VALUE_ENABLED);
  1192.         }
  1193.         return defaultValue;
  1194.     }
  1195.     public static boolean isPdndReadByApiInteropClientFailedAbortTransaction(List<Proprieta> proprieta, boolean defaultValue) {
  1196.         String p = PDND_ABORT_TRANSACTION_CLIENT_READ_ERROR;
  1197.         String valueS = readValue(proprieta, p);
  1198.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1199.             return valueS.equalsIgnoreCase(PDND_VALUE_ENABLED);
  1200.         }
  1201.         return defaultValue;
  1202.     }
  1203.    
  1204.     public static boolean isPdndRateLimitingByOrganizationInfoNotAvailableAbortTransaction(List<Proprieta> proprieta, boolean defaultValue) {
  1205.         String p = PDND_ABORT_TRANSACTION_ORGANIZATION_NOT_AVAILABLE_RATE_LIMITING;
  1206.         String valueS = readValue(proprieta, p);
  1207.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1208.             return valueS.equalsIgnoreCase(PDND_VALUE_ENABLED);
  1209.         }
  1210.         return defaultValue;
  1211.     }
  1212.    
  1213.     public static String getPdndSignalHubNamespace(List<Proprieta> props, String defaultValue) {
  1214.         String p = PDND_SIGNAL_HUB_NAMESPACE;
  1215.         String valueS = readValue(props, p);
  1216.         return Objects.requireNonNullElse(valueS, defaultValue);
  1217.     }
  1218.    
  1219.    
  1220.     // METODI DI UTILITA GENERICI
  1221.    
  1222.     private static CoreException newCoreException(String valueS, String property, String supportedValues) {
  1223.         return new CoreException("Uncorrect value '"+valueS+"' for property '"+property+"' (Supported values: "+supportedValues+")");
  1224.     }
  1225.    
  1226.     private static String readValue(List<Proprieta> proprieta, String nome) {
  1227.         if(proprieta==null || proprieta.isEmpty()) {
  1228.             return null;
  1229.         }
  1230.         for (Proprieta proprietaCheck : proprieta) {
  1231.             if(nome.equalsIgnoreCase(proprietaCheck.getNome())) {
  1232.                 return proprietaCheck.getValore()!=null ? proprietaCheck.getValore().trim() : null;
  1233.             }
  1234.         }
  1235.         return null;
  1236.     }
  1237.     private static boolean readBooleanValueWithDefault(List<Proprieta> proprieta, String nome, boolean defaultValue, String trueValue, String falseValue) {
  1238.         String valueS = readValue(proprieta, nome);
  1239.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1240.             if(trueValue.equals(valueS.trim())) {
  1241.                 return true;
  1242.             }
  1243.             else if(falseValue.equals(valueS.trim())) {
  1244.                 return false;
  1245.             }
  1246.         }
  1247.         return defaultValue;
  1248.     }
  1249.     private static int readIntValueWithDefault(List<Proprieta> proprieta, String nome, int defaultValue) {
  1250.         String valueS = readValue(proprieta, nome);
  1251.         if(valueS!=null && !StringUtils.isEmpty(valueS)) {
  1252.             try {
  1253.                 return Integer.valueOf(valueS);
  1254.             }catch(Exception e) {
  1255.                 // ignore
  1256.             }
  1257.         }
  1258.         return defaultValue;
  1259.     }
  1260.    
  1261.     private static void initList(List<String> list, String tmp) {
  1262.         if(tmp!=null && !"".equals(tmp.trim())) {
  1263.             tmp = tmp.trim();
  1264.             if(tmp.contains(",")) {
  1265.                 String [] split = tmp.split(",");
  1266.                 initList(list, split);
  1267.             }
  1268.             else {
  1269.                 list.add(tmp);
  1270.             }
  1271.         }
  1272.     }
  1273.     private static void initList(List<String> list, String [] split) {
  1274.         if(split!=null && split.length>0) {
  1275.             for (String s : split) {
  1276.                 if(s!=null) {
  1277.                     s = s.trim();
  1278.                     if(!"".equals(s)) {
  1279.                         list.add(s);
  1280.                     }
  1281.                 }
  1282.             }
  1283.         }
  1284.     }
  1285.    
  1286.     public static void checkFile(File file) throws CoreException {
  1287.         checkFileEngine(file, false);
  1288.     }
  1289.     public static void checkDir(File file) throws CoreException {
  1290.         checkFileEngine(file, true);
  1291.     }
  1292.     private static void checkFileEngine(File file, boolean expectedDir) throws CoreException {
  1293.         String prefix = "Config file ["+file.getAbsolutePath()+"] ";
  1294.         if(!file.exists()) {
  1295.             throw new CoreException(prefix+"not exists");
  1296.         }
  1297.         if(expectedDir) {
  1298.             if(!file.isDirectory()) {
  1299.                 throw new CoreException(prefix+"isn't directory");
  1300.             }
  1301.         }
  1302.         else {
  1303.             if(file.isDirectory()) {
  1304.                 throw new CoreException(prefix+"is directory");
  1305.             }
  1306.         }
  1307.         if(!file.canRead()) {
  1308.             throw new CoreException(prefix+"cannot read");
  1309.         }
  1310.     }
  1311. }