SPCoopFactory.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.spcoop;


  21. import java.util.HashMap;
  22. import java.util.Map;

  23. import javax.xml.soap.SOAPHeaderElement;

  24. import org.openspcoop2.protocol.basic.BasicFactory;
  25. import org.openspcoop2.protocol.basic.BasicStaticInstanceConfig;
  26. import org.openspcoop2.protocol.manifest.Openspcoop2;
  27. import org.openspcoop2.protocol.sdk.ConfigurazionePdD;
  28. import org.openspcoop2.protocol.sdk.ProtocolException;
  29. import org.openspcoop2.protocol.sdk.archive.IArchive;
  30. import org.openspcoop2.protocol.sdk.builder.IErroreApplicativoBuilder;
  31. import org.openspcoop2.protocol.sdk.builder.IEsitoBuilder;
  32. import org.openspcoop2.protocol.sdk.config.IProtocolConfiguration;
  33. import org.openspcoop2.protocol.sdk.config.IProtocolManager;
  34. import org.openspcoop2.protocol.sdk.config.IProtocolVersionManager;
  35. import org.openspcoop2.protocol.sdk.config.ITraduttore;
  36. import org.openspcoop2.protocol.sdk.diagnostica.IDiagnosticSerializer;
  37. import org.openspcoop2.protocol.sdk.state.IState;
  38. import org.openspcoop2.protocol.sdk.tracciamento.ITracciaSerializer;
  39. import org.openspcoop2.protocol.sdk.validator.IValidatoreErrori;
  40. import org.openspcoop2.protocol.sdk.validator.IValidazioneAccordi;
  41. import org.openspcoop2.protocol.sdk.validator.IValidazioneConSchema;
  42. import org.openspcoop2.protocol.sdk.validator.IValidazioneDocumenti;
  43. import org.openspcoop2.protocol.sdk.validator.IValidazioneSemantica;
  44. import org.openspcoop2.protocol.spcoop.archive.SPCoopArchive;
  45. import org.openspcoop2.protocol.spcoop.builder.SPCoopBustaBuilder;
  46. import org.openspcoop2.protocol.spcoop.builder.SPCoopErroreApplicativoBuilder;
  47. import org.openspcoop2.protocol.spcoop.builder.SPCoopEsitoBuilder;
  48. import org.openspcoop2.protocol.spcoop.config.SPCoopProperties;
  49. import org.openspcoop2.protocol.spcoop.config.SPCoopProtocolConfiguration;
  50. import org.openspcoop2.protocol.spcoop.config.SPCoopProtocolManager;
  51. import org.openspcoop2.protocol.spcoop.config.SPCoopProtocolVersionManager;
  52. import org.openspcoop2.protocol.spcoop.config.SPCoopTraduttore;
  53. import org.openspcoop2.protocol.spcoop.diagnostica.SPCoopDiagnosticSerializer;
  54. import org.openspcoop2.protocol.spcoop.tracciamento.SPCoopTracciaSerializer;
  55. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidatoreErrori;
  56. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidazioneAccordi;
  57. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidazioneConSchema;
  58. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidazioneDocumenti;
  59. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidazioneSemantica;
  60. import org.openspcoop2.protocol.spcoop.validator.SPCoopValidazioneSintattica;
  61. import org.openspcoop2.protocol.utils.EsitiProperties;
  62. import org.slf4j.Logger;


  63. /**
  64.  * Factory del protocollo SPCoop
  65.  *
  66.  * @author Poli Andrea (apoli@link.it)
  67.  * @author $Author$
  68.  * @version $Rev$, $Date$
  69.  */
  70. public class SPCoopFactory extends BasicFactory<SOAPHeaderElement> {

  71.     /**
  72.      *
  73.      */
  74.     private static final long serialVersionUID = -4246311511752079753L;

  75.     /* ** INIT ** */
  76.    
  77.     @Override
  78.     public void init(Logger log,String protocol,ConfigurazionePdD configPdD,Openspcoop2 manifest) throws ProtocolException{
  79.         super.init(log,protocol,configPdD,manifest);
  80.         SPCoopProperties.initialize(configPdD.getConfigurationDir(),log);
  81.         SPCoopProperties properties = SPCoopProperties.getInstance(log);
  82.         properties.validaConfigurazione(configPdD.getLoader());
  83.        
  84.         BasicStaticInstanceConfig staticInstanceConfig = properties.getStaticInstanceConfig();
  85.         super.initStaticInstance(staticInstanceConfig);
  86.         if(staticInstanceConfig!=null) {
  87.             if(staticInstanceConfig.isStaticConfig()) {
  88.                 staticInstanceProtocolManager = new SPCoopProtocolManager(this);
  89.                 staticInstanceProtocolVersionManager = new HashMap<>();
  90.                 staticInstanceTraduttore = new SPCoopTraduttore(this);
  91.                 staticInstanceProtocolConfiguration = new SPCoopProtocolConfiguration(this);
  92.             }
  93.             if(staticInstanceConfig.isStaticErrorBuilder()) {
  94.                 staticInstanceErroreApplicativoBuilder = new SPCoopErroreApplicativoBuilder(this);
  95.             }
  96.             if(staticInstanceConfig.isStaticEsitoBuilder() && EsitiProperties.isInitializedProtocol(this.getProtocolMapKey())) {
  97.                 staticInstanceEsitoBuilder = new SPCoopEsitoBuilder(this);
  98.             }
  99.         }
  100.     }
  101.     @Override
  102.     public void initStaticInstance() throws ProtocolException{
  103.         super.initStaticInstance();
  104.         if(this.staticInstanceConfig!=null && this.staticInstanceConfig.isStaticEsitoBuilder() && staticInstanceEsitoBuilder==null) {
  105.             if(EsitiProperties.isInitializedProtocol(this.getProtocolMapKey())) {
  106.                 initStaticInstanceEsitoBuilder(this);
  107.             }
  108.         }
  109.     }
  110.    
  111.    
  112.     /* ** PROTOCOL BUILDER ** */
  113.    
  114.     @Override
  115.     public SPCoopBustaBuilder createBustaBuilder(IState state) throws ProtocolException {
  116.         return new SPCoopBustaBuilder(this,state);
  117.     }

  118.     private static org.openspcoop2.protocol.sdk.builder.IErroreApplicativoBuilder staticInstanceErroreApplicativoBuilder = null;
  119.     @Override
  120.     public IErroreApplicativoBuilder createErroreApplicativoBuilder()
  121.             throws ProtocolException {
  122.         return staticInstanceErroreApplicativoBuilder!=null ? staticInstanceErroreApplicativoBuilder : new SPCoopErroreApplicativoBuilder(this);
  123.     }
  124.    
  125.     private static org.openspcoop2.protocol.sdk.builder.IEsitoBuilder staticInstanceEsitoBuilder = null;
  126.     private static synchronized void initStaticInstanceEsitoBuilder(SPCoopFactory spcoopFactory) throws ProtocolException {
  127.         if(staticInstanceEsitoBuilder==null) {
  128.             staticInstanceEsitoBuilder = new SPCoopEsitoBuilder(spcoopFactory);
  129.         }
  130.     }
  131.     @Override
  132.     public IEsitoBuilder createEsitoBuilder() throws ProtocolException {
  133.         return staticInstanceEsitoBuilder!=null ? staticInstanceEsitoBuilder : new SPCoopEsitoBuilder(this);
  134.     }
  135.    
  136.        
  137.     /* ** PROTOCOL VALIDATOR ** */
  138.    
  139.     @Override
  140.     public IValidatoreErrori createValidatoreErrori(IState state) throws ProtocolException {
  141.         return new SPCoopValidatoreErrori(this,state);
  142.     }
  143.    
  144.     @Override
  145.     public SPCoopValidazioneSintattica createValidazioneSintattica(IState state)
  146.             throws ProtocolException {
  147.         return new SPCoopValidazioneSintattica(this,state);
  148.     }

  149.     @Override
  150.     public IValidazioneSemantica createValidazioneSemantica(IState state)
  151.             throws ProtocolException {
  152.         return new SPCoopValidazioneSemantica(this,state);
  153.     }
  154.    
  155.     @Override
  156.     public IValidazioneConSchema createValidazioneConSchema(IState state)
  157.             throws ProtocolException {
  158.         return new SPCoopValidazioneConSchema(this,state);
  159.     }

  160.     @Override
  161.     public IValidazioneDocumenti createValidazioneDocumenti()
  162.             throws ProtocolException {
  163.         return new SPCoopValidazioneDocumenti(this);
  164.     }

  165.     @Override
  166.     public IValidazioneAccordi createValidazioneAccordi()
  167.             throws ProtocolException {
  168.         return new SPCoopValidazioneAccordi(this);
  169.     }
  170.    
  171.    
  172.    
  173.    
  174.     /* ** DIAGNOSTICI ** */
  175.    
  176.     @Override
  177.     public IDiagnosticSerializer createDiagnosticSerializer()
  178.             throws ProtocolException {
  179.         return new SPCoopDiagnosticSerializer(this);
  180.     }
  181.    
  182.    
  183.     /* ** TRACCE ** */
  184.    
  185.     @Override
  186.     public ITracciaSerializer createTracciaSerializer() throws ProtocolException {
  187.         return new SPCoopTracciaSerializer(this);
  188.     }
  189.    
  190.    
  191.     /* ** ARCHIVE ** */
  192.    
  193.     @Override
  194.     public IArchive createArchive() throws ProtocolException{
  195.         return new SPCoopArchive(this.getLogger(), this);
  196.     }
  197.    
  198.    
  199.    
  200.     /* ** CONFIG ** */
  201.    
  202.     private static IProtocolManager staticInstanceProtocolManager = null;
  203.     @Override
  204.     public IProtocolManager createProtocolManager()
  205.             throws ProtocolException {
  206.         return staticInstanceProtocolManager!=null ? staticInstanceProtocolManager : new SPCoopProtocolManager(this);
  207.     }
  208.    
  209.     private static Map<String, IProtocolVersionManager> staticInstanceProtocolVersionManager = null;
  210.     @Override
  211.     public IProtocolVersionManager createProtocolVersionManager(String version)
  212.             throws ProtocolException {
  213.         if(staticInstanceProtocolVersionManager!=null) {
  214.             if(!staticInstanceProtocolVersionManager.containsKey(version)) {
  215.                 initProtocolVersionManager(version);
  216.             }
  217.             return staticInstanceProtocolVersionManager.get(version);
  218.         }
  219.         else {
  220.             return new SPCoopProtocolVersionManager(this,version);
  221.         }
  222.     }
  223.     private synchronized void initProtocolVersionManager(String version) throws ProtocolException {
  224.         if(!staticInstanceProtocolVersionManager.containsKey(version)) {
  225.             staticInstanceProtocolVersionManager.put(version, new SPCoopProtocolVersionManager(this,version));
  226.         }
  227.     }

  228.     private static ITraduttore staticInstanceTraduttore = null;
  229.     @Override
  230.     public ITraduttore createTraduttore() throws ProtocolException {
  231.         return staticInstanceTraduttore!=null ? staticInstanceTraduttore : new SPCoopTraduttore(this);
  232.     }
  233.    
  234.     private static IProtocolConfiguration staticInstanceProtocolConfiguration = null;
  235.     @Override
  236.     public IProtocolConfiguration createProtocolConfiguration()
  237.             throws ProtocolException {
  238.         return staticInstanceProtocolConfiguration!=null ? staticInstanceProtocolConfiguration : new SPCoopProtocolConfiguration(this);
  239.     }

  240.    
  241. }