PreLoadingConfig.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.pdd.config;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.config.AccessoRegistro;
import org.openspcoop2.core.config.AccessoRegistroRegistro;
import org.openspcoop2.core.config.Configurazione;
import org.openspcoop2.core.config.GenericProperties;
import org.openspcoop2.core.config.InoltroBusteNonRiscontrate;
import org.openspcoop2.core.config.MessaggiDiagnostici;
import org.openspcoop2.core.config.Openspcoop2;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.Soggetto;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.RegistroTipo;
import org.openspcoop2.core.config.constants.Severita;
import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
import org.openspcoop2.core.config.driver.db.DriverConfigurazioneDB;
import org.openspcoop2.core.config.utils.CleanerOpenSPCoop2Extensions;
import org.openspcoop2.core.controllo_traffico.IdActivePolicy;
import org.openspcoop2.core.controllo_traffico.IdPolicy;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.RegistroServizi;
import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
import org.openspcoop2.core.registry.constants.StatiAccordo;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
import org.openspcoop2.core.registry.driver.IDriverRegistroServiziGet;
import org.openspcoop2.core.registry.driver.db.DriverRegistroServiziDB;
import org.openspcoop2.generic_project.exception.NotImplementedException;
import org.openspcoop2.generic_project.exception.ServiceException;
import org.openspcoop2.generic_project.utils.ServiceManagerProperties;
import org.openspcoop2.message.xml.MessageXMLUtils;
import org.openspcoop2.protocol.registry.RegistroServiziReader;
import org.openspcoop2.utils.Utilities;
import org.openspcoop2.utils.UtilsException;
import org.openspcoop2.utils.beans.WriteToSerializerType;
import org.openspcoop2.utils.io.ZipUtilities;
import org.openspcoop2.utils.regexp.RegExpException;
import org.openspcoop2.utils.regexp.RegExpNotFoundException;
import org.openspcoop2.utils.regexp.RegExpNotValidException;
import org.openspcoop2.utils.regexp.RegularExpressionEngine;
import org.openspcoop2.utils.resources.FileSystemUtilities;
import org.slf4j.Logger;
import org.w3c.dom.Element;
/**
* ZipConfigurationReader
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class PreLoadingConfig {
private static final String SOGGETTO_LOCALE = "@SOGGETTO_LOCALE@";
private static final String GOVWAY_ENTITY_NAME = "GOVWAY_DEFAULT_ENTITY_NAME";
private static final String VARIABLE_GOVWAY_ENTITY_NAME = "${"+GOVWAY_ENTITY_NAME+"}";
private Logger log;
private Logger logDriver;
private String protocolloDefault;
private IDSoggetto dominio;
public PreLoadingConfig(Logger log, Logger logDriver, String protocolloDefault, IDSoggetto dominio) {
this.log = log;
this.logDriver = logDriver;
this.protocolloDefault = protocolloDefault;
this.dominio = dominio;
}
public Logger getLogDriver() {
return this.logDriver;
}
private void logInfo(String msg) {
if(this.log!=null) {
this.log.info(msg);
}
}
private void logError(String msg, Exception e) {
if(this.log!=null) {
this.log.error(msg,e);
}
}
public void loadConfig(List<byte[]> zipContent) throws UtilsException, IOException, DriverConfigurazioneException, ServiceException, NotImplementedException {
if(zipContent!=null && !zipContent.isEmpty()) {
for (byte[] bs : zipContent) {
this.loadConfig(bs);
}
}
}
public void loadConfig(byte[] zipContent) throws UtilsException, IOException, DriverConfigurazioneException, ServiceException, NotImplementedException {
List<String> configNameList = new ArrayList<>();
List<byte[]> configList = new ArrayList<>();
List<String> registryNameList = new ArrayList<>();
List<byte[]> registryList = new ArrayList<>();
List<String> controllaTrafficoConfigPolicyNameList = new ArrayList<>();
List<byte[]> controllaTrafficoConfigPolicyList = new ArrayList<>();
List<String> controllaTrafficoActivePolicyNameList = new ArrayList<>();
List<byte[]> controllaTrafficoActivePolicyList = new ArrayList<>();
HashMap<String, Document> contentList = new HashMap<>();
File fTmp = FileSystemUtilities.createTempFile("preLoadConfiguration", ".zip");
/**System.out.println("TMP: "+fTmp.getAbsolutePath());*/
try {
FileSystemUtilities.writeFile(fTmp, zipContent);
ZipFile zip = new ZipFile(fTmp);
Iterator<ZipEntry> itZip = ZipUtilities.entries(zip, true);
while (itZip.hasNext()) {
ZipEntry zipEntry = itZip.next();
if(!zipEntry.isDirectory()) {
InputStream isZip = zip.getInputStream(zipEntry);
try {
/**System.out.println("LEGGO ["+zipEntry.getName()+"]");*/
byte [] bytes = Utilities.getAsByteArray(isZip);
String sBytes = new String(bytes);
if(sBytes.contains(SOGGETTO_LOCALE)) {
while(sBytes.contains(SOGGETTO_LOCALE)) {
sBytes = sBytes.replace(SOGGETTO_LOCALE, this.dominio.getNome());
}
bytes = sBytes.getBytes();
}
if(sBytes.contains(VARIABLE_GOVWAY_ENTITY_NAME)) {
String valueSystemProperty = convertVariabile(GOVWAY_ENTITY_NAME);
if(valueSystemProperty==null || StringUtils.isEmpty(valueSystemProperty)) {
throw new ServiceException("Una configurazione creata con la variabile '"+VARIABLE_GOVWAY_ENTITY_NAME+"' richiede la sua definizione come variabile di sistema o java");
}
}
String afterVariable = null;
try {
afterVariable = convertVariable(sBytes);
}catch(Exception e) {
throw new UtilsException(e.getMessage(),e);
}
if(afterVariable!=null && !afterVariable.equals(sBytes)) {
bytes = afterVariable.getBytes();
}
try {
String entryName = zipEntry.getName();
int indexOfWsdl = -1;
String name = null;
if(entryName.endsWith(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL) ) {
indexOfWsdl = entryName.indexOf(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL);
name = CostantiRegistroServizi.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL;
}
else if(entryName.endsWith(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL) ) {
indexOfWsdl = entryName.indexOf(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL);
name = CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL;
}
else if(entryName.endsWith(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL) ) {
indexOfWsdl = entryName.indexOf(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL);
name = CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL;
}
if(indexOfWsdl>0) {
String prefixEntryName = entryName.substring(0, indexOfWsdl-1);
int posizione = 0; // default
if(prefixEntryName.contains(".") && !prefixEntryName.endsWith(".")) {
String posizioneEntry = prefixEntryName.substring(prefixEntryName.lastIndexOf(".")+1, prefixEntryName.length());
posizione = converPosizione(posizioneEntry);
prefixEntryName = prefixEntryName.substring(0, prefixEntryName.lastIndexOf("."));
}
Document d = new Document();
d.content = bytes;
d.index = posizione;
d.name = name;
contentList.put(prefixEntryName, d);
}
else {
Element element = MessageXMLUtils.DEFAULT.newElement(bytes);
if(org.openspcoop2.core.config.utils.XMLUtils.isConfigurazione(element)) {
configNameList.add(entryName);
configList.add(bytes);
}
else if(org.openspcoop2.core.registry.utils.XMLUtils.isRegistroServizi(element)) {
registryNameList.add(entryName);
registryList.add(bytes);
}
else if(org.openspcoop2.core.controllo_traffico.utils.XMLUtils.isConfigurazionePolicy(element)) {
controllaTrafficoConfigPolicyNameList.add(entryName);
controllaTrafficoConfigPolicyList.add(bytes);
}
else if(org.openspcoop2.core.controllo_traffico.utils.XMLUtils.isAttivazionePolicy(element)) {
controllaTrafficoActivePolicyNameList.add(entryName);
controllaTrafficoActivePolicyList.add(bytes);
}
else {
throw new UtilsException("unknown type");
}
}
}catch(Exception e) {
this.logError("PreLoading entry ["+zipEntry.getName()+"] error: "+e.getMessage(),e);
}
}finally {
try {
if(isZip!=null) {
isZip.close();
}
}catch(Exception e) {
// close
}
}
}
}
}finally {
try {
java.nio.file.Files.delete(fTmp.toPath());
}catch(Exception e) {
// ignore
}
}
if(!registryNameList.isEmpty()) {
org.openspcoop2.core.registry.utils.serializer.JaxbDeserializer deserializerRegistry = new org.openspcoop2.core.registry.utils.serializer.JaxbDeserializer ();
java.util.Map<String, IDriverRegistroServiziGet> mapRegistri = RegistroServiziReader.getDriverRegistroServizi();
DriverRegistroServiziDB driverRegistroServizi = (DriverRegistroServiziDB) mapRegistri.values().iterator().next();
for (int i = 0; i < registryNameList.size(); i++) {
String name = registryNameList.get(i);
byte [] content = registryList.get(i);
convert(contentList, content, name, deserializerRegistry, driverRegistroServizi);
}
}
if(!configNameList.isEmpty()) {
org.openspcoop2.core.config.utils.serializer.JaxbDeserializer deserializerConfig = new org.openspcoop2.core.config.utils.serializer.JaxbDeserializer ();
DriverConfigurazioneDB driverConfigurazione = (DriverConfigurazioneDB) ConfigurazionePdDReader.getDriverConfigurazionePdD();
for (int i = 0; i < configNameList.size(); i++) {
String name = configNameList.get(i);
byte [] content = configList.get(i);
try {
this.logInfo(getMessageInCorso(ID_CONFIG, name));
Openspcoop2 op2 = deserializerConfig.readOpenspcoop2(content);
Configurazione config = op2.getConfigurazione();
if(config!=null &&
config.getGenericPropertiesList()!=null && !config.getGenericPropertiesList().isEmpty()) {
for (GenericProperties genericProperties : config.getGenericPropertiesList()) {
boolean exists = existsGenericProperties(driverConfigurazione, genericProperties);
if(!exists) {
driverConfigurazione.createGenericProperties(genericProperties);
}
}
}
if(op2.sizeSoggettoList()>0) {
convert(driverConfigurazione, content, config, op2);
}
this.logInfo(getMessageEffettuataConSuccesso(ID_CONFIG, name));
}catch(Exception e) {
this.logError(getMessageError(ID_CONFIG, name, e),e);
}
}
}
if(!controllaTrafficoConfigPolicyNameList.isEmpty()) {
org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbDeserializer deserializerCT = new org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbDeserializer ();
DriverConfigurazioneDB driverConfigurazione = (DriverConfigurazioneDB) ConfigurazionePdDReader.getDriverConfigurazionePdD();
Connection con = null;
try {
con = driverConfigurazione.getConnection("preloading controllaTrafficoConfigPolicies");
ServiceManagerProperties jdbcProperties = new ServiceManagerProperties();
jdbcProperties.setDatabaseType(driverConfigurazione.getTipoDB());
jdbcProperties.setShowSql(true);
org.openspcoop2.core.controllo_traffico.dao.jdbc.JDBCServiceManager serviceManager =
new org.openspcoop2.core.controllo_traffico.dao.jdbc.JDBCServiceManager(con, jdbcProperties, this.log);
org.openspcoop2.core.controllo_traffico.dao.IConfigurazionePolicyService service = serviceManager.getConfigurazionePolicyService();
org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions cleaner = new org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions();
for (int i = 0; i < controllaTrafficoConfigPolicyNameList.size(); i++) {
String name = controllaTrafficoConfigPolicyNameList.get(i);
byte [] content = controllaTrafficoConfigPolicyList.get(i);
try {
this.logInfo(getMessageInCorso(ID_CONTROLLO_TRAFFICO_CONFIG_POLICY, name));
org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy policy = deserializerCT.readConfigurazionePolicy(content);
IdPolicy id = new IdPolicy();
id.setNome(policy.getIdPolicy());
if(!service.exists(id)) {
cleaner.clean(policy);
service.create(policy);
}
this.logInfo(getMessageEffettuataConSuccesso(ID_CONTROLLO_TRAFFICO_CONFIG_POLICY, name));
}catch(Exception e) {
this.logError(getMessageError(ID_CONTROLLO_TRAFFICO_CONFIG_POLICY, name, e),e);
}
}
}finally {
driverConfigurazione.releaseConnection(con);
}
}
if(!controllaTrafficoActivePolicyNameList.isEmpty()) {
org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbDeserializer deserializerCT = new org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbDeserializer ();
DriverConfigurazioneDB driverConfigurazione = (DriverConfigurazioneDB) ConfigurazionePdDReader.getDriverConfigurazionePdD();
Connection con = null;
try {
con = driverConfigurazione.getConnection("preloading controllaTrafficoActivePolicies");
ServiceManagerProperties jdbcProperties = new ServiceManagerProperties();
jdbcProperties.setDatabaseType(driverConfigurazione.getTipoDB());
jdbcProperties.setShowSql(true);
org.openspcoop2.core.controllo_traffico.dao.jdbc.JDBCServiceManager serviceManager =
new org.openspcoop2.core.controllo_traffico.dao.jdbc.JDBCServiceManager(con, jdbcProperties, this.log);
org.openspcoop2.core.controllo_traffico.dao.IAttivazionePolicyService service = serviceManager.getAttivazionePolicyService();
org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions cleaner = new org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions();
for (int i = 0; i < controllaTrafficoActivePolicyNameList.size(); i++) {
String name = controllaTrafficoActivePolicyNameList.get(i);
byte [] content = controllaTrafficoActivePolicyList.get(i);
try {
this.logInfo(getMessageInCorso(ID_CONTROLLO_TRAFFICO_ACTIVE_POLICY, name));
org.openspcoop2.core.controllo_traffico.AttivazionePolicy policy = deserializerCT.readAttivazionePolicy(content);
IdActivePolicy id = new IdActivePolicy();
id.setNome(policy.getIdActivePolicy());
if(!service.exists(id)) {
cleaner.clean(policy);
service.create(policy);
}
this.logInfo(getMessageEffettuataConSuccesso(ID_CONTROLLO_TRAFFICO_ACTIVE_POLICY, name));
}catch(Exception e) {
this.logError(getMessageError(ID_CONTROLLO_TRAFFICO_ACTIVE_POLICY, name, e),e);
}
}
}finally {
driverConfigurazione.releaseConnection(con);
}
}
}
private int converPosizione(String posizioneEntry) throws UtilsException {
try {
return Integer.valueOf(posizioneEntry);
}catch(Exception e) {
throw new UtilsException("Nome file 'wsdl' con posizione non intera '"+posizioneEntry+"': "+e.getMessage());
}
}
private String convertVariable(String tmp) throws RegExpException, RegExpNotValidException {
String pattern = "\\$\\{([A-Za-z0-9_]+)\\}";
List<String> l = null;
try {
l = RegularExpressionEngine.getAllStringFindPattern(tmp, pattern);
}catch(RegExpNotFoundException notFound) {
// ignore
}
return convertVariable(l, tmp);
}
private String convertVariable(List<String> l, String tmp) {
if(l!=null && !l.isEmpty()) {
for (String varName : l) {
String valueSystemProperty = convertVariabile(varName);
if(valueSystemProperty!=null) {
String expr = "${"+varName+"}";
int i = 0;
int max = 1000;
while(tmp.contains(expr) && i<max) {
tmp = tmp.replace(expr, valueSystemProperty);
i++;
}
}
}
}
return tmp;
}
private String convertVariabile(String varName) {
String valueSystemProperty = System.getenv(varName); // sistema
if(valueSystemProperty==null) {
valueSystemProperty = System.getProperty(varName); // java
}
return valueSystemProperty;
}
private static final String PRELOADING_PREFIX = "PreLoading ";
private String getMessageInCorso(String type, String name) {
return PRELOADING_PREFIX+type+" ["+name+"] ...";
}
private String getMessageEffettuataConSuccesso(String type, String name) {
return PRELOADING_PREFIX+type+" ["+name+"] effettuato con successo";
}
private String getMessageError(String type, String name, Exception e) {
return PRELOADING_PREFIX+type+" ["+name+"] failed: "+e.getMessage();
}
private static final String ID_REGISTRY = "Registry";
private static final String ID_CONFIG = "Config";
private static final String ID_CONTROLLO_TRAFFICO_CONFIG_POLICY = "ControlloTraffico ConfigPolicy";
private static final String ID_CONTROLLO_TRAFFICO_ACTIVE_POLICY = "ControlloTraffico ActivePolicy";
private UtilsException getUtilsExceptionDocumentoNonAssociabileApi(Document d, RegistroServizi registry) {
return new UtilsException("Documento '"+d.name+"' non associabile all'Api; la posizione indicata '"+d.index+"' รจ maggiore delle api disponibili '"+registry.sizeAccordoServizioParteComuneList()+"'");
}
private void convert(HashMap<String, Document> contentList, byte[] content, String name, org.openspcoop2.core.registry.utils.serializer.JaxbDeserializer deserializerRegistry,
DriverRegistroServiziDB driverRegistroServizi) {
try {
this.logInfo(getMessageInCorso(ID_REGISTRY, name));
RegistroServizi registry = deserializerRegistry.readRegistroServizi(content); // verifico file
setContent(contentList, name, registry);
convert(registry, driverRegistroServizi);
this.logInfo(getMessageEffettuataConSuccesso(ID_REGISTRY, name));
}catch(Exception e) {
this.logError(getMessageError(ID_REGISTRY, name, e),e);
}
}
private void setContent(HashMap<String, Document> contentList, String name, RegistroServizi registry) throws UtilsException {
if(contentList!=null && contentList.containsKey(name)) {
Document d = contentList.get(name);
if(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL.equals(d.name)) {
if(registry.sizeAccordoServizioParteComuneList()<=d.index) {
throw getUtilsExceptionDocumentoNonAssociabileApi(d, registry);
}
registry.getAccordoServizioParteComune(d.index).setByteWsdlConcettuale(d.content);
}
else if(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL.equals(d.name)) {
if(registry.sizeAccordoServizioParteComuneList()<=d.index) {
throw getUtilsExceptionDocumentoNonAssociabileApi(d, registry);
}
registry.getAccordoServizioParteComune(d.index).setByteWsdlLogicoErogatore(d.content);
}
else if(CostantiRegistroServizi.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL.equals(d.name)) {
if(registry.sizeAccordoServizioParteComuneList()<=d.index) {
throw getUtilsExceptionDocumentoNonAssociabileApi(d, registry);
}
registry.getAccordoServizioParteComune(d.index).setByteWsdlLogicoFruitore(d.content);
}
}
}
private void convert(RegistroServizi registry, DriverRegistroServiziDB driverRegistroServizi) throws DriverRegistroServiziException {
try {
String superUser = null;
org.openspcoop2.core.registry.driver.utils.XMLDataConverter xmlDataConverter =
new org.openspcoop2.core.registry.driver.utils.XMLDataConverter(registry,driverRegistroServizi,CostantiConfigurazione.REGISTRO_DB.getValue(),
superUser,this.protocolloDefault,
this.log,this.log);
boolean reset = false;
boolean mantieniFruitoriEsistenti = true;
boolean aggiornamentoSoggetti = false;
boolean updateEnabled = false; // per non modificare eventuali configurazioni gia' caricate, che possono essere state modificate
xmlDataConverter.convertXML(reset, mantieniFruitoriEsistenti,aggiornamentoSoggetti,StatiAccordo.operativo, updateEnabled);
}
finally {
// nop
}
}
private boolean existsGenericProperties(DriverConfigurazioneDB driverConfigurazione, GenericProperties genericProperties) throws DriverConfigurazioneException {
try {
return driverConfigurazione.getGenericProperties(genericProperties.getTipologia(), genericProperties.getNome()) != null;
}catch(DriverConfigurazioneNotFound notFound) {
// ignore
}
return false;
}
private void convert(DriverConfigurazioneDB driverConfigurazione, byte[] content, Configurazione config, Openspcoop2 op2) throws UtilsException, DriverConfigurazioneException {
byte [] contentXml = content;
if(config==null) {
op2.setConfigurazione(new Configurazione());
// ne carico una dummy, tanto non la uso
op2.getConfigurazione().setAccessoRegistro(new AccessoRegistro());
AccessoRegistroRegistro registro = new AccessoRegistroRegistro();
registro.setTipo(RegistroTipo.DB);
registro.setNome("dummy");
registro.setLocation("dummy");
op2.getConfigurazione().getAccessoRegistro().addRegistro(registro);
op2.getConfigurazione().setInoltroBusteNonRiscontrate(new InoltroBusteNonRiscontrate());
op2.getConfigurazione().getInoltroBusteNonRiscontrate().setCadenza("1");
op2.getConfigurazione().setMessaggiDiagnostici(new MessaggiDiagnostici());
op2.getConfigurazione().getMessaggiDiagnostici().setSeverita(Severita.INFO_INTEGRATION);
op2.getConfigurazione().getMessaggiDiagnostici().setSeveritaLog4j(Severita.INFO_INTEGRATION);
CleanerOpenSPCoop2Extensions cleaner = new CleanerOpenSPCoop2Extensions();
cleaner.clean(op2.getConfigurazione());
for (Soggetto soggettoConfig : op2.getSoggettoList()) {
cleaner.clean(soggettoConfig);
for (PortaDelegata pdConfig : soggettoConfig.getPortaDelegataList()) {
cleaner.clean(pdConfig);
}
for (PortaApplicativa paConfig : soggettoConfig.getPortaApplicativaList()) {
cleaner.clean(paConfig);
}
for (ServizioApplicativo saConfig : soggettoConfig.getServizioApplicativoList()) {
cleaner.clean(saConfig);
}
}
ByteArrayOutputStream bout = new ByteArrayOutputStream();
op2.writeTo(bout, WriteToSerializerType.XML_JAXB);
contentXml = bout.toByteArray();
}
boolean udpateConfigurazioneDisabled = false;
boolean tabellaSoggettiCondivisaPddRegserv = true;
String superUser = null;
org.openspcoop2.core.config.driver.utils.XMLDataConverter xmlDataConverter =
new org.openspcoop2.core.config.driver.utils.XMLDataConverter(contentXml,driverConfigurazione,CostantiConfigurazione.CONFIGURAZIONE_DB,
udpateConfigurazioneDisabled,tabellaSoggettiCondivisaPddRegserv,superUser,this.protocolloDefault,
this.log,this.log);
boolean reset = false;
boolean aggiornamentoSoggetti = false;
boolean createMappingErogazioneFruizione = true; // serve per creare il mapping ad es. sulle fruizioni ed erogazioni
boolean updateEnabled = false; // per non modificare eventuali configurazioni gia' caricate, che possono essere state modificate
xmlDataConverter.convertXML(reset, aggiornamentoSoggetti, createMappingErogazioneFruizione, updateEnabled);
}
}
class Document{
byte[] content;
int index;
String name;
}