ProtocolFactoryReflectionUtils.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.core.commons;

  21. import java.util.ArrayList;
  22. import java.util.Enumeration;
  23. import java.util.HashMap;
  24. import java.util.List;

  25. import org.openspcoop2.core.id.IDSoggetto;
  26. import org.openspcoop2.utils.resources.ClassLoaderUtilities;
  27. import org.openspcoop2.utils.resources.Loader;
  28. import org.openspcoop2.utils.resources.MapReader;
  29. import org.slf4j.Logger;

  30. /**
  31.  * ProtocolFactoryReflectionUtils
  32.  *
  33.  * @author Andrea Poli (apoli@link.it)
  34.  * @author $Author$
  35.  * @version $Rev$, $Date$
  36.  */
  37. public class ProtocolFactoryReflectionUtils
  38. {
  39.     public static void initializeProtocolManager(String protocolloDefault, Logger log) throws CoreException{
  40.         // Protocol initialize
  41.         try{
  42.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  43.             Object protocolFactoryManager = null;
  44.             try{
  45.                 protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  46.             }catch(Exception pe){
  47.                 // ignore
  48.             }
  49.             if(protocolFactoryManager==null){
  50.            
  51.                 Class<?> cConfigurazionePdD = Class.forName("org.openspcoop2.protocol.sdk.ConfigurazionePdD");
  52.                 Object configurazionePdD = ClassLoaderUtilities.newInstance(cConfigurazionePdD);
  53.                 String confDir = null;
  54.                 cConfigurazionePdD.getMethod("setConfigurationDir", String.class).invoke(configurazionePdD, confDir);
  55.                 cConfigurazionePdD.getMethod("setAttesaAttivaJDBC", long.class).invoke(configurazionePdD, 60);
  56.                 cConfigurazionePdD.getMethod("setCheckIntervalJDBC", int.class).invoke(configurazionePdD, 100);
  57.                 cConfigurazionePdD.getMethod("setLoader", Loader.class).invoke(configurazionePdD, new Loader());
  58.                 cConfigurazionePdD.getMethod("setLog", Logger.class).invoke(configurazionePdD, log);
  59.                
  60.                 cProtocolFactoryManager.getMethod("initialize", Logger.class, cConfigurazionePdD, String.class).
  61.                     invoke(null, log, configurazionePdD, protocolloDefault);
  62.                
  63.             }
  64.            
  65.         }catch(Exception e){
  66.             throw new CoreException(e.getMessage(),e);
  67.         }
  68.     }
  69.    
  70.     public static List<String> getProtocolli() throws Exception{
  71.         try{
  72.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  73.             Object protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  74.            
  75.             @SuppressWarnings("unchecked")
  76.             Enumeration<String> protocolli = (Enumeration<String>) cProtocolFactoryManager.getMethod("getProtocolNames").invoke(protocolFactoryManager);
  77.             List<String> l = new ArrayList<>();
  78.             while (protocolli.hasMoreElements()) {
  79.                 String protocollo = (String) protocolli.nextElement();
  80.                 l.add(protocollo);
  81.             }
  82.             return l;
  83.                        
  84.         }catch(Exception e){
  85.             throw new CoreException(e.getMessage(),e);
  86.         }
  87.     }
  88.    
  89.     public static String getCodiceIPADefault(IDSoggetto idSoggetto) throws CoreException{
  90.         // Protocol initialize
  91.         try{
  92.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  93.             Object protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  94.            
  95.             String protocollo = (String) cProtocolFactoryManager.getMethod("getProtocolByOrganizationType",String.class).invoke(protocolFactoryManager,idSoggetto.getTipo());
  96.            
  97.             Class<?> cProtocolFactory = Class.forName("org.openspcoop2.protocol.sdk.IProtocolFactory");
  98.             Object protocolFactory = cProtocolFactoryManager.getMethod("getProtocolFactoryByName",String.class).invoke(protocolFactoryManager, protocollo);
  99.            
  100.             Class<?> cProtocolTraduttore = Class.forName("org.openspcoop2.protocol.sdk.config.ITraduttore");
  101.             Object protocolTraduttore = cProtocolFactory.getMethod("createTraduttore").invoke(protocolFactory);
  102.            
  103.             return (String) cProtocolTraduttore.getMethod("getIdentificativoCodiceIPADefault", IDSoggetto.class, boolean.class).invoke(protocolTraduttore, idSoggetto, false);
  104.                        
  105.         }catch(Exception e){
  106.             throw new CoreException(e.getMessage(),e);
  107.         }
  108.     }
  109.    
  110.     public static String getIdentificativoPortaDefault(IDSoggetto idSoggetto) throws CoreException{
  111.         // Protocol initialize
  112.         try{
  113.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  114.             Object protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  115.            
  116.             String protocollo = (String) cProtocolFactoryManager.getMethod("getProtocolByOrganizationType",String.class).invoke(protocolFactoryManager,idSoggetto.getTipo());
  117.            
  118.             Class<?> cProtocolFactory = Class.forName("org.openspcoop2.protocol.sdk.IProtocolFactory");
  119.             Object protocolFactory = cProtocolFactoryManager.getMethod("getProtocolFactoryByName",String.class).invoke(protocolFactoryManager, protocollo);
  120.            
  121.             Class<?> cProtocolTraduttore = Class.forName("org.openspcoop2.protocol.sdk.config.ITraduttore");
  122.             Object protocolTraduttore = cProtocolFactory.getMethod("createTraduttore").invoke(protocolFactory);
  123.            
  124.             return (String) cProtocolTraduttore.getMethod("getIdentificativoPortaDefault", IDSoggetto.class).invoke(protocolTraduttore, idSoggetto);
  125.                        
  126.         }catch(Exception e){
  127.             throw new CoreException(e.getMessage(),e);
  128.         }
  129.     }
  130.    
  131.     public static List<String> getOrganizationTypes(String protocollo) throws CoreException{
  132.         // Protocol initialize
  133.         try{
  134.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  135.             Object protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  136.            
  137.             @SuppressWarnings("unchecked")
  138.             MapReader<String, List<String>> map = (MapReader<String, List<String>>) cProtocolFactoryManager.getMethod("getOrganizationTypes").invoke(protocolFactoryManager);
  139.            
  140.             return map.get(protocollo);
  141.            
  142.         }catch(Exception e){
  143.             throw new CoreException(e.getMessage(),e);
  144.         }
  145.     }
  146.    
  147.     public static List<String> getServiceTypes(String protocollo) throws CoreException{
  148.         // Protocol initialize
  149.         try{
  150.             Class<?> cProtocolFactoryManager = Class.forName("org.openspcoop2.protocol.engine.ProtocolFactoryManager");
  151.             Object protocolFactoryManager = cProtocolFactoryManager.getMethod("getInstance").invoke(null);
  152.            
  153.             @SuppressWarnings("unchecked")
  154.             HashMap<String, List<String>> map = (HashMap<String, List<String>>) cProtocolFactoryManager.getMethod("_getServiceTypes").invoke(protocolFactoryManager);
  155.            
  156.             return map.get(protocollo);
  157.            
  158.         }catch(Exception e){
  159.             throw new CoreException(e.getMessage(),e);
  160.         }
  161.     }
  162. }