GestoreCacheCleaner.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.pdd.core.cache;
- import java.sql.Connection;
- import java.util.ArrayList;
- import java.util.List;
- import org.openspcoop2.core.config.GenericProperties;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
- import org.openspcoop2.core.config.ServizioApplicativo;
- import org.openspcoop2.core.config.constants.CostantiConfigurazione;
- import org.openspcoop2.core.config.driver.IDriverConfigurazioneGet;
- import org.openspcoop2.core.config.driver.db.DriverConfigurazioneDB;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDAccordoCooperazione;
- import org.openspcoop2.core.id.IDConnettore;
- import org.openspcoop2.core.id.IDGenericProperties;
- import org.openspcoop2.core.id.IDPortaApplicativa;
- import org.openspcoop2.core.id.IDPortaDelegata;
- import org.openspcoop2.core.id.IDRuolo;
- import org.openspcoop2.core.id.IDScope;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDServizioApplicativo;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.mapping.DBMappingUtils;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Fruitore;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.Scope;
- import org.openspcoop2.core.registry.Soggetto;
- import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
- 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.db.DriverRegistroServiziDB;
- import org.openspcoop2.pdd.config.ConfigurazionePdDReader;
- import org.openspcoop2.pdd.core.GestoreRichieste;
- import org.openspcoop2.pdd.core.autenticazione.GestoreAutenticazione;
- import org.openspcoop2.pdd.core.autorizzazione.GestoreAutorizzazione;
- import org.openspcoop2.pdd.core.behaviour.built_in.load_balance.GestoreLoadBalancerCaching;
- import org.openspcoop2.pdd.core.token.GestoreToken;
- import org.openspcoop2.protocol.registry.RegistroServiziReader;
- /**
- * GestoreCacheCleaner
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class GestoreCacheCleaner {
-
- private GestoreCacheCleaner() {}
- private static List<ICacheCleaner> listCacheCleaner = new ArrayList<>();
- private static DriverRegistroServiziDB driverRegistroDB = null;
- private static DriverConfigurazioneDB driverConfigDB = null;
-
- public static void initialize() throws Exception {
-
- if(GestoreRichieste.isCacheAbilitata()) {
- listCacheCleaner.add(new GestoreRichiesteCacheCleaner());
- }
- if(RegistroServiziReader.isCacheAbilitata()) {
- listCacheCleaner.add(new RegistroServiziCacheCleaner());
- }
- if(ConfigurazionePdDReader.isCacheAbilitata()) {
- listCacheCleaner.add(new ConfigurazioneCacheCleaner());
- }
- if(GestoreAutenticazione.isCacheAbilitata()) {
- listCacheCleaner.add(new AutenticazioneCacheCleaner());
- }
- if(GestoreAutorizzazione.isCacheAbilitata()) {
- listCacheCleaner.add(new AutorizzazioneCacheCleaner());
- }
- if(GestoreToken.isGestioneTokenCacheAbilitata()) {
- listCacheCleaner.add(new GestoreTokenCacheCleaner());
- }
- if(GestoreToken.isAttributeAuthorityCacheAbilitata()) {
- listCacheCleaner.add(new AttributeAuthorityCacheCleaner());
- }
- if(GestoreLoadBalancerCaching.isCacheAbilitata()) {
- listCacheCleaner.add(new GestoreLoadBalancerCacheCleaner());
- }
-
- for (IDriverRegistroServiziGet driver : RegistroServiziReader.getDriverRegistroServizi().values()) {
- if(driver instanceof DriverRegistroServiziDB) {
- driverRegistroDB = (DriverRegistroServiziDB) driver;
- break;
- }
- }
-
- IDriverConfigurazioneGet driver = ConfigurazionePdDReader.getDriverConfigurazionePdD();
- if(driver instanceof DriverConfigurazioneDB) {
- driverConfigDB = (DriverConfigurazioneDB) driver;
- }
-
- }
-
- public static void removeAccordoCooperazione(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null) {
- AccordoCooperazione ac = driverRegistroDB.getAccordoCooperazione(id);
- if(ac!=null) {
- IDAccordoCooperazione idAccordoCooperazione = IDAccordoCooperazioneFactory.getInstance().getIDAccordoFromAccordo(ac);
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeAccordoCooperazione(idAccordoCooperazione);
- }
- }
- }
- }
-
- public static void removeAccordoServizioParteComune(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null) {
- AccordoServizioParteComuneSintetico as = driverRegistroDB.getAccordoServizioParteComuneSintetico(id);
- if(as!=null) {
- IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromAccordo(as);
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeApi(idAccordo);
- }
- }
- }
- }
-
- public static void removeErogazione(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null && driverConfigDB!=null) {
- AccordoServizioParteSpecifica as = driverRegistroDB.getAccordoServizioParteSpecifica(id, false);
- if(as!=null) {
- IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(as);
- List<IDPortaApplicativa> idPorteApplicative = null;
- List<IDConnettore> idConnettori = null;
- List<IDServizioApplicativo> idServiziApplicativiErogatori = null;
-
- Connection con = null;
- try {
- con = driverConfigDB.getConnection("getIDPorteApplicativeAssociate");
- idPorteApplicative = DBMappingUtils.getIDPorteApplicativeAssociate(idServizio, con, driverConfigDB.getTipoDB());
- }finally {
- driverConfigDB.releaseConnection(con);
- }
- if(idPorteApplicative!=null && !idPorteApplicative.isEmpty()) {
- for (IDPortaApplicativa idPortaApplicativa : idPorteApplicative) {
- PortaApplicativa pa = driverConfigDB.getPortaApplicativa(idPortaApplicativa);
-
- if(idServiziApplicativiErogatori==null) {
- idServiziApplicativiErogatori = new ArrayList<>();
- }
- for (PortaApplicativaServizioApplicativo paSa : pa.getServizioApplicativoList()) {
- IDServizioApplicativo idSA = new IDServizioApplicativo();
- idSA.setIdSoggettoProprietario(idServizio.getSoggettoErogatore());
- idSA.setNome(paSa.getNome());
- idServiziApplicativiErogatori.add(idSA);
- }
-
- if(pa.getBehaviour()!=null && pa.sizeServizioApplicativoList()>0) {
- if(idConnettori==null) {
- idConnettori = new ArrayList<>();
- }
- for (PortaApplicativaServizioApplicativo paSa : pa.getServizioApplicativoList()) {
- IDConnettore idConnettore = new IDConnettore();
- idConnettore.setIdSoggettoProprietario(idServizio.getSoggettoErogatore());
- idConnettore.setNome(paSa.getNome());
- idConnettore.setNomeConnettore(paSa.getDatiConnettore()!=null && paSa.getDatiConnettore().getNome()!=null ?
- paSa.getDatiConnettore().getNome() : CostantiConfigurazione.NOME_CONNETTORE_DEFAULT);
- idConnettori.add(idConnettore);
- }
- }
- }
- }
-
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeErogazione(idServizio);
- if(idPorteApplicative!=null && !idPorteApplicative.isEmpty()) {
- for (IDPortaApplicativa idPortaApplicativa : idPorteApplicative) {
- iCacheCleaner.removePortaApplicativa(idPortaApplicativa);
- }
- }
- if(idServiziApplicativiErogatori!=null && !idServiziApplicativiErogatori.isEmpty()) {
- for (IDServizioApplicativo idSA : idServiziApplicativiErogatori) {
- iCacheCleaner.removeApplicativo(idSA);
- }
- }
- if(idConnettori!=null && !idConnettori.isEmpty()) {
- for (IDConnettore idConnettore : idConnettori) {
- iCacheCleaner.removeConnettore(idConnettore);
- }
- }
- }
- }
- }
- }
-
- public static void removeFruizione(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null && driverConfigDB!=null) {
- Fruitore fruitore = driverRegistroDB.getServizioFruitore(id);
- if(fruitore!=null) {
- AccordoServizioParteSpecifica as = driverRegistroDB.getAccordoServizioParteSpecifica(fruitore.getIdServizio(), false);
- IDSoggetto idFruitore = driverRegistroDB.getIdSoggetto(fruitore.getIdSoggetto());
- if(as!=null) {
- IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(as);
- List<IDPortaDelegata> idPorteDelegate = null;
-
- Connection con = null;
- try {
- con = driverConfigDB.getConnection("getIDPorteApplicativeAssociate");
- idPorteDelegate = DBMappingUtils.getIDPorteDelegateAssociate(idServizio, idFruitore, con, driverConfigDB.getTipoDB());
- }finally {
- driverConfigDB.releaseConnection(con);
- }
-
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeFruizione(idFruitore, idServizio);
- if(idPorteDelegate!=null && !idPorteDelegate.isEmpty()) {
- for (IDPortaDelegata idPortaDelegata : idPorteDelegate) {
- iCacheCleaner.removePortaDelegata(idPortaDelegata);
- }
- }
- }
- }
- }
- }
- }
-
- public static void removeSoggetto(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null) {
- Soggetto soggetto = driverRegistroDB.getSoggetto(id);
- if(soggetto!=null) {
-
- IDSoggetto idSoggetto = new IDSoggetto(soggetto.getTipo(), soggetto.getNome());
- String portaDominio = soggetto.getPortaDominio();
-
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeSoggetto(idSoggetto);
- if(portaDominio!=null) {
- iCacheCleaner.removePdd(portaDominio);
- }
- }
- }
- }
- }
-
- public static void removeApplicativo(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverConfigDB !=null) {
- ServizioApplicativo sa = driverConfigDB.getServizioApplicativo(id);
- if(sa!=null) {
-
- IDSoggetto idSoggetto = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
- IDServizioApplicativo idSA = new IDServizioApplicativo();
- idSA.setIdSoggettoProprietario(idSoggetto);
- idSA.setNome(sa.getNome());
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeApplicativo(idSA);
- }
- }
- }
- }
-
- public static void removeRuolo(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null) {
- Ruolo ruolo = driverRegistroDB.getRuolo(id);
- if(ruolo!=null) {
-
- IDRuolo idRuolo = new IDRuolo(ruolo.getNome());
-
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeRuolo(idRuolo);
- }
- }
- }
- }
-
- public static void removeScope(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverRegistroDB!=null) {
- Scope scope = driverRegistroDB.getScope(id);
- if(scope!=null) {
-
- IDScope idScope = new IDScope(scope.getNome());
-
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeScope(idScope);
- }
- }
- }
- }
-
- public static void removeGenericProperties(long id) throws Exception {
- if(!listCacheCleaner.isEmpty() && driverConfigDB !=null) {
- GenericProperties gp = driverConfigDB.getGenericProperties(id);
- if(gp!=null) {
-
- IDGenericProperties idGP = new IDGenericProperties();
- idGP.setTipologia(gp.getTipologia());
- idGP.setNome(gp.getNome());
- for (ICacheCleaner iCacheCleaner : listCacheCleaner) {
- iCacheCleaner.removeGenericProperties(idGP);
- }
- }
- }
- }
- }