Compare commits
No commits in common. "master" and "0.1.0" have entirely different histories.
1
.gitignore
vendored
1
.gitignore
vendored
@ -21,4 +21,3 @@
|
|||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
hs_err_pid*
|
hs_err_pid*
|
||||||
.idea/
|
|
||||||
|
@ -7,22 +7,6 @@
|
|||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="junit-4.13.1" level="project" />
|
|
||||||
<orderEntry type="module-library">
|
|
||||||
<library name="JUnit5.4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar!/" />
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES />
|
|
||||||
</library>
|
|
||||||
</orderEntry>
|
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
|
Binary file not shown.
@ -1,63 +1,33 @@
|
|||||||
package at.reisinger.server;
|
package at.reisinger.server;
|
||||||
|
|
||||||
import at.reisinger.server.msg.MsgHandler;
|
import at.reisinger.server.msg.MsgHandler;
|
||||||
import at.reisinger.server.objects.Request;
|
import at.reisinger.server.thread.ClientThread;
|
||||||
import at.reisinger.server.objects.Response;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
|
||||||
* Grundlegende Server logic
|
|
||||||
* Vereint alle anderen Klassen
|
|
||||||
*/
|
|
||||||
public class Main {
|
public class Main {
|
||||||
static final int port = 80;
|
static final int port = 80;
|
||||||
private Socket socket;
|
|
||||||
private int id;
|
|
||||||
private MsgHandler msgHandler;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initial Start
|
|
||||||
* @param args Nicht Verwendet
|
|
||||||
*/
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("Starte Server auf Port 80");
|
System.out.println("Starte Server auf Port 80");
|
||||||
new Main(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Öffnet den Server Socket und akzepiert diesen
|
|
||||||
* @param port Port auf dem der Server läuft
|
|
||||||
*/
|
|
||||||
public Main(int port){
|
|
||||||
ServerSocket serverSocket = null;
|
ServerSocket serverSocket = null;
|
||||||
try {
|
try {
|
||||||
serverSocket = new ServerSocket(port);
|
serverSocket = new ServerSocket(port);
|
||||||
|
|
||||||
this.msgHandler = new MsgHandler();
|
int id = 0;
|
||||||
this.id = 0;
|
|
||||||
while (true){
|
while (true){
|
||||||
this.socket = serverSocket.accept();
|
Socket socket = serverSocket.accept();
|
||||||
requestResponding();
|
Thread client = new ClientThread(id, socket);
|
||||||
}
|
client.start();
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Jeder Request durchläuft diese Funktion, reagiert auf requests
|
|
||||||
*/
|
|
||||||
public void requestResponding(){
|
|
||||||
try {
|
try {
|
||||||
System.out.println("Socket von Client #" + this.id + " wurde gestartet!");
|
client.join();
|
||||||
Request rq = new Request(this.socket, this.id);
|
} catch (InterruptedException e) {
|
||||||
Response rp = new Response(this.id, rq.getUrl(), rq.getCmd(), rq.getOut(), this.msgHandler, rq.getPayload());
|
e.printStackTrace();
|
||||||
this.msgHandler = rp.getMsghandler();
|
}
|
||||||
this.socket.close();
|
}
|
||||||
System.out.println("Socket von Client #" + this.id + " wurde geschlossen!");
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,6 @@ import at.reisinger.server.objects.Msg;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
|
||||||
* Der Speicher der Nachrichten
|
|
||||||
* Mit hilfe einer HashMap werden die MsgId und die Msg selbst gespeichert
|
|
||||||
* @author Georg Reisinger
|
|
||||||
*/
|
|
||||||
public class MsgHandler {
|
public class MsgHandler {
|
||||||
private HashMap<Integer , String> msgHashMap;
|
private HashMap<Integer , String> msgHashMap;
|
||||||
private int lastID;
|
private int lastID;
|
||||||
@ -30,7 +25,7 @@ public class MsgHandler {
|
|||||||
* Ermitelt die nächste freie Id
|
* Ermitelt die nächste freie Id
|
||||||
* @return Next ID
|
* @return Next ID
|
||||||
*/
|
*/
|
||||||
private int nextId(){
|
public int nextId(){
|
||||||
return this.lastID + 1;
|
return this.lastID + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,8 +44,8 @@ public class MsgHandler {
|
|||||||
* Msg löschen
|
* Msg löschen
|
||||||
* @param id Message Id
|
* @param id Message Id
|
||||||
*/
|
*/
|
||||||
public String delMsg(int id){
|
public void delMsg(int id){
|
||||||
return msgHashMap.remove(id);
|
msgHashMap.remove(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,8 +53,8 @@ public class MsgHandler {
|
|||||||
* @param id Message Id
|
* @param id Message Id
|
||||||
* @param msg Message Text
|
* @param msg Message Text
|
||||||
*/
|
*/
|
||||||
public String editMsg(int id, String msg){
|
public void editMsg(int id, String msg){
|
||||||
return msgHashMap.replace(id, msg);
|
msgHashMap.replace(id, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,7 +75,7 @@ public class MsgHandler {
|
|||||||
String returnStr = "";
|
String returnStr = "";
|
||||||
// Print keys and values
|
// Print keys and values
|
||||||
for (Integer i : msgHashMap.keySet()) {
|
for (Integer i : msgHashMap.keySet()) {
|
||||||
String item = "key: " + i + " value: " + msgHashMap.get(i) + "\n";
|
String item = "key: " + i + " value: " + msgHashMap.get(i);
|
||||||
returnStr += item;
|
returnStr += item;
|
||||||
}
|
}
|
||||||
System.out.println(returnStr);
|
System.out.println(returnStr);
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package at.reisinger.server.objects;
|
package at.reisinger.server.objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Message Objekt beinmhaltet die MsgId und die Msg selbst
|
* Message Objekt
|
||||||
* @author Georg Reisinger
|
|
||||||
*/
|
*/
|
||||||
public class Msg {
|
public class Msg {
|
||||||
private int id;
|
private int id;
|
||||||
@ -26,6 +25,15 @@ public class Msg {
|
|||||||
return this.id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param id Message Id
|
||||||
|
*/
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get field
|
* get field
|
||||||
*
|
*
|
||||||
@ -34,4 +42,13 @@ public class Msg {
|
|||||||
public String getMsg() {
|
public String getMsg() {
|
||||||
return this.msg;
|
return this.msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param msg Message String
|
||||||
|
*/
|
||||||
|
public void setMsg(String msg) {
|
||||||
|
this.msg = msg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,6 @@ import java.net.Socket;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
|
||||||
* Verarbeitet einen Request
|
|
||||||
* @author Georg Reisinger
|
|
||||||
*/
|
|
||||||
public class Request {
|
public class Request {
|
||||||
|
|
||||||
private final Socket socket;
|
private final Socket socket;
|
||||||
@ -33,11 +29,9 @@ public class Request {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
this.out = new PrintStream(this.socket.getOutputStream());
|
this.out = new PrintStream(this.socket.getOutputStream());
|
||||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||||
String line = bufferedReader.readLine();
|
String line;
|
||||||
while (!line.isBlank()) {
|
while (!(line = bufferedReader.readLine()).isBlank()) {
|
||||||
rqBuilder.append(line + "\r\n");
|
rqBuilder.append(line + "\r\n");
|
||||||
line = bufferedReader.readLine();
|
|
||||||
System.out.println(line);
|
|
||||||
}
|
}
|
||||||
String request = rqBuilder.toString();
|
String request = rqBuilder.toString();
|
||||||
String[] requestsLines = request.split("\r\n");
|
String[] requestsLines = request.split("\r\n");
|
||||||
@ -72,39 +66,74 @@ public class Request {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get PrintStream --> Output
|
* get field
|
||||||
*
|
*
|
||||||
* @return out PrintStream --> Output
|
* @return out
|
||||||
*/
|
*/
|
||||||
public PrintStream getOut() {
|
public PrintStream getOut() {
|
||||||
return this.out;
|
return this.out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command wie GET, PUT, POST, DEL
|
* set field
|
||||||
*
|
*
|
||||||
* @return cmd als String
|
* @param out
|
||||||
|
*/
|
||||||
|
public void setOut(PrintStream out) {
|
||||||
|
this.out = out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return cmd
|
||||||
*/
|
*/
|
||||||
public String getCmd() {
|
public String getCmd() {
|
||||||
return this.cmd;
|
return this.cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request url
|
* set field
|
||||||
*
|
*
|
||||||
* @return url als String
|
* @param cmd
|
||||||
|
*/
|
||||||
|
public void setCmd(String cmd) {
|
||||||
|
this.cmd = cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return url
|
||||||
*/
|
*/
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
return this.url;
|
return this.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Payload des Request
|
* set field
|
||||||
*
|
*
|
||||||
* @return payload als String
|
* @param url
|
||||||
|
*/
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return payload
|
||||||
*/
|
*/
|
||||||
public String getPayload() {
|
public String getPayload() {
|
||||||
return this.payload;
|
return this.payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param payload
|
||||||
|
*/
|
||||||
|
public void setPayload(String payload) {
|
||||||
|
this.payload = payload;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,6 @@ import at.reisinger.server.msg.MsgHandler;
|
|||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
|
||||||
/**
|
|
||||||
* Erstellt und sendet eine Response anhand des Requests
|
|
||||||
* @author Georg Reisinger
|
|
||||||
*/
|
|
||||||
public class Response {
|
public class Response {
|
||||||
|
|
||||||
//private final Socket socket;
|
//private final Socket socket;
|
||||||
@ -16,8 +12,8 @@ public class Response {
|
|||||||
private PrintStream out;
|
private PrintStream out;
|
||||||
private String cmd;
|
private String cmd;
|
||||||
private String url;
|
private String url;
|
||||||
|
private final StringBuilder rqBuilder;
|
||||||
private MsgHandler msgHandler;
|
private MsgHandler msgHandler;
|
||||||
private StringBuilder rqBuilder;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nimmt die Daten des requests und generiert eine Response
|
* Nimmt die Daten des requests und generiert eine Response
|
||||||
@ -44,60 +40,33 @@ public class Response {
|
|||||||
if(lastBit.equals("messages")){
|
if(lastBit.equals("messages")){
|
||||||
listAllMsg();
|
listAllMsg();
|
||||||
}else{
|
}else{
|
||||||
String message = msgHandler.getMsg(Integer.parseInt(lastBit)).getMsg();
|
sendResponse(msgHandler.getMsg(Integer.parseInt(lastBit)).getMsg());
|
||||||
if(message == null){
|
|
||||||
sendError("404");
|
|
||||||
}else {
|
|
||||||
sendResponse(message, "200");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (this.url.startsWith("/")) {
|
} else if (this.url.startsWith("/")) {
|
||||||
startseite();
|
startseite();
|
||||||
}
|
}
|
||||||
}else if (this.cmd.equals("POST")){
|
}else if (this.cmd.equals("POST")){
|
||||||
if (this.url.startsWith("/messages")) {
|
if (this.url.startsWith("/messages")) {
|
||||||
sendResponse(msgHandler.addMsg(payload) + "", "201");
|
sendResponse(msgHandler.addMsg(payload) + "");
|
||||||
}
|
}
|
||||||
}else if (this.cmd.equals("PUT")){
|
}else if (this.cmd.equals("PUT")){
|
||||||
if (this.url.startsWith("/messages")) {
|
if (this.url.startsWith("/messages")) {
|
||||||
String lastBit = this.url.substring(this.url.lastIndexOf('/') + 1);
|
msgHandler.editMsg(id, "Edit");
|
||||||
System.out.println("Last Bit: " + lastBit);
|
|
||||||
System.out.println("Payload" + payload);
|
|
||||||
String message = msgHandler.editMsg(Integer.parseInt(lastBit), payload);
|
|
||||||
if(message == null){
|
|
||||||
sendError("404");
|
|
||||||
}else {
|
|
||||||
sendResponse("","200");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else if (this.cmd.equals("DELETE")){
|
}else if (this.cmd.equals("DELETE")){
|
||||||
if (this.url.startsWith("/messages")) {
|
if (this.url.startsWith("/messages")) {
|
||||||
String lastBit = this.url.substring(this.url.lastIndexOf('/') + 1);
|
msgHandler.delMsg(id);
|
||||||
String message = msgHandler.delMsg(Integer.parseInt(lastBit));
|
|
||||||
if(message == null){
|
|
||||||
sendError("404");
|
|
||||||
}else {
|
|
||||||
sendResponse("", "200");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
sendError("405");
|
sendResponse(sendError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sendet einen Error Response
|
private String sendError() {
|
||||||
* @param errorCode Der Error Code
|
return "";
|
||||||
*/
|
|
||||||
private void sendError(String errorCode) {
|
|
||||||
out.print("HTTP/1.0 "+errorCode+"\r\n");
|
|
||||||
out.print("Server: Apache/0.8.4\r\n");
|
|
||||||
out.print("Content-Type: text/plain\r\n");
|
|
||||||
out.print("Content-Length: 1\r\n");
|
|
||||||
out.print("\r\n");
|
|
||||||
//out.print(responseText);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startseite() {
|
private void startseite() {
|
||||||
@ -106,35 +75,95 @@ public class Response {
|
|||||||
"show first message: GET /messages/1<br>" +
|
"show first message: GET /messages/1<br>" +
|
||||||
"show third message: GET /messages/3<br>" +
|
"show third message: GET /messages/3<br>" +
|
||||||
"update first message: PUT /messages/1 (Payload: the message)<br>" +
|
"update first message: PUT /messages/1 (Payload: the message)<br>" +
|
||||||
"remove first message: DELETE /messages/1<br>", "200");
|
"remove first message: DELETE /messages/1<br>");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listAllMsg() {
|
private void listAllMsg() {
|
||||||
sendResponse(msgHandler.getAllMsg(), "200");
|
sendResponse(msgHandler.getAllMsg());
|
||||||
//sendResponse("Test");
|
//sendResponse("Test");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private void sendResponse(String responseText){
|
||||||
* Sendet eine Response
|
out.print("HTTP/1.0 200 OK\r\n");
|
||||||
* @param responseText Text der zu senden ist
|
out.print("Date: Fri, 31 Dec 2020 23:59:59 GMT\r\n");
|
||||||
* @param code Http code
|
|
||||||
*/
|
|
||||||
private void sendResponse(String responseText, String code){
|
|
||||||
out.print("HTTP/1.0 "+code+"\r\n");
|
|
||||||
out.print("Server: Apache/0.8.4\r\n");
|
out.print("Server: Apache/0.8.4\r\n");
|
||||||
out.print("Content-Type: text/plain\r\n");
|
out.print("Content-Type: text/plain\r\n");
|
||||||
out.print("Content-Length: "+responseText.length()+"\r\n");
|
out.print("Content-Length: 59\r\n");
|
||||||
|
out.print("Expires: Sat, 01 Jan 2025 00:59:59 GMT\r\n");
|
||||||
|
out.print("Last-modified: Fri, 09 Aug 1996 14:21:40 GMT\r\n");
|
||||||
out.print("\r\n");
|
out.print("\r\n");
|
||||||
out.print(responseText);
|
out.print(responseText);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Msg Handler
|
* get field
|
||||||
*
|
*
|
||||||
* @return msgHandler Handler der Nachrichten
|
* @return out
|
||||||
|
*/
|
||||||
|
public PrintStream getOut() {
|
||||||
|
return this.out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param out
|
||||||
|
*/
|
||||||
|
public void setOut(PrintStream out) {
|
||||||
|
this.out = out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return cmd
|
||||||
|
*/
|
||||||
|
public String getCmd() {
|
||||||
|
return this.cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param cmd
|
||||||
|
*/
|
||||||
|
public void setCmd(String cmd) {
|
||||||
|
this.cmd = cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return url
|
||||||
|
*/
|
||||||
|
public String getUrl() {
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
*/
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get field
|
||||||
|
*
|
||||||
|
* @return msgHandler
|
||||||
*/
|
*/
|
||||||
public MsgHandler getMsghandler() {
|
public MsgHandler getMsghandler() {
|
||||||
return this.msgHandler;
|
return this.msgHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set field
|
||||||
|
*
|
||||||
|
* @param msgHandler
|
||||||
|
*/
|
||||||
|
public void setMsghandler(MsgHandler msgHandler) {
|
||||||
|
this.msgHandler = msgHandler;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
46
src/at/reisinger/server/thread/ClientThread.java
Normal file
46
src/at/reisinger/server/thread/ClientThread.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package at.reisinger.server.thread;
|
||||||
|
|
||||||
|
import at.reisinger.server.msg.MsgHandler;
|
||||||
|
import at.reisinger.server.objects.Request;
|
||||||
|
import at.reisinger.server.objects.Response;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.Socket;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ClientThread extends Thread{
|
||||||
|
private final Socket socket;
|
||||||
|
private final int id;
|
||||||
|
private MsgHandler msgHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Neuer Client wird erstellt
|
||||||
|
* @param id Id des Clients
|
||||||
|
* @param socket Socket des Clients
|
||||||
|
*/
|
||||||
|
public ClientThread(int id, Socket socket) {
|
||||||
|
this.id = id;
|
||||||
|
this.socket = socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hauptmethode des ClientThreads
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try{
|
||||||
|
System.out.println("Socket von Client #" + this.id + " wurde gestartet!");
|
||||||
|
Request rq = new Request(this.socket, this.id);
|
||||||
|
Response rp = new Response(this.id, rq.getUrl(), rq.getCmd(), rq.getOut(), this.msgHandler, rq.getPayload());
|
||||||
|
this.msgHandler = rp.getMsghandler();
|
||||||
|
this.socket.close();
|
||||||
|
System.out.println("Socket von Client #" + this.id + " wurde geschlossen!");
|
||||||
|
}catch (IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,57 +0,0 @@
|
|||||||
package test;
|
|
||||||
|
|
||||||
import at.reisinger.server.msg.MsgHandler;
|
|
||||||
import at.reisinger.server.objects.Msg;
|
|
||||||
import org.junit.jupiter.api.DisplayName;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
public class MyTests{
|
|
||||||
@Test
|
|
||||||
@DisplayName("Msg - GetMsg")
|
|
||||||
public void msgTest(){
|
|
||||||
Msg msg = new Msg(1, "Nachricht");
|
|
||||||
assertTrue(msg.getMsg().equals("Nachricht"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("Msg - getId")
|
|
||||||
public void msgIdTest(){
|
|
||||||
Msg msg = new Msg(1, "Nachricht");
|
|
||||||
assertTrue(msg.getId() == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("MsgHandler - GetMsg")
|
|
||||||
public void msgHandlerGetTest(){
|
|
||||||
MsgHandler msgHandler = new MsgHandler();
|
|
||||||
assertTrue(msgHandler.getMsg(5).getMsg().equals("Dir?"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("MsgHandler - AddMsg")
|
|
||||||
public void msgHandlerAddTest(){
|
|
||||||
MsgHandler msgHandler = new MsgHandler();
|
|
||||||
msgHandler.addMsg("Nachricht"); //id = 6
|
|
||||||
assertTrue(msgHandler.getMsg(6).getMsg().equals("Nachricht"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("MsgHandler - editMsg")
|
|
||||||
public void msgHandlerEditTest(){
|
|
||||||
MsgHandler msgHandler = new MsgHandler();
|
|
||||||
msgHandler.addMsg("Nachricht"); //id = 6
|
|
||||||
msgHandler.editMsg(6, "Neu");
|
|
||||||
assertTrue(msgHandler.getMsg(6).getMsg().equals("Neu"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("MsgHandler - DelMsg")
|
|
||||||
public void msgHandlerDelTest(){
|
|
||||||
MsgHandler msgHandler = new MsgHandler();
|
|
||||||
msgHandler.addMsg("Nachricht"); //id = 6
|
|
||||||
msgHandler.delMsg(6);
|
|
||||||
assertTrue(msgHandler.getMsg(6).getMsg() == null);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user