ConnettoreUtilities.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.controllo_traffico;
- import java.util.Iterator;
- import java.util.Map;
- import org.openspcoop2.core.config.AccessoConfigurazionePdD;
- import org.openspcoop2.core.config.Connettore;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.ServizioApplicativo;
- import org.openspcoop2.core.config.constants.CostantiConfigurazione;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
- import org.openspcoop2.core.constants.CostantiConnettori;
- import org.openspcoop2.core.constants.TipoPdD;
- import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
- import org.openspcoop2.core.controllo_traffico.beans.DatiTransazione;
- import org.openspcoop2.core.id.IDPortaApplicativa;
- import org.openspcoop2.core.id.IDServizioApplicativo;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
- import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
- import org.openspcoop2.pdd.core.handlers.InRequestProtocolContext;
- import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
- import org.openspcoop2.protocol.sdk.state.RequestInfo;
- /**
- * ConnettoreUtilities
- *
- * @author Poli Andrea (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class ConnettoreUtilities {
-
- private ConnettoreUtilities() {}
- public static DatiTempiRisposta readDatiGlobaliTimeout(ConfigurazionePdDManager configPdDManager, TipoPdD tipoPdD, RequestInfo requestInfo, OpenSPCoop2Properties properties) throws DriverConfigurazioneException {
- // Prelevo la configurazione del Controllo del Traffico
-
- AccessoConfigurazionePdD accessoConfigurazione = null;
- try {
- accessoConfigurazione = properties.getAccessoConfigurazionePdD();
- }catch(Exception e) {
- throw new DriverConfigurazioneException(e.getMessage(),e);
- }
-
- ConfigurazioneGenerale configurazioneGenerale = null;
- if(accessoConfigurazione!=null && CostantiConfigurazione.CONFIGURAZIONE_DB.equalsIgnoreCase(accessoConfigurazione.getTipo())) {
- try {
- configurazioneGenerale = configPdDManager.getConfigurazioneControlloTraffico(requestInfo);
- }catch(DriverConfigurazioneNotFound notFound) {
- // ignore
- }
- }
-
- if(TipoPdD.DELEGATA.equals(tipoPdD)){
- return readDatiGlobaliTimeoutFruizione(configurazioneGenerale, properties);
- }
- else{
- return readDatiGlobaliTimeoutErogazione(configurazioneGenerale, properties);
- }
-
- }
- private static DatiTempiRisposta readDatiGlobaliTimeoutFruizione(ConfigurazioneGenerale configurazioneGenerale, OpenSPCoop2Properties properties) {
- DatiTempiRisposta datiTempiRisposta = new DatiTempiRisposta();
- if(configurazioneGenerale!=null && configurazioneGenerale.getTempiRispostaFruizione()!=null) {
- if(configurazioneGenerale.getTempiRispostaFruizione().getConnectionTimeout()!=null) {
- datiTempiRisposta.setConnectionTimeout(configurazioneGenerale.getTempiRispostaFruizione().getConnectionTimeout());
- }
- else {
- datiTempiRisposta.setConnectionTimeout(properties.getConnectionTimeout_inoltroBuste());
- }
- if(configurazioneGenerale.getTempiRispostaFruizione().getReadTimeout()!=null) {
- datiTempiRisposta.setReadConnectionTimeout(configurazioneGenerale.getTempiRispostaFruizione().getReadTimeout());
- }
- else {
- datiTempiRisposta.setReadConnectionTimeout(properties.getReadConnectionTimeout_inoltroBuste());
- }
- }
- else {
- datiTempiRisposta.setConnectionTimeout(properties.getConnectionTimeout_inoltroBuste());
- datiTempiRisposta.setReadConnectionTimeout(properties.getReadConnectionTimeout_inoltroBuste());
- }
- return datiTempiRisposta;
- }
- private static DatiTempiRisposta readDatiGlobaliTimeoutErogazione(ConfigurazioneGenerale configurazioneGenerale, OpenSPCoop2Properties properties) {
- DatiTempiRisposta datiTempiRisposta = new DatiTempiRisposta();
- if(configurazioneGenerale!=null && configurazioneGenerale.getTempiRispostaErogazione()!=null) {
- if(configurazioneGenerale.getTempiRispostaErogazione().getConnectionTimeout()!=null) {
- datiTempiRisposta.setConnectionTimeout(configurazioneGenerale.getTempiRispostaErogazione().getConnectionTimeout());
- }
- else {
- datiTempiRisposta.setConnectionTimeout(properties.getConnectionTimeout_consegnaContenutiApplicativi());
- }
- if(configurazioneGenerale.getTempiRispostaErogazione().getReadTimeout()!=null) {
- datiTempiRisposta.setReadConnectionTimeout(configurazioneGenerale.getTempiRispostaErogazione().getReadTimeout());
- }
- else {
- datiTempiRisposta.setReadConnectionTimeout(properties.getReadConnectionTimeout_consegnaContenutiApplicativi());
- }
- }
- else {
- datiTempiRisposta.setConnectionTimeout(properties.getConnectionTimeout_consegnaContenutiApplicativi());
- datiTempiRisposta.setReadConnectionTimeout(properties.getReadConnectionTimeout_consegnaContenutiApplicativi());
- }
- return datiTempiRisposta;
- }
-
- public static DatiTempiRisposta readDatiTempiRisposta(TipoPdD tipoPdD, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
- // Prelevo la configurazione del Controllo del Traffico
- ConfigurazionePdDManager configPdDManager = ConfigurazionePdDManager.getInstance();
- ConfigurazioneGenerale configurazioneGenerale = configPdDManager.getConfigurazioneControlloTraffico(requestInfo);
-
-
- // Imposto i valori di default
- DatiTempiRisposta datiTempiRisposta = new DatiTempiRisposta();
- if(TipoPdD.DELEGATA.equals(tipoPdD)){
- datiTempiRisposta.setConnectionTimeout(configurazioneGenerale.getTempiRispostaFruizione().getConnectionTimeout());
- datiTempiRisposta.setReadConnectionTimeout(configurazioneGenerale.getTempiRispostaFruizione().getReadTimeout());
- datiTempiRisposta.setAvgResponseTime(configurazioneGenerale.getTempiRispostaFruizione().getTempoMedioRisposta());
- }
- else{
- datiTempiRisposta.setConnectionTimeout(configurazioneGenerale.getTempiRispostaErogazione().getConnectionTimeout());
- datiTempiRisposta.setReadConnectionTimeout(configurazioneGenerale.getTempiRispostaErogazione().getReadTimeout());
- datiTempiRisposta.setAvgResponseTime(configurazioneGenerale.getTempiRispostaErogazione().getTempoMedioRisposta());
- }
-
- return datiTempiRisposta;
- }
-
- public static void mergeTempiRisposta(DatiTempiRisposta datiTempiRisposta, Map<String, String> properties){
- // Leggo i valori se fossero ridefiniti sul connettore
- if(properties!=null && properties.size()>0){
-
- Integer connectionTimeout = null;
- Integer readTimeout = null;
- Integer avgResponseTime = null;
- Iterator<String> keys = properties.keySet().iterator();
- while (keys.hasNext()) {
- String key = keys.next();
- if(key.equals(CostantiConnettori.CONNETTORE_CONNECTION_TIMEOUT)){
- connectionTimeout = Integer.parseInt(properties.get(key));
- }
- else if(key.endsWith(CostantiConnettori.CONNETTORE_READ_CONNECTION_TIMEOUT)){
- readTimeout = Integer.parseInt(properties.get(key));
- }
- else if(key.endsWith(CostantiConnettori.CONNETTORE_TEMPO_MEDIO_RISPOSTA)){
- avgResponseTime = Integer.parseInt(properties.get(key));
- }
- }
- if(connectionTimeout!=null){
- datiTempiRisposta.setConnectionTimeout(connectionTimeout);
- }
- if(readTimeout!=null){
- datiTempiRisposta.setReadConnectionTimeout(readTimeout);
- }
- if(avgResponseTime!=null){
- datiTempiRisposta.setAvgResponseTime(avgResponseTime);
- }
- }
-
- }
-
- public static DatiTempiRisposta getDatiTempiRisposta(InRequestProtocolContext context, DatiTransazione datiTransazione, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
-
- DatiTempiRisposta datiTempiRisposta = readDatiTempiRisposta(context.getTipoPorta(), requestInfo);
-
- ConfigurazionePdDManager configPdDManager = ConfigurazionePdDManager.getInstance();
-
- if(TipoPdD.DELEGATA.equals(context.getTipoPorta())){
-
- setDatiTempiRispostaFruizione(configPdDManager, datiTempiRisposta,
- context, datiTransazione, requestInfo);
-
- }
- else{
-
- setDatiTempiRispostaErogazione(configPdDManager, datiTempiRisposta,
- context, requestInfo);
-
- }
-
- return datiTempiRisposta;
-
- }
-
- private static void setDatiTempiRispostaFruizione(ConfigurazionePdDManager configPdDManager, DatiTempiRisposta datiTempiRisposta,
- InRequestProtocolContext context, DatiTransazione datiTransazione, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
- try{
- Connettore connettore = configPdDManager.getForwardRoute(datiTransazione.getSoggettoFruitore(),datiTransazione.getIdServizio(),false, requestInfo);
- mergeTempiRisposta(datiTempiRisposta, connettore.getProperties());
- }catch(Exception e){
- // registro solamente l'errore su log.
- // sicuramente avverrà un errore durante la gestione del messaggio
- try{
- OpenSPCoop2Logger.getLoggerOpenSPCoopControlloTraffico(OpenSPCoop2Properties.getInstance().isControlloTrafficoDebug()).error(e.getMessage(),e);
- }catch(Exception eLogger){
- context.getLogCore().error(e.getMessage(),e);
- }
- }
- }
-
- private static void setDatiTempiRispostaErogazione(ConfigurazionePdDManager configPdDManager, DatiTempiRisposta datiTempiRisposta,
- InRequestProtocolContext context, RequestInfo requestInfo) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
- try{
- if(context.getIntegrazione()!=null && context.getIntegrazione().getIdPA()!=null) {
- IDPortaApplicativa idPA = context.getIntegrazione().getIdPA();
- PortaApplicativa pa = configPdDManager.getPortaApplicativa(idPA, requestInfo);
- if(pa.sizeServizioApplicativoList()>0) {
- IDServizioApplicativo idSA = new IDServizioApplicativo();
- idSA.setIdSoggettoProprietario(new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
- idSA.setNome(pa.getServizioApplicativo(0).getNome()); // uso il primo
-
- ServizioApplicativo sa = configPdDManager.getServizioApplicativo(idSA, requestInfo);
- setConnettoreDatiTempiRispostaErogazione(context, sa, datiTempiRisposta);
- }
- }
- }catch(Exception e){
- // registro solamente l'errore su log.
- // sicuramente avverrà un errore durante la gestione del messaggio
- try{
- OpenSPCoop2Logger.getLoggerOpenSPCoopControlloTraffico(OpenSPCoop2Properties.getInstance().isControlloTrafficoDebug()).error(e.getMessage(),e);
- }catch(Exception eLogger){
- context.getLogCore().error(e.getMessage(),e);
- }
- }
- }
- private static void setConnettoreDatiTempiRispostaErogazione(InRequestProtocolContext context, ServizioApplicativo sa, DatiTempiRisposta datiTempiRisposta) {
-
- Connettore connettore = null;
-
- String scenarioCooperazione = context.getProtocollo().getScenarioCooperazione();
- if(scenarioCooperazione!=null){
- if(org.openspcoop2.protocol.engine.constants.Costanti.SCENARIO_CONSEGNA_CONTENUTI_APPLICATIVI.equals(scenarioCooperazione) ||
- org.openspcoop2.protocol.engine.constants.Costanti.SCENARIO_ASINCRONO_SIMMETRICO_CONSEGNA_RISPOSTA.equals(scenarioCooperazione) ||
- org.openspcoop2.protocol.engine.constants.Costanti.SCENARIO_ASINCRONO_ASIMMETRICO_POLLING.equals(scenarioCooperazione) ){
- if(sa.getRispostaAsincrona()!=null){
- connettore = sa.getRispostaAsincrona().getConnettore();
- }
- }else{
- if(sa.getInvocazioneServizio()!=null){
- connettore = sa.getInvocazioneServizio().getConnettore();
- }
- }
- }
-
- if(connettore!=null){
- mergeTempiRisposta(datiTempiRisposta, connettore.getProperties());
- }
-
- }
- }