aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java')
-rw-r--r--src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java197
1 files changed, 0 insertions, 197 deletions
diff --git a/src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java b/src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java
deleted file mode 100644
index 9e78506..0000000
--- a/src/main/java/org/openecomp/dcae/inventory/InventoryApplication.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * dcae-inventory
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.dcae.inventory;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.dropwizard.cli.Cli;
-import io.dropwizard.configuration.ConfigurationFactory;
-import io.dropwizard.configuration.ConfigurationFactoryFactory;
-import io.dropwizard.configuration.JsonConfigurationFactory;
-import io.dropwizard.configuration.UrlConfigurationSourceProvider;
-import io.dropwizard.util.JarLocation;
-import org.openecomp.dcae.inventory.clients.DCAEControllerClient;
-import org.openecomp.dcae.inventory.clients.DatabusControllerClient;
-import org.openecomp.dcae.inventory.daos.InventoryDAOManager;
-import org.openecomp.dcae.inventory.exceptions.mappers.DBIExceptionMapper;
-import org.openecomp.dcae.inventory.exceptions.mappers.DCAEControllerConnectionExceptionMapper;
-import org.openecomp.dcae.inventory.exceptions.mappers.DCAEControllerTimeoutExceptionMapper;
-import org.openecomp.dcae.inventory.providers.NotFoundExceptionMapper;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import io.dropwizard.Application;
-import io.dropwizard.client.JerseyClientBuilder;
-import io.dropwizard.setup.Bootstrap;
-import io.dropwizard.setup.Environment;
-import io.swagger.api.DcaeServiceTypesApi;
-import io.swagger.api.DcaeServicesApi;
-import io.swagger.api.DcaeServicesGroupbyApi;
-import io.swagger.api.factories.DcaeServicesApiServiceFactory;
-import io.swagger.jaxrs.config.BeanConfig;
-import io.swagger.jaxrs.listing.ApiListingResource;
-import io.swagger.jaxrs.listing.SwaggerSerializers;
-import io.swagger.models.Contact;
-import io.swagger.models.Info;
-import org.eclipse.jetty.servlets.CrossOriginFilter;
-import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.DispatcherType;
-import javax.servlet.FilterRegistration;
-import javax.validation.Validator;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.core.Link;
-import java.util.EnumSet;
-import java.util.Locale;
-
-
-/**
- * Created by mhwang on 4/11/16.
- */
-public class InventoryApplication extends Application<InventoryConfiguration> {
-
- static final Logger LOG = LoggerFactory.getLogger(InventoryApplication.class);
- static boolean shouldRemoteFetchConfig = false;
-
- public static void main(String[] args) throws Exception {
- // This is here to try to fix a "high" issue caught by Fortify. Did this **plus** setting locale for each of the
- // string comparisons that use `toUpper` because of this StackOverflow post:
- // http://stackoverflow.com/questions/38308777/fixed-fortify-scan-locale-changes-are-reappearing
- Locale.setDefault(Locale.ENGLISH);
-
- if (args.length < 2 && "server".equals(args[0])) {
- // When the start command is just "server", this will trigger inventory to look for its configuration
- // from Consul's KV store. The url is hardcoded here which should be used as the "path" variable into
- // the UrlConfigurationSourceProvider.
- String[] customArgs = new String[args.length+1];
- System.arraycopy(args, 0, customArgs, 0, args.length);
- customArgs[args.length] = "http://consul:8500/v1/kv/inventory?raw=true";
- shouldRemoteFetchConfig = true;
-
- new InventoryApplication().run(customArgs);
- } else {
- // You are here because you want to use the default way of configuring inventory - YAML file.
- new InventoryApplication().run(args);
- }
- }
-
- @Override
- public String getName() {
- return "dcae-inventory";
- }
-
- private static class JsonConfigurationFactoryFactory<T> implements ConfigurationFactoryFactory<T> {
- @Override
- public ConfigurationFactory<T> create(Class<T> klass, Validator validator, ObjectMapper objectMapper, String propertyPrefix) {
- return new JsonConfigurationFactory(klass, validator, objectMapper, propertyPrefix);
- }
- }
-
- @Override
- public void initialize(Bootstrap<InventoryConfiguration> bootstrap) {
- // This Info object was lifted from the Swagger generated io.swagger.api.Bootstrap file. Although it was not generated
- // correctly.
- Info info = new Info().title("DCAE Inventory API").version("0.8.0")
- .description("DCAE Inventory is a web service that provides the following:\n\n1. Real-time data on all DCAE services and their components\n2. Comprehensive details on available DCAE service types\n")
- .contact(new Contact().email("dcae@lists.openecomp.org"));
- // Swagger/servlet/jax-rs magic!
- BeanConfig beanConfig = new BeanConfig();
- beanConfig.setInfo(info);
- beanConfig.setResourcePackage("io.swagger.api");
- beanConfig.setScan(true);
-
- if (shouldRemoteFetchConfig) {
- // You are here because the configuration is sitting on a remote server in json format
- bootstrap.setConfigurationSourceProvider(new UrlConfigurationSourceProvider());
- bootstrap.setConfigurationFactoryFactory(new JsonConfigurationFactoryFactory<>());
- }
- }
-
- @Override
- public void run(InventoryConfiguration configuration, Environment environment) {
- LOG.info("Starting DCAE inventory application");
- LOG.info(String.format("DB driver properties: %s", configuration.getDataSourceFactory().getProperties().toString()));
- InventoryDAOManager.getInstance().setup(environment, configuration);
- InventoryDAOManager.getInstance().initialize();
-
- // Add filter for CORS support for DCAE dashboard
- // http://jitterted.com/tidbits/2014/09/12/cors-for-dropwizard-0-7-x/
- // https://gist.github.com/yunspace/07d80a9ac32901f1e149#file-dropwizardjettycrossoriginintegrationtest-java-L11
- FilterRegistration.Dynamic filter = environment.servlets().addFilter("CORSFilter", CrossOriginFilter.class);
- filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
- filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
- filter.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin");
- filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS");
- filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
-
- // Want to serialize Link in a way we like
- SimpleModule simpleModule = new SimpleModule();
- simpleModule.addSerializer(Link.class, new LinkSerializer());
- environment.getObjectMapper().registerModule(simpleModule);
-
- // Setup DCAE controller client
- // Used by the dcae-services API
- if (configuration.getDcaeControllerConnection().getRequired()) {
- final Client clientDCAEController = new JerseyClientBuilder(environment).using(configuration.getJerseyClientConfiguration())
- .build("DCAEControllerClient");
- HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder().build();
- clientDCAEController.register(feature);
- final DCAEControllerClient dcaeControllerClient = new DCAEControllerClient(clientDCAEController, configuration.getDcaeControllerConnection());
- DcaeServicesApiServiceFactory.setDcaeControllerClient(dcaeControllerClient);
-
- LOG.info("Use of DCAE controller client is required. Turned on.");
- } else {
- LOG.warn("Use of DCAE controller client is *not* required. Turned off.");
- }
-
- // Setup Databus controller client
- // Used by the dcae-services API
- if (configuration.getDatabusControllerConnection().getRequired()) {
- final Client clientDatabusController = new JerseyClientBuilder(environment).using(configuration.getJerseyClientConfiguration())
- .build("DatabusControllerClient");
- clientDatabusController.register(HttpAuthenticationFeature.basicBuilder().credentials(
- configuration.getDatabusControllerConnection().getMechId(),
- configuration.getDatabusControllerConnection().getPassword()).build());
- final DatabusControllerClient databusControllerClient = new DatabusControllerClient(clientDatabusController,
- configuration.getDatabusControllerConnection());
- DcaeServicesApiServiceFactory.setDatabusControllerClient(databusControllerClient);
-
- LOG.info("Use of databus controller client is required. Turned on.");
- } else {
- LOG.warn("Use of databus controller client is *not* required. Turned off.");
- }
-
- environment.jersey().register(NotFoundExceptionMapper.class);
- environment.jersey().register(DCAEControllerConnectionExceptionMapper.class);
- environment.jersey().register(DCAEControllerTimeoutExceptionMapper.class);
- environment.jersey().register(DBIExceptionMapper.UnableToObtainConnectionExceptionMapper.class);
- environment.jersey().register(DBIExceptionMapper.UnableToExecuteStatementExceptionMapper.class);
- environment.jersey().register(DBIExceptionMapper.UnableToCreateStatementExceptionMapper.class);
-
- environment.jersey().register(new DcaeServicesApi());
- environment.jersey().register(new DcaeServiceTypesApi());
- environment.jersey().register(new DcaeServicesGroupbyApi());
-
- // https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
- environment.jersey().register(new ApiListingResource());
- environment.jersey().register(new SwaggerSerializers());
- }
-
-}