SDIValidazioneSintattica.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.sdi.validator;


  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import javax.xml.soap.SOAPElement;

  24. import org.openspcoop2.core.constants.TipoPdD;
  25. import org.openspcoop2.message.OpenSPCoop2Message;
  26. import org.openspcoop2.message.constants.ServiceBinding;
  27. import org.openspcoop2.message.soap.SoapUtils;
  28. import org.openspcoop2.protocol.basic.validator.ValidazioneSintattica;
  29. import org.openspcoop2.protocol.sdi.SDIBustaRawContent;
  30. import org.openspcoop2.protocol.sdi.config.SDIProperties;
  31. import org.openspcoop2.protocol.sdi.constants.SDICostanti;
  32. import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioRiceviFile;
  33. import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioRiceviNotifica;
  34. import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioRicezioneFatture;
  35. import org.openspcoop2.protocol.sdi.constants.SDICostantiServizioTrasmissioneFatture;
  36. import org.openspcoop2.protocol.sdi.utils.SDIUtils;
  37. import org.openspcoop2.protocol.sdk.Busta;
  38. import org.openspcoop2.protocol.sdk.Eccezione;
  39. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  40. import org.openspcoop2.protocol.sdk.ProtocolException;
  41. import org.openspcoop2.protocol.sdk.config.IProtocolConfiguration;
  42. import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
  43. import org.openspcoop2.protocol.sdk.constants.ErroreCooperazione;
  44. import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
  45. import org.openspcoop2.protocol.sdk.constants.RuoloMessaggio;
  46. import org.openspcoop2.protocol.sdk.state.IState;
  47. import org.openspcoop2.protocol.sdk.validator.ProprietaValidazioneErrori;
  48. import org.openspcoop2.protocol.sdk.validator.ValidazioneSintatticaResult;

  49. /**
  50.  * Classe che implementa, in base al protocollo SdI, l'interfaccia {@link org.openspcoop2.protocol.sdk.validator.IValidazioneSintattica}
  51.  *
  52.  * @author Poli Andrea (apoli@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  */
  56. public class SDIValidazioneSintattica extends ValidazioneSintattica<SOAPElement>{

  57.     /** ValidazioneUtils */
  58.     protected SDIValidazioneUtils validazioneUtils;
  59.     /** Properties */
  60.     protected SDIProperties sdiProperties;
  61.     /** Config */
  62.     protected IProtocolConfiguration protocolConfiguration;
  63.    
  64.     /** Errori di validazione riscontrati sulla busta */
  65.     protected java.util.List<Eccezione> erroriValidazione = new ArrayList<>();
  66.     /** Errori di processamento riscontrati sulla busta */
  67.     protected java.util.List<Eccezione> erroriProcessamento = new ArrayList<>();
  68.     /** Eventuale codice di errore avvenuto durante il processo di validazione  */
  69.     private CodiceErroreCooperazione codiceErrore;
  70.     /** Eventuale messaggio di errore avvenuto durante il processo di validazione */
  71.     private String msgErrore;
  72.     /** SOAPElement senza il contenuto (SoloProtocolloSDI) */
  73.     protected SDIBustaRawContent headerElement;
  74.    
  75.     public SDIValidazioneSintattica(IProtocolFactory<SOAPElement> factory, IState state) throws ProtocolException {
  76.         super(factory,state);
  77.         this.validazioneUtils = new SDIValidazioneUtils(factory);
  78.         this.sdiProperties = SDIProperties.getInstance(this.log);
  79.         this.protocolConfiguration = factory.createProtocolConfiguration();
  80.     }

  81.    
  82.     @Override
  83.     public SDIBustaRawContent getBustaRawContent_senzaControlli(
  84.             OpenSPCoop2Message msg) throws ProtocolException {
  85.         try{
  86.             if(msg!=null) {
  87.                 SOAPElement se = SDIUtils.readHeader(msg.castAsSoap());
  88.                 if(se!=null) {
  89.                     return new SDIBustaRawContent(se);
  90.                 }
  91.             }
  92.             return null;
  93.         }catch(Exception e){
  94.             this.log.debug("getHeaderProtocollo_senzaControlli error: "+e.getMessage(),e);
  95.             return null;
  96.         }
  97.     }
  98.    
  99.    
  100.     @Override
  101.     public Busta getBusta_senzaControlli(OpenSPCoop2Message msg) throws ProtocolException{
  102.         return null;
  103.     }
  104.    

  105.     @Override
  106.     public ValidazioneSintatticaResult<SOAPElement> validaRichiesta(OpenSPCoop2Message msg, Busta datiBustaLettiURLMappingProperties, ProprietaValidazioneErrori proprietaValidazioneErrori) throws ProtocolException{
  107.        
  108.         ValidazioneSintatticaResult<SOAPElement> basicResult = super.validaRichiesta(msg, datiBustaLettiURLMappingProperties, proprietaValidazioneErrori);
  109.        
  110.         this.headerElement = this.getBustaRawContent_senzaControlli(msg);
  111.        
  112.         boolean isValido = this.valida(msg,basicResult.getBusta(), true,null);
  113.        
  114.         ErroreCooperazione errore = null;
  115.         if(this.msgErrore!=null && this.codiceErrore!=null){
  116.             errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
  117.         }
  118.         java.util.List<Eccezione> erroriValidazione = null;
  119.         if(this.erroriValidazione.size()>0){
  120.             erroriValidazione = this.erroriValidazione;
  121.         }
  122.         java.util.List<Eccezione> erroriProcessamento = null;
  123.         if(this.erroriProcessamento.size()>0){
  124.             erroriValidazione = this.erroriProcessamento;
  125.         }
  126.         ValidazioneSintatticaResult<SOAPElement> result = new ValidazioneSintatticaResult<SOAPElement>(erroriValidazione, erroriProcessamento, null,
  127.                 basicResult.getBusta(), errore, null, this.headerElement, isValido);
  128.         return result;
  129.        
  130.     }
  131.    
  132.     @Override
  133.     public ValidazioneSintatticaResult<SOAPElement> validaRisposta(OpenSPCoop2Message msg, Busta bustaRichiesta, ProprietaValidazioneErrori proprietaValidazioneErrori) throws ProtocolException{
  134.         ValidazioneSintatticaResult<SOAPElement> basicResult = super.validaRisposta(msg, bustaRichiesta, proprietaValidazioneErrori);
  135.        
  136.         boolean hasFault = false;
  137.         try {
  138.             hasFault = msg.castAsSoap().getSOAPBody().hasFault();
  139.         } catch (Exception e) {
  140.             throw new ProtocolException(e);
  141.         }
  142.         if(hasFault){
  143.             return basicResult;
  144.         }
  145.        
  146.         this.headerElement = this.getBustaRawContent_senzaControlli(msg);
  147.        
  148.         boolean isValido = this.valida(msg,basicResult.getBusta(),false,bustaRichiesta);
  149.        
  150.         ErroreCooperazione errore = null;
  151.         if(this.msgErrore!=null && this.codiceErrore!=null){
  152.             errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
  153.         }
  154.         java.util.List<Eccezione> erroriValidazione = null;
  155.         if(this.erroriValidazione.size()>0){
  156.             erroriValidazione = this.erroriValidazione;
  157.         }
  158.         java.util.List<Eccezione> erroriProcessamento = null;
  159.         if(this.erroriProcessamento.size()>0){
  160.             erroriValidazione = this.erroriProcessamento;
  161.         }
  162.         ValidazioneSintatticaResult<SOAPElement> result = new ValidazioneSintatticaResult<SOAPElement>(erroriValidazione, erroriProcessamento, null,
  163.                 basicResult.getBusta(), errore, null, this.headerElement, isValido);
  164.         return result;
  165.     }
  166.        
  167.     @Override
  168.     public boolean verifyProtocolPresence(TipoPdD tipoPdD, ProfiloDiCollaborazione profilo, RuoloMessaggio ruoloMessaggio,
  169.             OpenSPCoop2Message msg) throws ProtocolException{
  170.         try{
  171.             if(msg==null){
  172.                 return false;
  173.             }
  174.             if(msg.castAsSoap().getSOAPBody()==null){
  175.                 return false;
  176.             }
  177.             SOAPElement child = SoapUtils.getNotEmptyFirstChildSOAPElement(msg.castAsSoap().getSOAPBody());
  178.             if(child==null){
  179.                 return false;
  180.             }
  181.             String namespace = child.getNamespaceURI();
  182.             if(namespace==null){
  183.                 return false;
  184.             }
  185.             boolean verify = (SDICostantiServizioRiceviFile.SDI_SERVIZIO_RICEVI_FILE_NAMESPACE.equals(namespace)) ||
  186.                     (SDICostantiServizioRiceviNotifica.SDI_SERVIZIO_RICEVI_NOTIFICA_NAMESPACE.equals(namespace)) ||
  187.                     (SDICostantiServizioRicezioneFatture.RICEZIONE_SERVIZIO_RICEZIONE_FATTURE_NAMESPACE.equals(namespace)) ||
  188.                     (SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_NAMESPACE.equals(namespace));
  189.             if(!verify){
  190.                 // per sondaPdD
  191.                 if(RuoloMessaggio.RISPOSTA.equals(ruoloMessaggio) && TipoPdD.DELEGATA.equals(tipoPdD)){
  192.                     if(this.sdiProperties.getNamespaceWhiteList().contains(namespace)){
  193.                         return true;
  194.                     }
  195.                     else{
  196.                         return false;
  197.                     }
  198.                 }else{
  199.                     return false;
  200.                 }
  201.             }
  202.             else{
  203.                 return true;
  204.             }
  205.            
  206.         }catch(Exception e){
  207.             throw new ProtocolException(e.getMessage(),e);
  208.         }
  209.     }

  210.    
  211.     private boolean valida(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta, Busta bustaRichiesta){
  212.         try{
  213.             this._valida(msg, busta, isRichiesta);
  214.            
  215.             // riporto le properties lette nella richiesta
  216.             if(bustaRichiesta!=null && busta.sizeProperties()>0){
  217.                 String [] propertiesNames = busta.getPropertiesNames();
  218.                 if(propertiesNames!=null){
  219.                     for (int i = 0; i < propertiesNames.length; i++) {
  220.                         String key = propertiesNames[i];
  221.                         String value = busta.getProperty(key);
  222.                         if(key!=null && value!=null){
  223.                             bustaRichiesta.addProperty(key, value);
  224.                         }
  225.                     }
  226.                 }
  227.             }
  228.            
  229.             // riporto eventuale nome file nella busta di risposta
  230.             if(SDICostantiServizioRiceviFile.SDI_SERVIZIO_RICEVI_FILE.equals(busta.getServizio())){
  231.                 if(bustaRichiesta!=null && bustaRichiesta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE)!=null){
  232.                     busta.addProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE, bustaRichiesta.getProperty(SDICostanti.SDI_BUSTA_EXT_NOME_FILE));
  233.                 }
  234.             }
  235.            
  236.             return true;
  237.         }catch(Exception e) {
  238.             this.msgErrore =  "[ErroreInterno]: "+e.getMessage();
  239.             this.log.error(this.msgErrore,e);
  240.             this.codiceErrore = CodiceErroreCooperazione.FORMATO_NON_CORRETTO;
  241.             return false;
  242.         }
  243.     }
  244.    
  245.     private void _valida(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta) throws Exception{
  246.        
  247.         if(msg==null){
  248.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_NON_CORRETTO,
  249.                     "Messaggio non presente"));
  250.             return;
  251.         }
  252.         if(msg.castAsSoap().getSOAPBody()==null){
  253.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_PRESENTE));
  254.             return;
  255.         }
  256.         List<SOAPElement> soapBodyChilds = SoapUtils.getNotEmptyChildSOAPElement(msg.castAsSoap().getSOAPBody());
  257.         if(soapBodyChilds==null || soapBodyChilds.size()<=0){
  258.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_PRESENTE));
  259.             return;        
  260.         }
  261.         if(soapBodyChilds.size()>1){
  262.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO,
  263.                     "Sono presenti più elementi ("+soapBodyChilds.size()+") all'interno del SoapBody"));
  264.             return;        
  265.         }
  266.         SOAPElement sdiMessage = soapBodyChilds.get(0);
  267.         if(sdiMessage==null){
  268.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_CORPO_NON_PRESENTE));
  269.             return;
  270.         }
  271.        
  272.         if(busta==null){
  273.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_PRESENTE,
  274.                     "Informazioni di protocollo non presenti"));
  275.             return;
  276.         }
  277.        
  278.         // mittente
  279.         if(busta.getTipoMittente()==null){
  280.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_MITTENTE_NON_PRESENTE));
  281.             return;
  282.         }
  283.         if(this.protocolConfiguration.getTipiSoggetti().contains(busta.getTipoMittente())==false){
  284.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_MITTENTE_SCONOSCIUTO));
  285.             return;        
  286.         }
  287.         if(busta.getTipoMittente().equals(this.sdiProperties.getTipoSoggettoSDI())==false){
  288.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_MITTENTE_NON_VALIDO));
  289.             return;
  290.         }
  291.         if(busta.getMittente()==null){
  292.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_PRESENTE));
  293.             return;
  294.         }
  295.         if(busta.getMittente().equals(this.sdiProperties.getNomeSoggettoSDI())==false){
  296.             boolean whiteList = false;
  297.             if(busta.getMittente()!=null && this.sdiProperties.getSoggettiWhiteList().contains(busta.getMittente())){
  298.                 this.log.debug("Mittente ["+busta.getMittente()+"] in white list");
  299.                 whiteList = true;
  300.             }
  301.             if(!whiteList){
  302.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_VALIDO));
  303.                 return;
  304.             }
  305.         }
  306.        
  307.         // destinatario
  308.         if(busta.getTipoDestinatario()==null){
  309.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_DESTINATARIO_NON_PRESENTE));
  310.             return;
  311.         }
  312.         if(this.protocolConfiguration.getTipiSoggetti().contains(busta.getTipoDestinatario())==false){
  313.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_DESTINATARIO_SCONOSCIUTO));
  314.             return;        
  315.         }
  316.         if(busta.getDestinatario()==null){
  317.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_PRESENTE));
  318.             return;
  319.         }
  320.        
  321.         // azione
  322.         if(busta.getAzione()==null){
  323.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.AZIONE_NON_PRESENTE));
  324.             return;
  325.         }
  326.        
  327.         // servizio
  328.         if(busta.getServizio()==null){
  329.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.SERVIZIO_NON_PRESENTE));
  330.             return;
  331.         }  
  332.         if(this.protocolConfiguration.getTipiServizi(ServiceBinding.SOAP).contains(busta.getTipoServizio())==false){
  333.             this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.TIPO_SERVIZIO_SCONOSCIUTO));
  334.             return;        
  335.         }
  336.         if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE.equals(busta.getServizio())){
  337.             this.validaServizioTrasmissione(msg, busta,isRichiesta,sdiMessage);
  338.         }
  339.         else if(SDICostantiServizioRicezioneFatture.RICEZIONE_SERVIZIO_RICEZIONE_FATTURE.equals(busta.getServizio())){
  340.             this.validaServizioRicezione(msg, busta,isRichiesta,sdiMessage);            
  341.         }
  342.         else if(SDICostantiServizioRiceviNotifica.SDI_SERVIZIO_RICEVI_NOTIFICA.equals(busta.getServizio())){
  343.             this.validaServizioRiceviNotifica(msg, busta,isRichiesta,sdiMessage);          
  344.         }
  345.         else if(SDICostantiServizioRiceviFile.SDI_SERVIZIO_RICEVI_FILE.equals(busta.getServizio())){
  346.             this.validaServizioRiceviFile(msg, busta,isRichiesta,sdiMessage);          
  347.         }
  348.         else{
  349.             boolean whiteList = false;
  350.             if(busta.getServizio()!=null && this.sdiProperties.getServiziWhiteList().contains(busta.getServizio())){
  351.                 this.log.debug("Servizio ["+busta.getServizio()+"] in white list");
  352.                 whiteList = true;
  353.             }
  354.             if(!whiteList){
  355.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.SERVIZIO_NON_VALIDO));
  356.                 return;
  357.             }
  358.         }
  359.            
  360.     }
  361.    
  362.     private void validaServizioTrasmissione(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta,SOAPElement sdiMessage) throws Exception{
  363.        
  364.         String azione = busta.getAzione();
  365.        
  366.         SDIValidatoreServizioTrasmissioneFatture validatore = new SDIValidatoreServizioTrasmissioneFatture(this,msg,isRichiesta,sdiMessage,busta);
  367.        
  368.         if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_RICEVUTA_CONSEGNA.equals(azione)){
  369.             validatore.validaRicevutaConsegna();
  370.         }
  371.         else if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_NOTIFICA_MANCATA_CONSEGNA.equals(azione)){
  372.             validatore.validaNotificaMancataConsegna();
  373.         }
  374.         else if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_NOTIFICA_SCARTO.equals(azione)){
  375.             validatore.validaNotificaScarto();
  376.         }
  377.         else if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_NOTIFICA_ESITO.equals(azione)){
  378.             validatore.validaNotificaEsito();
  379.         }
  380.         else if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_NOTIFICA_DECORRENZA_TERMINI.equals(azione)){
  381.             validatore.validaNotificaDecorrenzaTermini();
  382.         }
  383.         else if(SDICostantiServizioTrasmissioneFatture.TRASMISSIONE_SERVIZIO_TRASMISSIONE_FATTURE_AZIONE_ATTESTAZIONE_TRASMISSIONE_FATTURA.equals(azione)){
  384.             validatore.validaAttestazioneTrasmissioneFattura();
  385.         }
  386.         else{
  387.             boolean whiteList = false;
  388.             if(busta.getAzione()!=null && this.sdiProperties.getServiziWhiteList().contains(busta.getAzione())){
  389.                 this.log.debug("Azione ["+busta.getAzione()+"] in white list");
  390.                 whiteList = true;
  391.             }
  392.             if(!whiteList){
  393.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.AZIONE_NON_VALIDA));
  394.                 return;
  395.             }
  396.         }
  397.     }
  398.        
  399.     private void validaServizioRicezione(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta, SOAPElement sdiMessage) throws Exception{
  400.        
  401.         String azione = busta.getAzione();
  402.        
  403.         SDIValidatoreServizioRicezioneFatture validatore = new SDIValidatoreServizioRicezioneFatture(this, msg, isRichiesta,sdiMessage,busta);
  404.        
  405.         if(SDICostantiServizioRicezioneFatture.RICEZIONE_SERVIZIO_RICEZIONE_FATTURE_AZIONE_RICEVI_FATTURE.equals(azione)){
  406.             validatore.validaRiceviFatture();
  407.         }
  408.         else if(SDICostantiServizioRicezioneFatture.RICEZIONE_SERVIZIO_RICEZIONE_FATTURE_AZIONE_NOTIFICA_DECORRENZA_TERMINI.equals(azione)){
  409.             validatore.validaNotificaDecorrenzaTermini();  
  410.         }
  411.         else{
  412.             boolean whiteList = false;
  413.             if(busta.getAzione()!=null && this.sdiProperties.getServiziWhiteList().contains(busta.getAzione())){
  414.                 this.log.debug("Azione ["+busta.getAzione()+"] in white list");
  415.                 whiteList = true;
  416.             }
  417.             if(!whiteList){
  418.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.AZIONE_NON_VALIDA));
  419.                 return;
  420.             }
  421.         }  
  422.     }
  423.    
  424.     private void validaServizioRiceviNotifica(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta, SOAPElement sdiMessage) throws Exception{
  425.        
  426.         String azione = busta.getAzione();
  427.        
  428.         SDIValidatoreServizioRiceviNotifica validatore = new SDIValidatoreServizioRiceviNotifica(this, msg, isRichiesta,sdiMessage,busta);
  429.        
  430.         if(SDICostantiServizioRiceviNotifica.SDI_SERVIZIO_NOTIFICA_ESITO_AZIONE_NOTIFICA_ESITO.equals(azione)){
  431.             validatore.validaNotificaEsito();
  432.         }
  433.         else{
  434.             boolean whiteList = false;
  435.             if(busta.getAzione()!=null && this.sdiProperties.getServiziWhiteList().contains(busta.getAzione())){
  436.                 this.log.debug("Azione ["+busta.getAzione()+"] in white list");
  437.                 whiteList = true;
  438.             }
  439.             if(!whiteList){
  440.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.AZIONE_NON_VALIDA));
  441.                 return;
  442.             }
  443.         }  
  444.     }
  445.    
  446.     private void validaServizioRiceviFile(OpenSPCoop2Message msg, Busta busta, boolean isRichiesta, SOAPElement sdiMessage) throws Exception{
  447.        
  448.         String azione = busta.getAzione();
  449.        
  450.         SDIValidatoreServizioRiceviFile validatore = new SDIValidatoreServizioRiceviFile(this, msg, isRichiesta,sdiMessage,busta);
  451.        
  452.         if(SDICostantiServizioRiceviFile.SDI_SERVIZIO_RICEVI_FILE_AZIONE_RICEVI_FILE.equals(azione)){
  453.             validatore.validaRiceviFile();
  454.         }
  455.         else{
  456.             boolean whiteList = false;
  457.             if(busta.getAzione()!=null && this.sdiProperties.getServiziWhiteList().contains(busta.getAzione())){
  458.                 this.log.debug("Azione ["+busta.getAzione()+"] in white list");
  459.                 whiteList = true;
  460.             }
  461.             if(!whiteList){
  462.                 this.erroriValidazione.add(this.validazioneUtils.newEccezioneValidazione(CodiceErroreCooperazione.AZIONE_NON_VALIDA));
  463.                 return;
  464.             }
  465.         }  
  466.     }
  467. }