ModalitaIdentificazione.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.protocol.engine.constants;
/**
* Enumerazione sulle modalita' di identificazione dei servizi
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public enum ModalitaIdentificazione {
/*
# Modalita' possibili per i dati su mittente, destinatario, servizio e azione:
# - static: il valore viene indicato nell'omonima proprieta' con suffisso '.value'
# - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
# - urlBased: il valore viene recuperato tramite l'espressione regolare indicata nell'omonima proprieta' con suffisso '.pattern'
# - contentBased: il valore viene recuperato tramite l'espressione xpath indicata nell'omonima proprieta' con suffisso '.pattern'
# - inputBased: il valore viene recuperato tramite gli header di integrazione di default per il protocollo
# - headerBased: il valore viene recuperato dall'header indicato nell'omonima proprieta' con suffisso '.name'
# - identityBased: (opzione valida solo per il mittente)
# il valore viene recuperato dalle credenziali ottenute in uno dei seguenti metodi alternativi (il primo che matcha viene utilizzato):
# - getUserPrincipal (servlet API)
# - subject certificato client
# - username fornito tramite un header http basic
# E' possibile fornire una espressione regolare in cui indicare come recuperare il nome a partire dalla credenziale recuperata
# L'espressione regolare deve essere indicata nell'omonima proprieta' con suffisso '.pattern'
# Se l'espressione regolare non ritorna un valore, viene utilizzato interamente la credenziale recuperata
#
# NOTA-Mittente: le proprieta' relative al tipo-mittente ed al mittente possono contenere anche una ulteriore proprieta' con suffisso '.anonymous'
# Il valore indicato viene utilizzato come nome associato al soggetto che non e' stato identificato.
# In questa maniera e' possibile far rappresentare ad un soggetto unico gli accessi anonimi.
# Basta associare questo soggetto come fruitore di un servizio per rendere il servizio accessibile in forma anonima.
#
# NOTA: La modalita' 'principalBased' dell'identificazione presente sulla porta delegata e della porta applicativa
# e' differente dalla modalita' 'identityTransportBased' indicata sopra.
# La modalita' utilizzata sulla PD e PA si basa solo sul metodo getUserPrincipal, e inoltre non usa il principal recuperato
# 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.
#
# Per quanto riguarda invece l'identificaizone delle informazioni di protocollo (Profilo di Collaborazione,FiltroDuplicati) le modalita' possibili sono:
# - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
# - static: l'identificazione viene letta dai valori presenti sul registro associati al servizio e operazione identificata
#
# Per quanto riguarda infine l'identificaizone dell'identificativo unico le modalita' possibili sono:
# - pluginBased: l'identificazione del valore viene delegato al plugin di protocollo
# - static: un identificatore viene generato ex-nove utilizzando la factory fornita con il protocollo
*/
STATIC("static"),
PLUGIN_BASED("pluginBased"),
URL_BASED("urlBased"),
CONTENT_BASED("contentBased"),
INPUT_BASED("inputBased"),
HEADER_BASED("+headerBased+"),
IDENTITY_BASED("identityBased");
private final String valore;
ModalitaIdentificazione(String valore)
{
this.valore = valore;
}
public String getValore()
{
return this.valore;
}
public static String[] toStringArray(){
String[] res = new String[ModalitaIdentificazione.values().length];
int i=0;
for (ModalitaIdentificazione tmp : ModalitaIdentificazione.values()) {
res[i]=tmp.getValore();
i++;
}
return res;
}
public static String[] toEnumNameArray(){
String[] res = new String[ModalitaIdentificazione.values().length];
int i=0;
for (ModalitaIdentificazione tmp : ModalitaIdentificazione.values()) {
res[i]=tmp.name();
i++;
}
return res;
}
public static ModalitaIdentificazione toEnumConstant(String val){
ModalitaIdentificazione res = null;
if(ModalitaIdentificazione.STATIC.toString().equals(val)){
res = ModalitaIdentificazione.STATIC;
}
else if(ModalitaIdentificazione.PLUGIN_BASED.toString().equals(val)){
res = ModalitaIdentificazione.PLUGIN_BASED;
}
else if(ModalitaIdentificazione.URL_BASED.toString().equals(val)){
res = ModalitaIdentificazione.URL_BASED;
}
else if(ModalitaIdentificazione.CONTENT_BASED.toString().equals(val)){
res = ModalitaIdentificazione.CONTENT_BASED;
}
else if(ModalitaIdentificazione.INPUT_BASED.toString().equals(val)){
res = ModalitaIdentificazione.INPUT_BASED;
}
else if(ModalitaIdentificazione.HEADER_BASED.toString().equals(val)){
res = ModalitaIdentificazione.HEADER_BASED;
}
else if(ModalitaIdentificazione.IDENTITY_BASED.toString().equals(val)){
res = ModalitaIdentificazione.IDENTITY_BASED;
}
return res;
}
@Override
public String toString(){
return this.valore;
}
public boolean equals(String esito){
if(esito==null) {
return false;
}
return this.toString().equals(esito);
}
}