Today's things: HTML JavaScript client and some other things

This commit is contained in:
karl 2019-12-05 14:47:21 +01:00
parent 7108e73c65
commit 5e8529e89e
7 changed files with 85 additions and 5 deletions

2
.idea/compiler.xml generated
View File

@ -15,7 +15,7 @@
<module name="MoviesApp" target="11" />
<module name="MoviesClient" target="10" />
<module name="MoviesCommon" target="9" />
<module name="MoviesWebApp" target="9" />
<module name="MoviesWebApp" target="10" />
</bytecodeTargetLevel>
</component>
</project>

3
.idea/misc.xml generated
View File

@ -5,6 +5,9 @@
<file type="web" url="file://$PROJECT_DIR$/MoviesCommon" />
<file type="web" url="file://$PROJECT_DIR$/MoviesWebApp" />
</component>
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>

View File

@ -15,7 +15,7 @@ public class MoviesWebServiceClient {
// TODO: Move to a better place
// Import moviess
// Import movies
List<Movie> movies = XmlHelper.xmlToMovies("movietest.xml");
port.importMovies(movies);

View File

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Movies App</title>
<script>
"use strict";
const MOVIES_RESOURCE_URL = "http://localhost:8080/movieservice/resources/movie";
let loadNews = function () {
let options = {
mode: "cors",
headers: {
"Accept": "application/json"
}
};
// Studios: ID dranhängen -> 2. Aufruf -> Alert dranhängen
fetch(MOVIES_RESOURCE_URL, options)
.then(response => response.json())
.then(function (moviesList) {
let html = moviesList.map(movie =>
`<h2>${movie.title}</h2>
<p>${movie.description}</p>`)
.join("");
document.getElementById("content").innerHTML = html;
})
.catch(error => document.getElementById("content").innerHTML = `Error: ${error}`);
};
document.addEventListener("DOMContentLoaded", loadNews);
</script>
</head>
<body>
<h1>Movies in JavaScript</h1>
<div id="content"></div>
</body>
</html>

View File

@ -22,7 +22,7 @@
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_9">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_10">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">

View File

@ -103,8 +103,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>9</source>
<target>9</target>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>

View File

@ -0,0 +1,37 @@
package at.technikumwien.movies;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.Provider;
@Provider
public class ResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException {
var requestHeaders = request.getHeaders();
var responseHeaders = response.getHeaders();
responseHeaders.add("Access-Control-Allow-Origin", getRequestOrigin(requestHeaders));
responseHeaders.add("Access-Control-Allow-Methods", "GET, DELETE, OPTIONS, POST, PUT");
responseHeaders.add("Access-Control-Allow-Headers", getRequestHeaders(requestHeaders));
var cacheControl = new CacheControl();
cacheControl.setNoCache(true);
responseHeaders.add("Cache-Control", cacheControl);
}
private String getRequestOrigin(MultivaluedMap<String, String> requestHeaders) {
var origin = requestHeaders.getFirst("Origin");
return (origin != null ? origin : "null");
}
private String getRequestHeaders(MultivaluedMap<String, String> requestHeaders) {
var headers = requestHeaders.get("Access-Control-Request-Headers");
return (headers != null ? String.join(", ", headers) : "");
}
}