From 53bedeac58c92f6219ee7961d7baccf11984b900 Mon Sep 17 00:00:00 2001
From: elinuxhenrik
Date: Tue, 3 Mar 2020 17:00:20 +0100
Subject: [PATCH 1/1] Remove code smells in dashboard
Change-Id: I0478cbf0a45aea9a646fe028838f323e425effaf
Issue-ID: NONRTRIC-142
Signed-off-by: elinuxhenrik
---
.../ric/portal/dashboard/DashboardApplication.java | 5 ++--
.../ric/portal/dashboard/DashboardUserManager.java | 15 +++++-----
.../dashboard/config/SpringContextCache.java | 11 ++++----
.../dashboard/config/WebSecurityConfiguration.java | 17 +++++-------
.../dashboard/controller/Html5PathsController.java | 4 +--
.../dashboard/controller/PolicyController.java | 32 +++++++++++-----------
.../controller/SimpleErrorController.java | 5 ++--
.../portal/dashboard/model/EcompUserDetails.java | 2 +-
.../dashboard/policyagentapi/PolicyAgentApi.java | 2 +-
.../policyagentapi/PolicyAgentApiImpl.java | 28 +++++++++----------
.../dashboard/portalapi/PortalAuthManager.java | 5 ++--
.../portalapi/PortalAuthenticationFilter.java | 9 +++---
.../portalapi/PortalRestCentralServiceImpl.java | 5 +++-
.../dashboard/portalapi/PortalSdkDecryptorAes.java | 7 +++--
.../dashboard/util/HttpsURLConnectionUtils.java | 11 +++-----
.../ric/portal/dashboard/DashboardTestServer.java | 4 +--
.../config/PolicyControllerMockConfiguration.java | 12 ++++----
.../sidenav-list/sidenav-list.component.html | 7 ++---
18 files changed, 83 insertions(+), 98 deletions(-)
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardApplication.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardApplication.java
index 2550b8ed..b492ebd1 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardApplication.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardApplication.java
@@ -20,7 +20,6 @@
package org.oransc.ric.portal.dashboard;
-import java.io.IOException;
import java.lang.invoke.MethodHandles;
import org.slf4j.Logger;
@@ -36,8 +35,8 @@ public class DashboardApplication {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- public static void main(String[] args) throws IOException {
- SpringApplication.run(DashboardApplication.class, args);
+ public static void main(String[] args) {
+ SpringApplication.run(DashboardApplication.class);
// Ensure this appears on the console by using level WARN
logger.warn("main: version '{}' successful start",
getImplementationVersion(MethodHandles.lookup().lookupClass()));
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardUserManager.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardUserManager.java
index ffb7396f..ee5f3e10 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardUserManager.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/DashboardUserManager.java
@@ -19,14 +19,13 @@
*/
package org.oransc.ric.portal.dashboard;
-import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -42,8 +41,6 @@ import org.slf4j.LoggerFactory;
* Provides simple user-management services.
*
* This first implementation serializes user details to a file.
- *
- * TODO: migrate to a database.
*/
public class DashboardUserManager {
@@ -70,7 +67,7 @@ public class DashboardUserManager {
logger.debug("ctor: removing file {}", userFile.getAbsolutePath());
File f = new File(DashboardUserManager.USER_FILE_PATH);
if (f.exists())
- f.delete();
+ Files.delete(f.toPath());
users.clear();
}
}
@@ -124,7 +121,7 @@ public class DashboardUserManager {
return null;
}
- private void saveUsers() throws JsonGenerationException, JsonMappingException, IOException {
+ private void saveUsers() throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(userFile, users);
}
@@ -133,7 +130,9 @@ public class DashboardUserManager {
* Allow at most one thread to create a user at one time.
*/
public synchronized void createUser(EcompUser user) throws PortalAPIException {
- logger.debug("createUser: loginId is " + user.getLoginId());
+ if (logger.isDebugEnabled()) {
+ logger.debug("createUser: loginId is {}", user.getLoginId());
+ }
if (users.contains(user))
throw new PortalAPIException("User exists: " + user.getLoginId());
users.add(user);
@@ -149,7 +148,7 @@ public class DashboardUserManager {
* last-edit-wins of course.
*/
public synchronized void updateUser(String loginId, EcompUser user) throws PortalAPIException {
- logger.debug("editUser: loginId is " + loginId);
+ logger.debug("editUser: loginId is {}", loginId);
int index = users.indexOf(user);
if (index < 0)
throw new PortalAPIException("User does not exist: " + user.getLoginId());
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/SpringContextCache.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/SpringContextCache.java
index a2f3d8f8..aaf46650 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/SpringContextCache.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/SpringContextCache.java
@@ -7,9 +7,9 @@
* 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.
@@ -19,7 +19,6 @@
*/
package org.oransc.ric.portal.dashboard.config;
-import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@@ -30,14 +29,14 @@ import org.springframework.stereotype.Component;
@Component
public class SpringContextCache implements ApplicationContextAware {
- private static ApplicationContext applicationContext = null;
+ private ApplicationContext applicationContext = null;
@Override
- public void setApplicationContext(final ApplicationContext appContext) throws BeansException {
+ public void setApplicationContext(final ApplicationContext appContext) {
applicationContext = appContext;
}
- public static ApplicationContext getApplicationContext() {
+ public ApplicationContext getApplicationContext() {
return applicationContext;
}
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/WebSecurityConfiguration.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/WebSecurityConfiguration.java
index b43f8a97..e70b6122 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/WebSecurityConfiguration.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/config/WebSecurityConfiguration.java
@@ -85,7 +85,8 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
* Resource paths that do not require authentication, especially including
* Swagger-generated documentation.
*/
- public static final String[] OPEN_PATHS = { //
+ @SuppressWarnings("squid:S1075")
+ protected static final String[] OPEN_PATHS = { //
"/v2/api-docs", //
"/swagger-resources/**", //
"/swagger-ui.html", //
@@ -101,9 +102,8 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
}
@Bean
- public PortalAuthManager portalAuthManagerBean()
- throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException,
- IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
+ public PortalAuthManager portalAuthManagerBean() throws ClassNotFoundException, InstantiationException,
+ IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return new PortalAuthManager(appName, userName, password, decryptor, userCookie);
}
@@ -116,12 +116,9 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
* bypass this filter, which seems to me means the filter participates
* correctly.
*/
- public PortalAuthenticationFilter portalAuthenticationFilterBean()
- throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException,
- IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
- PortalAuthenticationFilter portalAuthenticationFilter =
- new PortalAuthenticationFilter(portalapiSecurity, portalAuthManagerBean(), this.userManager);
- return portalAuthenticationFilter;
+ public PortalAuthenticationFilter portalAuthenticationFilterBean() throws ClassNotFoundException,
+ InstantiationException, IllegalAccessException, IOException, InvocationTargetException, NoSuchMethodException {
+ return new PortalAuthenticationFilter(portalapiSecurity, portalAuthManagerBean(), this.userManager);
}
}
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/Html5PathsController.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/Html5PathsController.java
index 5d805381..20b8cc89 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/Html5PathsController.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/Html5PathsController.java
@@ -57,8 +57,8 @@ public class Html5PathsController {
* On error
*/
@RequestMapping(
- method = {RequestMethod.OPTIONS, RequestMethod.GET}, //
- path = {"/policy", "/user"})
+ method = {RequestMethod.GET}, //
+ path = {"/policy"})
public void forwardAngularRoutes(HttpServletRequest request, HttpServletResponse response) throws IOException {
URL url = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), "/index.html");
if (logger.isDebugEnabled())
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java
index 20a0c3f5..713d39a1 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java
@@ -81,7 +81,7 @@ public class PolicyController {
*/
@ApiOperation(value = "Gets the policy types from Near Realtime-RIC")
@GetMapping(POLICY_TYPES_METHOD)
- @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
+ @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD})
public ResponseEntity getAllPolicyTypes(HttpServletResponse response) {
logger.debug("getAllPolicyTypes");
return this.policyAgentApi.getAllPolicyTypes();
@@ -89,7 +89,7 @@ public class PolicyController {
@ApiOperation(value = "Returns the policy instances for the given policy type.")
@GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME)
- @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
+ @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD})
public ResponseEntity getPolicyInstances(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString) {
logger.debug("getPolicyInstances {}", policyTypeIdString);
return this.policyAgentApi.getPolicyInstancesForType(policyTypeIdString);
@@ -97,41 +97,41 @@ public class PolicyController {
@ApiOperation(value = "Returns a policy instance of a type")
@GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME
- + "}")
- @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD })
+ + "}")
+ @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD})
public ResponseEntity
", //
"", //
"");
- return body;
}
/**
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalRestCentralServiceImpl.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalRestCentralServiceImpl.java
index a2fae9f0..02a27d7f 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalRestCentralServiceImpl.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalRestCentralServiceImpl.java
@@ -32,6 +32,7 @@ import org.oransc.ric.portal.dashboard.DashboardUserManager;
import org.oransc.ric.portal.dashboard.config.SpringContextCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
/**
@@ -47,11 +48,13 @@ public class PortalRestCentralServiceImpl implements IPortalRestCentralService {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ @Autowired
+ private SpringContextCache springContextCache;
private final PortalAuthManager authManager;
private final DashboardUserManager userManager;
public PortalRestCentralServiceImpl() throws IOException, PortalAPIException {
- final ApplicationContext context = SpringContextCache.getApplicationContext();
+ final ApplicationContext context = springContextCache.getApplicationContext();
authManager = context.getBean(PortalAuthManager.class);
userManager = context.getBean(DashboardUserManager.class);
}
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalSdkDecryptorAes.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalSdkDecryptorAes.java
index f62ea5f6..4cbcf382 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalSdkDecryptorAes.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/portalapi/PortalSdkDecryptorAes.java
@@ -7,9 +7,9 @@
* 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.
@@ -24,7 +24,8 @@ import org.onap.portalsdk.core.onboarding.util.CipherUtil;
public class PortalSdkDecryptorAes implements IPortalSdkDecryptor {
- @SuppressWarnings("deprecation")
+ @Override
+ @SuppressWarnings("squid:CallToDeprecatedMethod")
public String decrypt(String cipherText) throws CipherUtilException {
return CipherUtil.decrypt(cipherText);
}
diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/util/HttpsURLConnectionUtils.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/util/HttpsURLConnectionUtils.java
index d5f2cbfb..b86bbfe1 100644
--- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/util/HttpsURLConnectionUtils.java
+++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/util/HttpsURLConnectionUtils.java
@@ -27,7 +27,6 @@ import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
@@ -42,14 +41,10 @@ public final class HttpsURLConnectionUtils {
private static final HostnameVerifier jvmHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
- private static final HostnameVerifier trivialHostnameVerifier = new HostnameVerifier() {
- @Override
- public boolean verify(String hostname, SSLSession sslSession) {
- return true;
- }
- };
+ private static final HostnameVerifier trivialHostnameVerifier = (hostname, sslSession) -> true;
private static final TrustManager[] UNQUESTIONING_TRUST_MANAGER = new TrustManager[] {new X509TrustManager() {
+ @SuppressWarnings("squid:S1168") // Must return null to get wanted behaviour.
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
@@ -57,10 +52,12 @@ public final class HttpsURLConnectionUtils {
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
+ // Do nothing.
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
+ // Do nothing.
}
}};
diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardTestServer.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardTestServer.java
index e19890be..9ed38692 100644
--- a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardTestServer.java
+++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardTestServer.java
@@ -19,8 +19,6 @@
*/
package org.oransc.ric.portal.dashboard;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import java.lang.invoke.MethodHandles;
import org.junit.jupiter.api.Test;
@@ -55,6 +53,7 @@ public class DashboardTestServer {
* Keeps the test server alive forever. Use a guard so this test is never run by
* Jenkins.
*/
+ @SuppressWarnings("squid:S2699") // To avoid warning about missing assertion.
@EnabledIfSystemProperty(named = "org.oransc.ric.portal.dashboard", matches = "mock")
@Test
public void keepServerAlive() {
@@ -66,6 +65,5 @@ public class DashboardTestServer {
} catch (Exception ex) {
logger.warn(ex.toString());
}
- assertEquals(1, 2);
}
}
diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java
index 76ce40c7..9c6d40cc 100644
--- a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java
+++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/PolicyControllerMockConfiguration.java
@@ -57,8 +57,8 @@ public class PolicyControllerMockConfiguration {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static com.google.gson.Gson gson = new GsonBuilder() //
- .serializeNulls() //
- .create(); //
+ .serializeNulls() //
+ .create(); //
@Bean
public PolicyAgentApi policyAgentApi() {
@@ -76,7 +76,7 @@ public class PolicyControllerMockConfiguration {
@Override
public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, Object json,
- String ric) {
+ String ric) {
database.putInstance(policyTypeIdString, policyInstanceId, json, ric);
return new ResponseEntity<>("Policy was put successfully", HttpStatus.OK);
}
@@ -130,8 +130,8 @@ public class PolicyControllerMockConfiguration {
private String getStringFromFile(String path) {
try {
- InputStream inputStream = MethodHandles.lookup().lookupClass().getClassLoader()
- .getResourceAsStream(path);
+ InputStream inputStream =
+ MethodHandles.lookup().lookupClass().getClassLoader().getResourceAsStream(path);
return new BufferedReader(new InputStreamReader(inputStream)).lines().collect(Collectors.joining("\n"));
} catch (Exception e) {
logger.error("Cannot read file :" + path, e);
@@ -149,7 +149,7 @@ public class PolicyControllerMockConfiguration {
void putInstance(String typeId, String instanceId, Object instanceData, String ric) {
PolicyInfo i = ImmutablePolicyInfo.builder().json(instanceData).lastModified(getTimeStampUTC())
- .id(instanceId).ric(ric).service("service").type(typeId).build();
+ .id(instanceId).ric(ric).service("service").type(typeId).build();
instances.put(instanceId, i);
}
diff --git a/dashboard/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html b/dashboard/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html
index d91c4a92..9dea90a4 100644
--- a/dashboard/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html
+++ b/dashboard/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html
@@ -23,11 +23,8 @@
home Home
-
-
- settingsControl
-
+
assignment Policy
-
+
--
2.16.6