RegistroServiziReader.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 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.registry;
- import java.io.Serializable;
- import java.sql.Connection;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.openspcoop2.core.byok.IDriverBYOK;
- import org.openspcoop2.core.commons.ConnettoreHTTPSProperties;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.core.commons.IMonitoraggioRisorsa;
- import org.openspcoop2.core.config.AccessoRegistro;
- import org.openspcoop2.core.config.constants.CostantiConfigurazione;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.constants.CostantiLabel;
- import org.openspcoop2.core.constants.StatoCheck;
- import org.openspcoop2.core.constants.TipiConnettore;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDAccordoAzione;
- import org.openspcoop2.core.id.IDAccordoCooperazione;
- import org.openspcoop2.core.id.IDFruizione;
- import org.openspcoop2.core.id.IDGruppo;
- import org.openspcoop2.core.id.IDPortType;
- import org.openspcoop2.core.id.IDPortTypeAzione;
- import org.openspcoop2.core.id.IDResource;
- import org.openspcoop2.core.id.IDRuolo;
- import org.openspcoop2.core.id.IDScope;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Azione;
- import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
- import org.openspcoop2.core.registry.Connettore;
- import org.openspcoop2.core.registry.CredenzialiSoggetto;
- import org.openspcoop2.core.registry.Documento;
- import org.openspcoop2.core.registry.Fruitore;
- import org.openspcoop2.core.registry.Operation;
- import org.openspcoop2.core.registry.PortaDominio;
- import org.openspcoop2.core.registry.Proprieta;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.Scope;
- import org.openspcoop2.core.registry.Soggetto;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.constants.ProfiloCollaborazione;
- import org.openspcoop2.core.registry.constants.ServiceBinding;
- import org.openspcoop2.core.registry.constants.StatoFunzionalita;
- import org.openspcoop2.core.registry.constants.TipiDocumentoLivelloServizio;
- import org.openspcoop2.core.registry.constants.TipiDocumentoSemiformale;
- import org.openspcoop2.core.registry.constants.TipiDocumentoSicurezza;
- import org.openspcoop2.core.registry.constants.TipologiaServizio;
- import org.openspcoop2.core.registry.driver.BeanUtilities;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziAzioneNotFound;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziCorrelatoNotFound;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziPortTypeNotFound;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziServizioNotFound;
- import org.openspcoop2.core.registry.driver.FiltroRicerca;
- import org.openspcoop2.core.registry.driver.FiltroRicercaAccordi;
- import org.openspcoop2.core.registry.driver.FiltroRicercaAzioni;
- import org.openspcoop2.core.registry.driver.FiltroRicercaFruizioniServizio;
- import org.openspcoop2.core.registry.driver.FiltroRicercaGruppi;
- import org.openspcoop2.core.registry.driver.FiltroRicercaOperations;
- import org.openspcoop2.core.registry.driver.FiltroRicercaPortTypes;
- import org.openspcoop2.core.registry.driver.FiltroRicercaResources;
- import org.openspcoop2.core.registry.driver.FiltroRicercaRuoli;
- import org.openspcoop2.core.registry.driver.FiltroRicercaScope;
- import org.openspcoop2.core.registry.driver.FiltroRicercaServizi;
- import org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti;
- import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.core.registry.driver.IDServizioFactory;
- import org.openspcoop2.core.registry.driver.IDriverRegistroServiziGet;
- import org.openspcoop2.core.registry.driver.ValidazioneSemantica;
- import org.openspcoop2.core.registry.driver.db.DriverRegistroServiziDB;
- import org.openspcoop2.core.registry.driver.xml.DriverRegistroServiziXML;
- import org.openspcoop2.core.registry.utils.RegistroServiziUtils;
- import org.openspcoop2.protocol.sdk.IProtocolFactory;
- import org.openspcoop2.protocol.sdk.Servizio;
- import org.openspcoop2.protocol.sdk.constants.InformationApiSource;
- import org.openspcoop2.protocol.sdk.constants.Inoltro;
- import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
- import org.openspcoop2.protocol.sdk.state.RequestInfo;
- import org.openspcoop2.protocol.utils.ModISecurityUtils;
- import org.openspcoop2.protocol.utils.ModIUtils;
- import org.openspcoop2.utils.LoggerWrapperFactory;
- import org.openspcoop2.utils.cache.CacheType;
- import org.openspcoop2.utils.certificate.CertificateInfo;
- import org.openspcoop2.utils.certificate.CertificateUtils;
- import org.openspcoop2.utils.certificate.KeystoreParams;
- import org.openspcoop2.utils.certificate.PrincipalType;
- import org.openspcoop2.utils.certificate.remote.RemoteStoreConfig;
- import org.openspcoop2.utils.crypt.CryptConfig;
- import org.openspcoop2.utils.date.DateManager;
- import org.openspcoop2.utils.transport.http.IBYOKUnwrapFactory;
- import org.openspcoop2.utils.transport.http.IBYOKUnwrapManager;
- import org.openspcoop2.utils.transport.http.SSLConfig;
- import org.slf4j.Logger;
- /**
- * Classe utilizzata per ottenere informazioni che interessano ad OpenSPCoop
- *
- * @author Poli Andrea (apoli@link.it)
- * @author Lezza Aldo (lezza@openspcoop.org)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class RegistroServiziReader {
- /* istanza di RegistroServiziReader */
- private static RegistroServiziReader registroServiziReader;
- /* informazione sull'inizializzazione dell'istanza */
- private static boolean initialize = false;
- /* Registro dei Servizi */
- private RegistroServizi registroServizi;
- /** Logger utilizzato per debug. */
- private Logger log = null;
-
- // Factory
- private IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
- /* --------------- Reset Cache --------------------*/
- public static boolean isCacheAbilitata() throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.isCacheAbilitata();
- }
- return false;
- }catch(Exception e){
- throw new DriverRegistroServiziException("IsCacheAbilitata, recupero informazione della cache del registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static void resetCache() throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.resetCache();
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Reset della cache di accesso ai registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static void prefillCache(CryptConfig cryptConfigSoggetti) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.prefillCache(null, registroServiziReader.log, cryptConfigSoggetti);
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Prefill della cache di accesso ai registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static String printStatsCache(String separator) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.printStatsCache(separator);
- }
- else{
- throw new Exception("RegistroServizi Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Visualizzazione Statistiche riguardante la cache del registro dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static void abilitaCache() throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.abilitaCache();
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Abilitazione cache di accesso ai registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static void abilitaCache(Long dimensioneCache,Boolean algoritmoCacheLRU,Long itemIdleTime,Long itemLifeSecond, CryptConfig cryptConfigSoggetti) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.abilitaCache(dimensioneCache,algoritmoCacheLRU,itemIdleTime,itemLifeSecond, cryptConfigSoggetti);
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Abilitazione cache di accesso ai registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static void disabilitaCache() throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.disabilitaCache();
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Disabilitazione cache di accesso ai registri dei servizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static String listKeysCache(String separator) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.listKeysCache(separator);
- }
- else{
- throw new Exception("RegistroServizi Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Visualizzazione chiavi presenti nella cache del RegistroServizi non riuscita: "+e.getMessage(),e);
- }
- }
- public static List<String> keysCache() throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.keysCache();
- }
- else{
- throw new Exception("RegistroServizi Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Visualizzazione chiavi presenti nella cache del RegistroServizi non riuscita: "+e.getMessage(),e);
- }
- }
-
- public static String getObjectCache(String key) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.getObjectCache(key);
- }
- else{
- throw new Exception("RegistroServizi Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Visualizzazione oggetto presente nella cache del RegistroServizi non riuscita: "+e.getMessage(),e);
- }
- }
-
- public static Object getRawObjectCache(String key) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- return registroServiziReader.registroServizi.getRawObjectCache(key);
- }
- else{
- throw new Exception("ConfigurazionePdD Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Visualizzazione oggetto presente nella cache del RegistroServizi non riuscita: "+e.getMessage(),e);
- }
- }
-
- public static void removeObjectCache(String key) throws DriverRegistroServiziException{
- try{
- RegistroServiziReader registroServiziReader = org.openspcoop2.protocol.registry.RegistroServiziReader.getInstance();
- if(registroServiziReader!=null && registroServiziReader.registroServizi!=null){
- registroServiziReader.registroServizi.removeObjectCache(key);
- }
- else{
- throw new Exception("RegistroServizi Non disponibile");
- }
- }catch(Exception e){
- throw new DriverRegistroServiziException("Rimozione oggetto presente nella cache del RegistroServizi non riuscita: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
- /*----------------- CLEANER --------------------*/
- public static void removeAccordoCooperazione(IDAccordoCooperazione idAccordo) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- for (int i = 0; i < 3; i++) {
- Boolean readContenutiAllegati = null;
- if(i==1) {
- readContenutiAllegati = true;
- }
- else if(i==2) {
- readContenutiAllegati = false;
- }
- String keyIdAccordo = RegistroServizi._getKey_getAccordoCooperazione(IDAccordoCooperazioneFactory.getInstance(), idAccordo,readContenutiAllegati);
- RegistroServiziReader.removeObjectCache(keyIdAccordo);
- }
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdAccordiCooperazione_method();
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDAccordoCooperazione) {
- IDAccordoCooperazione idCheck = (IDAccordoCooperazione) object;
- if(idCheck.equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
- }
- }
-
- public static void removeApi(IDAccordo idAccordo) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- for (int i = 0; i < 3; i++) {
- Boolean readContenutiAllegati = null;
- if(i==1) {
- readContenutiAllegati = true;
- }
- else if(i==2) {
- readContenutiAllegati = false;
- }
- Boolean readDatiRegistro = null;
- for (int j = 0; j < 3; j++) {
- if(i==1) {
- readDatiRegistro = true;
- }
- else if(i==2) {
- readDatiRegistro = false;
- }
- String keyIdAccordo = RegistroServizi._getKey_getAccordoServizioParteComune(IDAccordoFactory.getInstance(), idAccordo,readContenutiAllegati,readDatiRegistro);
- RegistroServiziReader.removeObjectCache(keyIdAccordo);
- }
- }
- List<IDServizio> serviziImplementati = null;
- try {
- FiltroRicercaServizi filtro = new FiltroRicercaServizi();
- filtro.setIdAccordoServizioParteComune(idAccordo);
- serviziImplementati = RegistroServiziManager.getInstance().getAllIdServizi(filtro, null);
- }catch(Throwable t) {
- // ignore
- }
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixServizioCorrelatoPrefix = RegistroServizi._toKey_getAccordoServizioParteSpecifica_ServizioCorrelato_prefix();
- String servizioCorrelato = RegistroServizi._toKey_getAccordoServizioParteSpecifica_ServizioCorrelato(IDAccordoFactory.getInstance(), idAccordo);
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdAccordiServizioParteComune_method();
- String prefixGetAllId_portTypes = RegistroServizi._toKey_getAllIdPortType_method();
- String prefixGetAllId_azionePortType = RegistroServizi._toKey_getAllIdAzionePortType_method();
- String prefixGetAllId_azione = RegistroServizi._toKey_getAllIdAzione_method();
- String prefixGetAllId_resource = RegistroServizi._toKey_getAllIdResource_method();
-
- String wsdlAccordoServizioPrefix = RegistroServizi._toKey_getWsdlAccordoServizioPrefix();
-
- String restAccordoServizioPrefix = RegistroServizi._toKey_getRestAccordoServizioPrefix();
-
- String documentoPrefix = RegistroServizi._toKey_prefixGetAllegatoAccordoServizioParteComune(idAccordo);
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixServizioCorrelatoPrefix) && key.contains(servizioCorrelato)) {
- keyForClean.add(key);
- }
- else if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDAccordo) {
- IDAccordo idCheck = (IDAccordo) object;
- if(idCheck.equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(prefixGetAllId_portTypes)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDPortType) {
- IDPortType idCheck = (IDPortType) object;
- if(idCheck.getIdAccordo().equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(prefixGetAllId_azionePortType)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDPortTypeAzione) {
- IDPortTypeAzione idCheck = (IDPortTypeAzione) object;
- if(idCheck.getIdPortType().getIdAccordo().equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(prefixGetAllId_azione)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDAccordoAzione) {
- IDAccordoAzione idCheck = (IDAccordoAzione) object;
- if(idCheck.getIdAccordo().equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(prefixGetAllId_resource)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDResource) {
- IDResource idCheck = (IDResource) object;
- if(idCheck.getIdAccordo().equals(idAccordo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(wsdlAccordoServizioPrefix) && serviziImplementati!=null && !serviziImplementati.isEmpty()) {
- for (IDServizio idServizio : serviziImplementati) {
- String wsdlAccordoServizioService = RegistroServizi._toKey_getWsdlAccordoServizioService(idServizio);
- if(key.contains(wsdlAccordoServizioService)) {
- keyForClean.add(key);
- }
- }
- }
- else if(key.startsWith(restAccordoServizioPrefix)) {
- for (IDServizio idServizio : serviziImplementati) {
- String restAccordoServizioService = RegistroServizi._toKey_getRestAccordoServizioService(idServizio);
- if(key.contains(restAccordoServizioService)) {
- keyForClean.add(key);
- }
- }
- }
- else if(key.startsWith(documentoPrefix)) {
- keyForClean.add(key);
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
-
- }
- }
-
- public static void removeErogazione(IDServizio idServizio) throws Exception {
- removeApiImpl(null, idServizio, true);
- }
- public static void removeFruizione(IDSoggetto fruitore, IDServizio idServizio) throws Exception {
- removeApiImpl(fruitore, idServizio, false);
- }
- private static void removeApiImpl(IDSoggetto idFruitore, IDServizio idServizio, boolean erogazione) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- // non funziona, viene anche inserita l'azione nella chiave della cache
- // for (int i = 0; i < 3; i++) {
- // Boolean readContenutiAllegati = null;
- // if(i==1) {
- // readContenutiAllegati = true;
- // }
- // else if(i==2) {
- // readContenutiAllegati = false;
- // }
- // String keyIdAccordo = RegistroServizi._getKey_getAccordoServizioParteSpecifica(idServizio,readContenutiAllegati);
- // RegistroServiziReader.removeObjectCache(keyIdAccordo);
- // }
-
- String keyServiceBinding = RegistroServizi._getKey_getServiceBinding(idServizio);
- RegistroServiziReader.removeObjectCache(keyServiceBinding);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixAccordo = RegistroServizi._toKey_getAccordoServizioParteSpecificaPrefix(idServizio);
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdServizi_method();
- String prefixGetAllIdFruizione = null;
- if(!erogazione) {
- prefixGetAllIdFruizione = RegistroServizi._toKey_getAllIdFruizioniServizio_method();
- }
-
- String wsdlAccordoServizioPrefix = RegistroServizi._toKey_getWsdlAccordoServizioPrefix();
- String wsdlAccordoServizioService = RegistroServizi._toKey_getWsdlAccordoServizioService(idServizio);
-
- String restAccordoServizioPrefix = RegistroServizi._toKey_getRestAccordoServizioPrefix();
- String restAccordoServizioService = RegistroServizi._toKey_getRestAccordoServizioService(idServizio);
-
- String documentoPrefix = RegistroServizi._toKey_prefixGetAllegatoAccordoServizioParteSpecifica(idServizio);
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixAccordo)) {
- keyForClean.add(key);
- }
- else if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDServizio) {
- IDServizio idCheck = (IDServizio) object;
- if(idCheck.equals(idServizio, false)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(!erogazione && key.startsWith(prefixGetAllIdFruizione)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDFruizione) {
- IDFruizione idCheck = (IDFruizione) object;
- if(idCheck.getIdFruitore().equals(idFruitore) && idCheck.getIdServizio().equals(idServizio, false)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- else if(key.startsWith(wsdlAccordoServizioPrefix) && key.contains(wsdlAccordoServizioService)) {
- keyForClean.add(key);
- }
- else if(key.startsWith(restAccordoServizioPrefix) && key.contains(restAccordoServizioService)) {
- keyForClean.add(key);
- }
- else if(key.startsWith(documentoPrefix)) {
- keyForClean.add(key);
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
-
- }
- }
-
- public static void removePdd(String portaDominio) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- String keyPdd = RegistroServizi._getKey_getPortaDominio(portaDominio);
- RegistroServiziReader.removeObjectCache(keyPdd);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdPorteDominio_method();
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof String) {
- String idCheck = (String) object;
- if(idCheck.equals(portaDominio)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
-
- }
- }
- public static void removeSoggetto(IDSoggetto idSoggetto) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- String keySoggetto = RegistroServizi._getKey_getSoggetto(idSoggetto);
- RegistroServiziReader.removeObjectCache(keySoggetto);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixCredenzialiBasic = RegistroServizi._toKey_getSoggettoByCredenzialiBasicPrefix();
- String prefixCredenzialiApiKey = RegistroServizi._toKey_getSoggettoByCredenzialiApiKeyPrefix(false);
- String prefixCredenzialiApiKeyAppId = RegistroServizi._toKey_getSoggettoByCredenzialiApiKeyPrefix(true);
- String prefixCredenzialiSsl = RegistroServizi._toKey_getSoggettoByCredenzialiSslPrefix(true);
- String prefixCredenzialiSslCert = RegistroServizi._toKey_getSoggettoByCredenzialiSslCertPrefix(true);
- String prefixCredenzialiPrincipal = RegistroServizi._toKey_getSoggettoByCredenzialiPrincipalPrefix();
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdSoggetti_method();
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixCredenzialiBasic) ||
- key.startsWith(prefixCredenzialiApiKey) ||
- key.startsWith(prefixCredenzialiApiKeyAppId) ||
- key.startsWith(prefixCredenzialiSsl) ||
- key.startsWith(prefixCredenzialiSslCert) ||
- key.startsWith(prefixCredenzialiPrincipal)) {
-
- Object o = RegistroServiziReader.getRawObjectCache(key);
- if(o!=null && o instanceof Soggetto) {
- Soggetto soggetto = (Soggetto) o;
- if(soggetto.getTipo().equals(idSoggetto.getTipo()) &&
- soggetto.getNome().equals(idSoggetto.getNome())) {
- keyForClean.add(key);
- }
- }
-
- }
- else if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDSoggetto) {
- IDSoggetto idCheck = (IDSoggetto) object;
- if(idCheck.equals(idSoggetto)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
- }
- }
-
- public static void removeGruppo(IDGruppo idGruppo) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- String keyGruppo = RegistroServizi._getKey_getGruppo(idGruppo.getNome());
- RegistroServiziReader.removeObjectCache(keyGruppo);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdGruppi_method();
-
- for (String key : keys) {
- if(key!=null &&
- key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object instanceof IDGruppo) {
- IDGruppo idCheck = (IDGruppo) object;
- if(idCheck.equals(idGruppo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
- }
- }
-
- public static void removeRuolo(IDRuolo idRuolo) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- String keyRuolo = RegistroServizi._getKey_getRuolo(idRuolo.getNome());
- RegistroServiziReader.removeObjectCache(keyRuolo);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdRuoli_method();
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDRuolo) {
- IDRuolo idCheck = (IDRuolo) object;
- if(idCheck.equals(idRuolo)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
- }
- }
-
- public static void removeScope(IDScope idScope) throws Exception {
- if(RegistroServiziReader.isCacheAbilitata()) {
-
- String keyScope = RegistroServizi._getKey_getScope(idScope.getNome());
- RegistroServiziReader.removeObjectCache(keyScope);
-
- List<String> keyForClean = new ArrayList<>();
- List<String> keys = RegistroServiziReader.keysCache();
- if(keys!=null && !keys.isEmpty()) {
-
- String prefixGetAllId = RegistroServizi._toKey_getAllIdScope_method();
-
- for (String key : keys) {
- if(key!=null) {
- if(key.startsWith(prefixGetAllId)) {
- Object oCode = RegistroServiziReader.getRawObjectCache(key);
- if(oCode!=null && oCode instanceof List<?>) {
- List<?> l = (List<?>) oCode;
- if(l!=null && !l.isEmpty()) {
- for (Object object : l) {
- if(object!=null && object instanceof IDScope) {
- IDScope idCheck = (IDScope) object;
- if(idCheck.equals(idScope)) {
- keyForClean.add(key);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if(keyForClean!=null && !keyForClean.isEmpty()) {
- for (String key : keyForClean) {
- removeObjectCache(key);
- }
- }
- }
- }
-
-
-
-
-
- /* -------------- Metodi di inizializzazione ----------------- */
- /**
- * Si occupa di inizializzare l'engine che permette di effettuare
- * query al registro dei servizi.
- * L'engine inizializzato sara' diverso a seconda del <var>tipo</var> di registro :
- * <ul>
- * <li> {@link org.openspcoop2.core.registry.driver.uddi.DriverRegistroServiziUDDI}, interroga un registro dei servizi UDDI.
- * <li> {@link org.openspcoop2.core.registry.driver.xml.DriverRegistroServiziXML}, interroga un registro dei servizi realizzato tramite un file xml.
- * <li> {@link org.openspcoop2.core.registry.driver.web.DriverRegistroServiziWEB}, interroga un registro dei servizi realizzato come un WEB Server.
- * <li> {@link org.openspcoop2.core.registry.driver.db.DriverRegistroServiziDB}, interroga un registro dei servizi realizzato come un Database relazionale.
- * </ul>
- *
- * @param accessoRegistro Informazioni per accedere al registro Servizi.
- * @return true se l'inizializzazione ha successo, false altrimenti.
- */
- public static boolean initialize(AccessoRegistro accessoRegistro,Logger aLog,Logger aLogconsole,
- boolean raggiungibilitaTotale, boolean readObjectStatoBozza,
- String jndiNameDatasourcePdD, boolean useOp2UtilsDatasource, boolean bindJMX,
- boolean prefillCache, CryptConfig cryptConfigSoggetti,
- CacheType cacheType, IDriverBYOK driverBYOK){
- try {
- RegistroServiziReader.registroServiziReader =
- new RegistroServiziReader(accessoRegistro,aLog,aLogconsole,raggiungibilitaTotale,readObjectStatoBozza,
- jndiNameDatasourcePdD,useOp2UtilsDatasource,bindJMX,
- prefillCache, cryptConfigSoggetti,
- cacheType, driverBYOK);
- return RegistroServiziReader.initialize;
- }
- catch(Exception e) {
- return false;
- }
- }
- /**
- * Ritorna lo stato dell'engine che permette di effettuare
- * query al registro dei servizi.
- *
- * @return true se l'inizializzazione all'engine e' stata precedentemente effettuata, false altrimenti.
- */
- public static boolean isInitialize(){
- return RegistroServiziReader.initialize;
- }
- /**
- * Ritorna l'istanza di questa classe
- *
- * @return Istanza del Reader del Registro
- */
- public static RegistroServiziReader getInstance(){
- return RegistroServiziReader.registroServiziReader;
- }
- public static java.util.Map<String, IDriverRegistroServiziGet> getDriverRegistroServizi() {
- return RegistroServiziReader.registroServiziReader.registroServizi.getDriverRegistroServizi();
- }
- /* -------------- Costruttore ----------------- */
- /**
- * Inizializza il reader
- *
- * @param accessoRegistro Informazioni per accedere al registro Servizi.
- */
- public RegistroServiziReader(AccessoRegistro accessoRegistro,Logger aLog,
- Logger aLogconsole,boolean raggiungibilitaTotale, boolean readObjectStatoBozza,
- String jndiNameDatasourcePdD, boolean useOp2UtilsDatasource, boolean bindJMX,
- boolean prefillCache, CryptConfig cryptConfigSoggetti,
- CacheType cacheType, IDriverBYOK driverBYOK)throws DriverRegistroServiziException{
- try{
- if(aLog!=null)
- this.log = aLog;
- else
- this.log = LoggerWrapperFactory.getLogger(RegistroServiziReader.class);
- this.registroServizi = new RegistroServizi(accessoRegistro,this.log,aLogconsole,raggiungibilitaTotale,readObjectStatoBozza,
- jndiNameDatasourcePdD, useOp2UtilsDatasource, bindJMX,
- prefillCache, cryptConfigSoggetti,
- cacheType, driverBYOK);
- RegistroServiziReader.initialize = true;
- }catch(Exception e){
- RegistroServiziReader.initialize = false;
- }
- }
- /**
- * Metodo che verica la connessione ad una risorsa.
- * Se la connessione non e' presente, viene lanciata una eccezione che contiene il motivo della mancata connessione
- *
- * @throws CoreException eccezione che contiene il motivo della mancata connessione
- */
- protected void isAlive(boolean controlloTotale) throws CoreException{
- if(controlloTotale){
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- try{
- IMonitoraggioRisorsa monitorDriver = (IMonitoraggioRisorsa) this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- monitorDriver.isAlive();
- }catch(Exception e){
- throw new CoreException("[Registro "+nomeRegInLista+"] "+e.getMessage(),e);
- }
- }
- }else{
- boolean registroRaggiungibile = false;
- StringBuilder eccezioni = new StringBuilder();
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- try{
- IMonitoraggioRisorsa monitorDriver = (IMonitoraggioRisorsa) this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- monitorDriver.isAlive();
- registroRaggiungibile = true;
- break;
- }catch(Exception e){
- this.log.debug("Registro non accessibile [Registro "+nomeRegInLista+"]",e);
- eccezioni.append("\n[Registro "+nomeRegInLista+"] "+e.getMessage());
- }
- }
- if(registroRaggiungibile == false){
- throw new CoreException(eccezioni.toString());
- }
- }
- }
-
-
- /**
- * Validazione semantica dei registri servizi
- *
- * @throws CoreException eccezione che contiene il motivo della validazione semantica errata
- */
- protected void validazioneSemantica(boolean controlloTotale,boolean verificaURI,
- String[] tipiSoggettiValidi,String [] tipiServiziSoapValidi, String [] tipiServiziRestValidi, String[] tipiConnettoriValidi,
- boolean validazioneSemanticaAbilitataXML,boolean validazioneSemanticaAbilitataAltriRegistri,
- Logger logConsole) throws CoreException{
- if(controlloTotale){
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- try{
- Object o = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- boolean validazione = false;
- if(o instanceof DriverRegistroServiziXML){
- validazione = validazioneSemanticaAbilitataXML;
- }else{
- validazione = validazioneSemanticaAbilitataAltriRegistri;
- }
- if(validazione){
- BeanUtilities driverRegistro = (BeanUtilities) o;
- org.openspcoop2.core.registry.RegistroServizi registroServizi = driverRegistro.getImmagineCompletaRegistroServizi();
- ValidazioneSemantica validazioneSemantica = new ValidazioneSemantica(registroServizi,verificaURI,
- tipiConnettoriValidi,tipiSoggettiValidi,tipiServiziSoapValidi,tipiServiziRestValidi);
- validazioneSemantica.validazioneSemantica(false);
- if(logConsole!=null){
- logConsole.info("Validazione semantica del registro dei servizi ["+nomeRegInLista+"] effettuata.");
- }
- }
- }catch(Exception e){
- throw new CoreException("[Registro "+nomeRegInLista+"] "+e.getMessage(),e);
- }
- }
- }else{
- boolean registroRaggiungibile = false;
- StringBuilder eccezioni = new StringBuilder();
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- try{
- Object o = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- boolean validazione = false;
- if(o instanceof DriverRegistroServiziXML){
- validazione = validazioneSemanticaAbilitataXML;
- }else{
- validazione = validazioneSemanticaAbilitataAltriRegistri;
- }
- if(validazione){
- BeanUtilities driverRegistro = (BeanUtilities) o;
- org.openspcoop2.core.registry.RegistroServizi registroServizi = driverRegistro.getImmagineCompletaRegistroServizi();
- ValidazioneSemantica validazioneSemantica = new ValidazioneSemantica(registroServizi,verificaURI,
- tipiConnettoriValidi,tipiSoggettiValidi,tipiServiziSoapValidi,tipiServiziRestValidi);
- validazioneSemantica.validazioneSemantica(false);
- if(logConsole!=null){
- logConsole.info("Validazione semantica del registro dei servizi ["+nomeRegInLista+"] effettuata.");
- }
- registroRaggiungibile = true;
- break;
- }
- }catch(Exception e){
- this.log.debug("Registro non accessibile [Registro "+nomeRegInLista+"]",e);
- eccezioni.append("\n[Registro "+nomeRegInLista+"] "+e.getMessage());
- }
- }
- if(registroRaggiungibile == false){
- throw new CoreException(eccezioni.toString());
- }
- }
- }
-
-
-
- protected void setValidazioneSemanticaModificaRegistroServiziXML(boolean verificaURI,
- String[] tipiSoggettiValidi,String [] tipiServiziSoapValidi, String [] tipiServiziRestValidi, String[] tipiConnettoriValidi) throws CoreException{
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- try{
- Object o = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- if(o instanceof DriverRegistroServiziXML){
- DriverRegistroServiziXML driver = (DriverRegistroServiziXML) o;
- driver.abilitazioneValidazioneSemanticaDuranteModificaXML(verificaURI,
- tipiConnettoriValidi,tipiSoggettiValidi,tipiServiziSoapValidi,tipiServiziRestValidi);
- }
- }catch(Exception e){
- throw new CoreException("[Registro "+nomeRegInLista+"] "+e.getMessage(),e);
- }
- }
- }
-
-
- protected void verificaConsistenzaRegistroServizi() throws DriverRegistroServiziException {
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- Object o = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- if(o instanceof DriverRegistroServiziXML){
- DriverRegistroServiziXML driver = (DriverRegistroServiziXML) o;
- driver.refreshRegistroServiziXML();
- }
- }
- }
-
-
-
- /* ******** G E T O G G E T T I PRIMITIVI NO CACHE ******** */
-
- public PortaDominio getPortaDominio_noCache(String nome,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- PortaDominio r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getPortaDominio(nome);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public Ruolo getRuolo_noCache(String nome,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- Ruolo r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- IDRuolo idRuolo = new IDRuolo(nome);
- r = driver.getRuolo(idRuolo);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public Soggetto getSoggetto_noCache(IDSoggetto idSoggetto,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- Soggetto r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getSoggetto(idSoggetto);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public AccordoServizioParteComune getAccordoServizioParteComune_noCache(IDAccordo idAccordo,String nomeRegistro,Boolean readContenutiAllegati, Boolean readDatiRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- AccordoServizioParteComune r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- if(driver instanceof DriverRegistroServiziDB){
- r = ((DriverRegistroServiziDB)driver).getAccordoServizioParteComune(idAccordo,readContenutiAllegati,readDatiRegistro);
- }
- else{
- r = driver.getAccordoServizioParteComune(idAccordo);
- }
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica_noCache(IDServizio idServizio,String nomeRegistro,Boolean readContenutiAllegati) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- AccordoServizioParteSpecifica r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- if(driver instanceof DriverRegistroServiziDB){
- r = ((DriverRegistroServiziDB)driver).getAccordoServizioParteSpecifica(idServizio,readContenutiAllegati);
- }
- else{
- r = driver.getAccordoServizioParteSpecifica(idServizio);
- }
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public AccordoCooperazione getAccordoCooperazione_noCache(IDAccordoCooperazione idAccordo,String nomeRegistro,Boolean readContenutiAllegati) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- AccordoCooperazione r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- if(driver instanceof DriverRegistroServiziDB){
- r = ((DriverRegistroServiziDB)driver).getAccordoCooperazione(idAccordo,readContenutiAllegati);
- }
- else{
- r = driver.getAccordoCooperazione(idAccordo);
- }
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
-
- /* ******** R I C E R C A I D E L E M E N T I P R I M I T I V I NO CACHE ******** */
-
- public List<String> getAllIdPorteDominio_noCache(FiltroRicerca filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<String> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdPorteDominio(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDRuolo> getAllIdRuoli_noCache(FiltroRicercaRuoli filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDRuolo> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdRuoli(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDSoggetto> getAllIdSoggetti_noCache(FiltroRicercaSoggetti filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDSoggetto> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdSoggetti(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDAccordoCooperazione> getAllIdAccordiCooperazione_noCache(FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDAccordoCooperazione> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdAccordiCooperazione(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDAccordo> getAllIdAccordiServizioParteComune_noCache(FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDAccordo> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdAccordiServizioParteComune(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDPortType> getAllIdPortType_noCache(FiltroRicercaPortTypes filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- List<IDPortType> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdPortType(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDPortTypeAzione> getAllIdAzionePortType_noCache(FiltroRicercaOperations filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- List<IDPortTypeAzione> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdAzionePortType(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDAccordoAzione> getAllIdAzioneAccordo_noCache(FiltroRicercaAzioni filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- List<IDAccordoAzione> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdAzioneAccordo(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDServizio> getAllIdServizi_noCache(FiltroRicercaServizi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDServizio> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdServizi(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
- public List<IDFruizione> getAllIdFruizioniServizio_noCache(FiltroRicercaFruizioniServizio filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- List<IDFruizione> r = null;
- for (String nomeRegInLista : this.registroServizi.getDriverRegistroServizi().keySet()) {
- if(nomeRegistro!=null && !nomeRegistro.equals(nomeRegInLista)){
- continue;
- }
- IDriverRegistroServiziGet driver = this.registroServizi.getDriverRegistroServizi().get(nomeRegInLista);
- try{
- r = driver.getAllIdFruizioniServizio(filtroRicerca);
- }catch(DriverRegistroServiziNotFound notFound){
- // ignore
- }
- if(r!=null || nomeRegistro!=null){
- break;
- }
- }
- if(r==null){
- throw new DriverRegistroServiziNotFound();
- }
- return r;
- }
-
-
-
-
-
-
-
-
-
-
- /* ******** P R O F I L O D I G E S T I O N E ******** */
-
- protected String getProfiloGestioneFruizioneServizio(Connection connectionPdD,IDServizio idServizio,String nomeRegistro, RequestInfo requestInfo)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
-
- String profilo = null;
-
- // ricerca servizio richiesto
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizio = null;
- try{
- servizio = this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD,nomeRegistro,idServizio);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if(servizio != null){
- // Profilo di gestione
- profilo = servizio.getVersioneProtocollo();
- }
- if(profilo == null){
- // vedo se il soggetto erogatore ha un profilo
- Soggetto soggettoErogatore = RegistroServiziManager._getSoggettoFromRequestInfo(idServizio.getSoggettoErogatore(), requestInfo);
- if (soggettoErogatore == null){
- soggettoErogatore = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro, idServizio.getSoggettoErogatore());
- }
- if (soggettoErogatore == null){
- throw new DriverRegistroServiziNotFound("getProfiloGestioneFruizioneServizio, soggettoErogatore ["+idServizio.getSoggettoErogatore()+"] non definito (o non registrato)");
- }
- profilo = soggettoErogatore.getVersioneProtocollo();
- }
- return profilo;
- }
-
- protected String getProfiloGestioneErogazioneServizio(Connection connectionPdD,IDSoggetto idFruitore,IDServizio idServizio,String nomeRegistro, RequestInfo requestInfo)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
-
- String profilo = null;
-
- // vedo se il soggetto fruitore ha un profilo
- Soggetto soggettoFruitore = RegistroServiziManager._getSoggettoFromRequestInfo(idFruitore, requestInfo);
- if(soggettoFruitore==null) {
- soggettoFruitore = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro, idFruitore);
- }
- if (soggettoFruitore == null){
- throw new DriverRegistroServiziNotFound("getProfiloGestioneErogazioneServizio, soggettoFruitore ["+idFruitore+"] non definito (o non registrato)");
- }
- profilo = soggettoFruitore.getVersioneProtocollo();
-
- return profilo;
- }
-
- protected String getProfiloGestioneSoggetto(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
-
- // Profilo di gestione
- String profilo = null;
-
- // vedo se il soggetto fruitore ha un profilo
- Soggetto soggetto = RegistroServiziManager._getSoggettoFromRequestInfo(idSoggetto, requestInfo);
- if (soggetto == null){
- soggetto = this.registroServizi.getSoggetto(connectionPdD, nomeRegistro, idSoggetto);
- }
- if (soggetto == null){
- throw new DriverRegistroServiziNotFound("getProfiloGestioneSoggetto, Soggetto ["+idSoggetto+"] non definito (o non registrato)");
- }
- profilo = soggetto.getVersioneProtocollo();
-
- return profilo;
- }
-
-
-
-
-
-
-
- /* ******** R I C E R C A I N F O S E R V I Z I ******** */
- /**
- * Si occupa di ritornare le informazioni sulle funzionalita' associate
- * al servizio registrato nell'indice dei servizi di openspcoop. Il servizio, viene identificato
- * grazie ai fields 'tipoDestinatario','Destinatario','Servizio','TipoServizio' e 'Azione' impostati
- * all'interno del parametro <var>idService</var> di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * <p>
- * Il metodo si occupa di ritornare un oggetto {@link org.openspcoop2.protocol.sdk.Servizio}
- * impostando in esso le funzionalita' che sono riscontrate nel registro dei servizi
- * al servizio identificato da <var>idService</var>.
- *
- * @param idSoggetto Soggetto richiedente del servizio
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return l'oggetto di tipo {@link org.openspcoop2.core.id.IDServizio}
- */
- protected Servizio getInfoServizio(Connection connectionPdD,IDSoggetto idSoggetto, IDServizio idService,String nomeRegistro, boolean verificaEsistenzaServizioAzioneCorrelato, boolean throwAzioneNotFound)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
- return getInfoServizio(connectionPdD,false,false,idSoggetto,idService,nomeRegistro,verificaEsistenzaServizioAzioneCorrelato, throwAzioneNotFound);
- }
- /**
- * Si occupa di ritornare le informazioni sulle funzionalita' associate
- * ad un servizio correlato registrato nell'indice dei servizi di openspcoop. Il servizio, viene identificato
- * grazie ai fields 'tipoDestinatario','Destinatario','Servizio','TipoServizio' e 'Azione' impostati
- * all'interno del parametro <var>idService</var> di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * <p>
- * Il metodo si occupa di ritornare un oggetto {@link org.openspcoop2.protocol.sdk.Servizio}
- * impostando in esso le funzionalita' che sono riscontrate nel registro dei servizi
- * al servizio identificato da <var>idService</var>.
- *
- * @param idSoggetto Soggetto richiedente del servizio
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return l'oggetto di tipo {@link org.openspcoop2.protocol.sdk.Servizio}
- */
- protected Servizio getInfoServizioCorrelato(Connection connectionPdD,IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro, boolean throwAzioneNotFound)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
- return getInfoServizio(connectionPdD,true,false,idSoggetto,idService,nomeRegistro,false, throwAzioneNotFound);
- }
-
- /**
- * Ritorna l'informazione su di un servizio, in cui l'azione chiamata e' correlata.
- *
- * @param idSoggetto
- * @param idService
- * @param nomeRegistro
- * @return Servizio
- * @throws DriverRegistroServiziException
- * @throws DriverRegistroServiziNotFound
- * @throws DriverRegistroServiziAzioneNotFound
- */
- protected Servizio getInfoServizioAzioneCorrelata(Connection connectionPdD,IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro, boolean throwAzioneNotFound)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
- return getInfoServizio(connectionPdD,false,true,idSoggetto,idService,nomeRegistro,false, throwAzioneNotFound);
- }
- /**
- * Si occupa di ritornare le informazioni sulle funzionalita' associate
- * al servizio registrato nell'indice dei servizi di openspcoop. Il servizio, viene identificato
- * grazie ai fields 'tipoDestinatario','Destinatario','Servizio','TipoServizio' e 'Azione' impostati
- * all'interno del parametro <var>idService</var> di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * <p>
- * Il metodo si occupa di ritornare un oggetto {@link org.openspcoop2.protocol.sdk.Servizio}
- * impostando in esso le funzionalita' che sono riscontrate nel registro dei servizi
- * al servizio identificato da <var>idService</var>.
- *
- * @param servizioCorrelato true se il servizio e' un servizio correlato
- * @param idSoggetto Soggetto richiedente del servizio
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return l'oggetto di tipo {@link org.openspcoop2.core.id.IDServizio}
- */
- private Servizio getInfoServizio(Connection connectionPdD,boolean servizioCorrelato,boolean azioneCorrelata,IDSoggetto idSoggetto, IDServizio idService,
- String nomeRegistro, boolean verificaEsistenzaServizioAzioneCorrelato, boolean throwAzioneNotFound)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
- Servizio infoServizio = new Servizio();
- // ricerca servizio richiesto
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizio = null;
- servizio = this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD,nomeRegistro,idService);
- if(servizio == null){
- throw new DriverRegistroServiziNotFound("Servizio non definito");
- }
- TipologiaServizio tipologiaServizio = servizio.getTipologiaServizio();
- if(servizioCorrelato){
- if(!TipologiaServizio.CORRELATO.equals(tipologiaServizio)){
- throw new DriverRegistroServiziNotFound("Servizio ["+idService.toString()+"] (tipologia:"+tipologiaServizio+") non è di tipologia correlata");
- }
- }else{
- if(!TipologiaServizio.NORMALE.equals(tipologiaServizio)){
- throw new DriverRegistroServiziNotFound("Servizio ["+idService.toString()+"] (tipologia:"+tipologiaServizio+") è di tipologia normale");
- }
- }
- String azione = idService.getAzione();
- if(azioneCorrelata && (azione==null) ){
- throw new DriverRegistroServiziException("Azione obbligatoria in questa modalità di ricerca");
- }
- String uriAccordo = servizio.getAccordoServizioParteComune();
- if(uriAccordo == null){
- throw new DriverRegistroServiziException("Identificativo dell'API non definito nel servizio");
- }
- IDAccordo idAccordo = this.idAccordoFactory.getIDAccordoFromUri(uriAccordo);
- org.openspcoop2.core.registry.AccordoServizioParteComune as = this.registroServizi.getAccordoServizioParteComune(connectionPdD,nomeRegistro,idAccordo);
- if (as == null){
- throw new DriverRegistroServiziNotFound("API '"+uriAccordo+"' non trovata");
- }
- infoServizio.setIdAccordo(idAccordo);
- ServiceBinding serviceBinding = as.getServiceBinding();
- infoServizio.setServiceBinding(RegistroServiziUtils.convertToMessage(serviceBinding));
-
- infoServizio.setIDServizio(idService);
-
- if(ServiceBinding.SOAP.equals(serviceBinding)) {
- return this._getInfoServizioSOAP(idService, servizio,
- idAccordo, as, uriAccordo,
- azione, infoServizio, idSoggetto,
- verificaEsistenzaServizioAzioneCorrelato, servizioCorrelato, azioneCorrelata, nomeRegistro, connectionPdD, throwAzioneNotFound);
- }
- else {
- return this._getInfoServizioREST(as, uriAccordo, azione, infoServizio, throwAzioneNotFound);
- }
-
- }
-
- private Servizio _getInfoServizioREST(org.openspcoop2.core.registry.AccordoServizioParteComune as, String uriAccordo,
- String azione, Servizio infoServizio, boolean throwAzioneNotFound) throws DriverRegistroServiziAzioneNotFound {
-
- org.openspcoop2.core.registry.Resource resource = null;
- if(azione==null){
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("La richiesta effettuata non è associabile a nessuna risorsa definita nell'API "+uriAccordo);
- }
- }else{
- // Controllo esistenza azione
- boolean find = false;
- // search in accordo
- for(int i=0; i<as.sizeResourceList(); i++){
- if(azione.equals(as.getResource(i).getNome())){
- resource = as.getResource(i);
- find = true;
- break;
- }
- }
- if(find==false){
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("Risorsa '"+azione+"' non trovata nell'API "+uriAccordo);
- }
- }
- }
-
-
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- infoServizio.setCollaborazione(false);
- infoServizio.setConfermaRicezione(false);
- infoServizio.setOrdineConsegna(false);
- infoServizio.setCorrelato(false);
-
-
-
- // ----------- 1. Accordo di Servizio ------------------
- // profilo di collaborazione (default: oneway)
- if(as.getProfiloCollaborazione()!=null) {
- if(org.openspcoop2.core.registry.constants.ProfiloCollaborazione.ONEWAY.equals(as.getProfiloCollaborazione())) {
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- }
- else {
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.SINCRONO);
- }
- }else {
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.SINCRONO);
- }
- // ID-Collaborazione (default: false)
- if(as.getIdCollaborazione() == null)
- infoServizio.setCollaborazione(false);
- else if(as.getIdCollaborazione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(as.getIdCollaborazione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- else
- infoServizio.setCollaborazione(false);
- // ID-RiferimentoRichiesta (default: false)
- if(as.getIdRiferimentoRichiesta() == null)
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(as.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(as.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- else
- infoServizio.setIdRiferimentoRichiesta(false);
-
- // Consegna in Ordine (default: false)
- if(as.getConsegnaInOrdine() == null)
- infoServizio.setOrdineConsegna(false);
- else if(as.getConsegnaInOrdine().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(as.getConsegnaInOrdine().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- else
- infoServizio.setOrdineConsegna(false);
- // ConfermaRicezione (default: false)
- if(as.getConfermaRicezione() == null)
- infoServizio.setConfermaRicezione(false);
- else if(as.getConfermaRicezione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(as.getConfermaRicezione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- else
- infoServizio.setConfermaRicezione(false);
- // Filtro Duplicati (default: false)
- if(as.getFiltroDuplicati() == null)
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(as.getFiltroDuplicati().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(as.getFiltroDuplicati().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- else
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- // Costruzione scadenza
- if(as.getScadenza() != null){
- try{
- long minuti = Long.parseLong(as.getScadenza());
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
-
- // ---------- 2. overwrite con risorsa dell'accordo di servizio o del port-type (se definito) -----------------
- if(resource!=null){
- boolean ridefinisci = true;
- if(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT.equals(resource.getProfAzione())){
- ridefinisci = false;
- }
-
- if(ridefinisci){
-
- // ID-Collaborazione (default: false)
- StatoFunzionalita idCollaborazione = resource.getIdCollaborazione();
- if(idCollaborazione != null){
- if(idCollaborazione.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(idCollaborazione.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- }
-
- // ID-RiferimentoRichiesta (default: false)
- StatoFunzionalita idRiferimentoRichiesta = resource.getIdRiferimentoRichiesta();
- if(idRiferimentoRichiesta != null){
- if(idRiferimentoRichiesta.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(idRiferimentoRichiesta.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- }
-
- // Consegna in Ordine (default: false)
- StatoFunzionalita consegnaInOrdine = resource.getConsegnaInOrdine();
- if(consegnaInOrdine != null){
- if(consegnaInOrdine.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(consegnaInOrdine.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- }
-
- // ConfermaRicezione (default: false)
- StatoFunzionalita confermaRicezione = resource.getConfermaRicezione();
- if(confermaRicezione != null){
- if(confermaRicezione.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(confermaRicezione.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- }
-
- // Filtro Duplicati (default: false)
- StatoFunzionalita filtroDuplicati = resource.getFiltroDuplicati();
- if(filtroDuplicati != null){
- if(filtroDuplicati.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(filtroDuplicati.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- }
-
- // Costruzione scadenza
- String scadenza = resource.getScadenza();
- if(scadenza != null){
- try{
- long minuti = Long.parseLong(scadenza);
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
- }
- }
-
- return infoServizio;
- }
-
- private Servizio _getInfoServizioSOAP(IDServizio idService, org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizio,
- IDAccordo idAccordo, org.openspcoop2.core.registry.AccordoServizioParteComune as, String uriAccordo,
- String azione, Servizio infoServizio, IDSoggetto idSoggetto,
- boolean verificaEsistenzaServizioAzioneCorrelato, boolean servizioCorrelato,boolean azioneCorrelata, String nomeRegistro,
- Connection connectionPdD, boolean throwAzioneNotFound) throws DriverRegistroServiziPortTypeNotFound, DriverRegistroServiziAzioneNotFound, DriverRegistroServiziCorrelatoNotFound, DriverRegistroServiziNotFound {
-
- org.openspcoop2.core.registry.PortType pt = null;
- // search port type
- if (servizio.getPortType()!=null){
- for(int i=0; i<as.sizePortTypeList();i++){
- if(servizio.getPortType().equals(as.getPortType(i).getNome())){
- pt = as.getPortType(i);
- }
- }
- if(pt==null){
- throw new DriverRegistroServiziPortTypeNotFound("Servizio '"+servizio.getPortType()+"' non definito nell'API "+uriAccordo);
- }
- }
-
- org.openspcoop2.core.registry.Azione az = null;
- org.openspcoop2.core.registry.Operation ptAz = null;
- if(azione==null){
- // controllo possibilita di utilizzare il servizio senza azione
- if(pt!=null){
- // se e' definito un port-type non ha senso che si possa invocare il servizio (port-type) senza azione (operation).
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("La richiesta effettuata non è associabile a nessuna azione (servizio: "+pt.getNome() +") dell'API "+uriAccordo);
- }
- }else{
- if(as.getUtilizzoSenzaAzione()==false){
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("La richiesta effettuata non è associabile a nessuna azione dell'API "+uriAccordo+ " (invocazione senza la definizione di una azione non permessa)");
- }
- }
- }
- }else{
- // Controllo esistenza azione
- boolean find = false;
- if(pt!=null){
- // search in port-type
- for(int i=0; i<pt.sizeAzioneList(); i++){
- if(azione.equals(pt.getAzione(i).getNome())){
- ptAz = pt.getAzione(i);
- find = true;
- break;
- }
- }
- if(find==false){
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("Azione '"+azione+"' non trovata per il servizio ["+pt.getNome()+"] dell'API "+uriAccordo);
- }
- }
- }else{
- // search in accordo
- for(int i=0; i<as.sizeAzioneList(); i++){
- if(azione.equals(as.getAzione(i).getNome())){
- az = as.getAzione(i);
- find = true;
- break;
- }
- }
- if(find==false){
- if(throwAzioneNotFound) {
- throw new DriverRegistroServiziAzioneNotFound("Azione '"+azione+"' non trovata nell'API "+uriAccordo);
- }
- }
- }
- }
- // popolamento oggetto Servizio
- // 1. Accordo di Servizio
- // 2. overwrite con Port-type
- // 3. overwrite con azione dell'accordo di servizio o del port-type (se definito)
- // 4. overwrite con servizio
- // 5. overwrite con fruitore
-
- // ----------- 1. Accordo di Servizio ------------------
- // profilo di collaborazione (default: oneway)
- if(as.getProfiloCollaborazione() == null)
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- else if(as.getProfiloCollaborazione().equals(CostantiRegistroServizi.ONEWAY))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- else if(as.getProfiloCollaborazione().equals(CostantiRegistroServizi.SINCRONO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.SINCRONO);
- else if(as.getProfiloCollaborazione().equals(CostantiRegistroServizi.ASINCRONO_SIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
- else if(as.getProfiloCollaborazione().equals(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO);
- else
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- // ID-Collaborazione (default: false)
- if(as.getIdCollaborazione() == null)
- infoServizio.setCollaborazione(false);
- else if(as.getIdCollaborazione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(as.getIdCollaborazione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- else
- infoServizio.setCollaborazione(false);
- // ID-RiferimentoRichiesta (default: false)
- if(as.getIdRiferimentoRichiesta() == null)
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(as.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(as.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- else
- infoServizio.setIdRiferimentoRichiesta(false);
-
- // Consegna in Ordine (default: false)
- if(as.getConsegnaInOrdine() == null)
- infoServizio.setOrdineConsegna(false);
- else if(as.getConsegnaInOrdine().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(as.getConsegnaInOrdine().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- else
- infoServizio.setOrdineConsegna(false);
- // ConfermaRicezione (default: false)
- if(as.getConfermaRicezione() == null)
- infoServizio.setConfermaRicezione(false);
- else if(as.getConfermaRicezione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(as.getConfermaRicezione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- else
- infoServizio.setConfermaRicezione(false);
- // Filtro Duplicati (default: false)
- if(as.getFiltroDuplicati() == null)
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(as.getFiltroDuplicati().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(as.getFiltroDuplicati().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- else
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- // Costruzione scadenza
- if(as.getScadenza() != null){
- try{
- long minuti = Long.parseLong(as.getScadenza());
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
-
- // 2. ------------------ overwrite con Port-type --------------------
- if(pt!=null){
- boolean ridefinisci = true;
- if(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT.equals(pt.getProfiloPT())){
- ridefinisci = false;
- }
-
- if(ridefinisci){
-
- // Profilo di Collaborazione
- if(pt.getProfiloCollaborazione()!=null){
- if(pt.getProfiloCollaborazione().equals(CostantiRegistroServizi.ONEWAY))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- else if(pt.getProfiloCollaborazione().equals(CostantiRegistroServizi.SINCRONO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.SINCRONO);
- else if(pt.getProfiloCollaborazione().equals(CostantiRegistroServizi.ASINCRONO_SIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
- else if(pt.getProfiloCollaborazione().equals(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO);
- }
-
- // ID-Collaborazione (default: false)
- if(pt.getIdCollaborazione() != null){
- if(pt.getIdCollaborazione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(pt.getIdCollaborazione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- }
-
- // ID-RiferimentoRichiesta (default: false)
- if(pt.getIdRiferimentoRichiesta() != null){
- if(pt.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(pt.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- }
-
- // Consegna in Ordine (default: false)
- if(pt.getConsegnaInOrdine() != null){
- if(pt.getConsegnaInOrdine().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(pt.getConsegnaInOrdine().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- }
-
- // ConfermaRicezione (default: false)
- if(pt.getConfermaRicezione() != null){
- if(pt.getConfermaRicezione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(pt.getConfermaRicezione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- }
-
- // Filtro Duplicati (default: false)
- if(pt.getFiltroDuplicati() != null){
- if(pt.getFiltroDuplicati().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(pt.getFiltroDuplicati().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- }
-
- // Costruzione scadenza
- if(pt.getScadenza() != null){
- try{
- long minuti = Long.parseLong(pt.getScadenza());
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
- }
- }
-
-
-
- // ---------- 3. overwrite con azione dell'accordo di servizio o del port-type (se definito) -----------------
- if(az!=null || ptAz!=null){
- boolean ridefinisci = true;
- if(az!=null){
- if(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT.equals(az.getProfAzione())){
- ridefinisci = false;
- }
- }
- else{
- if(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT.equals(ptAz.getProfAzione())){
- ridefinisci = false;
- }
- }
-
- if(ridefinisci){
-
- // Profilo di Collaborazione
- ProfiloCollaborazione profilo = null;
- if(az!=null)
- profilo = az.getProfiloCollaborazione();
- else
- profilo = ptAz.getProfiloCollaborazione();
- if(profilo!=null){
- if(profilo.equals(CostantiRegistroServizi.ONEWAY))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ONEWAY);
- else if(profilo.equals(CostantiRegistroServizi.SINCRONO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.SINCRONO);
- else if(profilo.equals(CostantiRegistroServizi.ASINCRONO_SIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO);
- else if(profilo.equals(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO))
- infoServizio.setProfiloDiCollaborazione(ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO);
- }
-
- // ID-Collaborazione (default: false)
- StatoFunzionalita idCollaborazione = null;
- if(az!=null)
- idCollaborazione = az.getIdCollaborazione();
- else
- idCollaborazione = ptAz.getIdCollaborazione();
- if(idCollaborazione != null){
- if(idCollaborazione.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(idCollaborazione.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- }
-
- // ID-RiferimentoRichiesta (default: false)
- StatoFunzionalita idRiferimentoRichiesta = null;
- if(az!=null)
- idRiferimentoRichiesta = az.getIdRiferimentoRichiesta();
- else
- idRiferimentoRichiesta = ptAz.getIdRiferimentoRichiesta();
- if(idRiferimentoRichiesta != null){
- if(idRiferimentoRichiesta.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(idRiferimentoRichiesta.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- }
-
- // Consegna in Ordine (default: false)
- StatoFunzionalita consegnaInOrdine = null;
- if(az!=null)
- consegnaInOrdine = az.getConsegnaInOrdine();
- else
- consegnaInOrdine = ptAz.getConsegnaInOrdine();
- if(consegnaInOrdine != null){
- if(consegnaInOrdine.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(consegnaInOrdine.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- }
-
- // ConfermaRicezione (default: false)
- StatoFunzionalita confermaRicezione = null;
- if(az!=null)
- confermaRicezione = az.getConfermaRicezione();
- else
- confermaRicezione = ptAz.getConfermaRicezione();
- if(confermaRicezione != null){
- if(confermaRicezione.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(confermaRicezione.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- }
-
- // Filtro Duplicati (default: false)
- StatoFunzionalita filtroDuplicati = null;
- if(az!=null)
- filtroDuplicati = az.getFiltroDuplicati();
- else
- filtroDuplicati = ptAz.getFiltroDuplicati();
- if(filtroDuplicati != null){
- if(filtroDuplicati.equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(filtroDuplicati.equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- }
-
- // Costruzione scadenza
- String scadenza = null;
- if(az!=null)
- scadenza = az.getScadenza();
- else
- scadenza = ptAz.getScadenza();
- if(scadenza != null){
- try{
- long minuti = Long.parseLong(scadenza);
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
- }
- }
- // ------------- 4. overwrite con servizio ------------------
- // SERVIZIO (Sovrascrivo caratteristiche sia delle azioni che dell'accordo...)
- // ID-Collaborazione (default: false)
- if(servizio.getIdCollaborazione() != null){
- if(servizio.getIdCollaborazione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setCollaborazione(false);
- else if(servizio.getIdCollaborazione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setCollaborazione(true);
- }
- // ID-RiferimentoRichiesta (default: false)
- if(servizio.getIdRiferimentoRichiesta() != null){
- if(servizio.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setIdRiferimentoRichiesta(false);
- else if(servizio.getIdRiferimentoRichiesta().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setIdRiferimentoRichiesta(true);
- }
- // Consegna in Ordine (default: false)
- if(servizio.getConsegnaInOrdine() != null){
- if(servizio.getConsegnaInOrdine().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setOrdineConsegna(false);
- else if(servizio.getConsegnaInOrdine().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setOrdineConsegna(true);
- }
- // ConfermaRicezione (default: false)
- if(servizio.getConfermaRicezione() != null){
- if(servizio.getConfermaRicezione().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setConfermaRicezione(false);
- else if(servizio.getConfermaRicezione().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setConfermaRicezione(true);
- }
- // Filtro Duplicati (default: false)
- if(servizio.getFiltroDuplicati() != null){
- if(servizio.getFiltroDuplicati().equals(CostantiRegistroServizi.DISABILITATO))
- infoServizio.setInoltro(Inoltro.CON_DUPLICATI);
- else if(servizio.getFiltroDuplicati().equals(CostantiRegistroServizi.ABILITATO))
- infoServizio.setInoltro(Inoltro.SENZA_DUPLICATI);
- }
- // Costruzione scadenza
- if(servizio.getScadenza() != null){
- try{
- long minuti = Long.parseLong(servizio.getScadenza());
- Date nowDate = DateManager.getDate();
- long now = nowDate.getTime();
- now = now + (minuti*60*1000);
- nowDate.setTime(now);
- infoServizio.setScadenza(nowDate);
- infoServizio.setScadenzaMinuti(minuti);
- }catch(Exception e){
- // ignore
- }
- }
-
- if(verificaEsistenzaServizioAzioneCorrelato){
-
- // Profilo Asincrono Simmetrico e Servizio Correlato da inserire nella richiesta:
- // Si cerca un servizio correlato del soggetto fruitore (parametro idSoggetto)
- // che contenga il riferimento all'accordo di servizio 'nomeAccordo'.
- if(ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO.equals(infoServizio.getProfiloDiCollaborazione())){
-
- // verifica
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizioC = null;
- try{
- if(idSoggetto==null || idSoggetto.getTipo()==null || idSoggetto.getNome()==null){
- throw new Exception("Identita soggetto fruitore non fornita");
- }
- servizioC = this.registroServizi.getAccordoServizioParteSpecifica_ServizioCorrelato(connectionPdD,nomeRegistro,idSoggetto,idAccordo);
- }catch(Exception e){
- throw new DriverRegistroServiziCorrelatoNotFound("getInfoServizio, servizio correlato da associare al servizio asincrono simmetrico non trovato: "+e.getMessage());
- }
- if(servizioC==null){
- throw new DriverRegistroServiziCorrelatoNotFound("getInfoServizio, servizio correlato da associare al servizio asincrono simmetrico non trovato");
- }
- if(servizioC.getNome()==null || servizioC.getTipo()==null || servizioC.getVersione()==null){
- throw new DriverRegistroServiziCorrelatoNotFound("getInfoServizio, servizio correlato al servizio asincrono simmetrico non configurato correttamente (tipo e/o nome is null?)");
- }
-
- // ritorno valori per farli inserire nella richiesta
- infoServizio.setServizioCorrelato(servizioC.getNome());
- infoServizio.setTipoServizioCorrelato(servizioC.getTipo());
- infoServizio.setVersioneServizioCorrelato(servizioC.getVersione());
- }
-
- // Profilo Asincrono Asimmetrico
- // Il servizio correlato puo' essere un altro servizio correlato oppure un'azione correlata dello stesso servizio.
- if(ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO.equals(infoServizio.getProfiloDiCollaborazione())){
-
- // verifica
- // 1. cerco come servizio correlato
- DriverRegistroServiziCorrelatoNotFound eFound = null;
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizioC = null;
- try{
- servizioC = this.registroServizi.getAccordoServizioParteSpecifica_ServizioCorrelato(connectionPdD,nomeRegistro,idService.getSoggettoErogatore(),idAccordo);
- }catch(Exception e){
- eFound = new DriverRegistroServiziCorrelatoNotFound("servizio correlato da associare al servizio asincrono asimmetrico non trovato: "+e.getMessage());
- }
- if(eFound==null){
- if(servizioC==null){
- eFound = new DriverRegistroServiziCorrelatoNotFound("servizio correlato da associare al servizio asincrono asimmetrico non trovato");
- }else{
- if(servizioC.getNome()==null || servizioC.getTipo()==null || servizioC.getVersione()==null){
- throw new DriverRegistroServiziCorrelatoNotFound("servizio correlato al servizio asincrono asimmetrico non configurato correttamente (tipo e/o nome is null?)");
- }
- }
- }
- if(eFound!=null){
- // 2. cerco come azione correlata
-
- if(az!=null){
- boolean find = false;
- for(int i=0; i<as.sizeAzioneList();i++){
- Azione azCheck = as.getAzione(i);
- if(azCheck.getNome().equals(az.getNome())){
- continue;
- }
- if(azCheck.getCorrelata()!=null && azCheck.getCorrelata().equals(az.getNome())){
- find = true;
- break;
- }
- }
- if(!find){
- throw new DriverRegistroServiziCorrelatoNotFound("getInfoServizio, azione correlata o "+eFound.getMessage());
- }
- }
- else if(ptAz!=null && pt!=null){
- boolean find = false;
- for(int i=0; i<pt.sizeAzioneList();i++){
- Operation azCheck = pt.getAzione(i);
- if(azCheck.getNome().equals(ptAz.getNome())){
- continue;
- }
- if(azCheck.getCorrelata()!=null && azCheck.getCorrelata().equals(ptAz.getNome())){
- if(azCheck.getCorrelataServizio()==null || "".equals(azCheck.getCorrelataServizio()) || azCheck.getCorrelataServizio().equals(pt.getNome())){
- find = true;
- break;
- }
- }
-
- }
- if(!find){
- throw new DriverRegistroServiziCorrelatoNotFound("getInfoServizio, azione correlata o "+eFound.getMessage());
- }
- }
- else{
- throw eFound;
- }
- }
- }
- }
-
- // Controllo in caso di azione correlato su un servizio
- // che l'azione dell'accordo sia effettivamente correlata
- if( (!servizioCorrelato) && (azioneCorrelata) && ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO.equals(infoServizio.getProfiloDiCollaborazione())){
- String azionePT = null;
- String correlazione = null;
- if(ptAz!=null){
- azionePT = ptAz.getNome();
- correlazione = ptAz.getCorrelata();
- }else if(az!=null) {
- azionePT = az.getNome();
- correlazione = az.getCorrelata();
- }
-
- String uriServizio = null;
- try{
- uriServizio = IDServizioFactory.getInstance().getUriFromIDServizio(idService);
- }catch(Exception e){
- uriServizio = idService.toString(false);
- }
-
- if(correlazione==null){
- throw new DriverRegistroServiziNotFound("getInfoServizio, l'azione ["+azionePT+"] invocata con il servizio ["+uriServizio+"] non e' correlata ad un'altra azione dell'accordo");
- }else{
- // check azione correlata esista
- boolean find = false;
- if(pt!=null){
- for(int i=0; i<pt.sizeAzioneList();i++){
- if(correlazione.equals(pt.getAzione(i).getNome())){
- find = true;
- break;
- }
- }
- }else{
- for(int i=0; i<as.sizeAzioneList();i++){
- if(correlazione.equals(as.getAzione(i).getNome())){
- find = true;
- break;
- }
- }
- }
-
- if(!find){
- if(pt!=null){
- throw new DriverRegistroServiziNotFound("getInfoServizio, l'operation ["+correlazione+"] definita come correlata nell'operation ["+azionePT+"] non esiste ( port type["+pt.getNome()+"], servizio["+uriServizio+"] accordo di servizio["+uriAccordo+"]");
- }else{
- throw new DriverRegistroServiziNotFound("getInfoServizio, l'azione ["+correlazione+"] definita come correlata nell'azione ["+azionePT+"] non esiste ( servizio["+uriServizio+"] accordo di servizio["+uriAccordo+"]");
- }
- }
- }
- }
-
- return infoServizio;
- }
-
-
-
-
- protected Allegati getAllegati(Connection connectionPdD, IDServizio idASPS)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
-
- Allegati allegati = new Allegati();
-
- AccordoServizioParteSpecifica asps = this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD, null, idASPS, true);
- allegati.setAllegatiASParteSpecifica(asps.getAllegatoList());
- allegati.setSpecificheSemiformaliASParteSpecifica(asps.getSpecificaSemiformaleList());
- allegati.setSpecificheSicurezzaASParteSpecifica(asps.getSpecificaSicurezzaList());
- allegati.setSpecificheLivelloServizioASParteSpecifica(asps.getSpecificaLivelloServizioList());
-
- AccordoServizioParteComune aspc = this.registroServizi.getAccordoServizioParteComune(connectionPdD, null, this.idAccordoFactory.getIDAccordoFromUri(asps.getAccordoServizioParteComune()),true, false);
- allegati.setAllegatiASParteComune(aspc.getAllegatoList());
- allegati.setSpecificheSemiformaliASParteComune(aspc.getSpecificaSemiformaleList());
-
- return allegati;
-
- }
-
- protected Documento getAllegato(Connection connectionPdD, IDAccordo idAccordo, String nome, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllegato(connectionPdD, null, idAccordo, nome, requestInfo);
- }
- protected Documento getSpecificaSemiformale(Connection connectionPdD, IDAccordo idAccordo, TipiDocumentoSemiformale tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSpecificaSemiformale(connectionPdD, null, idAccordo, tipo, nome, requestInfo);
- }
-
- protected Documento getAllegato(Connection connectionPdD, IDServizio idASPS, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllegato(connectionPdD, null, idASPS, nome, requestInfo);
- }
- protected Documento getSpecificaSemiformale(Connection connectionPdD, IDServizio idASPS, TipiDocumentoSemiformale tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSpecificaSemiformale(connectionPdD, null, idASPS, tipo, nome, requestInfo);
- }
- protected Documento getSpecificaSicurezza(Connection connectionPdD, IDServizio idASPS, TipiDocumentoSicurezza tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSpecificaSicurezza(connectionPdD, null, idASPS, tipo, nome, requestInfo);
- }
- protected Documento getSpecificaLivelloServizio(Connection connectionPdD, IDServizio idASPS, TipiDocumentoLivelloServizio tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSpecificaLivelloServizio(connectionPdD, null, idASPS, tipo, nome, requestInfo);
- }
-
- /**
- * Si occupa di ritornare le informazioni sui wsdl di un servizio
- *
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @return l'oggetto di tipo {@link org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper} se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- protected org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper getWsdlAccordoServizio(Connection connectionPdD,IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchemaXSD, boolean readDatiRegistro)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getWsdlAccordoServizio(connectionPdD, null, idService,infoWsdlSource,buildSchemaXSD, readDatiRegistro);
- }
-
- /**
- * Si occupa di ritornare le informazioni REST di un servizio
- *
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @return l'oggetto di tipo {@link org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper} se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- protected org.openspcoop2.core.registry.rest.AccordoServizioWrapper getRestAccordoServizio(Connection connectionPdD,IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchemaXSD, boolean processIncludeForOpenApi, boolean readDatiRegistro)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getRestAccordoServizio(connectionPdD, null, idService,infoWsdlSource,buildSchemaXSD, processIncludeForOpenApi, readDatiRegistro);
- }
-
- /**
- * Si occupa di ritornare il tipo di service binding del servizio
- *
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @return l'oggetto di tipo {@link org.openspcoop2.core.registry.constants.ServiceBinding} se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- protected org.openspcoop2.core.registry.constants.ServiceBinding getServiceBinding(Connection connectionPdD,IDServizio idService)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getServiceBinding(connectionPdD, null, idService);
- }
- /**
- * Si occupa di verificare se un fruitore e' autorizzato ad invocare un servizio
- *
- * @param pdd Subject/Username della Porta di Dominio
- * @param servizioApplicativo Servizio Applicativo che richiede il processo
- * @param soggetto Soggetto con cui viene mappato il servizio applicativo
- * @param servizio Servizio invocato
- * @return true in caso di autorizzazione con successo, false altrimenti.
- * @throws DriverRegistroServiziServizioNotFound
- */
- protected EsitoAutorizzazioneRegistro isFruitoreServizioAutorizzato(Connection connectionPdD,String pdd,String servizioApplicativo,IDSoggetto soggetto,IDServizio servizio)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound, DriverRegistroServiziServizioNotFound{
- try{
- EsitoAutorizzazioneRegistro esitoAutorizzazione = new EsitoAutorizzazioneRegistro();
-
- if(soggetto==null){
- String error = "identita del chiamante non fornita (autenticazione non attiva?)";
- this.log.error("Identita del chiamante non fornita");
- esitoAutorizzazione.setServizioAutorizzato(false);
- esitoAutorizzazione.setDetails(error);
- return esitoAutorizzazione;
- }
-
- // client-auth soggetto
- Soggetto fruitoreSoggetto = this.registroServizi.getSoggetto(connectionPdD,null, soggetto);
- if(fruitoreSoggetto.getPortaDominio()!=null){
- PortaDominio portaDominio = this.registroServizi.getPortaDominio(connectionPdD,null, fruitoreSoggetto.getPortaDominio());
- StatoFunzionalita authMode = portaDominio.getClientAuth();
- if(authMode==null)
- authMode = CostantiRegistroServizi.DISABILITATO;
- if(CostantiRegistroServizi.ABILITATO.equals(authMode)){
- if(pdd==null){
- String error = "subject della porta di dominio che ha inviato la busta non presente (https attivo?, client-auth attivo?)";
- this.log.error("Autorizzazione ("+soggetto.toString()+" -> "+servizio.toString()+") fallita: "+error);
- esitoAutorizzazione.setServizioAutorizzato(false);
- esitoAutorizzazione.setDetails(error);
- return esitoAutorizzazione;
- }
- if(CertificateUtils.sslVerify(portaDominio.getSubject(), pdd, PrincipalType.SUBJECT, this.log)==false){
- //if(pdd.equals(portaDominio.getSubject())==false){
- String error = "subject estratto dal certificato client ["+pdd+"] diverso da quello registrato per la porta di dominio "+portaDominio.getNome()+" del mittente ["+portaDominio.getSubject()+"]";
- this.log.error("Autorizzazione ("+soggetto.toString()+" -> "+servizio.toString()+") fallita: "+error);
- esitoAutorizzazione.setServizioAutorizzato(false);
- esitoAutorizzazione.setDetails(error);
- return esitoAutorizzazione;
- }else{
- this.log.info("Autorizzazione ("+soggetto.toString()+" -> "+servizio.toString()+") effettuata: subject corrispondono");
- esitoAutorizzazione.setServizioAutorizzato(true);
- return esitoAutorizzazione;
- }
- }else if(CostantiRegistroServizi.DISABILITATO.equals(authMode)){
- // filtro anti spam per default disabilitato
- this.log.debug("Autorizzazione ("+soggetto.toString()+" -> "+servizio.toString()+") effettuata: client-auth disabilitato nella porta di dominio "+portaDominio.getNome());
- esitoAutorizzazione.setServizioAutorizzato(true);
- esitoAutorizzazione.setDetails("client-auth disabilitato nella porta di dominio "+portaDominio.getNome());
- return esitoAutorizzazione;
- }else{
- throw new Exception("Valore di client-auth presente nella porta di dominio "+portaDominio.getNome()+" non valido: "+authMode);
- }
- }else{
- // filtro anti spam per default disabilitato
- this.log.debug("Autorizzazione ("+soggetto.toString()+" -> "+servizio.toString()+") effettuata: client-auth non effettuata; il soggetto fruitore non è associato ad una porta di dominio");
- esitoAutorizzazione.setServizioAutorizzato(true);
- esitoAutorizzazione.setDetails("client-auth disabilitato");
- return esitoAutorizzazione;
- }
- }catch(DriverRegistroServiziNotFound e){
- throw e;
- }catch(DriverRegistroServiziServizioNotFound e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("Errore durante il controllo della fruizione di un servizio: "+e.getMessage(),e);
- }
- }
- /* ******** C O N N E T T O R I ******** */
- /**
- * Si occupa di ritornare il connettore <var>nomeConnettore</var> associato al soggetto identificato grazie al parametro
- * <var>idSoggetto</var> di tipo {@link org.openspcoop2.core.id.IDSoggetto}.
- * Il connettore viene ricercato come definizione esterna, al soggetto (xml nel registro direttamente)
- *
- * @param nomeConnettore Connettore richiesto.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return l'oggetto di tipo {@link org.openspcoop2.core.config.Connettore} se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- private org.openspcoop2.core.config.Connettore getConnettore(IDSoggetto idSoggetto, String nomeConnettore,String nomeRegistro) {
- org.openspcoop2.core.registry.RegistroServizi [] registri = this.registroServizi.getRegistriServiziXML();
- if(registri!=null){
- for(int l=0; l<registri.length; l++){
- for(int i=0; i< registri[l].sizeConnettoreList(); i++){
- if(nomeConnettore.equals(registri[l].getConnettore(i).getNome())){
- org.openspcoop2.core.registry.Connettore conn = registri[l].getConnettore(i);
- if(conn!=null && !CostantiConfigurazione.NONE.equals(conn.getTipo()))
- return conn.mappingIntoConnettoreConfigurazione();
- else
- return null;
- }
- }
- }
- }
- return null;
- }
- /**
- * Si occupa di ritornare il connettore <var>nomeConnettore</var> associato al servizio di un soggetto
- * identificato grazie al parametro
- * <var>idService</var> di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * (se non presente viene ritornato quello del soggetto erogatore del servizio)
- *
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @param nomeConnettore Connettore richiesto.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return l'oggetto di tipo {@link org.openspcoop2.core.config.Connettore} se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- private org.openspcoop2.core.config.Connettore getConnettore(IDServizio idService, String nomeConnettore,String nomeRegistro){
- org.openspcoop2.core.registry.RegistroServizi [] registri = this.registroServizi.getRegistriServiziXML();
- if(registri!=null){
- for(int l=0; l<registri.length; l++){
- for(int i=0; i< registri[l].sizeConnettoreList(); i++){
- if(nomeConnettore.equals(registri[l].getConnettore(i).getNome())){
- org.openspcoop2.core.registry.Connettore conn = registri[l].getConnettore(i);
- if(conn!=null && !CostantiConfigurazione.NONE.equals(conn.getTipo()))
- return conn.mappingIntoConnettoreConfigurazione();
- else
- return null;
- }
- }
- }
- }
- return null;
- }
- /**
- * Dato un oggetto di tipo {@link org.openspcoop2.core.id.IDServizio}, fornito con il parametro
- * <var>idService</var> cerca di trovare il connettore
- * associato al servizio, effettuando una ricerca gerarchica per:
- * <ul>
- * <li> Fruitore di un'Azione di un Servizio
- * <li> Azione di un Servizio
- * <li> Soggetto fruitore del Servizio
- * <li> Servizio
- * <li> Soggetto erogatore
- * </ul>
- * Quindi la ricerca scorre fintanto che non viene trovato un connettore,
- * cercandolo prima tra le informazioni associate al servizio,
- * fino a trovarlo obbligatoriamente nel soggetto erogatore.
- * Le informazioni sul connettore sono inserite in un oggetto di tipo {@link org.openspcoop2.core.config.Connettore}
- *
- * @param idSoggetto Soggetto richiedente del servizio
- * @param idService Identificativo del Servizio.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return il connettore ({@link org.openspcoop2.core.config.Connettore}) associato al servizio.
- */
- protected org.openspcoop2.core.config.Connettore getConnettore(Connection connectionPdD,IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- if(idService == null)
- throw new DriverRegistroServiziException("getConnettore error: Servizio non definito");
- // ricerca servizio richiesto (Prima come servizio normale)
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizio = null;
- try{
- servizio = this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD,nomeRegistro,idService);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- String uriServizio = null;
- try{
- uriServizio = IDServizioFactory.getInstance().getUriFromIDServizio(idService);
- }catch(Exception e){
- uriServizio = idService.toString(false);
- }
- if(servizio == null)
- throw new DriverRegistroServiziNotFound("getConnettore, Servizio ["+uriServizio+"] non definito nel registro");
- org.openspcoop2.core.config.Connettore connector = null;
- String azione = idService.getAzione();
- String nomeFruitore = idSoggetto.getNome();
- String tipoFruitore = idSoggetto.getTipo();
- //Cerco il connettore nel soggetto fruitore (e nelle azioni)
- if(connector == null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo())){
- for(int i=0; i<servizio.sizeFruitoreList(); i++){
- org.openspcoop2.core.registry.Fruitore f = servizio.getFruitore(i);
- if( (f.getTipo() != null) &&
- (f.getNome() != null) ){
- if( (f.getTipo().equals(tipoFruitore)) &&
- (f.getNome().equals(nomeFruitore)) ){
-
- for(int j=0; j<f.sizeConfigurazioneAzioneList();j++){
- boolean findAzione = false;
- ConfigurazioneServizioAzione conf = f.getConfigurazioneAzione(j);
- if(conf!=null && conf.sizeAzioneList()>0) {
- for (String azioneCheck : conf.getAzioneList()) {
- if(azione!=null && azione.equals(azioneCheck)){
- findAzione = true;
- }
- }
- }
- if(findAzione){
- // Uso il connettore dell'azione del fruitore
- if(conf.getConnettore()!=null){
- if (conf.getConnettore().getTipo() != null)
- connector = conf.getConnettore().mappingIntoConnettoreConfigurazione();
- else
- connector = getConnettore(idService,conf.getConnettore().getNome(),nomeRegistro);
- }
- break;
- }
- }
-
- if(connector!=null && !CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo()))
- break;
-
- if(f.getConnettore()!=null){
- if (f.getConnettore().getTipo() != null)
- connector = f.getConnettore().mappingIntoConnettoreConfigurazione();
- else
- connector = getConnettore(idService,f.getConnettore().getNome(),nomeRegistro);
- }
- break;
- }
- }
- }
- }
- //Cerco il connettore nell'azione del servizio
- if(connector == null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo())){
- if(azione != null){
- if(servizio.getConfigurazioneServizio()!=null){
- for(int i=0; i<servizio.getConfigurazioneServizio().sizeConfigurazioneAzioneList();i++){
- boolean findAzione = false;
- ConfigurazioneServizioAzione conf = servizio.getConfigurazioneServizio().getConfigurazioneAzione(i);
- if(conf!=null && conf.sizeAzioneList()>0) {
- for (String azioneCheck : conf.getAzioneList()) {
- if(azione.equals(azioneCheck)){
- findAzione = true;
- }
- }
- }
- if(findAzione){
- // Uso il connettore dell'azione
- if(conf.getConnettore()!=null){
- if (conf.getConnettore().getTipo() != null)
- connector = conf.getConnettore().mappingIntoConnettoreConfigurazione();
- else
- connector = getConnettore(idService,conf.getConnettore().getNome(),nomeRegistro);
- }
- break;
- }
- }
- }
- }
- }
-
- //Cerco il connettore nel servizio
- if (connector == null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo())) {
- if(servizio.getConfigurazioneServizio()!=null && servizio.getConfigurazioneServizio().getConnettore()!=null){
- if (servizio.getConfigurazioneServizio().getConnettore().getTipo() != null)
- connector = servizio.getConfigurazioneServizio().getConnettore().mappingIntoConnettoreConfigurazione();
- else
- connector = getConnettore(idService,servizio.getConfigurazioneServizio().getConnettore().getNome(),nomeRegistro);
- }
- }
- //Cerco il connettore nel soggetto erogatore
- if (connector == null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo())) {
- org.openspcoop2.core.registry.Soggetto soggettoErogatore = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro,idService.getSoggettoErogatore());
- if(soggettoErogatore.getConnettore()!=null){
- if(soggettoErogatore.getConnettore().getTipo()!=null)
- connector = soggettoErogatore.getConnettore().mappingIntoConnettoreConfigurazione();
- else
- connector = getConnettore(idService,soggettoErogatore.getConnettore().getNome(),nomeRegistro);
- }
- }
- if (connector == null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo()))
- throw new DriverRegistroServiziNotFound("Connettore non trovato per il Servizio ["+idService.toString()+"]");
- // imposto proprieta'
- connector.setNomeDestinatarioTrasmissioneBusta(idService.getSoggettoErogatore().getNome());
- connector.setTipoDestinatarioTrasmissioneBusta(idService.getSoggettoErogatore().getTipo());
-
- return connector;
- }
- /**
- * Dato un oggetto di tipo {@link org.openspcoop2.core.id.IDSoggetto}, fornito con il parametro
- * <var>idSoggetto</var> cerca di trovare il connettore
- * associato al soggetto.
- * Le informazioni sul connettore sono inserite in un oggetto di tipo {@link org.openspcoop2.core.config.Connettore}
- *
- * @param idSoggetto Identificativo del Soggetto.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return il connettore ({@link org.openspcoop2.core.config.Connettore}) associato al servizio.
- */
- protected org.openspcoop2.core.config.Connettore getConnettore(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- if(idSoggetto == null)
- throw new DriverRegistroServiziException("getConnettore error: Soggetto destinatario non definito");
- org.openspcoop2.core.config.Connettore connector = null;
- // utilizzo quello del soggetto
- org.openspcoop2.core.registry.Soggetto soggetto = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro,idSoggetto);
- if(soggetto.getConnettore()!=null){
- if(soggetto.getConnettore().getTipo()!=null)
- connector = soggetto.getConnettore().mappingIntoConnettoreConfigurazione(); // Connettore definito all'interno del servizio
- else
- connector = getConnettore(idSoggetto,soggetto.getConnettore().getNome(),nomeRegistro);
- }
- if(connector==null || CostantiRegistroServizi.DISABILITATO.equals(connector.getTipo()))
- throw new DriverRegistroServiziNotFound("Connettore non trovato per il Soggetto ["+idSoggetto.toString()+"]");
- // raccolgo proprieta'
- connector.setNomeDestinatarioTrasmissioneBusta(idSoggetto.getNome());
- connector.setTipoDestinatarioTrasmissioneBusta(idSoggetto.getTipo());
- return connector;
- }
-
- /* ******** VALIDAZIONE ******** */
- /**
- * Si occupa di ritornare il dominio associato ad un soggetto
- * identificato grazie al parametro
- * <var>idSoggetto</var> di tipo {@link org.openspcoop2.core.id.IDSoggetto}.
- * Se il soggetto non e' registrato nel registro dei servizi ritorna null.
- *
- * @param idSoggetto Identificatore del Soggetto di tipo {@link org.openspcoop2.core.id.IDSoggetto}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return il dominio associato al soggetto se la ricerca nel registro ha successo,
- * null altrimenti.
- */
- protected String getDominio(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro,IProtocolFactory<?> protocolFactory)
- throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- if(idSoggetto == null)
- throw new DriverRegistroServiziException("getDominio error: soggetto non definito");
- org.openspcoop2.core.registry.Soggetto soggetto = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro,idSoggetto);
- if(soggetto==null)
- throw new DriverRegistroServiziNotFound("getDominio, soggetto non definito nel registro");
- else{
- if(soggetto.getIdentificativoPorta() != null){
- return soggetto.getIdentificativoPorta();
- }else{
- try{
- return protocolFactory.createTraduttore().getIdentificativoPortaDefault(idSoggetto);
- }catch(Exception e){
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- }
- }
- }
-
- /**
- * Si occupa di ritornare l'implementazione associata ad un soggetto
- * identificata grazie al parametro
- * <var>idSoggetto</var> di tipo {@link org.openspcoop2.core.id.IDSoggetto}.
- * Se il soggetto non e' registrato nel registro dei servizi ritorna l'indicazione di una gestione 'Standard'.
- *
- * @param idSoggetto Identificatore del Soggetto di tipo {@link org.openspcoop2.core.id.IDSoggetto}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return il dominio associato al soggetto se la ricerca nel registro ha successo,
- * 'standard' altrimenti.
- */
- protected String getImplementazionePdD(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro)
- throws DriverRegistroServiziException{
- try{
- PortaDominio pdd = this.getPortaDominio(connectionPdD, idSoggetto, nomeRegistro, "getImplementazionePdD");
- //if(pdd!=null){
- if(pdd.getImplementazione()!=null)
- return pdd.getImplementazione();
- else
- return CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD;
- //}else{
- // return CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD;
- //}
- }catch(DriverRegistroServiziNotFound e){
- return CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD;
- }
- }
-
- protected String getIdPortaDominio(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro)
- throws DriverRegistroServiziException{
- try{
- PortaDominio pdd = this.getPortaDominio(connectionPdD, idSoggetto, nomeRegistro, "getImplementazionePdD");
- //if(pdd!=null){
- return pdd.getNome();
- //}else{
- // return null; // significa che non è associato alcuna porta di dominio al soggetto
- //}
- }catch(DriverRegistroServiziNotFound e){
- return null; // significa che non è associato alcuna porta di dominio al soggetto
- }
- }
-
- private PortaDominio getPortaDominio(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro,String nomeMetodo)
- throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- // NOTA: non ritornare mai oggetto null!
-
- if(idSoggetto == null)
- throw new DriverRegistroServiziException(nomeMetodo+" error: soggetto non definito");
- org.openspcoop2.core.registry.Soggetto soggetto = null;
- try{
- soggetto = this.registroServizi.getSoggetto(connectionPdD,nomeRegistro,idSoggetto);
- if(soggetto == null){
- throw new DriverRegistroServiziNotFound("Soggetto non esistente (null)");
- }
- }catch(DriverRegistroServiziNotFound e){
- this.log.debug(nomeMetodo+", soggetto ["+idSoggetto.toString()+"] non trovato: "+e.getMessage());
- throw e;
- }catch(DriverRegistroServiziException ex){
- this.log.error(nomeMetodo+", soggetto ["+idSoggetto.toString()+"] ricerca con errore: "+ex.getMessage(),ex);
- throw ex;
- }catch(Exception ex){
- this.log.error(nomeMetodo+", soggetto ["+idSoggetto.toString()+"] ricerca con errore generale: "+ex.getMessage(),ex);
- throw new DriverRegistroServiziException(nomeMetodo+", soggetto ["+idSoggetto.toString()+"] ricerca con errore generale: "+ex.getMessage(),ex);
- }
-
-
- if(soggetto.getPortaDominio()!=null){
- PortaDominio pdd = null;
- try{
- pdd = this.registroServizi.getPortaDominio(connectionPdD,nomeRegistro, soggetto.getPortaDominio());
- if(pdd == null){
- throw new DriverRegistroServiziNotFound("PdD non esistente (null)");
- }
- }catch(DriverRegistroServiziNotFound e){
- this.log.debug(nomeMetodo+", porta di domino ["+soggetto.getPortaDominio()+"] associata al soggetto ["+idSoggetto.toString()+"] non trovata: "+e.getMessage());
- throw new DriverRegistroServiziNotFound("Il soggetto ["+idSoggetto.toString()+"] è associato ad una Porta di Dominio ["+soggetto.getPortaDominio()+"] non registrata",e);
- }catch(DriverRegistroServiziException ex){
- this.log.error(nomeMetodo+", porta di domino ["+soggetto.getPortaDominio()+"] associata al soggetto ["+idSoggetto.toString()+"] ricerca con errore: "+ex.getMessage(),ex);
- throw ex;
- }catch(Exception ex){
- this.log.error(nomeMetodo+", porta di domino ["+soggetto.getPortaDominio()+"] associata al soggetto ["+idSoggetto.toString()+"] ricerca con errore generale: "+ex.getMessage(),ex);
- throw new DriverRegistroServiziException(nomeMetodo+", porta di domino ["+soggetto.getPortaDominio()+"] associata al soggetto ["+idSoggetto.toString()+"] ricerca con errore generale: "+ex.getMessage(),ex);
- }
- return pdd;
- }else{
- throw new DriverRegistroServiziNotFound("Il soggetto ["+idSoggetto.toString()+"] non è associato a nessuna Porta di Dominio");
- }
- }
- /**
- * Si occupa di ritornare il risultato della validazione di un servizio
- *
- * @param soggettoFruitore Fruitore del Servizio
- * @param idService Identificatore del Servizio di tipo {@link org.openspcoop2.core.id.IDServizio}.
- * @param nomeRegistro nome del registro su cui effettuare la ricerca (null per effettuare una ricerca su tutti i registri)
- * @return Risultato della Validazione
- */
- protected RisultatoValidazione validaServizio(Connection connectionPdD,IDSoggetto soggettoFruitore,IDServizio idService,String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziPortTypeNotFound{
- // 1. Check di esistenza del servizio
- RisultatoValidazione risultato = new RisultatoValidazione();
- if(idService == null){
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- // 2. Ricerca Servizio e Check di correlazione
- boolean correlato = false;
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizio = null;
- try{
- servizio = this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD,nomeRegistro,idService);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if(servizio==null){
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- else{
- correlato = TipologiaServizio.CORRELATO.equals(servizio.getTipologiaServizio());
- }
- risultato.setIsServizioCorrelato(correlato);
-
-
-
- // 3. Search accordo e portType
- String uriAccordo = servizio.getAccordoServizioParteComune();
- IDAccordo idAccordo = this.idAccordoFactory.getIDAccordoFromUri(uriAccordo);
- org.openspcoop2.core.registry.AccordoServizioParteComune as = null;
- try{
- as = this.registroServizi.getAccordoServizioParteComune(connectionPdD,nomeRegistro,idAccordo);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if (as == null){
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- ServiceBinding serviceBinding = as.getServiceBinding();
-
- if(ServiceBinding.REST.equals(serviceBinding)) {
-
- risultato.setAccessoSenzaAzione(false);
-
- for(int i=0; i<as.sizeResourceList(); i++) {
- risultato.addAzione(as.getResource(i).getNome());
- }
-
- risultato.setServizioRegistrato(true);
- return risultato;
-
- }
- else {
-
- org.openspcoop2.core.registry.PortType pt = null;
- // search port type
- if (servizio.getPortType()!=null){
- for(int i=0; i<as.sizePortTypeList();i++){
- if(servizio.getPortType().equals(as.getPortType(i).getNome())){
- pt = as.getPortType(i);
- }
- }
- if(pt==null){
- throw new DriverRegistroServiziPortTypeNotFound("Port-Type ["+servizio.getPortType()+"] associato al servizio non definito nell'accordo di servizio "+uriAccordo);
- }
- }
-
-
-
- // 4. Check di invocazione senza azione
- // controllo possibilita di utilizzare il servizio senza azione
- if(pt!=null){
- // se e' definito un port-type non ha senso che si possa invocare il servizio (port-type) senza azione (operation).
- risultato.setAccessoSenzaAzione(false);
- }else{
- risultato.setAccessoSenzaAzione(as.getUtilizzoSenzaAzione());
- }
-
-
-
- // 5. Ricerca nome del servizio correlato
- if(correlato == false && soggettoFruitore!=null){
-
- // Profilo di collaborazione
- ProfiloCollaborazione profiloCollaborazione = as.getProfiloCollaborazione();
-
- if(idService.getAzione()!=null){
- if(pt!=null){
- if(pt.getProfiloCollaborazione()!=null)
- profiloCollaborazione = pt.getProfiloCollaborazione();
- for(int k=0; k<pt.sizeAzioneList(); k++){
- if(idService.getAzione().equals(pt.getAzione(k).getNome())){
- if(pt.getAzione(k).getProfiloCollaborazione()!=null){
- profiloCollaborazione = pt.getAzione(k).getProfiloCollaborazione();
- }
- break;
- }
- }
- }else{
- for(int k=0; k<as.sizeAzioneList(); k++){
- if(idService.getAzione().equals(as.getAzione(k).getNome())){
- if(as.getAzione(k).getProfiloCollaborazione()!=null){
- profiloCollaborazione = as.getAzione(k).getProfiloCollaborazione();
- }
- break;
- }
- }
- }
- }
-
- // Profilo Asincrono Simmetrico:
- // Si cerca un servizio correlato del soggetto fruitore
- // che contenga il riferimento all'accordo di servizio 'nomeAccordo'.
- if(CostantiRegistroServizi.ASINCRONO_SIMMETRICO.equals(profiloCollaborazione)){
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizioC = null;
- try{
- servizioC = this.registroServizi.getAccordoServizioParteSpecifica_ServizioCorrelato(connectionPdD,nomeRegistro,soggettoFruitore,idAccordo);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if(servizioC!=null){
- if(servizioC.getNome()!=null && servizioC.getTipo()!=null && servizioC.getVersione()!=null){
- risultato.setTipoServizioCorrelato(servizioC.getTipo());
- risultato.setServizioCorrelato(servizioC.getNome());
- risultato.setVersioneServizioCorrelato(servizioC.getVersione());
- }
- }
- }
- // Profilo Asincrono Asimmetrico:
- // Viene prima cercata nell'accordo, se presente, un'azione correlata all'azione della richiesta.
- // Se non presente, o se l'azione della richiesta e' null allora si cerca un servizio correlato del soggetto erogatore (parametro idService.getSoggettoErogatore)
- // che contenga il riferimento all'accordo di servizio 'nomeAccordo' di questo servizio.
- else if(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO.equals(profiloCollaborazione)){
- // Azione
- String azioneRichiesta = idService.getAzione();
- String azioneCorrelata = null;
- if(azioneRichiesta!=null){
- if(pt!=null){
- for(int i=0; i<pt.sizeAzioneList(); i++){
- if( azioneRichiesta.equals(pt.getAzione(i).getCorrelata()) ){
- azioneCorrelata = pt.getAzione(i).getCorrelata();
- break;
- }
- }
- }else{
- for(int i=0; i<as.sizeAzioneList(); i++){
- if( azioneRichiesta.equals(as.getAzione(i).getCorrelata()) ){
- azioneCorrelata = as.getAzione(i).getCorrelata();
- break;
- }
- }
- }
- }
-
- if(azioneCorrelata!=null){
- risultato.setTipoServizioCorrelato(idService.getTipo());
- risultato.setServizioCorrelato(idService.getNome());
- risultato.setVersioneServizioCorrelato(idService.getVersione());
- risultato.setAzioneCorrelata(azioneCorrelata);
- }else{
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica servizioC = null;
- try{
- servizioC = this.registroServizi.getAccordoServizioParteSpecifica_ServizioCorrelato(connectionPdD,nomeRegistro,idService.getSoggettoErogatore(),idAccordo);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if(servizioC!=null){
- if(servizioC.getNome()!=null && servizioC.getTipo()!=null && servizioC.getVersione()!=null){
- risultato.setTipoServizioCorrelato(servizioC.getTipo());
- risultato.setServizioCorrelato(servizioC.getNome());
- risultato.setVersioneServizioCorrelato(servizioC.getVersione());
- }
- }
- }
- }
- }
-
-
- // 6. Azioni
- if(pt!=null){
- for(int i=0; i<pt.sizeAzioneList(); i++) {
- risultato.addAzione(pt.getAzione(i).getNome());
- }
- }else{
- for(int i=0; i<as.sizeAzioneList(); i++) {
- risultato.addAzione(as.getAzione(i).getNome());
- }
- }
-
-
-
- // 7. Tipologia di porta del soggetto fruitore
- /*
- Soggetto soggettoFruitore = null;
- try{
- soggettoFruitore = this.registroServizi.getSoggetto(nomeRegistro, soggettoFruitore);
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if (soggettoFruitore == null){
- this.log.debug("validaServizio, soggetto frutore ["+soggettoFruitore.toString()+"] non definito (o non registrato)");
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- if(soggettoFruitore.getPortaDominio()!=null){
- PortaDominio pdd = null;
- try{
- pdd = this.registroServizi.getPortaDominio(nomeRegistro, soggettoFruitore.getPortaDominio());
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if (pdd == null){
- this.log.debug("validaServizio, porta di domino ["+soggettoFruitore.getPortaDominio()+"] associata al soggetto fruitore ["+soggettoFruitore.toString()+"] non definita (o non registrata)");
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- if(pdd.getImplementazione()==null){
- risultato.setImplementazionePdDSoggettoFruitore(CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD);
- }else{
- risultato.setImplementazionePdDSoggettoFruitore(pdd.getImplementazione());
- }
- }else{
- risultato.setImplementazionePdDSoggettoFruitore(CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD);
- }
- */
-
-
-
- // 8. Tipologia di porta del soggetto erogatore
- /*
- Soggetto soggettoErogatore = null;
- try{
- soggettoErogatore = this.registroServizi.getSoggetto(nomeRegistro, idService.getSoggettoErogatore());
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if (soggettoErogatore == null){
- this.log.debug("validaServizio, soggetto erogatore ["+idService.getSoggettoErogatore().toString()+"] non definito (o non registrato)");
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- if(soggettoErogatore.getPortaDominio()!=null){
- PortaDominio pdd = null;
- try{
- pdd = this.registroServizi.getPortaDominio(nomeRegistro, soggettoErogatore.getPortaDominio());
- }catch(DriverRegistroServiziNotFound e){
- // ignore
- }
- if (pdd == null){
- this.log.debug("validaServizio, porta di domino ["+soggettoErogatore.getPortaDominio()+"] associata al soggetto erogatore ["+idService.getSoggettoErogatore().toString()+"] non definita (o non registrata)");
- risultato.setServizioRegistrato(false);
- return risultato;
- }
- if(pdd.getImplementazione()==null){
- risultato.setImplementazionePdDSoggettoErogatore(CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD);
- }else{
- risultato.setImplementazionePdDSoggettoErogatore(pdd.getImplementazione());
- }
- }else{
- risultato.setImplementazionePdDSoggettoErogatore(CostantiRegistroServizi.IMPLEMENTAZIONE_STANDARD);
- }
- */
-
- }
-
-
- risultato.setServizioRegistrato(true);
- return risultato;
- }
-
-
-
-
-
-
- /* ******** A U T E N T I C A Z I O N E S O G G E T T I ******** */
-
- public Soggetto getSoggettoByCredenzialiBasic(Connection connectionPdD,String username, String password, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggettoByCredenzialiBasic(connectionPdD, nomeRegistro, username, password, cryptConfig);
- }
-
- public Soggetto getSoggettoByCredenzialiApiKey(Connection connectionPdD,String username, String password, boolean appId, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggettoByCredenzialiApiKey(connectionPdD, nomeRegistro, username, password, appId, cryptConfig);
- }
-
- public Soggetto getSoggettoByCredenzialiSsl(Connection connectionPdD,String subject, String issuer, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggettoByCredenzialiSsl(connectionPdD, nomeRegistro, subject, issuer);
- }
-
- public Soggetto getSoggettoByCredenzialiSsl(Connection connectionPdD,CertificateInfo certificate, boolean strictVerifier, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggettoByCredenzialiSsl(connectionPdD, nomeRegistro, certificate, strictVerifier);
- }
-
- public Soggetto getSoggettoByCredenzialiPrincipal(Connection connectionPdD,String principal, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggettoByCredenzialiPrincipal(connectionPdD, nomeRegistro, principal);
- }
-
- public IDSoggetto getIdSoggettoByCredenzialiBasic(Connection connectionPdD,String username, String password, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return convertToId(this.registroServizi.getSoggettoByCredenzialiBasic(connectionPdD, nomeRegistro, username, password, cryptConfig));
- }
-
- public IDSoggetto getIdSoggettoByCredenzialiApiKey(Connection connectionPdD,String username, String password, boolean appId, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return convertToId(this.registroServizi.getSoggettoByCredenzialiApiKey(connectionPdD, nomeRegistro, username, password, appId, cryptConfig));
- }
-
- public IDSoggetto getIdSoggettoByCredenzialiSsl(Connection connectionPdD,String subject, String issuer, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return convertToId(this.registroServizi.getSoggettoByCredenzialiSsl(connectionPdD, nomeRegistro, subject, issuer));
- }
-
- public IDSoggetto getIdSoggettoByCredenzialiSsl(Connection connectionPdD,CertificateInfo certificate, boolean strictVerifier, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return convertToId(this.registroServizi.getSoggettoByCredenzialiSsl(connectionPdD, nomeRegistro, certificate, strictVerifier));
- }
-
- public IDSoggetto getIdSoggettoByCredenzialiPrincipal(Connection connectionPdD,String principal, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return convertToId(this.registroServizi.getSoggettoByCredenzialiPrincipal(connectionPdD, nomeRegistro, principal));
- }
-
- private IDSoggetto convertToId(Soggetto s){
- IDSoggetto id = new IDSoggetto(s.getTipo(), s.getNome(), s.getIdentificativoPorta());
- return id;
- }
-
-
-
- /* ******** P R O P R I E T A ******** */
-
- public Map<String, String> getProprietaConfigurazione(Soggetto soggetto) throws DriverRegistroServiziException {
- if (soggetto == null) {
- throw new DriverRegistroServiziException("Soggetto non fornito");
- } else if (soggetto.sizeProprietaList() <= 0) {
- return null;
- } else {
- Map<String, String> properties = new HashMap<>();
- for(int i = 0; i < soggetto.sizeProprietaList(); ++i) {
- Proprieta p = soggetto.getProprieta(i);
- properties.put(p.getNome(), p.getValore());
- }
- return properties;
- }
- }
-
-
-
-
-
- /* ******** C E R T I F I C A T I ******** */
-
- protected CertificateCheck checkCertificatoSoggetto(Connection connectionPdD,boolean useCache,
- long idSoggetto, int sogliaWarningGiorni,
- boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(useCache) {
- throw new DriverRegistroServiziException("Not Implemented");
- }
-
- Soggetto soggetto = null;
- for (IDriverRegistroServiziGet driver : this.registroServizi.getDriverRegistroServizi().values()) {
- if(driver instanceof DriverRegistroServiziDB) {
- DriverRegistroServiziDB driverDB = (DriverRegistroServiziDB) driver;
- soggetto = driverDB.getSoggetto(idSoggetto);
- break;
- }
- else {
- throw new DriverRegistroServiziException("Not Implemented with driver '"+driver.getClass().getName()+"'");
- }
- }
-
- return checkCertificatoSoggetto(soggetto,sogliaWarningGiorni,
- addCertificateDetails, separator, newLine,
- this.log);
- }
- protected CertificateCheck checkCertificatoSoggetto(Connection connectionPdD,boolean useCache,
- IDSoggetto idSoggetto, int sogliaWarningGiorni,
- boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- Soggetto soggetto = null;
- if(useCache) {
- this.registroServizi.getSoggetto(connectionPdD, null, idSoggetto);
- }
- else {
- for (IDriverRegistroServiziGet driver : this.registroServizi.getDriverRegistroServizi().values()) {
- soggetto = driver.getSoggetto(idSoggetto);
- }
- }
- return checkCertificatoSoggetto(soggetto, sogliaWarningGiorni,
- addCertificateDetails, separator, newLine,
- this.log);
- }
- public static CertificateCheck checkCertificatoSoggetto(Soggetto soggetto, int sogliaWarningGiorni,
- boolean addCertificateDetails, String separator, String newLine,
- Logger log) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(soggetto==null) {
- throw new DriverRegistroServiziException("Param soggetto is null");
- }
-
- if(soggetto.sizeCredenzialiList()<=0) {
- throw new DriverRegistroServiziException("Nessuna credenziale risulta associata al soggetto");
- }
- List<byte[]> certs = new ArrayList<byte[]>();
- List<Boolean> strictValidation = new ArrayList<Boolean>();
- for (int i = 0; i < soggetto.sizeCredenzialiList(); i++) {
- CredenzialiSoggetto c = soggetto.getCredenziali(i);
- if(!org.openspcoop2.core.registry.constants.CredenzialeTipo.SSL.equals(c.getTipo())) {
- throw new DriverRegistroServiziException("La credenziale ("+c.getTipo()+") associata al soggetto non è un certificato x509");
- }
- if(c.getCertificate()!=null) {
- certs.add(c.getCertificate());
- strictValidation.add(c.isCertificateStrictVerification());
- }
- }
- if(certs.isEmpty()) {
- throw new DriverRegistroServiziException("Nessun certificato risulta associata al soggetto");
- }
- else {
- try {
- return org.openspcoop2.protocol.registry.CertificateUtils.checkCertificateClient(certs, strictValidation, sogliaWarningGiorni,
- addCertificateDetails, separator, newLine,
- log);
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
- }
-
- protected CertificateCheck checkCertificatiConnettoreHttpsById(Connection connectionPdD,boolean useCache,
- long idConnettore, int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(useCache) {
- throw new DriverRegistroServiziException("Not Implemented");
- }
-
- Connettore connettore = null;
- for (IDriverRegistroServiziGet driver : this.registroServizi.getDriverRegistroServizi().values()) {
- if(driver instanceof DriverRegistroServiziDB) {
- DriverRegistroServiziDB driverDB = (DriverRegistroServiziDB) driver;
- connettore = driverDB.getConnettore(idConnettore);
- break;
- }
- else {
- throw new DriverRegistroServiziException("Not Implemented with driver '"+driver.getClass().getName()+"'");
- }
- }
-
- return checkCertificatiConnettoreHttpsById(connettore,
- sogliaWarningGiorni, byokUnwrapFactory,
- addCertificateDetails, separator, newLine,
- this.log);
- }
- public static final String ID_CONFIGURAZIONE_CONNETTORE_HTTPS = "Configurazione connettore https";
- public static CertificateCheck checkCertificatiConnettoreHttpsById(Connettore connettore,
- int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine,
- Logger log) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(connettore==null) {
- throw new DriverRegistroServiziException("Param connettore is null");
- }
-
- TipiConnettore tipo = TipiConnettore.toEnumFromName(connettore.getTipo());
- if( !TipiConnettore.HTTPS.equals(tipo)) {
- throw new DriverRegistroServiziException("Il connettore indicato non è di tipo https");
- }
-
- SSLConfig httpsProp = null;
- try {
- httpsProp = ConnettoreHTTPSProperties.readProperties(connettore.getProperties());
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- CertificateCheck check = null;
- boolean classpathSupported = false;
-
- String storeDetails = null; // per evitare duplicazione
-
- if(httpsProp.getKeyStoreLocation()!=null) {
- try {
- IBYOKUnwrapManager byokUnwrapManager = null;
- if(byokUnwrapFactory!=null && httpsProp.getKeyStoreBYOKPolicy()!=null) {
- byokUnwrapManager = byokUnwrapFactory.newInstance(httpsProp.getKeyStoreBYOKPolicy(),log);
- }
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkKeyStore(httpsProp.getKeyStoreLocation(), classpathSupported, httpsProp.getKeyStoreType(),
- httpsProp.getKeyStorePassword(),
- byokUnwrapManager,
- httpsProp.getKeyAlias(), httpsProp.getKeyPassword(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
-
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringKeyStore(httpsProp.getKeyStoreLocation(), httpsProp.getKeyStoreType(),
- httpsProp.getKeyStoreBYOKPolicy(),
- httpsProp.getKeyAlias(),
- separator, newLine);
- }
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
-
- if(check==null || StatoCheck.OK.equals(check.getStatoCheck())) {
- if(!httpsProp.isTrustAllCerts() && httpsProp.getTrustStoreLocation()!=null) {
- try {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkTrustStore(httpsProp.getTrustStoreLocation(), classpathSupported, httpsProp.getTrustStoreType(),
- httpsProp.getTrustStorePassword(), httpsProp.getTrustStoreCRLsLocation(), httpsProp.getTrustStoreOCSPPolicy(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
-
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringTrustStore(httpsProp.getTrustStoreLocation(), httpsProp.getTrustStoreType(),
- httpsProp.getTrustStoreCRLsLocation(), httpsProp.getTrustStoreOCSPPolicy(),
- separator, newLine);
- }
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
- }
-
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- String id = ID_CONFIGURAZIONE_CONNETTORE_HTTPS;
- if(addCertificateDetails && storeDetails!=null) {
- id = id + newLine + storeDetails;
- }
- check.setConfigurationId(id);
- }
-
- if(check==null) {
- // connettore https con truststore 'all' senza client autentication
- check = new CertificateCheck();
- check.setStatoCheck(StatoCheck.OK);
- }
-
- return check;
- }
-
- protected CertificateCheck checkCertificatiModIErogazioneById(Connection connectionPdD,boolean useCache,
- long idAsps, int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(connectionPdD!=null) {
- // nop
- }
-
- if(useCache) {
- throw new DriverRegistroServiziException("Not Implemented");
- }
-
- AccordoServizioParteSpecifica asps = null;
- AccordoServizioParteComune api = null;
- for (IDriverRegistroServiziGet driver : this.registroServizi.getDriverRegistroServizi().values()) {
- if(driver instanceof DriverRegistroServiziDB) {
- DriverRegistroServiziDB driverDB = (DriverRegistroServiziDB) driver;
- asps = driverDB.getAccordoServizioParteSpecifica(idAsps);
- IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(asps.getAccordoServizioParteComune());
- api = driverDB.getAccordoServizioParteComune(idAccordo);
- break;
- }
- else {
- throw new DriverRegistroServiziException("Not Implemented with driver '"+driver.getClass().getName()+"'");
- }
- }
-
- return checkCertificatiModIErogazioneById(api,asps,
- sogliaWarningGiorni, byokUnwrapFactory,
- addCertificateDetails, separator, newLine,
- this.log);
- }
- public static CertificateCheck checkCertificatiModIErogazioneById(AccordoServizioParteComune api, AccordoServizioParteSpecifica asps,
- int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine,
- Logger log) throws DriverRegistroServiziException {
-
- if(asps==null) {
- throw new DriverRegistroServiziException("Param asps is null");
- }
-
- boolean modi = asps.getTipoSoggettoErogatore().equals(CostantiLabel.MODIPA_PROTOCOL_NAME);
- if(!modi) {
- throw new DriverRegistroServiziException("Il profilo di interoperabilità non è "+CostantiLabel.MODIPA_PROTOCOL_LABEL);
- }
-
- KeystoreParams keystoreParams = null;
- // il keystore viene utilizzato se c'è la gestione risposta.
- boolean sicurezzaRisposta = false;
- if(ModISecurityUtils.isSicurezzaMessaggioRequired(api, asps.getPortType())) {
- sicurezzaRisposta = ModISecurityUtils.isProfiloSicurezzaMessaggioApplicabileRisposta(api, asps.getPortType(), true);
- }
- if(sicurezzaRisposta) {
- try {
- keystoreParams = ModIUtils.getKeyStoreParams(asps.getProtocolPropertyList(), false);
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- }
-
- KeystoreParams truststoreParams = null;
- try {
- truststoreParams = ModIUtils.getTrustStoreParams(asps.getProtocolPropertyList());
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- KeystoreParams truststoreSslParams = null;
- try {
- truststoreSslParams = ModIUtils.getTrustStoreSSLParams(asps.getProtocolPropertyList());
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- List<RemoteStoreConfig> trustStoreRemoteConfig = null;
- try {
- trustStoreRemoteConfig = ModIUtils.getRemoteStoreConfig();
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
-
- return _checkStore(keystoreParams, byokUnwrapFactory,
- truststoreParams,
- truststoreSslParams,
- sogliaWarningGiorni,
- addCertificateDetails, separator, newLine,
- log,
- trustStoreRemoteConfig);
- }
-
- protected CertificateCheck checkCertificatiModIFruizioneById(Connection connectionPdD,boolean useCache,
- long idFruitore,
- int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
-
- if(connectionPdD!=null) {
- // nop
- }
-
- if(useCache) {
- throw new DriverRegistroServiziException("Not Implemented");
- }
-
- AccordoServizioParteComune api = null;
- AccordoServizioParteSpecifica asps = null;
- Fruitore fruitore = null;
- for (IDriverRegistroServiziGet driver : this.registroServizi.getDriverRegistroServizi().values()) {
- if(driver instanceof DriverRegistroServiziDB) {
- DriverRegistroServiziDB driverDB = (DriverRegistroServiziDB) driver;
- fruitore = driverDB.getServizioFruitore(idFruitore);
- asps = driverDB.getAccordoServizioParteSpecifica(fruitore.getIdServizio());
- IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(asps.getAccordoServizioParteComune());
- api = driverDB.getAccordoServizioParteComune(idAccordo);
- break;
- }
- else {
- throw new DriverRegistroServiziException("Not Implemented with driver '"+driver.getClass().getName()+"'");
- }
- }
- if(fruitore==null) {
- throw new DriverRegistroServiziNotFound("Fruitore con id '"+idFruitore+"' non trovato");
- }
-
- return checkCertificatiModIFruizioneById(api, asps, fruitore,
- sogliaWarningGiorni, byokUnwrapFactory,
- addCertificateDetails, separator, newLine,
- this.log);
- }
- public static CertificateCheck checkCertificatiModIFruizioneById(AccordoServizioParteComune api, AccordoServizioParteSpecifica asps, Fruitore fruitore,
- int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
- boolean addCertificateDetails, String separator, String newLine,
- Logger log) throws DriverRegistroServiziException {
-
- boolean modi = fruitore.getTipo().equals(CostantiLabel.MODIPA_PROTOCOL_NAME);
- if(!modi) {
- throw new DriverRegistroServiziException("Il profilo di interoperabilità non è "+CostantiLabel.MODIPA_PROTOCOL_LABEL);
- }
-
- KeystoreParams keystoreParams = null;
- try {
- keystoreParams = ModIUtils.getKeyStoreParams(fruitore.getProtocolPropertyList(), true);
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
-
- KeystoreParams truststoreParams = null;
- KeystoreParams truststoreSslParams = null;
- List<RemoteStoreConfig> trustStoreRemoteConfig = null;
- // il truststore viene utilizzato se c'è la gestione risposta.
- boolean sicurezzaRisposta = false;
- if(ModISecurityUtils.isSicurezzaMessaggioRequired(api, asps.getPortType())) {
- sicurezzaRisposta = ModISecurityUtils.isProfiloSicurezzaMessaggioApplicabileRisposta(api, asps.getPortType(), true);
- }
- if(sicurezzaRisposta) {
- try {
- truststoreParams = ModIUtils.getTrustStoreParams(fruitore.getProtocolPropertyList());
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- try {
- truststoreSslParams = ModIUtils.getTrustStoreSSLParams(fruitore.getProtocolPropertyList());
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- try {
- trustStoreRemoteConfig = ModIUtils.getRemoteStoreConfig();
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- }
-
- if(keystoreParams==null && !sicurezzaRisposta) {
- // non ci sono certificati da controllare
- CertificateCheck check = new CertificateCheck();
- check.setStatoCheck(StatoCheck.OK);
- return check;
- }
-
- return _checkStore(keystoreParams, byokUnwrapFactory,
- truststoreParams,
- truststoreSslParams,
- sogliaWarningGiorni,
- addCertificateDetails, separator, newLine,
- log,
- trustStoreRemoteConfig);
- }
-
- public static final String ID_CONFIGURAZIONE_FIRMA_MODI = "Configurazione della firma "+CostantiLabel.MODIPA_PROTOCOL_LABEL;
- private static CertificateCheck _checkStore(KeystoreParams keystoreParams, IBYOKUnwrapFactory byokUnwrapFactory,
- KeystoreParams truststoreParams,
- KeystoreParams truststoreSslParams,
- int sogliaWarningGiorni,
- boolean addCertificateDetails, String separator, String newLine,
- Logger log,
- List<RemoteStoreConfig> trustStoreRemoteConfig) throws DriverRegistroServiziException {
-
- if(keystoreParams==null && truststoreParams==null && truststoreSslParams==null) {
- throw new DriverRegistroServiziException("Non risulta alcun keystore ridefinito, da utilizzare per la gestione della firma "+CostantiLabel.MODIPA_PROTOCOL_LABEL);
- }
-
- CertificateCheck check = null;
- boolean classpathSupported = false;
-
- String storeDetails = null; // per evitare duplicazione
-
- if(keystoreParams!=null) {
- try {
- if(CostantiDB.KEYSTORE_TYPE_KEY_PAIR.equalsIgnoreCase(keystoreParams.getType())) {
- IBYOKUnwrapManager byokUnwrapManager = null;
- if(byokUnwrapFactory!=null && keystoreParams.getByokPolicy()!=null) {
- byokUnwrapManager = byokUnwrapFactory.newInstance(keystoreParams.getByokPolicy(),log);
- }
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkKeyPair(classpathSupported, keystoreParams.getPath(), keystoreParams.getKeyPairPublicKeyPath(), keystoreParams.getKeyPassword(), keystoreParams.getKeyPairAlgorithm(),
- byokUnwrapManager,
- false, //addCertificateDetails,
- separator, newLine);
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringKeyPair(keystoreParams,
- separator, newLine);
- }
- }
- else if(CostantiDB.KEYSTORE_TYPE_PUBLIC_KEY.equalsIgnoreCase(keystoreParams.getType())) {
- throw new DriverConfigurazioneException("Nella configurazione ModI viene utilizzato un keystore "+CostantiLabel.KEYSTORE_TYPE_PUBLIC_KEY+" non compatibile la firma dei messaggi");
- }
- else if(CostantiDB.KEYSTORE_TYPE_JWK.equalsIgnoreCase(keystoreParams.getType())) {
- IBYOKUnwrapManager byokUnwrapManager = null;
- if(byokUnwrapFactory!=null && keystoreParams.getByokPolicy()!=null) {
- byokUnwrapManager = byokUnwrapFactory.newInstance(keystoreParams.getByokPolicy(),log);
- }
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkKeystoreJWKs(classpathSupported, keystoreParams.getPath(), keystoreParams.getKeyAlias(),
- byokUnwrapManager,
- false, //addCertificateDetails,
- separator, newLine);
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringKeystoreJWKs(keystoreParams,
- separator, newLine);
- }
- }
- else {
- IBYOKUnwrapManager byokUnwrapManager = null;
- if(byokUnwrapFactory!=null && keystoreParams.getByokPolicy()!=null) {
- byokUnwrapManager = byokUnwrapFactory.newInstance(keystoreParams.getByokPolicy(),log);
- }
- if(keystoreParams.getStore()!=null) {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkKeyStore(CostantiLabel.STORE_CARICATO_BASEDATI, keystoreParams.getStore(), keystoreParams.getType(), keystoreParams.getPassword(),
- byokUnwrapManager,
- keystoreParams.getKeyAlias(), keystoreParams.getKeyPassword(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
- }
- else {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkKeyStore(keystoreParams.getPath(), classpathSupported, keystoreParams.getType(), keystoreParams.getPassword(),
- byokUnwrapManager,
- keystoreParams.getKeyAlias(), keystoreParams.getKeyPassword(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
- }
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringKeyStore(keystoreParams, separator, newLine);
- }
- }
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
-
- if(check==null || StatoCheck.OK.equals(check.getStatoCheck())) {
- if(truststoreParams!=null) {
- try {
- boolean isRemoteStore = false;
- if(trustStoreRemoteConfig!=null && !trustStoreRemoteConfig.isEmpty()) {
- for (RemoteStoreConfig remoteStoreConfig : trustStoreRemoteConfig) {
- if(remoteStoreConfig!=null && remoteStoreConfig.getStoreName()!=null && remoteStoreConfig.getStoreName().equals(truststoreParams.getType())) {
- isRemoteStore = true;
- break;
- }
- }
- }
-
- if(isRemoteStore) {
- // nop; non posso effettuare verifiche
- check = new CertificateCheck();
- check.setStatoCheck(StatoCheck.OK);
- }
- else if(CostantiDB.KEYSTORE_TYPE_KEY_PAIR.equalsIgnoreCase(truststoreParams.getType())) {
- throw new DriverConfigurazioneException("Nella configurazione ModI viene utilizzato un keystore "+CostantiLabel.KEYSTORE_TYPE_KEY_PAIR+" non compatibile la validazione della firma dei messaggi");
- }
- else if(CostantiDB.KEYSTORE_TYPE_PUBLIC_KEY.equalsIgnoreCase(truststoreParams.getType())) {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkPublicKey(classpathSupported, truststoreParams.getPath(), truststoreParams.getKeyPairAlgorithm(),
- false, //addCertificateDetails,
- separator, newLine);
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringPublicKey(truststoreParams,
- separator, newLine);
- }
- }
- else if(CostantiDB.KEYSTORE_TYPE_JWK.equalsIgnoreCase(truststoreParams.getType())) {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkTruststoreJWKs(classpathSupported, truststoreParams.getPath(), truststoreParams.getKeyAlias(),
- false, //addCertificateDetails,
- separator, newLine);
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringKeystoreJWKs(truststoreParams,
- separator, newLine);
- }
- }
- else {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkTrustStore(truststoreParams.getPath(), classpathSupported, truststoreParams.getType(),
- truststoreParams.getPassword(), truststoreParams.getCrls(), truststoreParams.getOcspPolicy(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringTrustStore(truststoreParams, separator, newLine);
- }
- }
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
- }
-
- if(check==null || StatoCheck.OK.equals(check.getStatoCheck())) {
- if(truststoreSslParams!=null) {
- try {
- check = org.openspcoop2.protocol.registry.CertificateUtils.checkTrustStore(truststoreSslParams.getPath(), classpathSupported, truststoreSslParams.getType(),
- truststoreSslParams.getPassword(), truststoreSslParams.getCrls(), truststoreSslParams.getOcspPolicy(),
- sogliaWarningGiorni,
- false, //addCertificateDetails,
- separator, newLine,
- log);
-
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- storeDetails = org.openspcoop2.protocol.registry.CertificateUtils.toStringTrustStore(truststoreSslParams, separator, newLine);
- }
- }catch(Throwable t) {
- throw new DriverRegistroServiziException(t.getMessage(),t);
- }
- }
- }
-
- if(check!=null && !StatoCheck.OK.equals(check.getStatoCheck())) {
- String id = ID_CONFIGURAZIONE_FIRMA_MODI;
- if(addCertificateDetails && storeDetails!=null) {
- id = id + newLine + storeDetails;
- }
- check.setConfigurationId(id);
- }
-
- return check;
- }
-
-
-
-
- /* ******** R I C E R C A E L E M E N T I P R I M I T I V I ******** */
-
- public PortaDominio getPortaDominio(Connection connectionPdD,String nome,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getPortaDominio(connectionPdD, nomeRegistro, nome);
- }
-
- public Ruolo getRuolo(Connection connectionPdD,String nome,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getRuolo(connectionPdD, nomeRegistro, nome);
- }
-
- public Scope getScope(Connection connectionPdD,String nome,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getScope(connectionPdD, nomeRegistro, nome);
- }
- public Soggetto getSoggetto(Connection connectionPdD,IDSoggetto idSoggetto,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getSoggetto(connectionPdD, nomeRegistro, idSoggetto);
- }
-
- public AccordoServizioParteComune getAccordoServizioParteComune(Connection connectionPdD,IDAccordo idAccordo,Boolean readContenutiAllegati,Boolean readDatiRegistro,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAccordoServizioParteComune(connectionPdD, nomeRegistro, idAccordo, readContenutiAllegati, readDatiRegistro);
- }
-
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(Connection connectionPdD,IDServizio idServizio,Boolean readContenutiAllegati,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAccordoServizioParteSpecifica(connectionPdD, nomeRegistro, idServizio, readContenutiAllegati);
- }
-
- public AccordoCooperazione getAccordoCooperazione(Connection connectionPdD,IDAccordoCooperazione idAccordoCooperazione,Boolean readContenutiAllegati,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAccordoCooperazione(connectionPdD, nomeRegistro, idAccordoCooperazione, readContenutiAllegati);
- }
-
-
-
- /* ******** R I C E R C A I D E L E M E N T I P R I M I T I V I ******** */
-
- public List<String> getAllIdPorteDominio(Connection connectionPdD,FiltroRicerca filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdPorteDominio(connectionPdD, nomeRegistro, filtroRicerca);
- }
- public List<IDGruppo> getAllIdGruppi(Connection connectionPdD,FiltroRicercaGruppi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdGruppi(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDRuolo> getAllIdRuoli(Connection connectionPdD,FiltroRicercaRuoli filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdRuoli(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDScope> getAllIdScope(Connection connectionPdD,FiltroRicercaScope filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdScope(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDSoggetto> getAllIdSoggetti(Connection connectionPdD,FiltroRicercaSoggetti filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdSoggetti(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDAccordoCooperazione> getAllIdAccordiCooperazione(Connection connectionPdD,FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdAccordiCooperazione(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDAccordo> getAllIdAccordiServizioParteComune(Connection connectionPdD,FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdAccordiServizioParteComune(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDPortType> getAllIdPortType(Connection connectionPdD,FiltroRicercaPortTypes filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdPortType(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDPortTypeAzione> getAllIdAzionePortType(Connection connectionPdD,FiltroRicercaOperations filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdAzionePortType(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDAccordoAzione> getAllIdAzioneAccordo(Connection connectionPdD,FiltroRicercaAzioni filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdAzioneAccordo(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDResource> getAllIdResource(Connection connectionPdD,FiltroRicercaResources filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdResource(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDServizio> getAllIdServizi(Connection connectionPdD,FiltroRicercaServizi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdServizi(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
- public List<IDFruizione> getAllIdFruizioniServizio(Connection connectionPdD,FiltroRicercaFruizioniServizio filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
- return this.registroServizi.getAllIdFruizioniServizio(connectionPdD, nomeRegistro, filtroRicerca);
- }
-
-
-
-
-
- /* ******** R E P O S I T O R Y O G G E T T I G E N E R I C I ******** */
-
- public Serializable getGenericObject(String keyObject) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.getGenericObject(keyObject);
- }
-
- public Serializable pushGenericObject(String keyObject, Serializable object) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- return this.registroServizi.pushGenericObject(keyObject, object);
- }
- }