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.Properties;

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

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

  47. public class CostantiProprieta {

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

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

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

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

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

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