ModalitaIdentificazione.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */

  20. package org.openspcoop2.protocol.engine.constants;


  21. /**
  22.  * Enumerazione sulle modalita' di identificazione dei servizi
  23.  *
  24.  * @author Poli Andrea (apoli@link.it)
  25.  * @author $Author$
  26.  * @version $Rev$, $Date$
  27.  */
  28. public enum ModalitaIdentificazione {
  29.    
  30.     /*
  31.     # Modalita' possibili per i dati su mittente, destinatario, servizio e azione:
  32.     # - static: il valore viene indicato nell'omonima proprieta' con suffisso '.value'
  33.     # - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
  34.     # - urlBased: il valore viene recuperato tramite l'espressione regolare indicata  nell'omonima proprieta' con suffisso '.pattern'
  35.     # - contentBased: il valore viene recuperato tramite l'espressione xpath indicata  nell'omonima proprieta' con suffisso '.pattern'
  36.     # - inputBased: il valore viene recuperato tramite gli header di integrazione di default per il protocollo
  37.     # - headerBased: il valore viene recuperato dall'header indicato nell'omonima proprieta' con suffisso '.name'
  38.     # - identityBased: (opzione valida solo per il mittente)
  39.     #                   il valore viene recuperato dalle credenziali ottenute in uno dei seguenti metodi alternativi (il primo che matcha viene utilizzato):
  40.     #                   - getUserPrincipal (servlet API)
  41.     #                   - subject certificato client
  42.     #                   - username fornito tramite un header http basic
  43.     #                   E' possibile fornire una espressione regolare in cui indicare come recuperare il nome a partire dalla credenziale recuperata
  44.     #                   L'espressione regolare deve essere indicata nell'omonima proprieta' con suffisso '.pattern'
  45.     #                   Se l'espressione regolare non ritorna un valore, viene utilizzato interamente la credenziale recuperata
  46.     #
  47.     # NOTA-Mittente: le proprieta' relative al tipo-mittente ed al mittente possono contenere anche una ulteriore proprieta' con suffisso '.anonymous'
  48.     #                Il valore indicato viene utilizzato come nome associato al soggetto che non e' stato identificato.
  49.     #                In questa maniera e' possibile far rappresentare ad un soggetto unico gli accessi anonimi.
  50.     #                Basta associare questo soggetto come fruitore di un servizio per rendere il servizio accessibile in forma anonima.
  51.     #
  52.     # NOTA: La modalita' 'principalBased' dell'identificazione presente sulla porta delegata e della porta applicativa
  53.     #       e' differente dalla modalita' 'identityTransportBased' indicata sopra.
  54.     #       La modalita' utilizzata sulla PD e PA si basa solo sul metodo getUserPrincipal, e inoltre non usa il principal recuperato
  55.     #       direttamente come nome del soggetto, ma invece lo utilizza come chiave di ricerca per identificare un un soggetto registrato in base dati che lo possiede.
  56.     #
  57.     # Per quanto riguarda invece l'identificaizone delle informazioni di protocollo (Profilo di Collaborazione,FiltroDuplicati) le modalita' possibili sono:
  58.     # - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
  59.     # - static: l'identificazione viene letta dai valori presenti sul registro associati al servizio e operazione identificata
  60.     #
  61.     # Per quanto riguarda infine l'identificaizone dell'identificativo unico le modalita' possibili sono:
  62.     # - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
  63.     # - static: un identificatore viene generato ex-nove utilizzando la factory fornita con il protocollo
  64.     */
  65.    
  66.     STATIC("static"),
  67.     PLUGIN_BASED("pluginBased"),
  68.     URL_BASED("urlBased"),
  69.     CONTENT_BASED("contentBased"),
  70.     INPUT_BASED("inputBased"),
  71.     HEADER_BASED("+headerBased+"),
  72.     IDENTITY_BASED("identityBased");
  73.    
  74.    
  75.    
  76.     private final String valore;

  77.     ModalitaIdentificazione(String valore)
  78.     {
  79.         this.valore = valore;
  80.     }

  81.     public String getValore()
  82.     {
  83.         return this.valore;
  84.     }

  85.     public static String[] toStringArray(){
  86.         String[] res = new String[ModalitaIdentificazione.values().length];
  87.         int i=0;
  88.         for (ModalitaIdentificazione tmp : ModalitaIdentificazione.values()) {
  89.             res[i]=tmp.getValore();
  90.             i++;
  91.         }
  92.         return res;
  93.     }
  94.     public static String[] toEnumNameArray(){
  95.         String[] res = new String[ModalitaIdentificazione.values().length];
  96.         int i=0;
  97.         for (ModalitaIdentificazione tmp : ModalitaIdentificazione.values()) {
  98.             res[i]=tmp.name();
  99.             i++;
  100.         }
  101.         return res;
  102.     }


  103.     public static ModalitaIdentificazione toEnumConstant(String val){

  104.         ModalitaIdentificazione res = null;

  105.         if(ModalitaIdentificazione.STATIC.toString().equals(val)){
  106.             res = ModalitaIdentificazione.STATIC;
  107.         }
  108.         else if(ModalitaIdentificazione.PLUGIN_BASED.toString().equals(val)){
  109.             res = ModalitaIdentificazione.PLUGIN_BASED;
  110.         }
  111.         else if(ModalitaIdentificazione.URL_BASED.toString().equals(val)){
  112.             res = ModalitaIdentificazione.URL_BASED;
  113.         }  
  114.         else if(ModalitaIdentificazione.CONTENT_BASED.toString().equals(val)){
  115.             res = ModalitaIdentificazione.CONTENT_BASED;
  116.         }
  117.         else if(ModalitaIdentificazione.INPUT_BASED.toString().equals(val)){
  118.             res = ModalitaIdentificazione.INPUT_BASED;
  119.         }  
  120.         else if(ModalitaIdentificazione.HEADER_BASED.toString().equals(val)){
  121.             res = ModalitaIdentificazione.HEADER_BASED;
  122.         }
  123.         else if(ModalitaIdentificazione.IDENTITY_BASED.toString().equals(val)){
  124.             res = ModalitaIdentificazione.IDENTITY_BASED;
  125.         }
  126.         return res;
  127.     }

  128.    
  129.     @Override
  130.     public String toString(){
  131.         return this.valore;
  132.     }
  133.     public boolean equals(String esito){
  134.         if(esito==null) {
  135.             return false;
  136.         }
  137.         return this.toString().equals(esito);
  138.     }
  139. }