Leistung.java
package restServer;
public class Leistung {
String modul;
double note;
}
RestServer.java
package restServer;
import java.io.IOException;
import java.net.URI;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
public class RestServer
{
/*
* JAX-RS ist in Java SE (Standard Edition) NICHT enthalten, sondern nur in Java EE (Enterprise Edition).
* Als Referenzimplementierung wird hier Jersey eingesetzt.
*
* Zusaetzlich wird ein einfacher Webserver benoetigt (in diesen Beispiel: Grizzly)
*
* URLs zu den Biblioteken:
* - https://jersey.github.io/
* - https://javaee.github.io/grizzly/
*/
public static void main(String[] args) throws IOException, InterruptedException
{
String baseUrl = "http://localhost:4434";
// Webserver erzeugen und mit unserem Service verbinden
final HttpServer webServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUrl),
new ResourceConfig(VerwaltungService.class), false);
// Methode zum Beenden des Webservers beim Beenden des Java-Programms bei der Java-Runtime registrieren
Runtime.getRuntime().addShutdownHook(
new Thread(new Runnable() {
@Override
public void run() {
webServer.shutdownNow();
}
}));
// Webserver starten
webServer.start();
System.out.println(String.format(
"\nGrizzly-HTTP-Server gestartet mit der URL: %s\n"
+ "Stoppen des Grizzly-HTTP-Servers mit: Strg+C\n",
baseUrl + VerwaltungService.webContextPath));
// Warten bis das Java-Programm beendet wird (durch Ctrl-C)
Thread.currentThread().join();
}
}
Speicher.java
package restServer;
public class Speicher {
// Array, das die Studenten speichert
// Kniff: Der Inhalt des Speichers existiert nur einmal, da static
private static final Student[] studenten;
// Kniff: Der Inhalt des Speichers wird durch diese Methode beim ersten Zugriff erzeugt
static
{
// Datensaetze erzeugen
studenten = Speicher.fuelleMitUnsinn(100);
}
// Methoden fuer den Zugriff auf die gespeicherten Daten
public static Student[] getStudenten()
{
return studenten;
}
public static Student getSucheMatrikelNummerZuName(String name)
{
for(Student s : studenten)
{
if(s.name.equals(name))
{
return s;
}
}
return null;
}
public static Student getStudentenInfoZuMatrikelNummer(int matrikelNummer)
{
for(Student s : studenten)
{
if(s.matrikelNummer == matrikelNummer)
{
return s;
}
}
return null;
}
// Utility-Methoden
public static Student[] fuelleMitUnsinn(int Zahl)
{
// Hilfsvariablen zum Erzeugen von Datensaetzen
final String [] vornamen = { "Mia","Ben","Emma","Jonas","Hannah","Leon","Sofia","Finn","Anna","Elias"};
final String [] nachnamen = {"Bauer","Becker","Fischer","Fuchs","Hartmann","Lang", "Jung","Hofmann","Huber"};
final String [] module = {"Analysis A","Lineare Algebra A","Analysis B","Lineare Algebra B","Numerik A",
"Stochastik A","Stochastik B","Numerik partieller Differentialgleichungen 1","Numerik partieller Differentialgleichungen 2",
"Baumechanik I (Statik starrer Koerper)","Baumechanik II (Elastomechanik)","Baumechanik III (Kinematik und Kinetik)",
"Kontinuumsmechanik I","Modellbildung im Ingenieurwesen","Numerische Mechanik","Festkoerpermechanik","Finite Elemente II",
"Grundlagen der Elektrotechnik","Umweltbiologie und -chemie","Stroemungsmechanik","Thermodynamik im Ueberblick",
"Datenstrukturen, Algorithmen und Programmierung","Datenbanksysteme im Ingenieurwesen","Graphen und Netze","Baustoffkunde I",
"Baustoffkunde II","Ausgleichungsrechnung und Statistik I","Ausgleichungsrechnung und Statistik II",
"Projekte des Ingenieurwesens" };
Student[] unsinn = new Student[Zahl];
for(int i=0; i < Zahl; i++) {
unsinn[i]=new Student();
int vn_indx = (int)(Math.random()*vornamen.length);
int nn_indx = (int)(Math.random()*nachnamen.length);
unsinn[i].name = vornamen[vn_indx] + " " + nachnamen[nn_indx];
unsinn[i].matrikelNummer = vn_indx * 100 + nn_indx + i * 10000;
int notenZahl = (int)(Math.random()*8);
if(notenZahl >= 1) {
unsinn[i].leistungen = new Leistung[notenZahl];
for(int j=0; j < notenZahl; j++) {
int mod_indx = (int)(Math.random()*module.length);
unsinn[i].leistungen[j] = new Leistung();
unsinn[i].leistungen[j].modul = module[mod_indx];
unsinn[i].leistungen[j].note = (int)(Math.random()*5) + 1;
}
}
else
unsinn[i].leistungen = null;
}
return unsinn;
}
public static boolean sindArraysGleich(Student[] a, Student[] b) {
boolean istUnGleich = false;
if(a.length == b.length)
{
for(int i=0; i < a.length; i++) {
istUnGleich |= a[i].matrikelNummer != b[i].matrikelNummer;
istUnGleich |= !(a[i].name.equals(b[i].name));
if(a[i].leistungen != null) {
for(int j=0; j < a[i].leistungen.length; j++) {
istUnGleich |= !(a[i].leistungen[j].modul.equals(b[i].leistungen[j].modul)) ;
istUnGleich |= a[i].leistungen[j].note != b[i].leistungen[j].note ;
}
}
if(istUnGleich)
System.out.println("Ungleich a="+ a + "| b=" + b);
}
}
else
istUnGleich = true;
return !istUnGleich;
}
}
Student.java
package restServer;
public class Student {
int matrikelNummer;
String name;
Leistung[] leistungen;
}
VerwaltungService.java
package restServer;
import javax.ws.rs.*;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@Path(VerwaltungService.webContextPath)
public class VerwaltungService
{
static final String webContextPath = "/student";
// Funktion fuer Pfad 1 der Server-Sitemap: Namen und Matrikelnummern aller Studenten
public String getListeVonStudenten()
{
String ergebnisAlsJSON;
System.out.println("getListeVonStudenten");
// GSON fuer Umwandlung in JSON
Gson gson = new GsonBuilder().create();
// Wir wollen nur einen Teil transportieren, deswegen muss Liste ueberarbeitet werden
JsonArray nurMatrikelnummerUndName = new JsonArray();
for(Student s : Speicher.getStudenten())
{
JsonObject dataset = new JsonObject();
dataset.addProperty("matrikelNummer", s.matrikelNummer);
dataset.addProperty("name", s.name);
nurMatrikelnummerUndName.add(dataset);
}
ergebnisAlsJSON = gson.toJson(nurMatrikelnummerUndName);
return ergebnisAlsJSON;
}
// Funktion fuer Pfad 2 der Server-Sitemap: Matrikelnummer zum Namen
public String getSucheMatrikelNummerZuName(String name)
{
Student myStudent = null;
JsonObject matrikelnummer = null;
String ergebnisAlsJSON;
Gson gson = new GsonBuilder().create();
System.out.print("getSucheMatrikelNummerZuName: "+ name);
myStudent = Speicher.getSucheMatrikelNummerZuName(name);
if(myStudent != null)
{
matrikelnummer = new JsonObject();
matrikelnummer.addProperty("matrikelNummer", myStudent.matrikelNummer);
}
System.out.println(" "+ matrikelnummer);
ergebnisAlsJSON = gson.toJson(matrikelnummer);
return ergebnisAlsJSON;
}
// Pfad 1 und Pfad 2 der Server-Sitemap fuehren auf diese Methode
// diese verzweigt je nach Aufruf mit oder ohne Query-Parameter
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public String getListeOderSuche(@QueryParam("name") String name) {
System.out.print("getListeOderSuche: "+ name + " ");
if(name == null)
// Pfad 1: kein Parameter: gesamte Liste
return getListeVonStudenten();
else
// Pfad 2: mit Parameter: nur ein Eintrag
return getSucheMatrikelNummerZuName(name);
}
// Funktion fuer Pfad 3 der Server-Sitemap: Name zu einer Matrikelnummer
@GET
@Path("/{matrikelNummer}")
@Produces(MediaType.APPLICATION_JSON)
public String getStudentenInfoZuMatrikelNummer(@PathParam("matrikelNummer") int matrikelNummer)
{
Student myStudent = null;
String ergebnisAlsJSON = "null";
Gson gson = new GsonBuilder().create();
System.out.print("getStudentenInfoZuMatrikelNummer: "+ matrikelNummer);
myStudent = Speicher.getStudentenInfoZuMatrikelNummer(matrikelNummer);
if(myStudent != null)
{
System.out.println(" "+ myStudent.name + " mit " + myStudent.leistungen.length + " Leistungen");
// Wir wollen nur einen Teil transportieren, deswegen muss Liste ueberarbeitet werden
JsonObject nurMatrikelnummerUndName = new JsonObject();
nurMatrikelnummerUndName.addProperty("matrikelNummer", myStudent.matrikelNummer);
nurMatrikelnummerUndName.addProperty("name", myStudent.name);
ergebnisAlsJSON = gson.toJson(nurMatrikelnummerUndName);
}
else
System.out.println(" nicht gefunden.");
return ergebnisAlsJSON;
}
// Funktion fuer Pfad 4 der Server-Sitemap: Leistungen zu einer Matrikelnummer
@GET
@Path("/{matrikelNummer}/leistung")
@Produces(MediaType.APPLICATION_JSON)
public String getLeistungVonStudenten(@PathParam("matrikelNummer") int matrikelNummer)
{
Student myStudent = null;
String ergebnisAlsJSON = "null";
Gson gson = new GsonBuilder().create();
System.out.print("getLeistungVonStudenten: "+ matrikelNummer);
myStudent = Speicher.getStudentenInfoZuMatrikelNummer(matrikelNummer);
if(myStudent != null)
{
System.out.println(" "+ myStudent.name + " mit " + myStudent.leistungen.length + " Leistungen");
ergebnisAlsJSON = gson.toJson(myStudent.leistungen);
}
else
System.out.println(" nicht gefunden.");
return ergebnisAlsJSON;
}
}
Leistung.java
package restServerHTTPErrors;
public class Leistung {
String modul;
double note;
}
RestServer.java
package restServerHTTPErrors;
import java.io.IOException;
import java.net.URI;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
public class RestServer
{
/*
* JAX-RS ist in Java SE (Standard Edition) NICHT enthalten, sondern nur in Java EE (Enterprise Edition).
* Als Referenzimplementierung wird hier Jersey eingesetzt.
*
* Zusaetzlich wird ein einfacher Webserver benoetigt (in diesen Beispiel: Grizzly)
*
* URLs zu den Biblioteken:
* - https://jersey.github.io/
* - https://javaee.github.io/grizzly/
*/
public static void main(String[] args) throws IOException, InterruptedException
{
String baseUrl = "http://localhost:4434";
// Webserver erzeugen und mit unserem Service verbinden
final HttpServer webServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUrl),
new ResourceConfig(VerwaltungService.class), false);
// Methode zum Beenden des Webservers beim Beenden des Java-Programms bei der Java-Runtime registrieren
Runtime.getRuntime().addShutdownHook(
new Thread(new Runnable() {
@Override
public void run() {
webServer.shutdownNow();
}
}));
// Webserver starten
webServer.start();
System.out.println(String.format(
"\nGrizzly-HTTP-Server gestartet mit der URL: %s\n"
+ "Stoppen des Grizzly-HTTP-Servers mit: Strg+C\n",
baseUrl + VerwaltungService.webContextPath));
// Warten bis das Java-Programm beendet wird (durch Ctrl-C)
Thread.currentThread().join();
}
}
Speicher.java
package restServerHTTPErrors;
public class Speicher {
// Array, das die Studenten speichert
// Kniff: Der Inhalt des Speichers existiert nur einmal, da static
private static final Student[] studenten;
// Kniff: Der Inhalt des Speichers wird durch diese Methode beim ersten Zugriff erzeugt
static
{
// Datensaetze erzeugen
studenten = Speicher.fuelleMitUnsinn(100);
}
// Methoden fuer den Zugriff auf die gespeicherten Daten
public static Student[] getStudenten()
{
return studenten;
}
public static Student getSucheMatrikelNummerZuName(String name)
{
for(Student s : studenten)
{
if(s.name.equals(name))
{
return s;
}
}
return null;
}
public static Student getStudentenInfoZuMatrikelNummer(int matrikelNummer)
{
for(Student s : studenten)
{
if(s.matrikelNummer == matrikelNummer)
{
return s;
}
}
return null;
}
// Utility-Methoden
public static Student[] fuelleMitUnsinn(int Zahl)
{
// Hilfsvariablen zum Erzeugen von Datensaetzen
final String [] vornamen = { "Mia","Ben","Emma","Jonas","Hannah","Leon","Sofia","Finn","Anna","Elias"};
final String [] nachnamen = {"Bauer","Becker","Fischer","Fuchs","Hartmann","Lang", "Jung","Hofmann","Huber"};
final String [] module = {"Analysis A","Lineare Algebra A","Analysis B","Lineare Algebra B","Numerik A",
"Stochastik A","Stochastik B","Numerik partieller Differentialgleichungen 1","Numerik partieller Differentialgleichungen 2",
"Baumechanik I (Statik starrer Koerper)","Baumechanik II (Elastomechanik)","Baumechanik III (Kinematik und Kinetik)",
"Kontinuumsmechanik I","Modellbildung im Ingenieurwesen","Numerische Mechanik","Festkoerpermechanik","Finite Elemente II",
"Grundlagen der Elektrotechnik","Umweltbiologie und -chemie","Stroemungsmechanik","Thermodynamik im Ueberblick",
"Datenstrukturen, Algorithmen und Programmierung","Datenbanksysteme im Ingenieurwesen","Graphen und Netze","Baustoffkunde I",
"Baustoffkunde II","Ausgleichungsrechnung und Statistik I","Ausgleichungsrechnung und Statistik II",
"Projekte des Ingenieurwesens" };
Student[] unsinn = new Student[Zahl];
for(int i=0; i < Zahl; i++) {
unsinn[i]=new Student();
int vn_indx = (int)(Math.random()*vornamen.length);
int nn_indx = (int)(Math.random()*nachnamen.length);
unsinn[i].name = vornamen[vn_indx] + " " + nachnamen[nn_indx];
unsinn[i].matrikelNummer = vn_indx * 100 + nn_indx + i * 10000;
int notenZahl = (int)(Math.random()*8);
if(notenZahl >= 1) {
unsinn[i].leistungen = new Leistung[notenZahl];
for(int j=0; j < notenZahl; j++) {
int mod_indx = (int)(Math.random()*module.length);
unsinn[i].leistungen[j] = new Leistung();
unsinn[i].leistungen[j].modul = module[mod_indx];
unsinn[i].leistungen[j].note = (int)(Math.random()*5) + 1;
}
}
else
unsinn[i].leistungen = null;
}
return unsinn;
}
public static boolean sindArraysGleich(Student[] a, Student[] b) {
boolean istUnGleich = false;
if(a.length == b.length)
{
for(int i=0; i < a.length; i++) {
istUnGleich |= a[i].matrikelNummer != b[i].matrikelNummer;
istUnGleich |= !(a[i].name.equals(b[i].name));
if(a[i].leistungen != null) {
for(int j=0; j < a[i].leistungen.length; j++) {
istUnGleich |= !(a[i].leistungen[j].modul.equals(b[i].leistungen[j].modul)) ;
istUnGleich |= a[i].leistungen[j].note != b[i].leistungen[j].note ;
}
}
if(istUnGleich)
System.out.println("Ungleich a="+ a + "| b=" + b);
}
}
else
istUnGleich = true;
return !istUnGleich;
}
}
Student.java
package restServerHTTPErrors;
public class Student {
int matrikelNummer;
String name;
Leistung[] leistungen;
}
VerwaltungService.java
package restServerHTTPErrors;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@Path(VerwaltungService.webContextPath)
public class VerwaltungService
{
static final String webContextPath = "/student";
// Funktion fuer Pfad 1 der Server-Sitemap: Namen und Matrikelnummern aller Studenten
public Response getListeVonStudenten()
{
String ergebnisAlsJSON;
ResponseBuilder responseBuilder;
Response response;
System.out.println("getListeVonStudenten");
// GSON fuer Umwandlung in JSON
Gson gson = new GsonBuilder().create();
// Wir wollen nur einen Teil des Studentenarrays transportieren, deswegen muss Liste ueberarbeitet werden
JsonArray nurMatrikelnummerUndName = new JsonArray();
for(Student s : Speicher.getStudenten())
{
JsonObject dataset = new JsonObject();
dataset.addProperty("matrikelNummer", s.matrikelNummer);
dataset.addProperty("name", s.name);
nurMatrikelnummerUndName.add(dataset);
}
ergebnisAlsJSON = gson.toJson(nurMatrikelnummerUndName);
if (ergebnisAlsJSON==null) {
// keine Daten gefunden ==> Fehlermeldung als HTTP-Status zurueckgeben
// ResponseBuilder mit HTML Status 5xx instanziieren, Klartextnachricht anhaengen
responseBuilder = Response.serverError();
responseBuilder = responseBuilder.entity("500 Internal Server Error");
// Response erzeugen
response = responseBuilder.build();
return response;
} else {
// Daten gefunden ==> HTTP-Status Erfolg und Daten in die Response
responseBuilder = Response.ok(ergebnisAlsJSON, MediaType.APPLICATION_JSON);
// Response erzeugen
response = responseBuilder.build();
return response;
}
}
// Funktion fuer Pfad 2 der Server-Sitemap: Matrikelnummer zum Namen
public Response getSucheMatrikelNummerZuName(String name)
{
ResponseBuilder responseBuilder;
Response response;
Student myStudent = null;
JsonObject matrikelnummer = null;
String ergebnisAlsJSON;
Gson gson = new GsonBuilder().create();
System.out.print("getSucheMatrikelNummerZuName: "+ name);
myStudent = Speicher.getSucheMatrikelNummerZuName(name);
if(myStudent != null)
{
matrikelnummer = new JsonObject();
matrikelnummer.addProperty("matrikelNummer", myStudent.matrikelNummer);
}
System.out.println(" "+ matrikelnummer);
ergebnisAlsJSON = gson.toJson(matrikelnummer);
if (matrikelnummer==null) {
//JSON Fehlernachricht wird intanziiert
ergebnisAlsJSON = gson.toJson("404 Not Found. The requested Name /"+name+" was not found on this server");
//ResponseBuilder wird mit HTML Status 404 instanziiert
responseBuilder = Response.status(Response.Status.NOT_FOUND);
//Den ResponseBuilder wird zusaetzlich eine JSON Nachricht angehaengt
responseBuilder = responseBuilder.entity(ergebnisAlsJSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
} else {
//ResponseBuilder wird mit HTML Status 200 und einer Nachricht von Typ JSON instanziiert
responseBuilder = Response.ok(ergebnisAlsJSON, MediaType.APPLICATION_JSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
}
}
// Pfad 1 und Pfad 2 der Server-Sitemap fuehren auf diese Methode
// diese verzweigt je nach Aufruf mit oder ohne Query-Parameter
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getListeOderSuche(@QueryParam("name") String name) {
System.out.print("getListeOderSuche: "+ name + " ");
if(name == null)
// Pfad 1: kein Parameter: gesamte Liste
return getListeVonStudenten();
else
// Pfad 2: mit Parameter: nur ein Eintrag
return getSucheMatrikelNummerZuName(name);
}
// Funktion fuer Pfad 3 der Server-Sitemap: Name zu einer Matrikelnummer
@GET
@Path("/{matrikelNummer}")
@Produces(MediaType.APPLICATION_JSON)
public Response getStudentenInfoZuMatrikelNummer(@PathParam("matrikelNummer") int matrikelNummer)
{
ResponseBuilder responseBuilder;
Response response;
Student myStudent = null;
String ergebnisAlsJSON = "null";
Gson gson = new GsonBuilder().create();
System.out.print("getStudentenInfoZuMatrikelNummer: "+ matrikelNummer);
myStudent = Speicher.getStudentenInfoZuMatrikelNummer(matrikelNummer);
if(myStudent != null)
{
System.out.println(" "+ myStudent.name + " mit " + myStudent.leistungen.length + " Leistungen");
// Wir wollen nur einen Teil transportieren, deswegen muss Liste ueberarbeitet werden
JsonObject nurMatrikelnummerUndName = new JsonObject();
nurMatrikelnummerUndName.addProperty("matrikelNummer", myStudent.matrikelNummer);
nurMatrikelnummerUndName.addProperty("name", myStudent.name);
ergebnisAlsJSON = gson.toJson(nurMatrikelnummerUndName);
//ResponseBuilder wird mit HTML Status 200 und einer Nachricht von Typ JSON instanziiert
responseBuilder = Response.ok(ergebnisAlsJSON, MediaType.APPLICATION_JSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
}
else {
System.out.println(" nicht gefunden.");
ergebnisAlsJSON = gson.toJson("404 Not Found. The requested matrikelNummer /"+matrikelNummer+" was not found on this server");
//ResponseBuilder wird mit HTML Status 404 instanziiert
responseBuilder = Response.status(Response.Status.NOT_FOUND);
//Den ResponseBuilder wird zusaetzlich eine JSON Nachricht angehaengt
responseBuilder = responseBuilder.entity(ergebnisAlsJSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
}
}
// Funktion fuer Pfad 4 der Server-Sitemap: Leistungen zu einer Matrikelnummer
@GET
@Path("/{matrikelNummer}/leistung")
@Produces(MediaType.APPLICATION_JSON)
public Response getLeistungVonStudenten(@PathParam("matrikelNummer") int matrikelNummer)
{
ResponseBuilder responseBuilder;
Response response;
Student myStudent = null;
String ergebnisAlsJSON = "null";
Gson gson = new GsonBuilder().create();
System.out.print("getLeistungVonStudenten: "+ matrikelNummer);
myStudent = Speicher.getStudentenInfoZuMatrikelNummer(matrikelNummer);
if(myStudent != null)
{
System.out.println(" "+ myStudent.name + " mit " + myStudent.leistungen.length + " Leistungen");
ergebnisAlsJSON = gson.toJson(myStudent.leistungen);
//ResponseBuilder wird mit HTML Status 200 und einer Nachricht von Typ JSON instanziiert
responseBuilder = Response.ok(ergebnisAlsJSON, MediaType.APPLICATION_JSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
}
else {
System.out.println(" nicht gefunden.");
ergebnisAlsJSON = gson.toJson("404 Not Found. The requested matrikelNummer /"+matrikelNummer+" was not found on this server");
//ResponseBuilder wird mit HTML Status 404 instanziiert
responseBuilder = Response.status(Response.Status.NOT_FOUND);
//Den ResponseBuilder wird zusaetzlich eine JSON Nachricht angehaengt
responseBuilder = responseBuilder.entity(ergebnisAlsJSON);
//Response wird aus ResponseBuilder instanziiert. Response enthaelt den Statuscode und eine Nachricht,
//die jetzt als akzeptiertes Format zurueckgeliefert werden kann
response = responseBuilder.build();
return response;
}
}
}