Skip to content

Commit 64e658f

Browse files
authored
Fix properties (#39)
* FIX: issue with frontendUrl * FIX: issue with properties values * fixes * review changes * ADD: headers * fix headers * separate https properties * FIX: headers * FIX: test * FIX: review comments * fixes * UPDATE: pom file
1 parent cdeda0b commit 64e658f

18 files changed

+183
-233
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.github.ericsson</groupId>
77
<artifactId>eiffel-intelligence-frontend</artifactId>
8-
<version>0.0.8</version>
8+
<version>0.0.9</version>
99
<packaging>war</packaging>
1010

1111

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

+95-16
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,114 @@
1616
*/
1717
package com.ericsson.ei.frontend;
1818

19+
import com.ericsson.ei.frontend.model.BackEndInformation;
20+
import com.ericsson.ei.frontend.utils.BackEndInstancesUtils;
21+
import com.google.gson.Gson;
22+
import com.google.gson.JsonArray;
23+
import com.google.gson.JsonObject;
24+
import com.google.gson.JsonParser;
25+
import com.google.gson.reflect.TypeToken;
26+
import org.springframework.beans.factory.annotation.Autowired;
27+
import org.springframework.http.HttpHeaders;
28+
import org.springframework.http.HttpStatus;
29+
import org.springframework.http.MediaType;
1930
import org.springframework.http.ResponseEntity;
31+
import org.springframework.stereotype.Controller;
2032
import org.springframework.ui.Model;
21-
import org.springframework.web.bind.annotation.CrossOrigin;
2233
import org.springframework.web.bind.annotation.RequestMapping;
2334
import org.springframework.web.bind.annotation.RequestMethod;
24-
import org.springframework.web.bind.annotation.RestController;
2535

2636
import javax.servlet.http.HttpServletRequest;
37+
import java.net.URI;
38+
import java.util.ArrayList;
39+
import java.util.List;
40+
import java.util.stream.Collectors;
2741

28-
@RestController
29-
public interface BackEndInformationController {
42+
@Controller
43+
public class BackEndInformationController {
44+
45+
@Autowired
46+
private BackEndInstancesUtils backEndInstancesUtils;
3047

31-
@CrossOrigin
3248
@RequestMapping(value = "/get-instances", method = RequestMethod.GET)
33-
ResponseEntity<String> getInstances(Model model);
49+
public ResponseEntity<String> getInstances(Model model) {
50+
return new ResponseEntity<>(backEndInstancesUtils.getInstances().toString(), getHeaders(), HttpStatus.OK);
51+
}
3452

35-
@CrossOrigin
3653
@RequestMapping(value = "/switch-backend", method = RequestMethod.POST)
37-
ResponseEntity<String> switchBackEndInstance(Model model, HttpServletRequest request);
38-
39-
@CrossOrigin
40-
@RequestMapping(value = "/switch-backendByMainPage", method = RequestMethod.POST)
41-
ResponseEntity<String> switchBackEndInstanceByMainPage(Model model, HttpServletRequest request);
54+
public ResponseEntity<String> switchBackEndInstance(Model model, HttpServletRequest request) {
55+
try {
56+
String listOfInstances = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
57+
backEndInstancesUtils.setInstances(new JsonParser().parse(listOfInstances).getAsJsonArray());
58+
backEndInstancesUtils.writeIntoFile();
59+
for (BackEndInformation backEndInformation : backEndInstancesUtils.getInformation()) {
60+
if (backEndInformation.isActive()) {
61+
backEndInstancesUtils.setBackEndProperties(backEndInformation);
62+
}
63+
}
64+
return new ResponseEntity<>(getHeaders(), HttpStatus.MOVED_PERMANENTLY);
65+
} catch (Exception e) {
66+
return new ResponseEntity<>("Internal error" + e.getMessage(), getHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
67+
}
68+
}
4269

43-
@CrossOrigin
4470
@RequestMapping(value = "/switch-backend", method = RequestMethod.DELETE)
45-
ResponseEntity<String> deleteBackEndInstance(Model model, HttpServletRequest request);
71+
public ResponseEntity<String> deleteBackEndInstance(Model model, HttpServletRequest request) {
72+
try {
73+
String nameOfDeletedInstance = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
74+
backEndInstancesUtils.setInstances(new JsonParser().parse(nameOfDeletedInstance).getAsJsonArray());
75+
backEndInstancesUtils.writeIntoFile();
76+
return new ResponseEntity<>("Backend instance was deleted", getHeaders(), HttpStatus.OK);
77+
} catch (Exception e) {
78+
return new ResponseEntity<>("Internal error" + e.getMessage(), getHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
79+
}
80+
}
4681

47-
@CrossOrigin
4882
@RequestMapping(value = "/add-instances", method = RequestMethod.POST)
49-
ResponseEntity<String> addInstanceInformation(Model model, HttpServletRequest request);
83+
public ResponseEntity<String> addInstanceInformation(Model model, HttpServletRequest request) {
84+
try {
85+
String nameOfNewInstance = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
86+
JsonObject instance = new JsonParser().parse(nameOfNewInstance).getAsJsonObject();
87+
if (!backEndInstancesUtils.checkIfInstanceAlreadyExist(instance)) {
88+
backEndInstancesUtils.getInstances().add(instance);
89+
backEndInstancesUtils.writeIntoFile();
90+
return new ResponseEntity<>(getHeaders(), HttpStatus.MOVED_PERMANENTLY);
91+
} else {
92+
return new ResponseEntity<>("Instance already exist", getHeaders(), HttpStatus.BAD_REQUEST);
93+
}
94+
} catch (Exception e) {
95+
return new ResponseEntity<>("Internal error" + e.getMessage(), getHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
96+
}
97+
}
98+
99+
@RequestMapping(value = "/switchBackend", method = RequestMethod.POST)
100+
public ResponseEntity<String> switchBackEndInstanceByMainPage(Model model, HttpServletRequest request) {
101+
try {
102+
String backEndName = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
103+
List<BackEndInformation> info = new ArrayList<>();
104+
for (BackEndInformation backEndInformation : backEndInstancesUtils.getInformation()) {
105+
backEndInformation.setActive(false);
106+
if (backEndInformation.getName().equals(backEndName)) {
107+
backEndInstancesUtils.setBackEndProperties(backEndInformation);
108+
backEndInformation.setActive(true);
109+
}
110+
info.add(backEndInformation);
111+
}
112+
backEndInstancesUtils.setInformation(info);
113+
JsonArray result = (JsonArray) new Gson().toJsonTree(backEndInstancesUtils.getInformation(), new TypeToken<List<BackEndInformation>>() {
114+
}.getType());
115+
backEndInstancesUtils.setInstances(result);
116+
backEndInstancesUtils.writeIntoFile();
117+
return new ResponseEntity<>("Backend instance was switched", getHeaders(), HttpStatus.OK);
118+
} catch (Exception e) {
119+
return new ResponseEntity<>("Internal error" + e.getMessage(), getHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
120+
}
121+
}
122+
123+
private HttpHeaders getHeaders() {
124+
HttpHeaders httpHeaders = new HttpHeaders();
125+
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
126+
httpHeaders.setLocation(URI.create("/"));
127+
return httpHeaders;
128+
}
50129
}

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

-117
This file was deleted.

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public ResponseEntity<String> deleteRequests(Model model, HttpServletRequest req
157157

158158
private String getEIBackendSubscriptionAddress() {
159159
String httpMethod = "http";
160-
if (backEndInformation.isHttps()) {
160+
if (backEndInformation.isUseSecureHttpBackend()) {
161161
httpMethod = "https";
162162
}
163163

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public class WebController {
4242
@Value("${ei.eiffelDocumentationUrls}")
4343
private String eiffelDocumentationUrls;
4444

45+
@Value("${ei.useSecureHttpFrontend}")
46+
private boolean useSecureHttpFrontend;
47+
4548
@Autowired
4649
private BackEndInformation backEndInformation;
4750

@@ -68,8 +71,7 @@ public String testRules(Model model) {
6871
@RequestMapping("/eiInfo.html")
6972
public String eiInfo(Model model) {
7073
model.addAttribute("frontendServiceUrl", getFrontendServiceUrl());
71-
String backendServerUrl = String.format("http://%s:%d", backEndInformation.getHost(),
72-
backEndInformation.getPort());
74+
String backendServerUrl = String.format("http://%s:%s", backEndInformation.getHost(), backEndInformation.getPort());
7375
model.addAttribute("backendServerUrl", backendServerUrl);
7476
return "eiInfo";
7577
}
@@ -100,7 +102,7 @@ public String switchBackEnd(Model model) {
100102

101103
private String getFrontendServiceUrl() {
102104
String httpMethod = "http";
103-
if (backEndInformation.isHttps()) {
105+
if (useSecureHttpFrontend) {
104106
httpMethod = "https";
105107
}
106108
String frontendServiceUrl;

src/main/java/com/ericsson/ei/frontend/model/BackEndInformation.java

+6-19
Original file line numberDiff line numberDiff line change
@@ -21,40 +21,27 @@
2121
import org.springframework.beans.factory.annotation.Value;
2222
import org.springframework.stereotype.Component;
2323

24-
import javax.validation.constraints.Max;
25-
import javax.validation.constraints.Min;
26-
import javax.validation.constraints.NotNull;
27-
2824
@Getter
2925
@Setter
3026
@ToString
3127
@Component
3228
@NoArgsConstructor
3329
@AllArgsConstructor
3430
public class BackEndInformation {
35-
@JsonProperty("name")
36-
@NotNull
3731
private String name;
3832

39-
@JsonProperty("host")
40-
@Value("${ei.backendServerHost}")
41-
@NotNull
33+
@Value("${ei.backendServerHost:#{null}}")
4234
private String host;
4335

44-
@JsonProperty("port")
45-
@Value("${ei.backendServerPort}")
46-
@NotNull
47-
@Min(1)
48-
@Max(65535)
49-
private int port;
36+
@Value("${ei.backendServerPort:#{null}}")
37+
private String port;
5038

51-
@JsonProperty("path")
52-
@Value("${ei.backendContextPath}")
39+
@Value("${ei.backendContextPath:#{null}}")
5340
private String path;
5441

42+
@Value("${ei.useSecureHttpBackend:#{false}}")
5543
@JsonProperty("https")
56-
@Value("${ei.useSecureHttp}")
57-
private boolean https;
44+
private boolean useSecureHttpBackend;
5845

5946
private boolean active;
6047
}

0 commit comments

Comments
 (0)