RegistroServiziManager.java

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

  20. package org.openspcoop2.protocol.registry;

  21. import java.io.Serializable;
  22. import java.sql.Connection;
  23. import java.util.List;
  24. import java.util.Map;

  25. import org.openspcoop2.core.commons.CoreException;
  26. import org.openspcoop2.core.id.IDAccordo;
  27. import org.openspcoop2.core.id.IDAccordoAzione;
  28. import org.openspcoop2.core.id.IDAccordoCooperazione;
  29. import org.openspcoop2.core.id.IDFruizione;
  30. import org.openspcoop2.core.id.IDGruppo;
  31. import org.openspcoop2.core.id.IDPortType;
  32. import org.openspcoop2.core.id.IDPortTypeAzione;
  33. import org.openspcoop2.core.id.IDResource;
  34. import org.openspcoop2.core.id.IDRuolo;
  35. import org.openspcoop2.core.id.IDScope;
  36. import org.openspcoop2.core.id.IDServizio;
  37. import org.openspcoop2.core.id.IDSoggetto;
  38. import org.openspcoop2.core.registry.AccordoCooperazione;
  39. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  40. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  41. import org.openspcoop2.core.registry.Documento;
  42. import org.openspcoop2.core.registry.PortaDominio;
  43. import org.openspcoop2.core.registry.Ruolo;
  44. import org.openspcoop2.core.registry.Scope;
  45. import org.openspcoop2.core.registry.Soggetto;
  46. import org.openspcoop2.core.registry.constants.TipiDocumentoLivelloServizio;
  47. import org.openspcoop2.core.registry.constants.TipiDocumentoSemiformale;
  48. import org.openspcoop2.core.registry.constants.TipiDocumentoSicurezza;
  49. import org.openspcoop2.core.registry.driver.DriverRegistroServiziAzioneNotFound;
  50. import org.openspcoop2.core.registry.driver.DriverRegistroServiziCorrelatoNotFound;
  51. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  52. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  53. import org.openspcoop2.core.registry.driver.DriverRegistroServiziPortTypeNotFound;
  54. import org.openspcoop2.core.registry.driver.DriverRegistroServiziServizioNotFound;
  55. import org.openspcoop2.core.registry.driver.FiltroRicerca;
  56. import org.openspcoop2.core.registry.driver.FiltroRicercaAccordi;
  57. import org.openspcoop2.core.registry.driver.FiltroRicercaAzioni;
  58. import org.openspcoop2.core.registry.driver.FiltroRicercaFruizioniServizio;
  59. import org.openspcoop2.core.registry.driver.FiltroRicercaGruppi;
  60. import org.openspcoop2.core.registry.driver.FiltroRicercaOperations;
  61. import org.openspcoop2.core.registry.driver.FiltroRicercaPortTypes;
  62. import org.openspcoop2.core.registry.driver.FiltroRicercaResources;
  63. import org.openspcoop2.core.registry.driver.FiltroRicercaRuoli;
  64. import org.openspcoop2.core.registry.driver.FiltroRicercaScope;
  65. import org.openspcoop2.core.registry.driver.FiltroRicercaServizi;
  66. import org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti;
  67. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  68. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  69. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  70. import org.openspcoop2.protocol.sdk.Servizio;
  71. import org.openspcoop2.protocol.sdk.constants.InformationApiSource;
  72. import org.openspcoop2.protocol.sdk.state.IState;
  73. import org.openspcoop2.protocol.sdk.state.RequestInfo;
  74. import org.openspcoop2.protocol.sdk.state.StateMessage;
  75. import org.openspcoop2.utils.certificate.CertificateInfo;
  76. import org.openspcoop2.utils.crypt.CryptConfig;
  77. import org.openspcoop2.utils.transport.http.IBYOKUnwrapFactory;
  78. import org.slf4j.Logger;

  79. /**
  80.  * RegistroServiziManager
  81.  *
  82.  * @author Poli Andrea (apoli@link.it)
  83.  * @author $Author$
  84.  * @version $Rev$, $Date$
  85.  */
  86. public class RegistroServiziManager {

  87.     private static RegistroServiziManager staticInstanceWithoutState = null;
  88.     private static synchronized void initStaticInstanceWithoutState(){
  89.         if(staticInstanceWithoutState == null) {
  90.             staticInstanceWithoutState = new RegistroServiziManager();
  91.             staticInstanceWithoutState.singleInstance = true;
  92.         }
  93.     }

  94.     public static RegistroServiziManager getInstance(){
  95.         //return new RegistroServiziManager();
  96.         if(staticInstanceWithoutState == null) {
  97.             if(RegistroServiziReader.getInstance()==null) {
  98.                 return new RegistroServiziManager(); // succede all'avvio
  99.             }
  100.             initStaticInstanceWithoutState();
  101.         }
  102.         return staticInstanceWithoutState;
  103.     }
  104.     public static RegistroServiziManager getInstance(IState state){
  105.         if(state!=null && state instanceof StateMessage) {
  106.             return getInstance((StateMessage)state);
  107.         }
  108.         return getInstance();
  109.     }
  110.     public static RegistroServiziManager getInstance(StateMessage state){
  111.         if(state!=null) {
  112.             return new RegistroServiziManager(state);
  113.         }
  114.         return getInstance();
  115.     }
  116.     public static RegistroServiziManager getInstance(IState requestStateParam, IState responseStateParam){
  117.         StateMessage requestState = null;
  118.         StateMessage responseState = null;
  119.         if(requestStateParam!=null && requestStateParam instanceof StateMessage) {
  120.             requestState = (StateMessage) requestStateParam;
  121.         }
  122.         if(responseStateParam!=null && responseStateParam instanceof StateMessage) {
  123.             responseState = (StateMessage) responseStateParam;
  124.         }
  125.         if(requestState!=null || responseState!=null) {
  126.             return new RegistroServiziManager(requestState,responseState);
  127.         }
  128.         return getInstance();
  129.     }
  130.     public static RegistroServiziManager getInstance(StateMessage requestState, StateMessage responseState){
  131.         if(requestState!=null || responseState!=null) {
  132.             return new RegistroServiziManager(requestState,responseState);
  133.         }
  134.         return getInstance();
  135.     }


  136.     private boolean singleInstance = false;
  137.     private RegistroServiziReader registroServiziReader = null;
  138.     private StateMessage state = null;
  139.     private StateMessage responseState = null;

  140.     public StateMessage getState() {
  141.         return this.state;
  142.     }
  143.     public StateMessage getResponseState() {
  144.         return this.responseState;
  145.     }
  146.    
  147.     public RegistroServiziManager(){
  148.         this.registroServiziReader = RegistroServiziReader.getInstance();  
  149.     }
  150.     public RegistroServiziManager(StateMessage state){
  151.         this();
  152.         this.state = state;
  153.     }
  154.     public RegistroServiziManager(StateMessage requestState, StateMessage responseState){
  155.         this();
  156.         this.state = requestState;
  157.         this.responseState = responseState;
  158.     }
  159.    
  160.     public RegistroServiziManager refreshState(IState requestStateParam, IState responseStateParam) {
  161.         StateMessage requestState = null;
  162.         StateMessage responseState = null;
  163.         if(requestStateParam!=null && requestStateParam instanceof StateMessage) {
  164.             requestState = (StateMessage) requestStateParam;
  165.         }
  166.         if(responseStateParam!=null && responseStateParam instanceof StateMessage) {
  167.             responseState = (StateMessage) responseStateParam;
  168.         }
  169.         return refreshState(requestState, responseState);
  170.     }
  171.     public RegistroServiziManager refreshState(StateMessage requestState, StateMessage responseState) {
  172.         if(requestState==null && responseState==null) {
  173.             return getInstance(); // senza stato
  174.         }
  175.         if(this.singleInstance) {
  176.             return RegistroServiziManager.getInstance(requestState, responseState); // inizialmente era senza stato, ora serve
  177.         }
  178.         this.state = requestState;
  179.         this.responseState = responseState;
  180.         return this;
  181.     }
  182.    
  183.     private Connection getConnection() {
  184.         if(this.state!=null) {
  185.             Connection c = StateMessage.getConnection(this.state);
  186.             if(c!=null) {
  187.                 return c;
  188.             }
  189.         }
  190.         if(this.responseState!=null) {
  191.             Connection c = StateMessage.getConnection(this.responseState);
  192.             if(c!=null) {
  193.                 return c;
  194.             }
  195.         }
  196.         return null;
  197.     }
  198.    

  199.     /* ********  READER  ******** */
  200.    
  201.     public RegistroServiziReader getRegistroServiziReader(){
  202.         return this.registroServiziReader;
  203.     }
  204.    
  205.    
  206.     /* ********  U T I L S  ******** */
  207.    
  208.     public void isAlive(boolean controlloTotale) throws CoreException{
  209.         this.registroServiziReader.isAlive(controlloTotale);
  210.     }
  211.    
  212.     public void validazioneSemantica(boolean controlloTotale,boolean verificaURI,
  213.             String[] tipiSoggettiValidi,String [] tipiServiziSoapValidi, String [] tipiServiziRestValidi, String[] tipiConnettoriValidi,
  214.             boolean validazioneSemanticaAbilitataXML,boolean validazioneSemanticaAbilitataAltriRegistri,
  215.             Logger logConsole) throws CoreException{
  216.         this.registroServiziReader.validazioneSemantica(controlloTotale, verificaURI, tipiSoggettiValidi, tipiServiziSoapValidi, tipiServiziRestValidi,
  217.                 tipiConnettoriValidi, validazioneSemanticaAbilitataXML, validazioneSemanticaAbilitataAltriRegistri, logConsole);
  218.     }
  219.    
  220.     public void setValidazioneSemanticaModificaRegistroServiziXML(boolean verificaURI,
  221.             String[] tipiSoggettiValidi,String [] tipiServiziSoapValidi, String [] tipiServiziRestValidi, String[] tipiConnettoriValidi) throws CoreException{
  222.         this.registroServiziReader.setValidazioneSemanticaModificaRegistroServiziXML(verificaURI, tipiSoggettiValidi, tipiServiziSoapValidi, tipiServiziRestValidi, tipiConnettoriValidi);
  223.     }
  224.    
  225.     public void verificaConsistenzaRegistroServizi() throws DriverRegistroServiziException {
  226.         this.registroServiziReader.verificaConsistenzaRegistroServizi();
  227.     }
  228.        
  229.    
  230.     /* ********  P R O F I L O   D I   G E S T I O N E  ******** */
  231.    
  232.     public String getProfiloGestioneFruizioneServizio(IDServizio idServizio,String nomeRegistro, RequestInfo requestInfo)
  233.         throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  234.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idServizio!=null && idServizio.equals(requestInfo.getRequestConfig().getIdServizio(), false);
  235.         if(useRequestInfo) {
  236.             if(requestInfo.getRequestConfig().getServizioVersioneProtocollo()!=null) {
  237.                 return requestInfo.getRequestConfig().getServizioVersioneProtocollo();
  238.             }
  239.         }
  240.         String v = this.registroServiziReader.getProfiloGestioneFruizioneServizio(this.getConnection(), idServizio, nomeRegistro, requestInfo);
  241.         if(useRequestInfo) {
  242.             if(requestInfo.getRequestConfig().getServizioVersioneProtocollo()==null) {
  243.                 requestInfo.getRequestConfig().setServizioVersioneProtocollo(v);
  244.             }
  245.         }
  246.         return v;
  247.     }
  248.    
  249.     public String getProfiloGestioneErogazioneServizio(IDSoggetto idFruitore,IDServizio idServizio,String nomeRegistro, RequestInfo requestInfo)
  250.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  251.         // accendendo all'implementazione sottostante si puo' vedere come il parametro idServizio non viene usato
  252.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idFruitore!=null;
  253.         boolean useRequestInfoSoggettoFruitore = false;
  254.         boolean useRequestInfoSoggettoErogatore = false;
  255.         if(useRequestInfo) {
  256.             useRequestInfoSoggettoFruitore = useRequestInfo && requestInfo.getRequestConfig().getIdFruitore()!=null &&
  257.                     requestInfo.getRequestConfig().getIdFruitore().equals(idFruitore);
  258.             if(useRequestInfoSoggettoFruitore) {
  259.                 if(requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo()!=null) {
  260.                     return requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo();
  261.                 }
  262.             }
  263.             else {
  264.                 useRequestInfoSoggettoErogatore = useRequestInfo && requestInfo.getRequestConfig().getIdServizio()!=null &&
  265.                     requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore()!=null &&
  266.                     requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore().equals(idFruitore);
  267.                 if(useRequestInfoSoggettoErogatore) {
  268.                     if(requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo()!=null) {
  269.                         return requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo();
  270.                     }
  271.                 }
  272.             }
  273.         }
  274.         String v = this.registroServiziReader.getProfiloGestioneErogazioneServizio(this.getConnection(), idFruitore, idServizio, nomeRegistro, requestInfo);
  275.         if(useRequestInfoSoggettoFruitore) {
  276.             if(requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo()==null) {
  277.                 requestInfo.getRequestConfig().setSoggettoFruitoreVersioneProtocollo(v);
  278.             }
  279.         }
  280.         else if(useRequestInfoSoggettoErogatore) {
  281.             if(requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo()==null) {
  282.                 requestInfo.getRequestConfig().setSoggettoErogatoreVersioneProtocollo(v);
  283.             }
  284.         }
  285.         return v;
  286.     }
  287.    
  288.     public String getProfiloGestioneSoggetto(IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo)
  289.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  290.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  291.         boolean useRequestInfoSoggettoFruitore = false;
  292.         boolean useRequestInfoSoggettoErogatore = false;
  293.         if(useRequestInfo) {
  294.             useRequestInfoSoggettoFruitore = useRequestInfo && requestInfo.getRequestConfig().getIdFruitore()!=null &&
  295.                     requestInfo.getRequestConfig().getIdFruitore().equals(idSoggetto);
  296.             if(useRequestInfoSoggettoFruitore) {
  297.                 if(requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo()!=null) {
  298.                     return requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo();
  299.                 }
  300.             }
  301.             else {
  302.                 useRequestInfoSoggettoErogatore = useRequestInfo && requestInfo.getRequestConfig().getIdServizio()!=null &&
  303.                     requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore()!=null &&
  304.                     requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore().equals(idSoggetto);
  305.                 if(useRequestInfoSoggettoErogatore) {
  306.                     if(requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo()!=null) {
  307.                         return requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo();
  308.                     }
  309.                 }
  310.             }
  311.         }
  312.         String v = this.registroServiziReader.getProfiloGestioneSoggetto(this.getConnection(), idSoggetto, nomeRegistro, requestInfo);
  313.         if(useRequestInfoSoggettoFruitore) {
  314.             if(requestInfo.getRequestConfig().getSoggettoFruitoreVersioneProtocollo()==null) {
  315.                 requestInfo.getRequestConfig().setSoggettoFruitoreVersioneProtocollo(v);
  316.             }
  317.         }
  318.         else if(useRequestInfoSoggettoErogatore) {
  319.             if(requestInfo.getRequestConfig().getSoggettoErogatoreVersioneProtocollo()==null) {
  320.                 requestInfo.getRequestConfig().setSoggettoErogatoreVersioneProtocollo(v);
  321.             }
  322.         }
  323.         return v;
  324.     }
  325.    
  326.    
  327.     /* ********  R I C E R C A   I N F O     S E R V I Z I  ******** */
  328.    
  329.     public Servizio getInfoServizio(IDSoggetto idSoggetto, IDServizio idService,String nomeRegistro, boolean verificaEsistenzaServizioAzioneCorrelato, boolean throwAzioneNotFound,
  330.             RequestInfo requestInfo)
  331.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
  332.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null && requestInfo.getRequestConfig().getInfoServizio()!=null) {
  333.             if(requestInfo.getRequestConfig().getInfoServizio().getIDServizio().equals(idService)) {
  334.                 return requestInfo.getRequestConfig().getInfoServizio();
  335.             }
  336.         }
  337.         Servizio s = this.registroServiziReader.getInfoServizio(this.getConnection(), idSoggetto, idService, nomeRegistro, verificaEsistenzaServizioAzioneCorrelato, throwAzioneNotFound);
  338.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getInfoServizio()==null) {
  339.             requestInfo.getRequestConfig().setInfoServizio(s);
  340.         }
  341.         return s;
  342.     }
  343.    
  344.     public Servizio getInfoServizioCorrelato(IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro, boolean throwAzioneNotFound,
  345.             RequestInfo requestInfo)
  346.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
  347.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null && requestInfo.getRequestConfig().getInfoServizioCorrelato()!=null) {
  348.             if(requestInfo.getRequestConfig().getInfoServizioCorrelato().getIDServizio().equals(idService)) {
  349.                 return requestInfo.getRequestConfig().getInfoServizioCorrelato();
  350.             }
  351.         }
  352.         Servizio s = this.registroServiziReader.getInfoServizioCorrelato(this.getConnection(), idSoggetto, idService, nomeRegistro, throwAzioneNotFound);
  353.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getInfoServizioCorrelato()==null) {
  354.             requestInfo.getRequestConfig().setInfoServizioCorrelato(s);
  355.         }
  356.         return s;
  357.     }
  358.    
  359.     public Servizio getInfoServizioAzioneCorrelata(IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro, boolean throwAzioneNotFound,
  360.             RequestInfo requestInfo)
  361.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound,DriverRegistroServiziAzioneNotFound,DriverRegistroServiziPortTypeNotFound,DriverRegistroServiziCorrelatoNotFound{
  362.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null && requestInfo.getRequestConfig().getInfoServizioAzioneCorrelata()!=null) {
  363.             if(requestInfo.getRequestConfig().getInfoServizioAzioneCorrelata().getIDServizio().equals(idService)) {
  364.                 return requestInfo.getRequestConfig().getInfoServizioAzioneCorrelata();
  365.             }
  366.         }
  367.         Servizio s = this.registroServiziReader.getInfoServizioAzioneCorrelata(this.getConnection(), idSoggetto, idService, nomeRegistro, throwAzioneNotFound);
  368.         if(requestInfo!=null && requestInfo.getRequestConfig()!=null && requestInfo.getRequestConfig().getInfoServizioAzioneCorrelata()==null) {
  369.             requestInfo.getRequestConfig().setInfoServizioAzioneCorrelata(s);
  370.         }
  371.         return s;
  372.     }
  373.    
  374.     public Allegati getAllegati(IDServizio idASPS)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  375.         return this.registroServiziReader.getAllegati(this.getConnection(), idASPS);
  376.     }
  377.    
  378.     public Documento getAllegato(IDAccordo idAccordo, String nome, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  379.         return this.registroServiziReader.getAllegato(this.getConnection(), idAccordo, nome, requestInfo);
  380.     }
  381.     public Documento getSpecificaSemiformale(IDAccordo idAccordo, TipiDocumentoSemiformale tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  382.         return this.registroServiziReader.getSpecificaSemiformale(this.getConnection(), idAccordo, tipo, nome, requestInfo);
  383.     }
  384.    
  385.     public Documento getAllegato(IDServizio idASPS, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  386.         return this.registroServiziReader.getAllegato(this.getConnection(), idASPS, nome, requestInfo);
  387.     }
  388.     public Documento getSpecificaSemiformale(IDServizio idASPS, TipiDocumentoSemiformale tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  389.         return this.registroServiziReader.getSpecificaSemiformale(this.getConnection(), idASPS, tipo, nome, requestInfo);
  390.     }
  391.     public Documento getSpecificaSicurezza(IDServizio idASPS, TipiDocumentoSicurezza tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  392.         return this.registroServiziReader.getSpecificaSicurezza(this.getConnection(), idASPS, tipo, nome, requestInfo);
  393.     }
  394.     public Documento getSpecificaLivelloServizio(IDServizio idASPS, TipiDocumentoLivelloServizio tipo, String nome, RequestInfo requestInfo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  395.         return this.registroServiziReader.getSpecificaLivelloServizio(this.getConnection(), idASPS, tipo, nome, requestInfo);
  396.     }
  397.    
  398.     public org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper getWsdlAccordoServizio(IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchemaXSD, boolean readDatiRegistro, RequestInfo requestInfo)
  399.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  400.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null && infoWsdlSource!=null;
  401.         if(useRequestInfo) {
  402.             org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper w = requestInfo.getRequestConfig().getAsWrapperSoap(infoWsdlSource, buildSchemaXSD, readDatiRegistro);
  403.             if(w!=null) {
  404.                 return w;
  405.             }
  406.         }
  407.         org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper w = this.registroServiziReader.getWsdlAccordoServizio(this.getConnection(), idService, infoWsdlSource,buildSchemaXSD, readDatiRegistro);
  408.         if(useRequestInfo && requestInfo!=null && requestInfo.getRequestConfig().getAsWrapperSoap(infoWsdlSource, buildSchemaXSD, readDatiRegistro)==null) {
  409.             requestInfo.getRequestConfig().setAsWrapperSoap(w, infoWsdlSource, buildSchemaXSD, readDatiRegistro,
  410.                     requestInfo.getIdTransazione());
  411.         }
  412.         return w;
  413.     }
  414.    
  415.     public org.openspcoop2.core.registry.rest.AccordoServizioWrapper getRestAccordoServizio(IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchemaXSD, boolean processIncludeForOpenApi, boolean readDatiRegistro, RequestInfo requestInfo)
  416.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  417.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null && infoWsdlSource!=null;
  418.         if(useRequestInfo) {
  419.             org.openspcoop2.core.registry.rest.AccordoServizioWrapper w = requestInfo.getRequestConfig().getAsWrapperRest(infoWsdlSource, buildSchemaXSD, processIncludeForOpenApi, readDatiRegistro);
  420.             if(w!=null) {
  421.                 return w;
  422.             }
  423.         }
  424.         org.openspcoop2.core.registry.rest.AccordoServizioWrapper w = this.registroServiziReader.getRestAccordoServizio(this.getConnection(), idService, infoWsdlSource,buildSchemaXSD, processIncludeForOpenApi, readDatiRegistro);
  425.         if(useRequestInfo && requestInfo!=null && requestInfo.getRequestConfig().getAsWrapperRest(infoWsdlSource, buildSchemaXSD, processIncludeForOpenApi, readDatiRegistro)==null) {
  426.             requestInfo.getRequestConfig().setAsWrapperRest(w, infoWsdlSource, buildSchemaXSD, processIncludeForOpenApi, readDatiRegistro,
  427.                     requestInfo.getIdTransazione());
  428.         }
  429.         return w;
  430.     }
  431.    
  432.     public org.openspcoop2.core.registry.constants.ServiceBinding getServiceBinding(IDServizio idService, RequestInfo requestInfo)
  433.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  434.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idService!=null;
  435.         if(useRequestInfo) {
  436.             if( requestInfo.getRequestConfig().getServiceBinding()!=null) {
  437.                 return requestInfo.getRequestConfig().getServiceBinding();
  438.             }
  439.         }
  440.         org.openspcoop2.core.registry.constants.ServiceBinding serviceBinding = this.registroServiziReader.getServiceBinding(this.getConnection(), idService);
  441.         if(useRequestInfo && requestInfo.getRequestConfig().getServiceBinding()==null) {
  442.             requestInfo.getRequestConfig().setServiceBinding(serviceBinding);
  443.         }
  444.         return serviceBinding;
  445.     }
  446.    
  447.     public EsitoAutorizzazioneRegistro isFruitoreServizioAutorizzato(String pdd,String servizioApplicativo,IDSoggetto soggetto,IDServizio servizio)
  448.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound, DriverRegistroServiziServizioNotFound{
  449.         return this.registroServiziReader.isFruitoreServizioAutorizzato(this.getConnection(), pdd, servizioApplicativo, soggetto, servizio);
  450.     }
  451.    
  452.    
  453.     /* ********  C O N N E T T O R I  ******** */

  454.     public org.openspcoop2.core.config.Connettore getConnettore(IDSoggetto idSoggetto,IDServizio idService,String nomeRegistro, RequestInfo requestInfo)
  455.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  456.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null && idService!=null &&
  457.                 requestInfo.getRequestConfig().getIdFruitore()!=null && idSoggetto.equals(requestInfo.getRequestConfig().getIdFruitore()) &&
  458.                 requestInfo.getRequestConfig().getIdServizio()!=null && idService.equals(requestInfo.getRequestConfig().getIdServizio(),false);
  459.         if(useRequestInfo) {
  460.             if(requestInfo.getRequestConfig().getConnettoreFrutoreServizio()!=null) {
  461.                 return requestInfo.getRequestConfig().getConnettoreFrutoreServizio();
  462.             }
  463.         }
  464.         org.openspcoop2.core.config.Connettore c = this.registroServiziReader.getConnettore(this.getConnection(), idSoggetto, idService, nomeRegistro);
  465.         if(useRequestInfo) {
  466.             if(requestInfo.getRequestConfig().getConnettoreFrutoreServizio()==null) {
  467.                 requestInfo.getRequestConfig().setConnettoreFrutoreServizio(c);
  468.             }
  469.         }
  470.         return c;
  471.     }
  472.    
  473.     public org.openspcoop2.core.config.Connettore getConnettore(IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo)
  474.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  475.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null &&
  476.                 requestInfo.getRequestConfig().getIdServizio()!=null &&  
  477.                 requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore()!=null &&  
  478.                 requestInfo.getRequestConfig().getIdServizio().getSoggettoErogatore().equals(idSoggetto);
  479.         if(useRequestInfo) {
  480.             if(requestInfo.getRequestConfig().getConnettoreSoggettoErogatore()!=null) {
  481.                 return requestInfo.getRequestConfig().getConnettoreSoggettoErogatore();
  482.             }
  483.         }
  484.         org.openspcoop2.core.config.Connettore c = this.registroServiziReader.getConnettore(this.getConnection(), idSoggetto, nomeRegistro);
  485.         if(useRequestInfo) {
  486.             if(requestInfo.getRequestConfig().getConnettoreSoggettoErogatore()==null) {
  487.                 requestInfo.getRequestConfig().setConnettoreSoggettoErogatore(c);
  488.             }
  489.         }
  490.         return c;
  491.     }
  492.    
  493.    
  494.     /* ********  VALIDAZIONE  ******** */

  495.     public String getDominio(IDSoggetto idSoggetto,String nomeRegistro,IProtocolFactory<?> protocolFactory, RequestInfo requestInfo)
  496.             throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  497.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  498.         if(useRequestInfo) {
  499.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoErogatoreIdentificativoPorta()!=null &&
  500.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  501.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  502.                 return requestInfo.getRequestConfig().getSoggettoErogatoreIdentificativoPorta();
  503.             }
  504.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoFruitoreIdentificativoPorta()!=null &&
  505.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  506.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  507.                 return requestInfo.getRequestConfig().getSoggettoFruitoreIdentificativoPorta();
  508.             }
  509.         }
  510.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  511.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null &&
  512.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreIdentificativoPorta()!=null &&
  513.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  514.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome())) {
  515.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreIdentificativoPorta();
  516.             }
  517.         }
  518.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null) {
  519.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null &&
  520.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreIdentificativoPorta()!=null &&
  521.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  522.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome())) {
  523.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreIdentificativoPorta();
  524.             }
  525.         }
  526.         return this.registroServiziReader.getDominio(this.getConnection(), idSoggetto, nomeRegistro, protocolFactory);
  527.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  528.     }
  529.    
  530.     public String getImplementazionePdD(IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo)
  531.             throws DriverRegistroServiziException{
  532.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  533.         if(useRequestInfo) {
  534.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoErogatoreImplementazionePdd()!=null &&
  535.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  536.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  537.                 return requestInfo.getRequestConfig().getSoggettoErogatoreImplementazionePdd();
  538.             }
  539.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoFruitoreImplementazionePdd()!=null &&
  540.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  541.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  542.                 return requestInfo.getRequestConfig().getSoggettoFruitoreImplementazionePdd();
  543.             }
  544.         }
  545.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  546.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null &&
  547.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreImplementazionePdd()!=null &&
  548.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  549.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome())) {
  550.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreImplementazionePdd();
  551.             }
  552.         }
  553.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null) {
  554.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null &&
  555.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreImplementazionePdd()!=null &&
  556.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  557.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome())) {
  558.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreImplementazionePdd();
  559.             }
  560.         }
  561.         return this.registroServiziReader.getImplementazionePdD(this.getConnection(), idSoggetto, nomeRegistro);
  562.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  563.     }
  564.    
  565.     public String getIdPortaDominio(IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo)
  566.             throws DriverRegistroServiziException{
  567.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  568.         if(useRequestInfo) {
  569.             if( requestInfo.getRequestConfig().getSoggettoErogatoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoErogatorePddReaded()!=null &&
  570.                 requestInfo.getRequestConfig().getSoggettoErogatorePddReaded() &&
  571.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getTipo()) &&
  572.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreConfig().getNome())  ) {
  573.                 return requestInfo.getRequestConfig().getSoggettoErogatorePdd()!=null ? requestInfo.getRequestConfig().getSoggettoErogatorePdd().getNome() : null;
  574.             }
  575.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreConfig()!=null && requestInfo.getRequestConfig().getSoggettoFruitorePddReaded()!=null &&
  576.                     requestInfo.getRequestConfig().getSoggettoFruitorePddReaded() &&
  577.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getTipo()) &&
  578.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreConfig().getNome())   ) {
  579.                 return requestInfo.getRequestConfig().getSoggettoFruitorePdd()!=null ? requestInfo.getRequestConfig().getSoggettoFruitorePdd().getNome() : null;
  580.             }
  581.         }
  582.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  583.             if( requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig()!=null &&
  584.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePddReaded()!=null &&
  585.                     requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePddReaded() &&
  586.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getTipo()) &&
  587.                         idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreConfig().getNome())  ) {
  588.                     return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePdd()!=null ? requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePdd().getNome() : null;
  589.                 }
  590.         }
  591.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null) {
  592.             if( requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig()!=null &&
  593.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePddReaded()!=null &&
  594.                     requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePddReaded() &&
  595.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getTipo()) &&
  596.                         idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreConfig().getNome())  ) {
  597.                     return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePdd()!=null ? requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePdd().getNome() : null;
  598.                 }
  599.         }
  600.         return this.registroServiziReader.getIdPortaDominio(this.getConnection(), idSoggetto, nomeRegistro);
  601.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  602.     }
  603.    
  604.     public RisultatoValidazione validaServizio(IDSoggetto soggettoFruitore,IDServizio idService,String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziPortTypeNotFound{
  605.         return this.registroServiziReader.validaServizio(this.getConnection(), soggettoFruitore, idService, nomeRegistro);
  606.     }
  607.    
  608.    
  609.     /* ********  A U T E N T I C A Z I O N E   S O G G E T T I  ******** */
  610.    
  611.     public Soggetto getSoggettoByCredenzialiBasic(String username, String password, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  612.         return this.registroServiziReader.getSoggettoByCredenzialiBasic(this.getConnection(), username, password, cryptConfig, nomeRegistro);
  613.     }
  614.    
  615.     public Soggetto getSoggettoByCredenzialiApiKey(String username, String password, boolean appId, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  616.         return this.registroServiziReader.getSoggettoByCredenzialiApiKey(this.getConnection(), username, password, appId, cryptConfig, nomeRegistro);
  617.     }
  618.    
  619.     public Soggetto getSoggettoByCredenzialiSsl(String subject, String issuer, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  620.         return this.registroServiziReader.getSoggettoByCredenzialiSsl(this.getConnection(), subject, issuer, nomeRegistro);
  621.     }
  622.    
  623.     public Soggetto getSoggettoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  624.         return this.registroServiziReader.getSoggettoByCredenzialiSsl(this.getConnection(), certificate, strictVerifier, nomeRegistro);
  625.     }
  626.    
  627.     public Soggetto getSoggettoByCredenzialiPrincipal(String principal, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  628.         return this.registroServiziReader.getSoggettoByCredenzialiPrincipal(this.getConnection(), principal, nomeRegistro);
  629.     }
  630.    
  631.     public IDSoggetto getIdSoggettoByCredenzialiBasic(String username, String password, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  632.         return this.registroServiziReader.getIdSoggettoByCredenzialiBasic(this.getConnection(), username, password, cryptConfig, nomeRegistro);
  633.     }
  634.    
  635.     public IDSoggetto getIdSoggettoByCredenzialiApiKey(String username, String password, boolean appId, CryptConfig cryptConfig, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  636.         return this.registroServiziReader.getIdSoggettoByCredenzialiApiKey(this.getConnection(), username, password, appId, cryptConfig, nomeRegistro);
  637.     }
  638.    
  639.     public IDSoggetto getIdSoggettoByCredenzialiSsl(String subject, String issuer, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  640.         return this.registroServiziReader.getIdSoggettoByCredenzialiSsl(this.getConnection(), subject, issuer, nomeRegistro);
  641.     }
  642.    
  643.     public IDSoggetto getIdSoggettoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  644.         return this.registroServiziReader.getIdSoggettoByCredenzialiSsl(this.getConnection(), certificate, strictVerifier, nomeRegistro);
  645.     }
  646.    
  647.     public IDSoggetto getIdSoggettoByCredenzialiPrincipal(String principal, String nomeRegistro)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  648.         return this.registroServiziReader.getIdSoggettoByCredenzialiPrincipal(this.getConnection(), principal, nomeRegistro);
  649.     }
  650.    
  651.    
  652.    
  653.     /* ********  P R O P R I E T A  ******** */
  654.    
  655.     public Map<String, String> getProprietaConfigurazione(Soggetto soggetto) throws DriverRegistroServiziException {
  656.         return this.registroServiziReader.getProprietaConfigurazione(soggetto);
  657.     }
  658.    
  659.    
  660.    
  661.     /* ********  C E R T I F I C A T I  ******** */
  662.    
  663.     public CertificateCheck checkCertificatoSoggettoWithoutCache(long idSoggetto, int sogliaWarningGiorni,  
  664.             boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  665.         return this.registroServiziReader.checkCertificatoSoggetto(null, false,
  666.                 idSoggetto, sogliaWarningGiorni,  
  667.                 addCertificateDetails, separator, newLine);
  668.     }

  669.     public CertificateCheck checkCertificatoSoggettoWithoutCache(IDSoggetto idSoggetto, int sogliaWarningGiorni,
  670.             boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  671.         return this.registroServiziReader.checkCertificatoSoggetto(null, false,
  672.                 idSoggetto, sogliaWarningGiorni,  
  673.                 addCertificateDetails, separator, newLine);
  674.     }
  675.    
  676.     public CertificateCheck checkCertificatiConnettoreHttpsByIdWithoutCache(long idConnettore, int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,  
  677.             boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  678.         return this.registroServiziReader.checkCertificatiConnettoreHttpsById(null, false,
  679.                 idConnettore, sogliaWarningGiorni, byokUnwrapFactory,
  680.                 addCertificateDetails, separator, newLine);
  681.     }
  682.    
  683.     public CertificateCheck checkCertificatiModIErogazioneByIdWithoutCache(long idErogazione, int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,  
  684.             boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  685.         return this.registroServiziReader.checkCertificatiModIErogazioneById(null, false,
  686.                 idErogazione, sogliaWarningGiorni, byokUnwrapFactory,  
  687.                 addCertificateDetails, separator, newLine);
  688.     }
  689.    
  690.     public CertificateCheck checkCertificatiModIFruizioneByIdWithoutCache(long idFruizione, int sogliaWarningGiorni, IBYOKUnwrapFactory byokUnwrapFactory,
  691.             boolean addCertificateDetails, String separator, String newLine) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  692.         return this.registroServiziReader.checkCertificatiModIFruizioneById(null, false,
  693.                 idFruizione, sogliaWarningGiorni, byokUnwrapFactory,  
  694.                 addCertificateDetails, separator, newLine);
  695.     }
  696.    
  697.    
  698.    
  699.     /* ********  R I C E R C A  E L E M E N T I   P R I M I T I V I  ******** */
  700.    
  701.     public PortaDominio getPortaDominio(String nome,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  702.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null;
  703.         if(useRequestInfo) {
  704.             if( requestInfo.getRequestConfig().getSoggettoErogatorePdd()!=null &&
  705.                     nome.equals(requestInfo.getRequestConfig().getSoggettoErogatorePdd().getNome()) ) {
  706.                 return requestInfo.getRequestConfig().getSoggettoErogatorePdd();
  707.             }
  708.             else if( requestInfo.getRequestConfig().getSoggettoFruitorePdd()!=null &&
  709.                     nome.equals(requestInfo.getRequestConfig().getSoggettoFruitorePdd().getNome())  ) {
  710.                 return requestInfo.getRequestConfig().getSoggettoFruitorePdd();
  711.             }
  712.         }
  713.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  714.             if( requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePdd()!=null &&
  715.                     nome!=null && nome.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePdd().getNome())   ) {
  716.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitorePdd();
  717.             }
  718.         }
  719.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null) {
  720.             if( requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePdd()!=null &&
  721.                     nome!=null && nome.equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePdd().getNome())   ) {
  722.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitorePdd();
  723.             }
  724.         }
  725.         return this.registroServiziReader.getPortaDominio(this.getConnection(), nome, nomeRegistro);
  726.         // il set viene effettuato nei service utils per comprendere se si tratta di fruitore o erogatore
  727.     }

  728.     public Ruolo getRuolo(String nome,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  729.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null;
  730.         if(useRequestInfo) {
  731.             Ruolo ruolo = requestInfo.getRequestConfig().getRuolo(nome);
  732.             if(ruolo!=null) {
  733.                 return ruolo;
  734.             }
  735.         }
  736.         Ruolo r = this.registroServiziReader.getRuolo(this.getConnection(), nome, nomeRegistro);
  737.         if(useRequestInfo && requestInfo!=null) {
  738.             requestInfo.getRequestConfig().addRuolo(nome, r,
  739.                     requestInfo.getIdTransazione());
  740.         }
  741.         return r;
  742.     }
  743.     public Ruolo getRuolo(IDRuolo idRuolo,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  744.         return this.getRuolo(idRuolo.getNome(), nomeRegistro, requestInfo);
  745.     }
  746.    
  747.     public Scope getScope(String nome,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  748.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && nome!=null;
  749.         if(useRequestInfo) {
  750.             Scope scope = requestInfo.getRequestConfig().getScope(nome);
  751.             if(scope!=null) {
  752.                 return scope;
  753.             }
  754.         }
  755.         Scope s = this.registroServiziReader.getScope(this.getConnection(), nome, nomeRegistro);
  756.         if(useRequestInfo && requestInfo!=null) {
  757.             requestInfo.getRequestConfig().addScope(nome, s,
  758.                     requestInfo.getIdTransazione());
  759.         }
  760.         return s;
  761.     }
  762.     public Scope getScope(IDScope idScope,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  763.         return this.getScope(idScope.getNome(), nomeRegistro, requestInfo);
  764.     }

  765.     public Soggetto getSoggetto(IDSoggetto idSoggetto,String nomeRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  766.         Soggetto soggetto = _getSoggettoFromRequestInfo(idSoggetto, requestInfo);
  767.         if(soggetto!=null) {
  768.             return soggetto;
  769.         }
  770.         return this.registroServiziReader.getSoggetto(this.getConnection(), idSoggetto, nomeRegistro);
  771.     }
  772.     static Soggetto _getSoggettoFromRequestInfo(IDSoggetto idSoggetto, RequestInfo requestInfo) {
  773.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idSoggetto!=null;
  774.         if(useRequestInfo) {
  775.             if( requestInfo.getRequestConfig().getSoggettoErogatoreRegistry()!=null &&
  776.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoErogatoreRegistry().getTipo()) &&
  777.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoErogatoreRegistry().getNome())    ) {
  778.                 return requestInfo.getRequestConfig().getSoggettoErogatoreRegistry();
  779.             }
  780.             else if( requestInfo.getRequestConfig().getSoggettoFruitoreRegistry()!=null &&
  781.                 idSoggetto.getTipo().equals(requestInfo.getRequestConfig().getSoggettoFruitoreRegistry().getTipo()) &&
  782.                     idSoggetto.getNome().equals(requestInfo.getRequestConfig().getSoggettoFruitoreRegistry().getNome()) ) {
  783.                 return requestInfo.getRequestConfig().getSoggettoFruitoreRegistry();
  784.             }
  785.         }
  786.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo()!=null) {
  787.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreRegistry()!=null && idSoggetto!=null &&
  788.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreRegistry().getTipo()) &&
  789.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreRegistry().getNome())) {
  790.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTrasportoInfo().getSoggettoFruitoreRegistry();
  791.             }
  792.         }
  793.         if(requestInfo!=null && requestInfo.getRequestThreadContext()!=null && requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo()!=null) {
  794.             if(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreRegistry()!=null && idSoggetto!=null &&
  795.                     idSoggetto.getTipo().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreRegistry().getTipo()) &&
  796.                     idSoggetto.getNome().equals(requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreRegistry().getNome())) {
  797.                 return requestInfo.getRequestThreadContext().getRequestFruitoreTokenInfo().getSoggettoFruitoreRegistry();
  798.             }
  799.         }
  800.         return null;
  801.     }
  802.    
  803.     public AccordoServizioParteComune getAccordoServizioParteComune(IDAccordo idAccordo,String nomeRegistro,Boolean readContenutiAllegati,Boolean readDatiRegistro, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  804.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idAccordo!=null &&
  805.                 (readContenutiAllegati==null || readContenutiAllegati==false) &&
  806.                 (readDatiRegistro==null || readDatiRegistro==false);
  807.         if(useRequestInfo) {
  808.             if( requestInfo.getRequestConfig().getAspc()!=null) {
  809.                 IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
  810.                 String uriAspc = idAccordoFactory.getUriFromAccordo(requestInfo.getRequestConfig().getAspc());
  811.                 String uriParam = idAccordoFactory.getUriFromIDAccordo(idAccordo);
  812.                 if(uriAspc.equals(uriParam)) {
  813.                     return requestInfo.getRequestConfig().getAspc();
  814.                 }
  815.             }
  816.         }
  817.         AccordoServizioParteComune aspc = this.registroServiziReader.getAccordoServizioParteComune(this.getConnection(), idAccordo, readContenutiAllegati, readDatiRegistro, nomeRegistro);
  818.         if(useRequestInfo && requestInfo.getRequestConfig().getAspc()==null) {
  819.             requestInfo.getRequestConfig().setAspc(aspc);
  820.         }
  821.         return aspc;
  822.     }
  823.    
  824.     public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(IDServizio idServizio,String nomeRegistro,Boolean readContenutiAllegati, RequestInfo requestInfo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  825.         boolean useRequestInfo = requestInfo!=null && requestInfo.getRequestConfig()!=null && idServizio!=null &&
  826.                 (readContenutiAllegati==null || readContenutiAllegati==false);
  827.         if(useRequestInfo) {
  828.             if( requestInfo.getRequestConfig().getAsps()!=null) {
  829.                 IDServizioFactory idServizioFactory = IDServizioFactory.getInstance();
  830.                 String uriAsps = idServizioFactory.getUriFromAccordo(requestInfo.getRequestConfig().getAsps());
  831.                 String uriParam = idServizioFactory.getUriFromIDServizio(idServizio);
  832.                 if(uriAsps.equals(uriParam)) {
  833.                     return requestInfo.getRequestConfig().getAsps();
  834.                 }
  835.             }
  836.         }
  837.         AccordoServizioParteSpecifica asps = this.registroServiziReader.getAccordoServizioParteSpecifica(this.getConnection(), idServizio, readContenutiAllegati, nomeRegistro);
  838.         if(useRequestInfo && requestInfo.getRequestConfig().getAsps()==null) {
  839.             requestInfo.getRequestConfig().setAsps(asps);
  840.         }
  841.         return asps;
  842.     }
  843.    
  844.     public AccordoCooperazione getAccordoCooperazione(IDAccordoCooperazione idAccordo,String nomeRegistro,Boolean readContenutiAllegati) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  845.         return this.registroServiziReader.getAccordoCooperazione(this.getConnection(), idAccordo, readContenutiAllegati, nomeRegistro);
  846.     }

  847.    
  848.        
  849.     /* ********  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  ******** */
  850.    
  851.     public List<String> getAllIdPorteDominio(FiltroRicerca filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  852.         return this.registroServiziReader.getAllIdPorteDominio(this.getConnection(), filtroRicerca, nomeRegistro);
  853.     }

  854.     public List<IDGruppo> getAllIdGruppi(FiltroRicercaGruppi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  855.         return this.registroServiziReader.getAllIdGruppi(this.getConnection(), filtroRicerca, nomeRegistro);
  856.     }
  857.    
  858.     public List<IDRuolo> getAllIdRuoli(FiltroRicercaRuoli filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  859.         return this.registroServiziReader.getAllIdRuoli(this.getConnection(), filtroRicerca, nomeRegistro);
  860.     }
  861.    
  862.     public List<IDScope> getAllIdScope(FiltroRicercaScope filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  863.         return this.registroServiziReader.getAllIdScope(this.getConnection(), filtroRicerca, nomeRegistro);
  864.     }
  865.    
  866.     public List<IDSoggetto> getAllIdSoggetti(FiltroRicercaSoggetti filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  867.         return this.registroServiziReader.getAllIdSoggetti(this.getConnection(), filtroRicerca, nomeRegistro);
  868.     }
  869.    
  870.     public List<IDAccordoCooperazione> getAllIdAccordiCooperazione(FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  871.         return this.registroServiziReader.getAllIdAccordiCooperazione(this.getConnection(), filtroRicerca, nomeRegistro);
  872.     }
  873.    
  874.     public List<IDAccordo> getAllIdAccordiServizioParteComune(FiltroRicercaAccordi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  875.         return this.registroServiziReader.getAllIdAccordiServizioParteComune(this.getConnection(), filtroRicerca, nomeRegistro);
  876.     }
  877.    
  878.     public List<IDPortType> getAllIdPortType(FiltroRicercaPortTypes filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  879.         return this.registroServiziReader.getAllIdPortType(this.getConnection(), filtroRicerca, nomeRegistro);
  880.     }
  881.    
  882.     public List<IDPortTypeAzione> getAllIdAzionePortType(FiltroRicercaOperations filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  883.         return this.registroServiziReader.getAllIdAzionePortType(this.getConnection(), filtroRicerca, nomeRegistro);
  884.     }
  885.    
  886.     public List<IDAccordoAzione> getAllIdAzioneAccordo(FiltroRicercaAzioni filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  887.         return this.registroServiziReader.getAllIdAzioneAccordo(this.getConnection(), filtroRicerca, nomeRegistro);
  888.     }
  889.    
  890.     public List<IDResource> getAllIdResource(FiltroRicercaResources filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  891.         return this.registroServiziReader.getAllIdResource(this.getConnection(), filtroRicerca, nomeRegistro);
  892.     }
  893.    
  894.     public List<IDServizio> getAllIdServizi(FiltroRicercaServizi filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  895.         return this.registroServiziReader.getAllIdServizi(this.getConnection(), filtroRicerca, nomeRegistro);
  896.     }
  897.    
  898.     public List<IDFruizione> getAllIdFruizioniServizio(FiltroRicercaFruizioniServizio filtroRicerca,String nomeRegistro) throws DriverRegistroServiziException, DriverRegistroServiziNotFound{
  899.         return this.registroServiziReader.getAllIdFruizioniServizio(this.getConnection(), filtroRicerca, nomeRegistro);
  900.     }

  901.    
  902.    
  903.     /* ********  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  ******** */
  904.    
  905.     public Serializable getGenericObject(String keyObject) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  906.         return this.registroServiziReader.getGenericObject(keyObject);
  907.     }
  908.    
  909.     public Serializable pushGenericObject(String keyObject, Serializable object) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  910.         return this.registroServiziReader.pushGenericObject(keyObject, object);
  911.     }

  912.    
  913.    
  914. }