BasicProtocolIntegrationConfiguration.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.basic.config;
import java.util.List;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
import org.openspcoop2.core.config.constants.PortaDelegataAzioneIdentificazione;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.protocol.basic.BasicComponentFactory;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.config.ProtocolImplementation;
import org.openspcoop2.protocol.sdk.config.ProtocolSubscription;
import org.openspcoop2.protocol.sdk.constants.ConsoleInterfaceType;
import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
/**
* Classe che implementa, l'interfaccia {@link org.openspcoop2.protocol.sdk.config.IProtocolConfiguration}
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class BasicProtocolIntegrationConfiguration extends BasicComponentFactory implements org.openspcoop2.protocol.sdk.config.IProtocolIntegrationConfiguration {
private ImplementationConfiguration implementationConfigurationRest;
private ImplementationConfiguration implementationConfigurationSoap;
private SubscriptionConfiguration subscriptionConfigurationRest;
private SubscriptionConfiguration subscriptionConfigurationSoap;
public BasicProtocolIntegrationConfiguration(IProtocolFactory<?> factory) throws ProtocolException {
super(factory);
if(this.protocolFactory.getManifest().getBinding().getRest()!=null) {
this.implementationConfigurationRest = new ImplementationConfiguration(this.protocolFactory.getManifest().getBinding().getRest().getIntegration().getImplementation());
this.subscriptionConfigurationRest = new SubscriptionConfiguration(this.protocolFactory.getManifest().getBinding().getRest().getIntegration().getSubscription());
}
if(this.protocolFactory.getManifest().getBinding().getSoap()!=null) {
this.implementationConfigurationSoap = new ImplementationConfiguration(this.protocolFactory.getManifest().getBinding().getSoap().getIntegration().getImplementation());
this.subscriptionConfigurationSoap = new SubscriptionConfiguration(this.protocolFactory.getManifest().getBinding().getSoap().getIntegration().getSubscription());
}
}
// SUBSCRIPTION
@Override
public ProtocolSubscription createDefaultSubscription(ServiceBinding serviceBinding, IDSoggetto idFruitore, IDServizio idServizio) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.subscriptionConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationRest.createDefaultSubscription(idFruitore, idServizio);
case SOAP:
if(this.subscriptionConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationSoap.createDefaultSubscription(idFruitore, idServizio);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public ProtocolSubscription createSubscription(IConfigIntegrationReader configIntegrationReader, ServiceBinding serviceBinding, IDSoggetto idFruitore, IDServizio idServizio,
PortaDelegata portaDelegataDefault,
String ruleName, String description, String ... azione ) throws ProtocolException{
return this.createSubscription(configIntegrationReader, serviceBinding, idFruitore, idServizio,
portaDelegataDefault, null,
ruleName, description, azione);
}
@Override
public ProtocolSubscription createSubscription(IConfigIntegrationReader confiIntegrationReader, ServiceBinding serviceBinding, IDSoggetto idFruitore, IDServizio idServizio,
PortaDelegata portaDelegataDefault, PortaDelegata portaDelegataDaCopiare,
String ruleName, String description, String ... azione ) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.subscriptionConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationRest.createSubscription(confiIntegrationReader, idFruitore, idServizio, portaDelegataDefault, portaDelegataDaCopiare, ruleName, description, azione);
case SOAP:
if(this.subscriptionConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationSoap.createSubscription(confiIntegrationReader,idFruitore, idServizio, portaDelegataDefault, portaDelegataDaCopiare, ruleName, description, azione);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public List<PortaDelegataAzioneIdentificazione> getAllSubscriptionIdentificationResourceModes(ServiceBinding serviceBinding, ConsoleInterfaceType consoleType) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.subscriptionConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationRest.supportedIdentificationModes(consoleType);
case SOAP:
if(this.subscriptionConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationSoap.supportedIdentificationModes(consoleType);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public boolean useInterfaceNameInSubscriptionInvocationURL(ServiceBinding serviceBinding) throws ProtocolException{
switch (serviceBinding) {
case REST:
if(this.subscriptionConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationRest.useInterfaceNameInInvocationURL();
case SOAP:
if(this.subscriptionConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.subscriptionConfigurationSoap.useInterfaceNameInInvocationURL();
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
// IMPLEMENTATION
@Override
public ProtocolImplementation createDefaultImplementation(ServiceBinding serviceBinding, IDServizio idServizio) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.implementationConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationRest.createDefaultImplementation(idServizio);
case SOAP:
if(this.implementationConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationSoap.createDefaultImplementation(idServizio);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public ProtocolImplementation createImplementation(IConfigIntegrationReader configIntegrationReader,ServiceBinding serviceBinding, IDServizio idServizio,
PortaApplicativa portaApplicativaDefault,
String ruleName, String description, String ... azione ) throws ProtocolException{
return this.createImplementation(configIntegrationReader,serviceBinding, idServizio,
portaApplicativaDefault, null,
ruleName, description, azione);
}
@Override
public ProtocolImplementation createImplementation(IConfigIntegrationReader configIntegrationReader,ServiceBinding serviceBinding, IDServizio idServizio,
PortaApplicativa portaApplicativaDefault, PortaApplicativa portaApplicativaDaCopiare,
String ruleName, String description, String ... azione ) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.implementationConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationRest.createImplementation(configIntegrationReader,idServizio, portaApplicativaDefault, portaApplicativaDaCopiare, ruleName, description, azione);
case SOAP:
if(this.implementationConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationSoap.createImplementation(configIntegrationReader,idServizio, portaApplicativaDefault, portaApplicativaDaCopiare, ruleName, description, azione);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public List<PortaApplicativaAzioneIdentificazione> getAllImplementationIdentificationResourceModes(ServiceBinding serviceBinding, ConsoleInterfaceType consoleType) throws ProtocolException{
if(serviceBinding==null){
throw new ProtocolException("Service Binding undefined");
}
switch (serviceBinding) {
case REST:
if(this.implementationConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationRest.supportedIdentificationModes(consoleType);
case SOAP:
if(this.implementationConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationSoap.supportedIdentificationModes(consoleType);
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
@Override
public boolean useInterfaceNameInImplementationInvocationURL(ServiceBinding serviceBinding) throws ProtocolException{
switch (serviceBinding) {
case REST:
if(this.implementationConfigurationRest==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationRest.useInterfaceNameInInvocationURL();
case SOAP:
if(this.implementationConfigurationSoap==null) {
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
return this.implementationConfigurationSoap.useInterfaceNameInInvocationURL();
}
throw new ProtocolException("Service Binding '"+serviceBinding+"' unsupported");
}
}