T157 prepared REST API for javascript based page
This commit is contained in:
6
.idea/workspace.xml
generated
6
.idea/workspace.xml
generated
@@ -20,11 +20,8 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="458cde88-df3d-44bc-9d57-a33823e2f1a6" name="Default Changelist" comment="">
|
<list default="true" id="458cde88-df3d-44bc-9d57-a33823e2f1a6" name="Default Changelist" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausController.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/MockController.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/release11/klaus/controller/KlausMvcController.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/release11/klaus/model/TestModel.java" beforeDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -312,6 +309,7 @@
|
|||||||
<workItem from="1612178634549" duration="20097000" />
|
<workItem from="1612178634549" duration="20097000" />
|
||||||
<workItem from="1612259068808" duration="10440000" />
|
<workItem from="1612259068808" duration="10440000" />
|
||||||
<workItem from="1612279535476" duration="5692000" />
|
<workItem from="1612279535476" duration="5692000" />
|
||||||
|
<workItem from="1612442837870" duration="6837000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00077" summary="testing jenkins docker">
|
<task id="LOCAL-00077" summary="testing jenkins docker">
|
||||||
<created>1601453886631</created>
|
<created>1601453886631</created>
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ import com.release11.klaus.service.KlausService;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -25,42 +25,87 @@ public class MockController {
|
|||||||
//TODO: Write a method
|
//TODO: Write a method
|
||||||
private final MockedMessageDto defaultMessage = MockedMessageDto.builder().build();
|
private final MockedMessageDto defaultMessage = MockedMessageDto.builder().build();
|
||||||
private UUID sessionUUID;
|
private UUID sessionUUID;
|
||||||
private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>();
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
1. GET request to get the page
|
||||||
|
2. Javascripts checks for cookies if not it sends empty UUID on GetMapping /mock/json
|
||||||
|
3. When Javascript:
|
||||||
|
- 1. Saves: PUT request, then GET request
|
||||||
|
- 2. Deletes: DELETE request, then GET request
|
||||||
|
- 3. Adds new message: POST request, then GET request
|
||||||
|
4. After each action cookie is updated
|
||||||
|
Cookie holds uuid, last displayed message
|
||||||
|
*/
|
||||||
|
|
||||||
//TODO: Add cookie in javascript
|
//TODO: Add cookie in javascript
|
||||||
/**
|
/**
|
||||||
* Responds to first user request. If UUID is given then it's set if it's not, then new one is generated.
|
* Responds to first user request. If UUID is given then it's set if it's not, then new one is generated.
|
||||||
* Next recalls method that populates model based on UUID
|
* Next recalls method that populates model based on UUID
|
||||||
* @param clientUUID
|
|
||||||
* @param uuid
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@GetMapping({"/mock", "/mock/{uuid}"})
|
@GetMapping("/mock")
|
||||||
public String showHome(@RequestParam(required = false) UUID clientUUID,
|
public String showHome(){
|
||||||
@PathVariable(required = false) UUID uuid){
|
|
||||||
if (uuid != null) clientUUID = uuid;
|
|
||||||
if (clientUUID != null) sessionUUID = clientUUID;
|
|
||||||
else sessionUUID = UUID.randomUUID();
|
|
||||||
this.updateGlobalMockedMessageDtoList();
|
|
||||||
return "mock";
|
return "mock";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping("/mock/{uuid}")
|
||||||
/**
|
public ResponseEntity<String> updateMessage(@RequestBody MockedMessageDto message){
|
||||||
* Populates model with current message list based on sessionUUID
|
return klausService.setMockedResponse(message);
|
||||||
*/
|
|
||||||
private void updateGlobalMockedMessageDtoList(){
|
|
||||||
globalMockedMessageDtoList.clear();
|
|
||||||
List<MockedMessageDto> mockedMessageDtoList = klausService.getAllMockedResponses(sessionUUID);
|
|
||||||
if (mockedMessageDtoList.size() == 0) mockedMessageDtoList.add(defaultMessage);
|
|
||||||
globalMockedMessageDtoList.addAll(mockedMessageDtoList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Add json file
|
@GetMapping("/mock/json")
|
||||||
private static MockedMessageDto buildDefaultMessage(){
|
public List<MockedMessageDto> getJson(@RequestParam(required = false) UUID clientUUID){
|
||||||
return null;
|
if(clientUUID != null) sessionUUID = clientUUID;
|
||||||
|
else sessionUUID = UUID.randomUUID();
|
||||||
|
List<MockedMessageDto> messages = klausService.getAllMockedResponses(clientUUID);
|
||||||
|
if(messages.size() == 0) {
|
||||||
|
klausService.setMockedResponse(buildDefaultMessage(clientUUID));
|
||||||
|
messages = klausService.getAllMockedResponses(clientUUID);
|
||||||
|
}
|
||||||
|
return messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/mock/json")
|
||||||
|
public ResponseEntity<String> addNewMessage(@RequestParam UUID clientUUID){
|
||||||
|
List<MockedMessageDto> messages = klausService.getAllMockedResponses(clientUUID);
|
||||||
|
MockedMessageDto nextMessage = buildDefaultMessage(clientUUID, findNextId(messages));
|
||||||
|
return klausService.setMockedResponse(nextMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static MockedMessageDto buildDefaultMessage(UUID uuid, int id){
|
||||||
|
MockedMessageDto message = buildDefaultMessage(uuid);
|
||||||
|
message.setMockedResponseId(id);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static MockedMessageDto buildDefaultMessage(UUID uuid){
|
||||||
|
Map<String, String> headers = new HashMap<>();
|
||||||
|
headers.put("Keep-Alive", "timeout=60");
|
||||||
|
headers.put("Connection", "keep-alive");
|
||||||
|
headers.put("Date", LocalDateTime.now().toString());
|
||||||
|
return MockedMessageDto.builder()
|
||||||
|
.clientUUID(uuid)
|
||||||
|
.mockedResponseId(1)
|
||||||
|
.mediaType(MediaType.APPLICATION_XML_VALUE)
|
||||||
|
.messageBody("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||||
|
"<note>\n" +
|
||||||
|
" <to>Tove</to>\n" +
|
||||||
|
" <from>Jani</from>\n" +
|
||||||
|
" <heading>Reminder</heading>\n" +
|
||||||
|
" <body>Don't forget me this weekend!</body>\n" +
|
||||||
|
"</note>")
|
||||||
|
.httpHeaders(headers)
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int findNextId(List<MockedMessageDto> messages) {
|
||||||
|
int highestId = 0;
|
||||||
|
for (MockedMessageDto m : messages)
|
||||||
|
highestId = highestId < m.getMockedResponseId() ? highestId : m.getMockedResponseId();
|
||||||
|
return highestId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user