ModIDynamicConfigurationAccordiParteComuneUtilities.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.protocol.modipa.properties;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.openspcoop2.core.id.IDAccordo;
import org.openspcoop2.core.id.IDPortType;
import org.openspcoop2.core.id.IDPortTypeAzione;
import org.openspcoop2.core.id.IDResource;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.AccordoServizioParteComune;
import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
import org.openspcoop2.core.registry.PortType;
import org.openspcoop2.core.registry.Resource;
import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
import org.openspcoop2.core.registry.constants.ServiceBinding;
import org.openspcoop2.core.registry.driver.IDAccordoFactory;
import org.openspcoop2.protocol.engine.constants.Costanti;
import org.openspcoop2.protocol.engine.utils.AzioniUtils;
import org.openspcoop2.protocol.engine.utils.NamingUtils;
import org.openspcoop2.protocol.modipa.config.ModIProperties;
import org.openspcoop2.protocol.modipa.constants.ModIConsoleCostanti;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemType;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemValueType;
import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
import org.openspcoop2.protocol.sdk.properties.AbstractConsoleItem;
import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
import org.openspcoop2.protocol.sdk.properties.IConsoleHelper;
import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesFactory;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
import org.openspcoop2.protocol.sdk.properties.StringConsoleItem;
import org.openspcoop2.protocol.sdk.properties.StringProperty;
import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaAccordi;
import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaPortTypeAzioni;
import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaRisorse;
import org.openspcoop2.protocol.sdk.registry.RegistryException;
import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
import org.openspcoop2.utils.SortedMap;
import org.slf4j.Logger;
/**
* ModIDynamicConfigurationAccordiParteComuneUtilities
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ModIDynamicConfigurationAccordiParteComuneUtilities {
private ModIDynamicConfigurationAccordiParteComuneUtilities() {}
static void addProfiloInterazione(ModIProperties modiProperties,ConsoleConfiguration configuration, boolean rest, String httpMethod) throws ProtocolException {
configuration.addConsoleItem(ProtocolPropertiesFactory.newSubTitleItem(ModIConsoleCostanti.MODIPA_API_PROFILO_INTERAZIONE_ID,
ModIConsoleCostanti.MODIPA_API_PROFILO_INTERAZIONE_LABEL));
ModIProfiliInterazioneRESTConfig config = null;
if(rest) {
config = new ModIProfiliInterazioneRESTConfig(modiProperties, httpMethod, null);
}
StringConsoleItem profiloInterazioneItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.SELECT,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL);
boolean addBloccante = true;
boolean addNonBloccantePush = true;
boolean addNonBloccantePull = true;
if(rest) {
addBloccante = config.isCompatibileBloccante();
addNonBloccantePush = config.isCompatibileNonBloccantePush();
addNonBloccantePull = config.isCompatibileNonBloccantePull();
}
if(rest) {
profiloInterazioneItem.addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL_CRUD,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_CRUD);
}
if(addBloccante) {
profiloInterazioneItem.addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL_BLOCCANTE,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_BLOCCANTE);
}
if(addNonBloccantePush || addNonBloccantePull) {
profiloInterazioneItem.addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL_NON_BLOCCANTE,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE);
}
profiloInterazioneItem.setDefaultValue(rest ? ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_REST_VALUE : ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_SOAP_VALUE);
profiloInterazioneItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneItem);
StringConsoleItem profiloInterazioneItemReadOnly = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID_INUSE_READONLY,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL);
configuration.addConsoleItem(profiloInterazioneItemReadOnly);
StringConsoleItem profiloInterazioneAsincronaItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_LABEL);
profiloInterazioneAsincronaItem.setDefaultValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_DEFAULT_VALUE);
profiloInterazioneAsincronaItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneAsincronaItem);
StringConsoleItem profiloInterazioneAsincronaItemReadOnly = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID_INUSE_READONLY,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_LABEL);
configuration.addConsoleItem(profiloInterazioneAsincronaItemReadOnly);
StringConsoleItem profiloInterazioneAsincronaRelazioneItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL);
profiloInterazioneAsincronaRelazioneItem.setDefaultValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_DEFAULT_VALUE);
profiloInterazioneAsincronaRelazioneItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneAsincronaRelazioneItem);
StringConsoleItem profiloInterazioneAsincronaRelazioneItemReadOnly = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID_INUSE_READONLY,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL);
configuration.addConsoleItem(profiloInterazioneAsincronaRelazioneItemReadOnly);
StringConsoleItem profiloInterazioneAsincronaCorrelataApiItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID,
"");
profiloInterazioneAsincronaCorrelataApiItem.setDefaultValue(ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataApiItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneAsincronaCorrelataApiItem);
StringConsoleItem profiloInterazioneAsincronaCorrelataServizioItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_SERVIZIO_RICHIESTA_CORRELATA_ID,
"");
profiloInterazioneAsincronaCorrelataServizioItem.setDefaultValue(ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataServizioItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneAsincronaCorrelataServizioItem);
StringConsoleItem profiloInterazioneAsincronaCorrelataAzioneItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_AZIONE_RICHIESTA_CORRELATA_ID,
"");
profiloInterazioneAsincronaCorrelataAzioneItem.setDefaultValue(ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataAzioneItem.setReloadOnChange(true);
configuration.addConsoleItem(profiloInterazioneAsincronaCorrelataAzioneItem);
}
private static AccordoServizioParteComune getAccordoServizioParteComune(IRegistryReader registryReader, IDAccordo idAccordoSelected) throws RegistryException{
AccordoServizioParteComune aspc = null;
try {
aspc = registryReader.getAccordoServizioParteComune(idAccordoSelected);
}catch(RegistryNotFound notFound) {
// ignore
}
return aspc;
}
private static List<IDAccordo> findIdAccordiServizioParteComune(IRegistryReader registryReader, ProtocolFiltroRicercaAccordi filtro) throws RegistryException{
List<IDAccordo> list = null;
try {
list = registryReader.findIdAccordiServizioParteComune(filtro);
}catch(RegistryNotFound notFound) {
// ignore
}
return list;
}
static void updateProfiloInterazione(ModIProperties modiProperties,IProtocolFactory<?> protocolFactory,Logger log,
ConsoleConfiguration consoleConfiguration, ConsoleOperationType consoleOperationType, ProtocolProperties properties,
IRegistryReader registryReader, IDAccordo idAccordo, String idPortType, String idAzione, boolean rest, String httpMethod) throws ProtocolException {
AbstractConsoleItem<?> profiloInterazioneItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
AbstractConsoleItem<?> profiloInterazioneAsincronaItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
AbstractConsoleItem<?> profiloInterazioneAsincronaRelazioneItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
AbstractConsoleItem<?> profiloInterazioneAsincronaCorrelataApiItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID);
AbstractConsoleItem<?> profiloInterazioneAsincronaCorrelataServizioItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_SERVIZIO_RICHIESTA_CORRELATA_ID);
AbstractConsoleItem<?> profiloInterazioneAsincronaCorrelataAzioneItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_AZIONE_RICHIESTA_CORRELATA_ID);
ModIProfiliInterazioneRESTConfig config = null;
boolean inUse = false;
if(rest) {
Resource resource = null;
if(ConsoleOperationType.CHANGE.equals(consoleOperationType)) {
try {
IDResource id = new IDResource();
id.setIdAccordo(idAccordo);
id.setNome(idAzione);
resource = registryReader.getResourceAccordo(id);
inUse = registryReader.inUso(id);
}catch(Exception e) {
throw new ProtocolException(e.getMessage(), e);
}
}
config = new ModIProfiliInterazioneRESTConfig(modiProperties, httpMethod, resource);
}
else {
if(ConsoleOperationType.CHANGE.equals(consoleOperationType)) {
try {
IDPortType idPT = new IDPortType();
idPT.setIdAccordo(idAccordo);
idPT.setNome(idPortType);
IDPortTypeAzione id = new IDPortTypeAzione();
id.setIdPortType(idPT);
id.setNome(idAzione);
inUse = registryReader.inUso(id);
}catch(Exception e) {
throw new ProtocolException(e.getMessage(), e);
}
}
}
boolean addBloccante = true;
boolean addNonBloccantePush = true;
boolean addNonBloccantePull = true;
if(rest) {
addBloccante = config.isCompatibileBloccante();
addNonBloccantePush = config.isCompatibileNonBloccantePush();
addNonBloccantePull = config.isCompatibileNonBloccantePull();
}
boolean allHidden = true;
StringProperty profiloInterazioneItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
String profiloInterazione = rest ? ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_REST_VALUE : ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_SOAP_VALUE;
if(profiloInterazioneItemValue!=null && profiloInterazioneItemValue.getValue()!=null && !"".equals(profiloInterazioneItemValue.getValue())) {
profiloInterazione = profiloInterazioneItemValue.getValue();
}
if(!addBloccante) {
profiloInterazioneItem.removeLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL_BLOCCANTE);
}
if(!addNonBloccantePush && !addNonBloccantePull) {
profiloInterazioneItem.removeLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_LABEL_NON_BLOCCANTE);
}
if(
(
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_BLOCCANTE.equals(profiloInterazione)
&&
!addBloccante
)
||
(
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(profiloInterazione)
&&
!addNonBloccantePush
&&
!addNonBloccantePull
)
) {
profiloInterazione = rest ? ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_REST_VALUE : ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_SOAP_VALUE;
}
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(profiloInterazione)) {
allHidden = false;
profiloInterazioneAsincronaItem.setType(ConsoleItemType.SELECT);
if(addNonBloccantePush) {
((StringConsoleItem)profiloInterazioneAsincronaItem).addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_LABEL_PUSH,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH);
}
if(addNonBloccantePull) {
((StringConsoleItem)profiloInterazioneAsincronaItem).addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_LABEL_PULL,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL);
}
StringProperty profiloInterazioneAsincronaItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
String interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_DEFAULT_VALUE;
if(profiloInterazioneAsincronaItemValue!=null && profiloInterazioneAsincronaItemValue.getValue()!=null && !"".equals(profiloInterazioneAsincronaItemValue.getValue())) {
interazioneMode = profiloInterazioneAsincronaItemValue.getValue();
// verifico compatibilita
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(interazioneMode) &&
!addNonBloccantePush) {
interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL;
}
else if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL.equals(interazioneMode) &&
!addNonBloccantePull) {
interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH;
}
}
else {
// verifico compatibilita default
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(interazioneMode) &&
!addNonBloccantePush) {
interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL;
}
else if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL.equals(interazioneMode) &&
!addNonBloccantePull) {
interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH;
}
if(profiloInterazioneAsincronaItemValue!=null) {
profiloInterazioneAsincronaItemValue.setValue(interazioneMode); // imposto il default
}
}
boolean push = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(interazioneMode);
boolean addRichiesta = true;
boolean addRichiestaStato = true;
boolean addRisposta = true;
if(push) {
addRichiestaStato = false;
if(rest) {
addRichiesta = config.isCompatibileNonBloccantePushRequest();
addRisposta = config.isCompatibileNonBloccantePushResponse();
}
}
else {
if(rest) {
addRichiesta = config.isCompatibileNonBloccantePullRequest();
addRichiestaStato = config.isCompatibileNonBloccantePullRequestState();
addRisposta = config.isCompatibileNonBloccantePullResponse();
}
}
profiloInterazioneAsincronaRelazioneItem.setType(ConsoleItemType.SELECT);
if(addRichiesta) {
((StringConsoleItem)profiloInterazioneAsincronaRelazioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL_RICHIESTA,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA);
}
if(addRichiestaStato) {
((StringConsoleItem)profiloInterazioneAsincronaRelazioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL_RICHIESTA_STATO,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA_STATO);
}
if(addRisposta) {
((StringConsoleItem)profiloInterazioneAsincronaRelazioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL_RISPOSTA,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RISPOSTA);
}
StringProperty profiloRelazioneAsincronaItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
String relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_DEFAULT_VALUE;
if(profiloRelazioneAsincronaItemValue!=null && profiloRelazioneAsincronaItemValue.getValue()!=null && !"".equals(profiloRelazioneAsincronaItemValue.getValue())) {
relazioneMode = profiloRelazioneAsincronaItemValue.getValue();
}
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(relazioneMode) && !addRichiesta) {
if(addRisposta) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RISPOSTA;
}
else if(addRichiestaStato) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA_STATO;
}
}
else if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA_STATO.equals(relazioneMode) && !addRichiestaStato) {
if(addRichiesta) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA;
}
else if(addRisposta) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RISPOSTA;
}
}
else if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RISPOSTA.equals(relazioneMode) && !addRisposta) {
if(addRichiesta) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA;
}
else if(addRichiestaStato) {
relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA_STATO;
}
}
boolean request = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(relazioneMode);
if(request) {
profiloInterazioneAsincronaCorrelataApiItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataServizioItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.HIDDEN);
}
else {
try {
if(push) {
// *** PUSH ***
profiloInterazioneAsincronaCorrelataApiItem.setType(ConsoleItemType.SELECT);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataApiItem).addLabelValue(ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED,ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataApiItem.setLabel(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_CORRELATA_A_API_LABEL);
profiloInterazioneAsincronaCorrelataServizioItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.HIDDEN);
// listo le altre API
ProtocolFiltroRicercaAccordi filtro = new ProtocolFiltroRicercaAccordi();
filtro.setServiceBinding(idPortType!=null ? ServiceBinding.SOAP : ServiceBinding.REST);
filtro.setSoggetto(new IDSoggetto(protocolFactory.createProtocolConfiguration().getTipoSoggettoDefault(), null));
List<IDAccordo> list = findIdAccordiServizioParteComune(registryReader, filtro);
if(list!=null && !list.isEmpty()) {
for (IDAccordo idAccordoTrovato : list) {
String uri = IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordoTrovato);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataApiItem).addLabelValue(NamingUtils.getLabelAccordoServizioParteComune(idAccordoTrovato),uri);
}
}
StringProperty apiValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID);
if(apiValue!=null && apiValue.getValue()!=null && !"".equals(apiValue.getValue()) &&
!ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(apiValue.getValue())) {
String uriAPI = apiValue.getValue();
IDAccordo idAccordoSelected = IDAccordoFactory.getInstance().getIDAccordoFromUri(uriAPI);
// Utility
AccordoServizioParteSpecifica asps = new AccordoServizioParteSpecifica();
asps.setTipoSoggettoErogatore(idAccordoSelected.getSoggettoReferente().getTipo());
asps.setNomeSoggettoErogatore(idAccordoSelected.getSoggettoReferente().getNome());
asps.setNome(idAccordoSelected.getNome());
asps.setVersione(idAccordoSelected.getVersione());
AccordoServizioParteComune aspcNormale = registryReader.getAccordoServizioParteComune(idAccordoSelected,false,false);
AccordoServizioParteComuneSintetico aspcSelected = new AccordoServizioParteComuneSintetico(aspcNormale);
boolean addTrattinoSelezioneNonEffettuata = true;
boolean throwException = true;
AccordoServizioParteComune aspc = getAccordoServizioParteComune(registryReader, idAccordoSelected);
if(idPortType!=null) {
// SOAP
profiloInterazioneAsincronaCorrelataServizioItem.setType(ConsoleItemType.SELECT);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataServizioItem).addLabelValue(ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED,ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataServizioItem.setLabel(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_CORRELATA_A_SERVIZIO_LABEL);
if(aspc!=null && aspc.sizePortTypeList()>0) {
for (PortType pt : aspc.getPortTypeList()) {
if(pt.getNome().equals(idPortType)) {
continue;
}
((StringConsoleItem)profiloInterazioneAsincronaCorrelataServizioItem).addLabelValue(pt.getNome(), pt.getNome());
}
}
StringProperty ptValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_SERVIZIO_RICHIESTA_CORRELATA_ID);
if(ptValue!=null && ptValue.getValue()!=null && !"".equals(ptValue.getValue()) &&
!ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(ptValue.getValue())) {
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.SELECT);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED,ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataAzioneItem.setLabel(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_CORRELATA_A_AZIONE_LABEL);
asps.setPortType(ptValue.getValue());
// listo le altre azioni
List<String> filtraAzioniUtilizzate = new ArrayList<>();
filtraAzioniUtilizzate.add(idAzione);
Map<String,String> azioni = AzioniUtils.getAzioniConLabel(asps, aspcSelected, addTrattinoSelezioneNonEffettuata, throwException,
filtraAzioniUtilizzate, ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED, ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED, log);
if(azioni!=null && !azioni.isEmpty()) {
for (Map.Entry<String,String> entry : azioni.entrySet()) {
String azioneId = entry.getKey();
String tmpInterazione = AzioniUtils.getProtocolPropertyStringValue(aspc, ptValue.getValue(), azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(tmpInterazione)) {
continue;
}
String tmpRuolo = AzioniUtils.getProtocolPropertyStringValue(aspc, ptValue.getValue(), azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(tmpRuolo)) {
continue;
}
String tmpRelazione = AzioniUtils.getProtocolPropertyStringValue(aspc, ptValue.getValue(), azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(tmpRelazione)) {
continue;
}
String azioneLabel = azioni.get(azioneId);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(azioneLabel,azioneId);
}
}
}
}
else {
// REST
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.SELECT);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED,ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataAzioneItem.setLabel(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_CORRELATA_A_RISORSA_LABEL);
// listo le altre azioni
List<String> filtraAzioniUtilizzate = new ArrayList<>();
filtraAzioniUtilizzate.add(idAzione);
Map<String,String> azioni = AzioniUtils.getAzioniConLabel(asps, aspcSelected, addTrattinoSelezioneNonEffettuata, throwException,
filtraAzioniUtilizzate, ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED, ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED, log);
if(azioni!=null && !azioni.isEmpty()) {
for (String azioneId : azioni.keySet()) {
String tmpInterazione = AzioniUtils.getProtocolPropertyStringValue(aspc, null, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(tmpInterazione)) {
continue;
}
String tmpRuolo = AzioniUtils.getProtocolPropertyStringValue(aspc, null, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(tmpRuolo)) {
continue;
}
String tmpRelazione = AzioniUtils.getProtocolPropertyStringValue(aspc, null, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(tmpRelazione)) {
continue;
}
String azioneLabel = azioni.get(azioneId);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(azioneLabel,azioneId);
}
}
}
}
}
else {
// *** PULL ***
profiloInterazioneAsincronaCorrelataApiItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataServizioItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.SELECT);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED,ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED);
profiloInterazioneAsincronaCorrelataAzioneItem.setLabel(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_CORRELATA_A_LABEL);
// Utility
AccordoServizioParteSpecifica asps = new AccordoServizioParteSpecifica();
asps.setTipoSoggettoErogatore(idAccordo.getSoggettoReferente().getTipo());
asps.setNomeSoggettoErogatore(idAccordo.getSoggettoReferente().getNome());
asps.setNome(idAccordo.getNome());
asps.setVersione(idAccordo.getVersione());
asps.setPortType(idPortType);
AccordoServizioParteComune aspcNormale = registryReader.getAccordoServizioParteComune(idAccordo,false,false);
AccordoServizioParteComuneSintetico aspc = new AccordoServizioParteComuneSintetico(aspcNormale);
boolean addTrattinoSelezioneNonEffettuata = true;
boolean throwException = true;
// listo le altre azioni
List<String> filtraAzioniUtilizzate = new ArrayList<>();
filtraAzioniUtilizzate.add(idAzione);
Map<String,String> azioni = AzioniUtils.getAzioniConLabel(asps, aspc, addTrattinoSelezioneNonEffettuata, throwException,
filtraAzioniUtilizzate, ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED, ModIConsoleCostanti.MODIPA_LABEL_UNDEFINED, log);
if(azioni!=null && !azioni.isEmpty()) {
for (String azioneId : azioni.keySet()) {
String tmpInterazione = AzioniUtils.getProtocolPropertyStringValue(aspcNormale, idPortType, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(tmpInterazione)) {
continue;
}
String tmpRuolo = AzioniUtils.getProtocolPropertyStringValue(aspcNormale, idPortType, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PULL.equals(tmpRuolo)) {
continue;
}
String tmpRelazione = AzioniUtils.getProtocolPropertyStringValue(aspcNormale, idPortType, azioneId, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
if(!ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(tmpRelazione)) {
continue;
}
String azioneLabel = azioni.get(azioneId);
((StringConsoleItem)profiloInterazioneAsincronaCorrelataAzioneItem).addLabelValue(azioneLabel,azioneId);
}
}
}
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
}
if(allHidden) {
profiloInterazioneAsincronaItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaRelazioneItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataApiItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataServizioItem.setType(ConsoleItemType.HIDDEN);
profiloInterazioneAsincronaCorrelataAzioneItem.setType(ConsoleItemType.HIDDEN);
}
else if(inUse) {
setLabelInUse(consoleConfiguration, properties, profiloInterazioneItem,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID_INUSE_READONLY);
setLabelInUse(consoleConfiguration, properties, profiloInterazioneAsincronaItem,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID_INUSE_READONLY);
setLabelInUse(consoleConfiguration, properties, profiloInterazioneAsincronaRelazioneItem,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID,
ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID_INUSE_READONLY);
}
}
static void setLabelInUse(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties,
AbstractConsoleItem<?> item, String id, String idReadOnly) throws ProtocolException {
if(!ConsoleItemType.HIDDEN.equals(item.getType())){
StringProperty itemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, id);
item.setType(ConsoleItemType.HIDDEN);
AbstractConsoleItem<?> itemReadOnly =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), idReadOnly);
itemReadOnly.setType(ConsoleItemType.TEXT);
String label = null;
String labelDefault = null;
if(item instanceof StringConsoleItem) {
StringConsoleItem sci = (StringConsoleItem) item;
SortedMap<String> map = sci.getMapLabelValues();
if(map!=null && !map.isEmpty()) {
for (String l : map.keys()) {
String v = map.get(l);
if(v!=null && v.equals(itemValue.getValue())) {
label = l;
}
if(v!=null && v.equals(item.getDefaultValue())) {
labelDefault = l;
}
}
}
}
StringProperty itemValueReadOnly = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, idReadOnly);
if(label!=null) {
itemValueReadOnly.setValue(label);
}
else {
itemValueReadOnly.setValue(labelDefault);
}
}
}
static void validateProfiloInterazione(ProtocolProperties properties,
String idPortType, boolean rest) throws ProtocolException {
StringProperty profiloInterazioneItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ID);
String profiloInterazione = rest ? ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_REST_VALUE : ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_DEFAULT_SOAP_VALUE;
if(profiloInterazioneItemValue!=null && profiloInterazioneItemValue.getValue()!=null && !"".equals(profiloInterazioneItemValue.getValue())) {
profiloInterazione = profiloInterazioneItemValue.getValue();
}
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_VALUE_NON_BLOCCANTE.equals(profiloInterazione)) {
StringProperty profiloInterazioneAsincronaItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_ID);
String interazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_DEFAULT_VALUE;
if(profiloInterazioneAsincronaItemValue!=null && profiloInterazioneAsincronaItemValue.getValue()!=null && !"".equals(profiloInterazioneAsincronaItemValue.getValue())) {
interazioneMode = profiloInterazioneAsincronaItemValue.getValue();
}
boolean push = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_VALUE_PUSH.equals(interazioneMode);
StringProperty profiloRelazioneAsincronaItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_ID);
String relazioneMode = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_DEFAULT_VALUE;
if(profiloRelazioneAsincronaItemValue!=null && profiloRelazioneAsincronaItemValue.getValue()!=null && !"".equals(profiloRelazioneAsincronaItemValue.getValue())) {
relazioneMode = profiloRelazioneAsincronaItemValue.getValue();
}
boolean request = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA.equals(relazioneMode);
if(!request) {
String labelRelazione = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL_RISPOSTA;
if(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_VALUE_RICHIESTA_STATO.equals(relazioneMode)) {
labelRelazione = ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_RUOLO_LABEL_RICHIESTA_STATO;
}
if(push) {
// *** PUSH ***
String prefixPushNonBloccante = "Il profilo non bloccante 'PUSH', relazione '"+labelRelazione+"'";
StringProperty apiItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID);
if(apiItemValue==null || apiItemValue.getValue()==null || "".equals(apiItemValue.getValue()) ||
ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(apiItemValue.getValue())) {
throw new ProtocolException(prefixPushNonBloccante+", richiede che sia perfezionata una correlazione verso una API che implementa il servizio di risposta");
}
if(idPortType!=null) {
StringProperty ptItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_SERVIZIO_RICHIESTA_CORRELATA_ID);
if(ptItemValue==null || ptItemValue.getValue()==null || "".equals(ptItemValue.getValue()) ||
ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(ptItemValue.getValue())) {
throw new ProtocolException(prefixPushNonBloccante+", richiede che sia perfezionata una correlazione verso un servizio di risposta");
}
}
StringProperty azioneItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_AZIONE_RICHIESTA_CORRELATA_ID);
if(azioneItemValue==null || azioneItemValue.getValue()==null || "".equals(azioneItemValue.getValue()) ||
ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(azioneItemValue.getValue())) {
String az = null;
if(idPortType!=null) {
az = "un'azione";
}
else {
az = "una risorsa";
}
throw new ProtocolException(prefixPushNonBloccante+", richiede che sia perfezionata una correlazione verso "+az+" con relazione 'Richiesta'");
}
}
else {
// *** PULL ***
StringProperty azioneItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_AZIONE_RICHIESTA_CORRELATA_ID);
if(azioneItemValue==null || azioneItemValue.getValue()==null || "".equals(azioneItemValue.getValue()) ||
ModIConsoleCostanti.MODIPA_VALUE_UNDEFINED.equals(azioneItemValue.getValue())) {
String az = null;
if(idPortType!=null) {
az = "un'azione";
}
else {
az = "una risorsa";
}
throw new ProtocolException("Il profilo non bloccante 'PULL', relazione '"+labelRelazione+"', richiede che sia perfezionata una correlazione verso "+az+" con relazione 'Richiesta'");
}
}
}
}
}
static void updateProfiloSicurezzaCanale(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties) {
AbstractConsoleItem<?> profiloSicurezzaCanaleItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_ID);
StringProperty sicurezzaCanaleItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_ID);
String value = sicurezzaCanaleItemValue!=null ? sicurezzaCanaleItemValue.getValue() : null;
if(ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_VALUE_IDAC01.equals(value)) {
profiloSicurezzaCanaleItem.setNote(ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_LABEL_IDAC01_NOTE);
}
else if(ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_VALUE_IDAC02.equals(value)) {
profiloSicurezzaCanaleItem.setNote(ModIConsoleCostanti.MODIPA_PROFILO_SICUREZZA_CANALE_LABEL_IDAC02_NOTE);
}
}
private static boolean permettiModificaNomeAccordo = true;
public static boolean isPermettiModificaNomeAccordo() {
return permettiModificaNomeAccordo;
}
public static void setPermettiModificaNomeAccordo(boolean permettiModificaNomeAccordo) {
ModIDynamicConfigurationAccordiParteComuneUtilities.permettiModificaNomeAccordo = permettiModificaNomeAccordo;
}
private static int valueOfVersione(String versioneS) {
int versione = -1;
try {
versione = Integer.valueOf(versioneS);
}catch(Exception e) {
// ignore
}
return versione;
}
private static List<IDResource> findIdResourceAccordo(IRegistryReader registryReader,ProtocolFiltroRicercaRisorse filtro) throws RegistryException {
List<IDResource> list = null;
try {
list = registryReader.findIdResourceAccordo(filtro);
}catch(RegistryNotFound notFound) {
// ignore
}
return list;
}
private static List<IDPortTypeAzione> findIdAzionePortType(IRegistryReader registryReader,ProtocolFiltroRicercaPortTypeAzioni filtro) throws RegistryException {
List<IDPortTypeAzione> list = null;
try {
list = registryReader.findIdAzionePortType(filtro);
}catch(RegistryNotFound notFound) {
// ignore
}
return list;
}
static void validateDynamicConfigAccordoServizioParteComune(ConsoleOperationType consoleOperationType, IConsoleHelper consoleHelper, ProtocolProperties properties,
IRegistryReader registryReader, IDAccordo id) throws ProtocolException{
boolean rest = isApiRest(consoleOperationType, consoleHelper, registryReader, id);
// Lascio il codice se servisse, ma è stato aggiunto la gestione sull'update dell'API
if(!permettiModificaNomeAccordo && ConsoleOperationType.CHANGE.equals(consoleOperationType) && id!=null) {
try {
String apiGestioneParziale = consoleHelper.getParameter(Costanti.CONSOLE_PARAMETRO_APC_API_GESTIONE_PARZIALE);
if(Costanti.CONSOLE_VALORE_PARAMETRO_APC_API_INFORMAZIONI_GENERALI.equals(apiGestioneParziale)) {
String nome = consoleHelper.getParameter(Costanti.CONSOLE_PARAMETRO_APC_NOME);
String versioneS = consoleHelper.getParameter(Costanti.CONSOLE_PARAMETRO_APC_VERSIONE);
int versione = valueOfVersione(versioneS);
if(nome!=null && versione>0 &&
(!id.getNome().equals(nome) || id.getVersione().intValue()!=versione)
) {
AccordoServizioParteComune as = registryReader.getAccordoServizioParteComune(id);
if(ServiceBinding.REST.equals(as.getServiceBinding())){
ProtocolFiltroRicercaRisorse filtro = new ProtocolFiltroRicercaRisorse();
ProtocolProperties protocolPropertiesResources = new ProtocolProperties();
protocolPropertiesResources.addProperty(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID, IDAccordoFactory.getInstance().getUriFromIDAccordo(id));
filtro.setProtocolPropertiesRisorsa(protocolPropertiesResources);
List<IDResource> list = findIdResourceAccordo(registryReader, filtro);
if(list!=null && !list.isEmpty()) {
// ne dovrebbe esistere solo una.
IDResource idR = list.get(0);
String uriAPI = NamingUtils.getLabelAccordoServizioParteComune(idR.getIdAccordo());
Resource resource = registryReader.getResourceAccordo(idR);
String labelR = NamingUtils.getLabelResource(resource);
throw new ProtocolException("Non è possibile modificare le informazioni generali dell'API poichè riferita dalla risorsa '"+labelR+"' dell'API '"+uriAPI+"' (Profilo non bloccante PUSH)");
}
}
else {
ProtocolFiltroRicercaPortTypeAzioni filtro = new ProtocolFiltroRicercaPortTypeAzioni();
ProtocolProperties protocolPropertiesAzioni = new ProtocolProperties();
protocolPropertiesAzioni.addProperty(ModIConsoleCostanti.MODIPA_PROFILO_INTERAZIONE_ASINCRONA_API_RICHIESTA_CORRELATA_ID, IDAccordoFactory.getInstance().getUriFromIDAccordo(id));
filtro.setProtocolPropertiesAzione(protocolPropertiesAzioni);
List<IDPortTypeAzione> list = findIdAzionePortType(registryReader,filtro);
if(list!=null && !list.isEmpty()) {
// ne dovrebbe esistere solo una.
IDPortTypeAzione idA = list.get(0);
String uriAPI = NamingUtils.getLabelAccordoServizioParteComune(idA.getIdPortType().getIdAccordo());
throw new ProtocolException("Non è possibile modificare le informazioni generali dell'API poichè riferita dall'azione '"+idA.getNome()+"' del Servizio '"+idA.getIdPortType().getNome()+"' nell'API '"+uriAPI+"' (Profilo non bloccante PUSH)");
}
}
}
}
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
ModIDynamicConfigurationAccordiParteComuneSicurezzaMessaggioUtilities.validateProfiloSicurezzaMessaggio(properties, rest);
}
static boolean isApiRest(ConsoleOperationType consoleOperationType, IConsoleHelper consoleHelper,
IRegistryReader registryReader, IDAccordo id) throws ProtocolException {
boolean rest = true;
AccordoServizioParteComune aspc = null;
if(ConsoleOperationType.CHANGE.equals(consoleOperationType) && id!=null) {
try {
aspc = registryReader.getAccordoServizioParteComune(id, false, false);
}catch(RegistryNotFound notFound) {
// ignore
}
catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
if(aspc!=null) {
rest = ServiceBinding.REST.equals(aspc.getServiceBinding());
}
else {
try {
String serviceBinding = consoleHelper.getParameter(Costanti.CONSOLE_PARAMETRO_SERVICE_BINDING);
rest = !ServiceBinding.SOAP.name().equals(serviceBinding);
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
}
return rest;
}
}