Refactoring of the code 43/32543/1
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Thu, 22 Feb 2018 13:46:16 +0000 (14:46 +0100)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Thu, 22 Feb 2018 13:46:16 +0000 (14:46 +0100)
Package renaming and classes moved to new java packages

Issue-ID: CLAMP-85
Change-Id: Icef4cac31b21e7d038a90ef206c799ed47228515
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/dcae/DcaeDeploymentException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/exception/sdc/SdcCommunicationException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/service/CldsService.java

index 3c8649c..ab3a711 100644 (file)
@@ -32,7 +32,7 @@ import java.util.Date;
 import org.json.simple.JSONObject;\r
 import org.json.simple.parser.JSONParser;\r
 import org.onap.clamp.clds.config.CldsReferenceProperties;\r
-import org.onap.clamp.clds.exception.DcaeDeploymentException;\r
+import org.onap.clamp.clds.exception.dcae.DcaeDeploymentException;\r
 import org.onap.clamp.clds.util.LoggingUtils;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
 import org.springframework.stereotype.Component;\r
index 299ec1e..c01fe6a 100644 (file)
@@ -59,7 +59,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;\r
 import org.apache.http.HttpHeaders;\r
 import org.onap.clamp.clds.config.CldsReferenceProperties;\r
-import org.onap.clamp.clds.exception.SdcCommunicationException;\r
+import org.onap.clamp.clds.exception.sdc.SdcCommunicationException;\r
 import org.onap.clamp.clds.model.CldsAlarmCondition;\r
 import org.onap.clamp.clds.model.CldsServiceData;\r
 import org.onap.clamp.clds.model.CldsVfData;\r
diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java
new file mode 100644 (file)
index 0000000..7ba5b1c
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017-2018 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.config.spring;
+
+import javax.sql.DataSource;
+import javax.xml.transform.TransformerConfigurationException;
+
+import org.onap.clamp.clds.config.EncodedPasswordBasicDataSource;
+import org.onap.clamp.clds.dao.CldsDao;
+import org.onap.clamp.clds.transform.XslTransformer;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.core.io.ClassPathResource;
+
+@Configuration
+@Profile("clamp-default")
+public class CldsConfiguration {
+
+    /**
+     * Clds Identity database DataSource configuration
+     * 
+     * @return
+     */
+    @Bean(name = "cldsDataSource")
+    @ConfigurationProperties(prefix = "spring.datasource.cldsdb")
+    public DataSource cldsDataSource() {
+        return new EncodedPasswordBasicDataSource();
+    }
+
+    @Bean(name = "mapper")
+    public PropertiesFactoryBean mapper() {
+        PropertiesFactoryBean bean = new PropertiesFactoryBean();
+        bean.setLocation(new ClassPathResource("system.properties"));
+        return bean;
+    }
+
+    @Bean(name = "cldsDao")
+    public CldsDao getCldsDao(@Qualifier("cldsDataSource") DataSource dataSource) {
+        CldsDao cldsDao = new CldsDao();
+        cldsDao.setDataSource(dataSource);
+        return cldsDao;
+    }
+
+    @Bean(name = "cldsBpmnTransformer")
+    public XslTransformer getCldsBpmnXslTransformer() throws TransformerConfigurationException {
+        XslTransformer xslTransformer = new XslTransformer();
+        xslTransformer.setXslResourceName("xsl/clds-bpmn-transformer.xsl");
+        return xslTransformer;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java
new file mode 100644 (file)
index 0000000..12dc364
--- /dev/null
@@ -0,0 +1,128 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.config.spring;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.io.IOException;
+
+import org.onap.clamp.clds.config.CldsUserJsonDecoder;
+import org.onap.clamp.clds.exception.CldsUsersException;
+import org.onap.clamp.clds.service.CldsUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+/**
+ * This class is used to enable the HTTP authentication to login. It requires a
+ * specific JSON file containing the user definition
+ * (classpath:etc/config/clds/clds-users.json).
+ *
+ */
+@Configuration
+@EnableWebSecurity
+@Profile("clamp-spring-authentication")
+public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter {
+
+    protected static final EELFLogger logger        = EELFManager.getInstance()
+            .getLogger(CldsSecurityConfigUsers.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    @Autowired
+    private ApplicationContext        appContext;
+
+    @Value("${org.onap.clamp.config.files.cldsUsers:'classpath:etc/config/clds/clds-users.json'}")
+    private String                    cldsUsersFile;
+
+    @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}")
+    private String                    cldsPersmissionTypeCl;
+
+    @Value("${CLDS_PERMISSION_INSTANCE:dev}")
+    private String                    cldsPermissionInstance;
+
+    /**
+     * This method configures on which URL the authorization will be enabled.
+     */
+    @Override
+    protected void configure(HttpSecurity http) {
+        try {
+            http.csrf().disable().httpBasic().and().authorizeRequests().antMatchers("/restservices/clds/v1/user/**")
+                    .authenticated().anyRequest().permitAll().and().logout();
+        } catch (Exception e) {
+            logger.error("Exception occurred during the setup of the Web users in memory", e);
+            throw new CldsUsersException("Exception occurred during the setup of the Web users in memory", e);
+        }
+    }
+
+    /**
+     * This method is called by the framework and is used to load all the users
+     * defined in cldsUsersFile variable (this file path can be configured in
+     * the application.properties).
+     * 
+     * @param auth
+     */
+    @Autowired
+    public void configureGlobal(AuthenticationManagerBuilder auth) {
+        try {
+            CldsUser[] usersList = loadUsers();
+
+            // no users defined
+            if (null == usersList) {
+                logger.warn("No users defined. Users should be defined under " + cldsUsersFile);
+                return;
+            }
+
+            for (CldsUser user : usersList) {
+                auth.inMemoryAuthentication().withUser(user.getUser()).password(user.getPassword())
+                        .roles(user.getPermissionsString());
+            }
+        } catch (Exception e) {
+            logger.error("Exception occurred during the setup of the Web users in memory", e);
+            throw new CldsUsersException("Exception occurred during the setup of the Web users in memory", e);
+        }
+    }
+
+    /**
+     * This method loads physically the JSON file and convert it to an Array of
+     * CldsUser.
+     * 
+     * @return The array of CldsUser
+     */
+    private CldsUser[] loadUsers() {
+        try {
+            logger.info("Load from clds-users.properties");
+            return CldsUserJsonDecoder.decodeJson(appContext.getResource(cldsUsersFile).getInputStream());
+        } catch (IOException e) {
+            logger.error("Unable to decode the User Json file", e);
+            throw new CldsUsersException("Load from clds-users.properties", e);
+        }
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/dcae/DcaeDeploymentException.java b/src/main/java/org/onap/clamp/clds/exception/dcae/DcaeDeploymentException.java
new file mode 100644 (file)
index 0000000..4cafe79
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.dcae;
+
+/**
+ * New exception to capture DCAE communication errors.
+ *
+ */
+public class DcaeDeploymentException extends RuntimeException {
+
+    /**
+     * Generated ID
+     */
+    private static final long serialVersionUID = 8452294782552680243L;
+
+    /**
+     * This constructor can be used to create a new DcaeDeploymentException.
+     * 
+     * @param message
+     *            A string message detailing the problem
+     * @param e
+     *            The exception sent by the code
+     */
+    public DcaeDeploymentException(String message, Throwable e) {
+        super(message, e);
+    }
+
+    /**
+     * This constructor can be used to create a new DcaeDeploymentException. Use
+     * this constructor only if you are creating a new exception stack, not if
+     * an exception was already raised by another code.
+     *
+     * @param message
+     *            A string message detailing the problem
+     */
+    public DcaeDeploymentException(String message) {
+        super(message);
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/SdcCommunicationException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/SdcCommunicationException.java
new file mode 100644 (file)
index 0000000..a382843
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception.sdc;
+
+/**
+ * New exception to capture SDC communication errors.
+ *
+ */
+public class SdcCommunicationException extends RuntimeException {
+
+    /**
+     * Generated ID
+     */
+    private static final long serialVersionUID = 8452294782552680243L;
+
+    /**
+     * This constructor can be used to create a new SdcCommunicationException.
+     * 
+     * @param message
+     *            A string message detailing the problem
+     * @param e
+     *            The exception sent by the code
+     */
+    public SdcCommunicationException(String message, Throwable e) {
+        super(message, e);
+    }
+
+    /**
+     * This constructor can be used to create a new SdcCommunicationException.
+     * Use this constructor only if you are creating a new exception stack, not
+     * if an exception was already raised by another code.
+     *
+     * @param message
+     *            A string message detailing the problem
+     */
+    public SdcCommunicationException(String message) {
+        super(message);
+    }
+
+}
index 14e6562..02b4d5f 100644 (file)
@@ -67,8 +67,8 @@ import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
 import org.onap.clamp.clds.config.CldsReferenceProperties;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.exception.CldsConfigException;
-import org.onap.clamp.clds.exception.SdcCommunicationException;
 import org.onap.clamp.clds.exception.policy.PolicyClientException;
+import org.onap.clamp.clds.exception.sdc.SdcCommunicationException;
 import org.onap.clamp.clds.model.CLDSMonitoringDetails;
 import org.onap.clamp.clds.model.CldsDBServiceCache;
 import org.onap.clamp.clds.model.CldsEvent;