StatoServiziJMXResource.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.pdd.core.jmx;


  21. import java.util.Iterator;

  22. import javax.management.Attribute;
  23. import javax.management.AttributeList;
  24. import javax.management.AttributeNotFoundException;
  25. import javax.management.DynamicMBean;
  26. import javax.management.InvalidAttributeValueException;
  27. import javax.management.JMException;
  28. import javax.management.MBeanAttributeInfo;
  29. import javax.management.MBeanConstructorInfo;
  30. import javax.management.MBeanException;
  31. import javax.management.MBeanInfo;
  32. import javax.management.MBeanOperationInfo;
  33. import javax.management.MBeanParameterInfo;
  34. import javax.management.NotificationBroadcasterSupport;
  35. import javax.management.ReflectionException;

  36. import org.openspcoop2.core.config.TipoFiltroAbilitazioneServizi;
  37. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  38. import org.openspcoop2.pdd.core.StatoServiziPdD;
  39. import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;


  40. /**
  41.  * Implementazione JMX per la gestione dell'autorizzazione
  42.  *  
  43.  * @author Poli Andrea (apoli@link.it)
  44.  * @author $Author$
  45.  * @version $Rev$, $Date$
  46.  */
  47. public class StatoServiziJMXResource extends NotificationBroadcasterSupport implements DynamicMBean {

  48.     /** Nomi proprieta' */
  49.     public static final String COMPONENTE_PD = "Servizio PortaDelegata";
  50.     public static final String COMPONENTE_PD_ABILITAZIONI = "Servizio PortaDelegata (Abilitazioni Puntuali)";
  51.     public static final String COMPONENTE_PD_DISABILITAZIONI = "Servizio PortaDelegata (Disabilitazioni Puntuali)";
  52.     public static final String COMPONENTE_PA = "Servizio PortaApplicativa";
  53.     public static final String COMPONENTE_PA_ABILITAZIONI = "Servizio PortaApplicativa (Abilitazioni Puntuali)";
  54.     public static final String COMPONENTE_PA_DISABILITAZIONI = "Servizio PortaApplicativa (Disabilitazioni Puntuali)";
  55.     public static final String COMPONENTE_IM = "Servizio IntegrationManager";

  56.     /** Nomi metodi */
  57.     public static final String ABILITA_COMPONENTE_PD = "abilitaServizioPortaDelegata";
  58.     public static final String ABILITA_COMPONENTE_PA = "abilitaServizioPortaApplicativa";
  59.     public static final String ABILITA_COMPONENTE_IM = "abilitaServizioIntegrationManager";
  60.     public static final String ABILITA_SERVIZI = "abilitazioneCompletaServizi";

  61.     public static final String DISABILITA_COMPONENTE_PD = "disabilitaServizioPortaDelegata";
  62.     public static final String DISABILITA_COMPONENTE_PA = "disabilitaServizioPortaApplicativa";
  63.     public static final String DISABILITA_COMPONENTE_IM = "disabilitaServizioIntegrationManager";
  64.     public static final String DISABILITA_SERVIZI = "disabilitazioneCompletaServizi";

  65.     public static final String ABILITA_ADD_FILTRO_ABILITAZIONE_PD = "addFiltroAbilitazioneServizioPortaDelegata";
  66.     public static final String ABILITA_ADD_FILTRO_DISABILITAZIONE_PD = "addFiltroDisabilitazioneServizioPortaDelegata";
  67.     public static final String ABILITA_ADD_FILTRO_ABILITAZIONE_PA = "addFiltroAbilitazioneServizioPortaApplicativa";
  68.     public static final String ABILITA_ADD_FILTRO_DISABILITAZIONE_PA = "addFiltroDisabilitazioneServizioPortaApplicativa";

  69.     public static final String ABILITA_REMOVE_FILTRO_ABILITAZIONE_PD = "removeFiltroAbilitazioneServizioPortaDelegata";
  70.     public static final String ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PD = "removeFiltroDisabilitazioneServizioPortaDelegata";
  71.     public static final String ABILITA_REMOVE_FILTRO_ABILITAZIONE_PA = "removeFiltroAbilitazioneServizioPortaApplicativa";
  72.     public static final String ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PA = "removeFiltroDisabilitazioneServizioPortaApplicativa";



  73. //  /** Attributi */
  74. //  private String componentePD = CostantiConfigurazione.ABILITATO.getValue();
  75. //  private String componentePD_abilitazioniPuntuali = "";
  76. //  private String componentePD_disabilitazioniPuntuali = "";
  77. //
  78. //  private String componentePA = CostantiConfigurazione.ABILITATO.getValue();
  79. //  private String componentePA_abilitazioniPuntuali = "";
  80. //  private String componentePA_disabilitazioniPuntuali = "";
  81. //
  82. //  private String componenteIM = CostantiConfigurazione.ABILITATO.getValue();
  83.    
  84.     // uso anzi sempre la lettura effettiva, altrimenti si creano situazioni di stallo quando una cache della configurazione media il salvataggio reale
  85.     public String getComponentePD(){
  86.         return StatoServiziPdD.isPDServiceActive() ? CostantiConfigurazione.ABILITATO.getValue() : CostantiConfigurazione.DISABILITATO.getValue();
  87.     }
  88.     public String getComponentePD_abilitazioniPuntuali(){
  89.         return visualizzaFiltriAbilitazioniServizioPortaDelegata();
  90.     }
  91.     public String getComponentePD_disabilitazioniPuntuali(){
  92.         return visualizzaFiltriDisabilitazioniServizioPortaDelegata();
  93.     }
  94.    
  95.     public String getComponentePA(){
  96.         return StatoServiziPdD.isPAServiceActive() ? CostantiConfigurazione.ABILITATO.getValue() : CostantiConfigurazione.DISABILITATO.getValue();
  97.     }
  98.     public String getComponentePA_abilitazioniPuntuali(){
  99.         return visualizzaFiltriAbilitazioniServizioPortaApplicativa();
  100.     }
  101.     public String getComponentePA_disabilitazioniPuntuali(){
  102.         return visualizzaFiltriDisabilitazioniServizioPortaApplicativa();
  103.     }
  104.    
  105.     public String getComponenteIM(){
  106.         return StatoServiziPdD.isIMServiceActive() ? CostantiConfigurazione.ABILITATO.getValue() : CostantiConfigurazione.DISABILITATO.getValue();
  107.     }



  108.     /** getAttribute */
  109.     @Override
  110.     public Object getAttribute(String attributeName) throws AttributeNotFoundException,MBeanException,ReflectionException{

  111.         if( (attributeName==null) || (attributeName.equals("")) )
  112.             throw new IllegalArgumentException("Il nome dell'attributo e' nullo o vuoto");

  113.         if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PD))
  114.             return this.getComponentePD();
  115.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PD_ABILITAZIONI))
  116.             return this.getComponentePD_abilitazioniPuntuali();
  117.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PD_DISABILITAZIONI))
  118.             return this.getComponentePD_disabilitazioniPuntuali();

  119.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PA))
  120.             return this.getComponentePA();
  121.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PA_ABILITAZIONI))
  122.             return this.getComponentePA_abilitazioniPuntuali();
  123.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_PA_DISABILITAZIONI))
  124.             return this.getComponentePA_disabilitazioniPuntuali();

  125.         else if(attributeName.equals(StatoServiziJMXResource.COMPONENTE_IM))
  126.             return this.getComponenteIM();

  127.         throw new AttributeNotFoundException("Attributo "+attributeName+" non trovato");
  128.     }

  129.     /** getAttributes */
  130.     @Override
  131.     public AttributeList getAttributes(String [] attributesNames){

  132.         if(attributesNames==null)
  133.             throw new IllegalArgumentException("Array nullo");

  134.         AttributeList list = new AttributeList();
  135.         for (int i=0; i<attributesNames.length; i++){
  136.             try{
  137.                 list.add(new Attribute(attributesNames[i],getAttribute(attributesNames[i])));
  138.             }catch(JMException ex){}
  139.         }
  140.         return list;
  141.     }

  142.     /** setAttribute */
  143.     @Override
  144.     public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException{

  145.         if( attribute==null )
  146.             throw new IllegalArgumentException("Il nome dell'attributo e' nullo");

  147.         try{

  148.             if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PD)){
  149.                 String v = (String) attribute.getValue();
  150.                 if(CostantiConfigurazione.ABILITATO.equals(v)){
  151.                     this.abilitaServizioPortaDelegata();
  152.                 }else{
  153.                     this.disabilitaServizioPortaDelegata();
  154.                 }
  155.             }          
  156.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PA)){
  157.                 String v = (String) attribute.getValue();
  158.                 if(CostantiConfigurazione.ABILITATO.equals(v)){
  159.                     this.abilitaServizioPortaApplicativa();
  160.                 }else{
  161.                     this.disabilitaServizioPortaApplicativa();
  162.                 }
  163.             }

  164.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_IM)){
  165.                 String v = (String) attribute.getValue();
  166.                 if(CostantiConfigurazione.ABILITATO.equals(v)){
  167.                     this.abilitaServizioIntegrationManager();
  168.                 }else{
  169.                     this.disabilitaServizioIntegrationManager();
  170.                 }
  171.             }

  172.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PD_ABILITAZIONI)){
  173.                 // nothing DO
  174.             }
  175.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PD_DISABILITAZIONI)){
  176.                 // nothing DO
  177.             }
  178.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PA_ABILITAZIONI)){
  179.                 // nothing DO
  180.             }
  181.             else if(attribute.getName().equals(StatoServiziJMXResource.COMPONENTE_PA_DISABILITAZIONI)){
  182.                 // nothing DO
  183.             }

  184.             else
  185.                 throw new AttributeNotFoundException("Attributo "+attribute.getName()+" non trovato");

  186.         }catch(ClassCastException ce){
  187.             throw new InvalidAttributeValueException("il tipo "+attribute.getValue().getClass()+" dell'attributo "+attribute.getName()+" non e' valido");
  188.         }catch(JMException j){
  189.             throw new MBeanException(j);
  190.         }

  191.     }

  192.     /** setAttributes */
  193.     @Override
  194.     public AttributeList setAttributes(AttributeList list){

  195.         if(list==null)
  196.             throw new IllegalArgumentException("Lista degli attributi e' nulla");

  197.         AttributeList ret = new AttributeList();
  198.         Iterator<?> it = ret.iterator();

  199.         while(it.hasNext()){
  200.             try{
  201.                 Attribute attribute = (Attribute) it.next();
  202.                 setAttribute(attribute);
  203.                 ret.add(attribute);
  204.             }catch(JMException ex){}
  205.         }

  206.         return ret;

  207.     }

  208.     /** invoke */
  209.     @Override
  210.     public Object invoke(String actionName, Object[]params, String[]signature) throws MBeanException,ReflectionException{

  211.         if( (actionName==null) || (actionName.equals("")) )
  212.             throw new IllegalArgumentException("Nessuna operazione definita");

  213.         if(actionName.equals(StatoServiziJMXResource.ABILITA_COMPONENTE_PD)){
  214.             return this.abilitaServizioPortaDelegata();
  215.         }
  216.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_COMPONENTE_PA)){
  217.             return this.abilitaServizioPortaApplicativa();
  218.         }
  219.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_COMPONENTE_IM)){
  220.             return this.abilitaServizioIntegrationManager();
  221.         }
  222.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_SERVIZI)){
  223.             return this.abilitazioneCompletaServizi();
  224.         }

  225.         else if(actionName.equals(StatoServiziJMXResource.DISABILITA_COMPONENTE_PD)){
  226.             return this.disabilitaServizioPortaDelegata();
  227.         }
  228.         else if(actionName.equals(StatoServiziJMXResource.DISABILITA_COMPONENTE_PA)){
  229.             return this.disabilitaServizioPortaApplicativa();
  230.         }
  231.         else if(actionName.equals(StatoServiziJMXResource.DISABILITA_COMPONENTE_IM)){
  232.             return this.disabilitaServizioIntegrationManager();
  233.         }
  234.         else if(actionName.equals(StatoServiziJMXResource.DISABILITA_SERVIZI)){
  235.             return this.disabilitazioneCompletaServizi();
  236.         }

  237.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PD)){
  238.             if(params.length != 10)
  239.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PD+"] Lunghezza parametri non corretta: "+params.length));
  240.             return addFiltroAbilitazioneServizioPortaDelegata(getTipoFiltroAbilitazioneServizi(params));
  241.         }
  242.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PD)){
  243.             if(params.length != 10)
  244.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PD+"] Lunghezza parametri non corretta: "+params.length));
  245.             return addFiltroDisabilitazioneServizioPortaDelegata(getTipoFiltroAbilitazioneServizi(params));
  246.         }
  247.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PD)){
  248.             if(params.length != 10)
  249.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PD+"] Lunghezza parametri non corretta: "+params.length));
  250.             return removeFiltroAbilitazioneServizioPortaDelegata(getTipoFiltroAbilitazioneServizi(params));
  251.         }
  252.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PD)){
  253.             if(params.length != 10)
  254.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PD+"] Lunghezza parametri non corretta: "+params.length));
  255.             return removeFiltroDisabilitazioneServizioPortaDelegata(getTipoFiltroAbilitazioneServizi(params));
  256.         }

  257.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PA)){
  258.             if(params.length != 10)
  259.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PA+"] Lunghezza parametri non corretta: "+params.length));
  260.             return addFiltroAbilitazioneServizioPortaApplicativa(getTipoFiltroAbilitazioneServizi(params));
  261.         }
  262.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PA)){
  263.             if(params.length != 10)
  264.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PA+"] Lunghezza parametri non corretta: "+params.length));
  265.             return addFiltroDisabilitazioneServizioPortaApplicativa(getTipoFiltroAbilitazioneServizi(params));
  266.         }
  267.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PA)){
  268.             if(params.length != 10)
  269.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PA+"] Lunghezza parametri non corretta: "+params.length));
  270.             return removeFiltroAbilitazioneServizioPortaApplicativa(getTipoFiltroAbilitazioneServizi(params));
  271.         }
  272.         else if(actionName.equals(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PA)){
  273.             if(params.length != 10)
  274.                 throw new MBeanException(new Exception("["+StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PA+"] Lunghezza parametri non corretta: "+params.length));
  275.             return removeFiltroDisabilitazioneServizioPortaApplicativa(getTipoFiltroAbilitazioneServizi(params));
  276.         }

  277.         throw new UnsupportedOperationException("Operazione "+actionName+" sconosciuta");
  278.     }

  279.     private TipoFiltroAbilitazioneServizi getTipoFiltroAbilitazioneServizi(Object [] params){
  280.         TipoFiltroAbilitazioneServizi tipo = new TipoFiltroAbilitazioneServizi();

  281.         int index = 0;

  282.         String tmp = (String) params[index];
  283.         if(tmp!=null && !"".equals(tmp)){
  284.             tipo.setTipoSoggettoFruitore(tmp);
  285.         }
  286.         index++;
  287.         tmp = (String) params[index];
  288.         if(tmp!=null && !"".equals(tmp)){
  289.             tipo.setSoggettoFruitore(tmp);
  290.         }
  291.         index++;
  292.         tmp = (String) params[index];
  293.         if(tmp!=null && !"".equals(tmp)){
  294.             tipo.setIdentificativoPortaFruitore(tmp);
  295.         }

  296.         index++;
  297.         tmp = (String) params[index];
  298.         if(tmp!=null && !"".equals(tmp)){
  299.             tipo.setTipoSoggettoErogatore(tmp);
  300.         }
  301.         index++;
  302.         tmp = (String) params[index];
  303.         if(tmp!=null && !"".equals(tmp)){
  304.             tipo.setSoggettoErogatore(tmp);
  305.         }
  306.         index++;
  307.         tmp = (String) params[index];
  308.         if(tmp!=null && !"".equals(tmp)){
  309.             tipo.setIdentificativoPortaErogatore(tmp);
  310.         }

  311.         index++;
  312.         tmp = (String) params[index];
  313.         if(tmp!=null && !"".equals(tmp)){
  314.             tipo.setTipoServizio(tmp);
  315.         }
  316.         index++;
  317.         tmp = (String) params[index];
  318.         if(tmp!=null && !"".equals(tmp)){
  319.             tipo.setServizio(tmp);
  320.         }
  321.         index++;
  322.         Integer tmpI = (Integer) params[index];
  323.         if(tmpI!=null){
  324.             tipo.setVersioneServizio(tmpI);
  325.         }

  326.         index++;
  327.         tmp = (String) params[index];
  328.         if(tmp!=null && !"".equals(tmp)){
  329.             tipo.setAzione(tmp);
  330.         }

  331.         return tipo;
  332.     }

  333.     /* MBean info */
  334.     @Override
  335.     public MBeanInfo getMBeanInfo(){

  336.         // Descrizione della classe nel MBean
  337.         String className = this.getClass().getName();
  338.         String description = "Stato dei servizi attivi";

  339.         // MetaData per gli attributi
  340.         MBeanAttributeInfo componentePD_VAR
  341.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PD,String.class.getName(),
  342.                 "Indicazione se e' il servizio PortaDelegata risulta abilitato",
  343.                 JMXUtils.JMX_ATTRIBUTE_READABLE,JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);
  344.         MBeanAttributeInfo componentePD_abilitazioni_VAR
  345.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PD_ABILITAZIONI,String.class.getName(),
  346.                 "Filtri puntuali che abilitano l'utilizzo del servizio PortaDelegata",
  347.                 JMXUtils.JMX_ATTRIBUTE_READABLE,!JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);
  348.         MBeanAttributeInfo componentePD_disabilitazioni_VAR
  349.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PD_DISABILITAZIONI,String.class.getName(),
  350.                 "Filtri puntuali che disabilitano l'utilizzo del servizio PortaDelegata",
  351.                 JMXUtils.JMX_ATTRIBUTE_READABLE,!JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);

  352.         MBeanAttributeInfo componentePA_VAR
  353.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PA,String.class.getName(),
  354.                 "Indicazione se e' il servizio PortaApplicativa risulta abilitato",
  355.                 JMXUtils.JMX_ATTRIBUTE_READABLE,JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);
  356.         MBeanAttributeInfo componentePA_abilitazioni_VAR
  357.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PA_ABILITAZIONI,String.class.getName(),
  358.                 "Filtri puntuali che abilitano l'utilizzo del servizio PortaApplicativa",
  359.                 JMXUtils.JMX_ATTRIBUTE_READABLE,!JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);
  360.         MBeanAttributeInfo componentePA_disabilitazioni_VAR
  361.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_PA_DISABILITAZIONI,String.class.getName(),
  362.                 "Filtri puntuali che disabilitano l'utilizzo del servizio PortaApplicativa",
  363.                 JMXUtils.JMX_ATTRIBUTE_READABLE,!JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);

  364.         MBeanAttributeInfo componenteIM_VAR
  365.         = new MBeanAttributeInfo(StatoServiziJMXResource.COMPONENTE_IM,String.class.getName(),
  366.                 "Indicazione se e' il servizio IntegrationManager risulta abilitato",
  367.                 JMXUtils.JMX_ATTRIBUTE_READABLE,JMXUtils.JMX_ATTRIBUTE_WRITABLE,!JMXUtils.JMX_ATTRIBUTE_IS_GETTER);


  368.         // MetaData per le operazioni
  369.         MBeanOperationInfo abilitaPD_OP
  370.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_COMPONENTE_PD,"Abilita il servizio PortaDelegata",
  371.                 null,
  372.                 String.class.getName(),
  373.                 MBeanOperationInfo.ACTION);
  374.         MBeanOperationInfo abilitaPA_OP
  375.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_COMPONENTE_PA,"Abilita il servizio PortaApplicativa",
  376.                 null,
  377.                 String.class.getName(),
  378.                 MBeanOperationInfo.ACTION);
  379.         MBeanOperationInfo abilitaIM_OP
  380.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_COMPONENTE_IM,"Abilita il servizio IntegrationManager",
  381.                 null,
  382.                 String.class.getName(),
  383.                 MBeanOperationInfo.ACTION);
  384.         MBeanOperationInfo abilitazioneCompleta_OP
  385.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_SERVIZI,"Abilitazione completa di tutti i servizi",
  386.                 null,
  387.                 String.class.getName(),
  388.                 MBeanOperationInfo.ACTION);

  389.         MBeanOperationInfo disabilitaPD_OP
  390.         = new MBeanOperationInfo(StatoServiziJMXResource.DISABILITA_COMPONENTE_PD,"Disabilita il servizio PortaDelegata",
  391.                 null,
  392.                 String.class.getName(),
  393.                 MBeanOperationInfo.ACTION);
  394.         MBeanOperationInfo disabilitaPA_OP
  395.         = new MBeanOperationInfo(StatoServiziJMXResource.DISABILITA_COMPONENTE_PA,"Disabilita il servizio PortaApplicativa",
  396.                 null,
  397.                 String.class.getName(),
  398.                 MBeanOperationInfo.ACTION);
  399.         MBeanOperationInfo disabilitaIM_OP
  400.         = new MBeanOperationInfo(StatoServiziJMXResource.DISABILITA_COMPONENTE_IM,"Disabilita il servizio IntegrationManager",
  401.                 null,
  402.                 String.class.getName(),
  403.                 MBeanOperationInfo.ACTION);
  404.         MBeanOperationInfo disabilitazioneCompleta_OP
  405.         = new MBeanOperationInfo(StatoServiziJMXResource.DISABILITA_SERVIZI,"Disabilitazione completa di tutti i servizi",
  406.                 null,
  407.                 String.class.getName(),
  408.                 MBeanOperationInfo.ACTION);

  409.         MBeanOperationInfo componentePD_addFiltroAbilitazione_VAR
  410.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PD,"Aggiunge un filtro puntuale che abilita l'utilizzo del servizio PortaDelegata",
  411.                 getMBeanParameterInfoFiltroAbilitazioni(),
  412.                 String.class.getName(),
  413.                 MBeanOperationInfo.ACTION);    
  414.         MBeanOperationInfo componentePD_addFiltroDisabilitazione_VAR
  415.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PD,"Aggiunge un filtro puntuale che disabilita l'utilizzo del servizio PortaDelegata",
  416.                 getMBeanParameterInfoFiltroAbilitazioni(),
  417.                 String.class.getName(),
  418.                 MBeanOperationInfo.ACTION);
  419.         MBeanOperationInfo componentePD_removeFiltroAbilitazione_VAR
  420.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PD,"Rimuove un filtro puntuale che abilita l'utilizzo del servizio PortaDelegata",
  421.                 getMBeanParameterInfoFiltroAbilitazioni(),
  422.                 String.class.getName(),
  423.                 MBeanOperationInfo.ACTION);    
  424.         MBeanOperationInfo componentePD_removeFiltroDisabilitazione_VAR
  425.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PD,"Rimuove un filtro puntuale che disabilita l'utilizzo del servizio PortaDelegata",
  426.                 getMBeanParameterInfoFiltroAbilitazioni(),
  427.                 String.class.getName(),
  428.                 MBeanOperationInfo.ACTION);

  429.         MBeanOperationInfo componentePA_addFiltroAbilitazione_VAR
  430.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_ADD_FILTRO_ABILITAZIONE_PA,"Aggiunge un filtro puntuale che abilita l'utilizzo del servizio PortaApplicativa",
  431.                 getMBeanParameterInfoFiltroAbilitazioni(),
  432.                 String.class.getName(),
  433.                 MBeanOperationInfo.ACTION);    
  434.         MBeanOperationInfo componentePA_addFiltroDisabilitazione_VAR
  435.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_ADD_FILTRO_DISABILITAZIONE_PA,"Aggiunge un filtro puntuale che disabilita l'utilizzo del servizio PortaApplicativa",
  436.                 getMBeanParameterInfoFiltroAbilitazioni(),
  437.                 String.class.getName(),
  438.                 MBeanOperationInfo.ACTION);
  439.         MBeanOperationInfo componentePA_removeFiltroAbilitazione_VAR
  440.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_ABILITAZIONE_PA,"Rimuove un filtro puntuale che abilita l'utilizzo del servizio PortaApplicativa",
  441.                 getMBeanParameterInfoFiltroAbilitazioni(),
  442.                 String.class.getName(),
  443.                 MBeanOperationInfo.ACTION);    
  444.         MBeanOperationInfo componentePA_removeFiltroDisabilitazione_VAR
  445.         = new MBeanOperationInfo(StatoServiziJMXResource.ABILITA_REMOVE_FILTRO_DISABILITAZIONE_PA,"Rimuove un filtro puntuale che disabilita l'utilizzo del servizio PortaApplicativa",
  446.                 getMBeanParameterInfoFiltroAbilitazioni(),
  447.                 String.class.getName(),
  448.                 MBeanOperationInfo.ACTION);


  449.         // Mbean costruttore
  450.         MBeanConstructorInfo defaultConstructor = new MBeanConstructorInfo("Default Constructor","Crea e inizializza una nuova istanza del MBean",null);

  451.         // Lista attributi
  452.         MBeanAttributeInfo[] attributes = new MBeanAttributeInfo[]{componentePD_VAR,componentePD_abilitazioni_VAR,componentePD_disabilitazioni_VAR,
  453.                 componentePA_VAR,componentePA_abilitazioni_VAR,componentePA_disabilitazioni_VAR,
  454.                 componenteIM_VAR};

  455.         // Lista Costruttori
  456.         MBeanConstructorInfo[] constructors = new MBeanConstructorInfo[]{defaultConstructor};

  457.         // Lista operazioni
  458.         MBeanOperationInfo[] operations = new MBeanOperationInfo[]{abilitaPD_OP,abilitaPA_OP,abilitaIM_OP,abilitazioneCompleta_OP,
  459.                 disabilitaPD_OP,disabilitaPA_OP,disabilitaIM_OP,disabilitazioneCompleta_OP,
  460.                 componentePD_addFiltroAbilitazione_VAR,componentePD_addFiltroDisabilitazione_VAR,
  461.                 componentePD_removeFiltroAbilitazione_VAR,componentePD_removeFiltroDisabilitazione_VAR,
  462.                 componentePA_addFiltroAbilitazione_VAR,componentePA_addFiltroDisabilitazione_VAR,
  463.                 componentePA_removeFiltroAbilitazione_VAR,componentePA_removeFiltroDisabilitazione_VAR};

  464.         return new MBeanInfo(className,description,attributes,constructors,operations,null);
  465.     }


  466.     private MBeanParameterInfo[] getMBeanParameterInfoFiltroAbilitazioni(){
  467.         MBeanParameterInfo[] m = new MBeanParameterInfo[]{

  468.                 new MBeanParameterInfo("tipoSoggettoFruitore",String.class.getName(),"Tipo del soggetto fruitore"),
  469.                 new MBeanParameterInfo("nomeSoggettoFruitore",String.class.getName(),"Nome del soggetto fruitore"),
  470.                 new MBeanParameterInfo("identificativoPortaSoggettoFruitore",String.class.getName(),"Identificativo della PdD del soggetto fruitore"),

  471.                 new MBeanParameterInfo("tipoSoggettoErogatore",String.class.getName(),"Tipo del soggetto erogatore"),
  472.                 new MBeanParameterInfo("nomeSoggettoErogatore",String.class.getName(),"Nome del soggetto erogatore"),
  473.                 new MBeanParameterInfo("identificativoPortaSoggettoErogatore",String.class.getName(),"Identificativo della PdD del soggetto erogatore"),

  474.                 new MBeanParameterInfo("tipoServizio",String.class.getName(),"Tipo del servizio"),
  475.                 new MBeanParameterInfo("nomeServizio",String.class.getName(),"Nome del servizio"),
  476.                 new MBeanParameterInfo("versioneServizio",Integer.class.getName(),"Versione del servizio"),

  477.                 new MBeanParameterInfo("azione",String.class.getName(),"azione")
  478.         };
  479.         return m;
  480.     }


  481.     /* Costruttore */
  482.     public StatoServiziJMXResource() {

  483.        
  484.     }

  485.     /* Metodi di management JMX */

  486.     public String abilitaServizioPortaDelegata(){
  487.         if(CostantiConfigurazione.ABILITATO.equals(this.getComponentePD())){
  488.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio PortaDelegata risulta già abilitato";
  489.         }else{
  490.             try{
  491.                 StatoServiziPdD.setPDServiceActive(true);
  492.                 return "Abilitazione del servizio PortaDelegata effettuata con successo";
  493.             }catch(Throwable e){
  494.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Abilitazione del servizio PortaDelegata non riuscita: "+e.getMessage(),e);
  495.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  496.             }
  497.         }
  498.     }
  499.     public String abilitaServizioPortaApplicativa(){
  500.         if(CostantiConfigurazione.ABILITATO.equals(this.getComponentePA())){
  501.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio PortaApplicativa risulta già abilitato";
  502.         }else{
  503.             try{
  504.                 StatoServiziPdD.setPAServiceActive(true);
  505.                 return "Abilitazione del servizio PortaApplicativa effettuata con successo";
  506.             }catch(Throwable e){
  507.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Abilitazione del servizio PortaApplicativa non riuscita: "+e.getMessage(),e);
  508.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  509.             }
  510.         }
  511.     }
  512.     public String abilitaServizioIntegrationManager(){
  513.         if(CostantiConfigurazione.ABILITATO.equals(this.getComponenteIM())){
  514.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio IntegrationManager risulta già abilitato";
  515.         }else{
  516.             try{
  517.                 StatoServiziPdD.setIMServiceActive(true);
  518.                 return "Abilitazione del servizio IntegrationManager effettuata con successo";
  519.             }catch(Throwable e){
  520.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Abilitazione del servizio IntegrationManager non riuscita: "+e.getMessage(),e);
  521.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  522.             }
  523.         }
  524.     }
  525.     public String abilitazioneCompletaServizi(){
  526.         StringBuilder bf = new StringBuilder();
  527.         bf.append(this.abilitaServizioPortaDelegata());
  528.         bf.append("; ");
  529.         bf.append(this.abilitaServizioPortaApplicativa());  
  530.         bf.append("; ");
  531.         bf.append(this.abilitaServizioIntegrationManager());    
  532.         return bf.toString();
  533.     }




  534.     public String disabilitaServizioPortaDelegata(){
  535.         if(CostantiConfigurazione.DISABILITATO.equals(this.getComponentePD())){
  536.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio PortaDelegata risulta già disabilitato";
  537.         }else{
  538.             try{
  539.                 StatoServiziPdD.setPDServiceActive(false);
  540.                 return "Disabilitazione del servizio PortaDelegata effettuata con successo";
  541.             }catch(Throwable e){
  542.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Disabilitazione del servizio PortaDelegata non riuscita: "+e.getMessage(),e);
  543.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  544.             }
  545.         }
  546.     }
  547.     public String disabilitaServizioPortaApplicativa(){
  548.         if(CostantiConfigurazione.DISABILITATO.equals(this.getComponentePA())){
  549.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio PortaApplicativa risulta già disabilitato";
  550.         }else{
  551.             try{
  552.                 StatoServiziPdD.setPAServiceActive(false);
  553.                 return "Disabilitazione del servizio PortaApplicativa effettuata con successo";
  554.             }catch(Throwable e){
  555.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Disabilitazione del servizio PortaApplicativa non riuscita: "+e.getMessage(),e);
  556.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  557.             }
  558.         }
  559.     }
  560.     public String disabilitaServizioIntegrationManager(){
  561.         if(CostantiConfigurazione.DISABILITATO.equals(this.getComponenteIM())){
  562.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" il servizio IntegrationManager risulta già disabilitato";
  563.         }else{
  564.             try{
  565.                 StatoServiziPdD.setIMServiceActive(false);
  566.                 return "Disabilitazione del servizio IntegrationManager effettuata con successo";
  567.             }catch(Throwable e){
  568.                 OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Disabilitazione del servizio IntegrationManager non riuscita: "+e.getMessage(),e);
  569.                 return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  570.             }
  571.         }
  572.     }
  573.     public String disabilitazioneCompletaServizi(){
  574.         StringBuilder bf = new StringBuilder();
  575.         bf.append(this.disabilitaServizioPortaDelegata());  
  576.         bf.append("; ");
  577.         bf.append(this.disabilitaServizioPortaApplicativa());  
  578.         bf.append("; ");
  579.         bf.append(this.disabilitaServizioIntegrationManager());
  580.         return bf.toString();
  581.     }





  582.     public String visualizzaFiltriAbilitazioniServizioPortaDelegata(){
  583.         try{
  584.             return StatoServiziPdD.getPDServiceFiltriAbilitazioneAttivi();
  585.         }catch(Throwable e){
  586.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione visualizzaFiltriAbilitazioniServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  587.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  588.         }
  589.     }
  590.     public String visualizzaFiltriDisabilitazioniServizioPortaDelegata(){
  591.         try{
  592.             return StatoServiziPdD.getPDServiceFiltriDisabilitazioneAttivi();
  593.         }catch(Throwable e){
  594.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione visualizzaFiltriDisabilitazioniServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  595.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  596.         }
  597.     }
  598.     public String addFiltroAbilitazioneServizioPortaDelegata(TipoFiltroAbilitazioneServizi tipo){
  599.         try{
  600.             StatoServiziPdD.addFiltroAbilitazionePD(tipo);
  601.             return "Operazione effettuata con successo";
  602.         }catch(Throwable e){
  603.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione addFiltroAbilitazioneServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  604.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  605.         }
  606.     }
  607.     public String addFiltroDisabilitazioneServizioPortaDelegata(TipoFiltroAbilitazioneServizi tipo){
  608.         try{
  609.             StatoServiziPdD.addFiltroDisabilitazionePD(tipo);
  610.             return "Operazione effettuata con successo";
  611.         }catch(Throwable e){
  612.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione addFiltroDisabilitazioneServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  613.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  614.         }
  615.     }
  616.     public String removeFiltroAbilitazioneServizioPortaDelegata(TipoFiltroAbilitazioneServizi tipo){
  617.         try{
  618.             StatoServiziPdD.removeFiltroAbilitazionePD(tipo);
  619.             return "Operazione effettuata con successo";
  620.         }catch(Throwable e){
  621.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione removeFiltroAbilitazioneServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  622.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  623.         }
  624.     }
  625.     public String removeFiltroDisabilitazioneServizioPortaDelegata(TipoFiltroAbilitazioneServizi tipo){
  626.         try{
  627.             StatoServiziPdD.removeFiltroDisabilitazionePD(tipo);
  628.             return "Operazione effettuata con successo";
  629.         }catch(Throwable e){
  630.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione removeFiltroDisabilitazioneServizioPortaDelegata non riuscita: "+e.getMessage(),e);
  631.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  632.         }
  633.     }

  634.     public String visualizzaFiltriAbilitazioniServizioPortaApplicativa(){
  635.         try{
  636.             return StatoServiziPdD.getPAServiceFiltriAbilitazioneAttivi();
  637.         }catch(Throwable e){
  638.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione visualizzaFiltriAbilitazioniServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  639.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  640.         }
  641.     }
  642.     public String visualizzaFiltriDisabilitazioniServizioPortaApplicativa(){
  643.         try{
  644.             return StatoServiziPdD.getPAServiceFiltriDisabilitazioneAttivi();
  645.         }catch(Throwable e){
  646.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione visualizzaFiltriDisabilitazioniServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  647.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  648.         }
  649.     }
  650.     public String addFiltroAbilitazioneServizioPortaApplicativa(TipoFiltroAbilitazioneServizi tipo){
  651.         try{
  652.             StatoServiziPdD.addFiltroAbilitazionePA(tipo);
  653.             return "Operazione effettuata con successo";
  654.         }catch(Throwable e){
  655.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione addFiltroAbilitazioneServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  656.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  657.         }
  658.     }
  659.     public String addFiltroDisabilitazioneServizioPortaApplicativa(TipoFiltroAbilitazioneServizi tipo){
  660.         try{
  661.             StatoServiziPdD.addFiltroDisabilitazionePA(tipo);
  662.             return "Operazione effettuata con successo";
  663.         }catch(Throwable e){
  664.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione addFiltroDisabilitazioneServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  665.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  666.         }
  667.     }
  668.     public String removeFiltroAbilitazioneServizioPortaApplicativa(TipoFiltroAbilitazioneServizi tipo){
  669.         try{
  670.             StatoServiziPdD.removeFiltroAbilitazionePA(tipo);
  671.             return "Operazione effettuata con successo";
  672.         }catch(Throwable e){
  673.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione removeFiltroAbilitazioneServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  674.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  675.         }
  676.     }
  677.     public String removeFiltroDisabilitazioneServizioPortaApplicativa(TipoFiltroAbilitazioneServizi tipo){
  678.         try{
  679.             StatoServiziPdD.removeFiltroDisabilitazionePA(tipo);
  680.             return "Operazione effettuata con successo";
  681.         }catch(Throwable e){
  682.             OpenSPCoop2Logger.getLoggerOpenSPCoopCore().error("Operazione removeFiltroDisabilitazioneServizioPortaApplicativa non riuscita: "+e.getMessage(),e);
  683.             return JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA+" sistema non disponibile";
  684.         }
  685.     }
  686. }