package test;
/*
* #%L
* MQNaaS :: Client Provider
* %%
* Copyright (C) 2007 - 2015 Fundació Privada i2CAT, Internet i Innovació a Catalunya
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* 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 Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-3.0.html>.
* #L%
*/
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import org.mqnaas.client.application.ApplicationConfiguration;
import org.mqnaas.client.application.IApplicationClient;
import org.mqnaas.client.cxf.CXFConfiguration;
import org.mqnaas.client.cxf.ICXFAPIProvider;
import org.mqnaas.client.netconf.INetconfClientProvider;
import org.mqnaas.client.netconf.NetconfClient;
import org.mqnaas.client.netconf.NetconfConfiguration;
import org.mqnaas.clientprovider.api.apiclient.IAPIClientProviderFactory;
import org.mqnaas.clientprovider.api.client.IClientProviderFactory;
import org.mqnaas.core.api.Endpoint;
import org.mqnaas.core.api.IRootResource;
import org.mqnaas.core.api.IRootResourceAdministration;
import org.mqnaas.core.api.RootResourceDescriptor;
import org.mqnaas.core.api.Specification;
import org.mqnaas.core.api.Specification.Type;
import org.mqnaas.core.api.annotations.DependingOn;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* FIXME This test application should be moved to a unit test.
*
*/
public class ClientApplication /*implements IApplication*/ {
private static final Logger log = LoggerFactory.getLogger(ClientApplication.class);
@DependingOn
IRootResourceAdministration rootResourceManagement;
@DependingOn
IClientProviderFactory clientProviderFactory;
@DependingOn
IAPIClientProviderFactory apiProviderFactory;
// @Override
public void activate() {
log.info("Running the Client test application...");
// Fake resource
IRootResource resource;
try {
resource = rootResourceManagement.createRootResource(RootResourceDescriptor.create(new Specification(Type.OTHER),
Arrays.asList(new Endpoint(new URI("ssh://localhost/")), new Endpoint(new URI("http://localhost/")))));
} catch (URISyntaxException e) {
log.error("Error creating SSH URI", e);
return;
} catch (InstantiationException e) {
log.error("Error creating resource", e);
return;
} catch (IllegalAccessException e) {
log.error("Error creating resource", e);
return;
}
try {
// 1. Static client provisioning
INetconfClientProvider cp = clientProviderFactory.getClientProvider(INetconfClientProvider.class);
// Client w/o configuration
NetconfClient netconfClient1 = cp.getClient(resource);
netconfClient1.doNetconfSpecificThing1();
// Client with (client specific) configuration
NetconfConfiguration netconfConfiguration = new NetconfConfiguration();
NetconfClient netconfClient2 = cp.getClient(resource, netconfConfiguration);
netconfClient2.doNetconfSpecificThing2();
// 2. Dynamic client provisioning
ICXFAPIProvider ap = apiProviderFactory.getAPIProvider(ICXFAPIProvider.class);
// Dynamic client w/o configuration
IApplicationClient applicationSpecificClient1 = ap.getAPIClient(resource, IApplicationClient.class);
applicationSpecificClient1.methodA();
applicationSpecificClient1.methodB();
// Dynamic client with (client specific) configuration
CXFConfiguration cxfConf = new CXFConfiguration();
cxfConf.setUseDummyClient(true);
IApplicationClient applicationSpecificClient2 = ap.getAPIClient(resource, IApplicationClient.class, cxfConf);
applicationSpecificClient2.methodA();
applicationSpecificClient2.methodB();
// Dynamic client with client specific configuration and application
// specific configuration
CXFConfiguration cxfConf2 = new CXFConfiguration();
cxfConf2.setUseDummyClient(true);
IApplicationClient applicationSpecificClient3 = ap.getAPIClient(resource, IApplicationClient.class, cxfConf2,
new ApplicationConfiguration());
applicationSpecificClient3.methodA();
applicationSpecificClient3.methodB();
} catch (Exception e) {
log.error("Error obtaining client provider or invoking client.", e);
}
}
// @Override
public void deactivate() {
// nothing to do
}
}