Skip to content

Commit 097eafe

Browse files
author
Anders Breid
authored
Refactor backend to backends (#271)
* Refactor /backend endpoint to /backends * Code cleanup
1 parent 306cf06 commit 097eafe

File tree

14 files changed

+68
-193
lines changed

14 files changed

+68
-193
lines changed

src/functionaltest/java/com/ericsson/ei/config/SeleniumConfig.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import com.google.common.io.Files;
1919

2020
public class SeleniumConfig {
21+
private static final FirefoxDriverLogLevel SELENIUM_LOG_LEVEL = FirefoxDriverLogLevel.ERROR;
22+
private static final boolean SELENIUM_HEADLESS = true;
23+
2124
private static final Logger LOGGER = LoggerFactory.getLogger(SeleniumConfig.class);
2225

2326
private static String propertiesPath = String.join(File.separator, "src", "functionaltest",
@@ -30,9 +33,8 @@ public class SeleniumConfig {
3033
public static FirefoxDriver initFirefoxDriver()
3134
throws PropertiesNotLoadedException, OSNotSupportedException {
3235
FirefoxOptions firefoxOptions = new FirefoxOptions()
33-
.setHeadless(true)
34-
.setLogLevel(
35-
FirefoxDriverLogLevel.ERROR);
36+
.setHeadless(SELENIUM_HEADLESS)
37+
.setLogLevel(SELENIUM_LOG_LEVEL);
3638

3739
firefoxOptions.addPreference("browser.download.folderList", 2);
3840
firefoxOptions.addPreference("browser.download.dir", tempDownloadDirectory.getPath());

src/main/java/com/ericsson/ei/frontend/BackendInformationController.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,11 @@ public class BackendInformationController {
4040
private BackendInformationControllerUtils backEndInfoContUtils;
4141

4242
@CrossOrigin
43-
@RequestMapping(value = "/backend", method = RequestMethod.GET)
43+
@RequestMapping(value = "/backends", method = RequestMethod.GET)
4444
public ResponseEntity<String> getInstances(Model model, HttpServletRequest request) {
4545
LOG.debug("Received request for retrieving EI Backend instances list.");
4646
ResponseEntity<String> response = backEndInfoContUtils.getBackendInstancesResponse(request);
4747
return response;
4848
}
4949

50-
@CrossOrigin
51-
@RequestMapping(value = "/backend", method = RequestMethod.PUT)
52-
public ResponseEntity<String> switchBackEndInstance(Model model, HttpServletRequest request) {
53-
LOG.debug("Received request to switch EI back end instance.");
54-
ResponseEntity<String> response = backEndInfoContUtils.handleRequestToSwitchBackEnd(request);
55-
return response;
56-
57-
}
5850
}

src/main/java/com/ericsson/ei/frontend/WebController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ public String info(Model model, HttpServletRequest request) {
6161
model.addAttribute("version", frontEndUtils.getVersion());
6262
model.addAttribute("applicationPropertiesVersion", frontEndUtils.getApplicationPropertiesVersion());
6363
model.addAttribute("frontendAppName", frontEndUtils.getApplicationName());
64-
model.addAttribute("backendServerUrl", frontEndUtils.getBackEndServiceUrl(request.getSession()));
6564
return "information";
6665
}
6766

src/main/java/com/ericsson/ei/frontend/utils/BackendInformationControllerUtils.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.ericsson.ei.frontend.utils;
1818

1919
import java.net.URI;
20-
import java.util.stream.Collectors;
2120

2221
import javax.servlet.http.HttpServletRequest;
2322

@@ -63,28 +62,6 @@ public ResponseEntity<String> getBackendInstancesResponse(HttpServletRequest req
6362
}
6463
}
6564

66-
/**
67-
* Processes requests to switch back end, and sets the back end name to a session variable that is
68-
* kept for current session.
69-
*
70-
* @param request
71-
* @return new ResponseEntity
72-
*/
73-
public ResponseEntity<String> handleRequestToSwitchBackEnd(HttpServletRequest request) {
74-
try {
75-
String selectedInstanceName = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
76-
request.getSession().setAttribute("backEndInstanceName", selectedInstanceName);
77-
78-
return new ResponseEntity<>(
79-
"{\"message\": \"Backend instance with name '" + selectedInstanceName + "' was selected.\"}",
80-
getHeaders(), HttpStatus.OK);
81-
} catch (Exception e) {
82-
LOG.error("Error while switching instance: " + e.getMessage());
83-
String response = "{\"message\": \"Internal Error: " + e.getMessage() + "\"}";
84-
return new ResponseEntity<>(response, getHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
85-
}
86-
}
87-
8865
private HttpHeaders getHeaders() {
8966
HttpHeaders httpHeaders = new HttpHeaders();
9067
httpHeaders.setContentType(MediaType.APPLICATION_JSON);

src/main/java/com/ericsson/ei/frontend/utils/WebControllerUtils.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,11 @@
2020
import java.util.Properties;
2121

2222
import javax.annotation.PostConstruct;
23-
import javax.servlet.http.HttpSession;
2423

2524
import org.springframework.beans.factory.annotation.Autowired;
2625
import org.springframework.beans.factory.annotation.Value;
2726
import org.springframework.stereotype.Component;
2827

29-
import com.ericsson.ei.frontend.exceptions.EiBackendInstancesException;
30-
import com.ericsson.ei.frontend.model.BackendInstance;
31-
3228
import lombok.AllArgsConstructor;
3329
import lombok.Getter;
3430
import lombok.NoArgsConstructor;
@@ -95,28 +91,4 @@ public String getFrontEndServiceUrl() {
9591

9692
return requestedUrl;
9793
}
98-
99-
/**
100-
* Extract the back end instance name from the session if any, and requests the
101-
* BackendInformation for this name, or null if no name was found.
102-
*
103-
* @param httpSession
104-
* @return String URL from found BackendInformation
105-
* @throws EiBackendInstancesException
106-
*/
107-
public String getBackEndServiceUrl(HttpSession httpSession) {
108-
String activeInstance = null;
109-
if (httpSession.getAttribute("backEndInstanceName") != null) {
110-
activeInstance = httpSession.getAttribute("backEndInstanceName").toString();
111-
}
112-
113-
BackendInstance backEndInformation = null;
114-
try {
115-
backEndInformation = backendInstancesUtils.getBackendInstance(activeInstance);
116-
} catch(EiBackendInstancesException e) {
117-
backEndInformation = backendInstancesUtils.getDefaultBackendInstance();
118-
}
119-
120-
return backEndInformation.getUrlAsString();
121-
}
12294
}

src/main/resources/static/js/global-variables.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
var router = new Navigo(null, true, '#');
2-
var frontendServiceUrl = $('#frontendServiceUrl').text();
3-
var frontendServiceBackEndPath = "/backend";
1+
/* global Navigo */
2+
var router = new Navigo(null, true, "#");
3+
var frontendServiceUrl = $("#frontendServiceUrl").text();
4+
var frontendServiceBackEndPath = "/backends";
45
var ldapEnabled = true;
56
var table;
6-
var subscriptionNameRegex = $('#subscriptionNameRegex').text();
7-
var notificationMetaRegex = $('#notificationMetaRegex').text();
7+
var subscriptionNameRegex = $("#subscriptionNameRegex").text();
8+
var notificationMetaRegex = $("#notificationMetaRegex").text();
89

910
// Minimum length is 4 due to ellipsis being 3 long
1011
var usernameMaxDisplayLength = 15;

src/main/resources/static/js/information.js

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1+
/* global getFrontEndServiceUrl backendEndpoints */
12
jQuery(document).ready(function () {
23

34
// Fetch injected URL from DOM
4-
var frontEndServiceUrl = $('#frontendServiceUrl').text();
5-
var frontEndVersion = $('#frontEndVersion').text();
6-
var frontEndApplicationPropertiesVersion = $('#frontEndApplicationPropertiesVersion').text();
7-
var frontEndAppName = $('#frontendAppName').text();
5+
var frontEndVersion = $("#frontEndVersion").text();
6+
var frontEndApplicationPropertiesVersion = $("#frontEndApplicationPropertiesVersion").text();
7+
var frontEndAppName = $("#frontendAppName").text();
88

9-
var body = document.getElementById('eiPageFrame');
9+
var body = document.getElementById("eiPageFrame");
1010
var generalEIInfoLabel = "General Eiffel Intelligence Information";
1111
var generalEIFrontEndInfoLabel = "General Eiffel Intelligence Front-End Information";
1212

1313
function createTable() {
14-
var tbl = document.createElement('table');
15-
tbl.setAttribute('class', 'table table-bordered table-striped dataTable table-text-setting');
16-
return tbl;
14+
var table = document.createElement("table");
15+
table.setAttribute("class", "table table-bordered table-striped dataTable table-text-setting");
16+
return table;
1717
}
1818

1919
function createLabel(inputText) {
2020
var label = document.createElement('p');
2121
label.innerHTML = inputText;
22-
label.setAttribute('class', 'section-p-text table-text-setting font-weight-bold');
22+
label.setAttribute("class", "section-p-text table-text-setting font-weight-bold");
2323
return label;
2424
}
2525

@@ -28,9 +28,9 @@ jQuery(document).ready(function () {
2828
frontEndVersion = frontEndVersion + " (" + frontEndApplicationPropertiesVersion + ")";
2929
}
3030
var tableContent = [
31-
{ key: 'Application name', value: frontEndAppName },
32-
{ key: 'Version', value: frontEndVersion },
33-
{ key: 'EI front-end URL', value: frontEndServiceUrl }
31+
{ key: "Application name", value: frontEndAppName },
32+
{ key: "Version", value: frontEndVersion },
33+
{ key: "EI front-end URL", value: getFrontEndServiceUrl() }
3434
];
3535

3636
generateGeneralInfo(tableContent, generalEIFrontEndInfoLabel);
@@ -43,77 +43,77 @@ jQuery(document).ready(function () {
4343
}
4444

4545
var tableContent = [
46-
{ key: 'Application name', value: data.applicationName },
47-
{ key: 'Version', value: data.version },
48-
{ key: 'Rules path', value: data.rulesPath },
49-
{ key: 'EI back-end connected server', value: sessionStorage.getItem(sessionStorage.selectedActive) },
50-
{ key: 'EI test rules functionality enabled', value: data.testRulesEnabled }
46+
{ key: "Application name", value: data.applicationName },
47+
{ key: "Version", value: data.version },
48+
{ key: "Rules path", value: data.rulesPath },
49+
{ key: "EI back-end connected server", value: sessionStorage.getItem(sessionStorage.selectedActive) },
50+
{ key: "EI test rules functionality enabled", value: data.testRulesEnabled }
5151
];
5252

5353
generateGeneralInfo(tableContent, generalEIInfoLabel);
5454
}
5555

5656
function generateGeneralInfo(tableContent, labelText) {
57-
var tbdy = document.createElement('tbody');
57+
var tableBody = document.createElement("tbody");
5858

5959
var label = createLabel(labelText);
6060
body.appendChild(label);
6161

62-
var div = document.createElement('div');
63-
div.setAttribute('class', 'table-responsive');
62+
var div = document.createElement("div");
63+
div.setAttribute("class", "table-responsive");
6464

65-
var tbl = createTable();
65+
var table = createTable();
6666

6767
for (i = 0; i < tableContent.length; i++) {
68-
key = tableContent[i].key;
69-
value = tableContent[i].value;
68+
var key = tableContent[i].key;
69+
var value = tableContent[i].value;
7070
var tr = createTableRow(key, value);
71-
tbdy.appendChild(tr);
71+
tableBody.appendChild(tr);
7272
}
7373

74-
tbl.appendChild(tbdy);
75-
div.appendChild(tbl);
74+
table.appendChild(tableBody);
75+
div.appendChild(table);
7676
body.appendChild(div);
7777
}
7878

7979
function generateEIInformationBasedOnList(dataList, tableLabel) {
80-
var div = document.createElement('div');
81-
div.setAttribute('class', 'table-responsive');
80+
var div = document.createElement("div");
81+
div.setAttribute("class", "table-responsive");
8282

8383
var label = createLabel(tableLabel);
8484
body.appendChild(label);
8585

86-
var tbdy = null;
87-
var tbl = null;
86+
var tableBody = null;
87+
var table = null;
8888

8989
dataList.forEach(function (dataSubList) {
90-
tbdy = document.createElement('tbody');
91-
tbl = createTable();
90+
tableBody = document.createElement("tbody");
91+
table = createTable();
9292

9393
Object.keys(dataSubList).forEach(function (dataKey) {
94-
value = dataSubList[dataKey];
94+
var value = dataSubList[dataKey];
9595
var tr = createTableRow(dataKey, value);
96-
tbdy.appendChild(tr);
96+
tableBody.appendChild(tr);
9797
});
9898

9999
});
100100

101-
tbl.appendChild(tbdy);
102-
div.appendChild(tbl);
101+
table.appendChild(tableBody);
102+
div.appendChild(table);
103103
body.appendChild(div);
104104
}
105105

106106
function createTableRow(key, value) {
107-
var tr = document.createElement('tr');
108-
var tdKey = document.createElement('td');
109-
tdKey.setAttribute('class', 'left-table-pane');
107+
var tr = document.createElement("tr");
108+
var tdKey = document.createElement("td");
109+
tdKey.setAttribute("class", "left-table-pane");
110110
tdKey.appendChild(document.createTextNode(key));
111111
tr.appendChild(tdKey);
112-
var element = document.createElement('td');
112+
var element = document.createElement("td");
113113
var json = parseJsonObject(value);
114114
if (json != undefined) {
115115
value = JSON.stringify(json, undefined, 2);
116-
pre = document.createElement('pre');
116+
var pre = document.createElement("pre");
117117
pre.appendChild(document.createTextNode(value));
118118
element.appendChild(pre);
119119
} else {

src/main/resources/static/js/switch-instances.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
/* global getFrontEndServiceUrl getFrontendServiceBackEndPath navigateToRoute */
12
jQuery(document).ready(function () {
2-
var frontendServiceUrl = $('#frontendServiceUrl').text();
3-
var frontendServiceBackEndPath = "/backend";
4-
document.getElementById('switcher').disabled = true;
3+
document.getElementById("switcher").disabled = true;
54

65
function multipleInstancesModel(backendInstanceData) {
76
var self = this;
@@ -16,21 +15,21 @@ jQuery(document).ready(function () {
1615
});
1716

1817
self.checked = function () {
19-
document.getElementById('switcher').disabled = false;
18+
document.getElementById("switcher").disabled = false;
2019
selected = JSON.parse(ko.toJSON(this));
2120
return true;
2221
};
2322

2423
self.submit = function () {
2524
sessionStorage.selectedActive = selected.name;
26-
navigateToRoute('subscriptions');
25+
navigateToRoute("subscriptions");
2726
};
2827
}
2928

3029
$.ajax({
31-
url: frontendServiceUrl + frontendServiceBackEndPath,
30+
url: getFrontEndServiceUrl() + getFrontendServiceBackEndPath(),
3231
type: "GET",
33-
contentType: 'application/json; charset=utf-8',
32+
contentType: "application/json; charset=utf-8",
3433
cache: false,
3534
error: function (XMLHttpRequest, textStatus, errorThrown) {
3635
parseAndLogMessage(XMLHttpRequest.responseText);

src/main/resources/templates/information.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
<div class="d-none" id="frontendServiceUrl" th:text="${frontendServiceUrl}"></div>
21
<div class="d-none" id="frontEndVersion" th:text="${version}"></div>
32
<div class="d-none" id="frontEndApplicationPropertiesVersion" th:text="${applicationPropertiesVersion}"></div>
43
<div class="d-none" id="frontendAppName" th:text="${frontendAppName}"></div>

src/test/java/com/ericsson/ei/frontend/BackendInformationControllerTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,16 @@
3838
import com.fasterxml.jackson.databind.ObjectMapper;
3939
import com.google.gson.JsonArray;
4040
import com.google.gson.JsonElement;
41-
import com.google.gson.JsonObject;
4241
import com.google.gson.JsonParser;
4342

4443
@RunWith(SpringJUnit4ClassRunner.class)
4544
@SpringBootTest
4645
@AutoConfigureMockMvc
4746
public class BackendInformationControllerTest {
4847

49-
private static final String BACKEND_INSTANCE_FILE_PATH = "src/test/resources/backendInstances/backendInstance.json";
5048
private static final String BACKEND_INSTANCES_FILE_PATH = "src/test/resources/backendInstances/backendInstances.json";
5149

52-
private static final String PATH_FOR_BACK_END_INFORMATION = "/backend";
50+
private static final String PATH_FOR_BACK_END_INFORMATION = "/backends";
5351

5452
@Autowired
5553
private MockMvc mockMvc;

0 commit comments

Comments
 (0)