From f52841ca6bf7cc5768104c620d86c67f5e9cc16f Mon Sep 17 00:00:00 2001 From: florianthiery Date: Mon, 5 Dec 2022 18:35:22 +0100 Subject: [PATCH 1/2] jersey 2 and swagger --- pom.xml | 834 ++++++++++-------- .../de/rgzm/alligator/rest/AlligatorAPI.java | 64 ++ .../rgzm/alligator/restconfig/CORSFilter.java | 31 +- src/main/webapp/WEB-INF/openapi.yaml | 9 + src/main/webapp/WEB-INF/web.xml | 18 +- src/main/webapp/alligator_logo.png | Bin 0 -> 84158 bytes src/main/webapp/index.html | 81 ++ 7 files changed, 661 insertions(+), 376 deletions(-) create mode 100644 src/main/webapp/WEB-INF/openapi.yaml create mode 100644 src/main/webapp/alligator_logo.png create mode 100644 src/main/webapp/index.html diff --git a/pom.xml b/pom.xml index a9e09d4..85aa32d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,366 +1,494 @@ - 4.0.0 - - ${project.build.directory}/endorsed - UTF-8 - 1.19.1 - + 4.0.0 + + ${project.build.directory}/endorsed + UTF-8 + + + 1.8 + 3.7.0 + 3.1.1 + 3.2.2 + 1.5.3 + + 2.0.2 + 3.17.0 + + - alligator - de.rgzm.alligator - 1.0-SNAPSHOT - war + alligator + de.rgzm.alligator + 1.0-SNAPSHOT + war - alligator - Allen Transformator - A converter from CA to Allen's interval algebra - https://github.com/rgzm/alligator.git - - - MIT License - https://github.com/rgzm/alligator/blob/master/LICENSE - repo - - - - Römisch-Germanisches Zentralmuseum (RGZM) - http://rgzm.de - - - scm:git:https://github.com/rgzm/alligator.git - - - - Florian Thiery - http://orcid.org/0000-0002-3246-3531 - - + alligator - Allen Transformator + A converter from CA to Allen's interval algebra + https://github.com/rgzm/alligator.git + + + MIT License + https://github.com/rgzm/alligator/blob/master/LICENSE + repo + + + + Römisch-Germanisches Zentralmuseum (RGZM) + http://rgzm.de + + + scm:git:https://github.com/rgzm/alligator.git + + + + Florian Thiery + http://orcid.org/0000-0002-3246-3531 + + - - - - jitpack.io - https://jitpack.io - - + + + + jitpack.io + https://jitpack.io + + - - - java8-doclint-disabled - - [1.8,) - - - -Xdoclint:none - - - + + + java8-doclint-disabled + + [1.8,) + + + -Xdoclint:none + + + - - - ${project.artifactId} - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - 1.8 - 1.8 - - ${endorsed.dir} - - - - - org.apache.maven.plugins - maven-war-plugin - 2.3 - - false - - - - org.apache.maven.plugins - maven-dependency-plugin - 2.6 - - - validate - - copy - - - ${endorsed.dir} - true - - - javax - javaee-endorsed-api - 7.0 - jar - - - - - - - - - org.codehaus.mojo - buildnumber-maven-plugin - 1.4 - - - validate - - create - - - - - false - false - - - - - - maven-jar-plugin - - - - true - lib/ - - - - - - - org.apache.tomcat.maven - tomcat7-maven-plugin - 2.1 - - / - - - - - - - src/main/resources - true - - - + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + ${endorsed.dir} + + + + + org.apache.maven.plugins + maven-war-plugin + 2.3 + + false + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.6 + + + validate + + copy + + + ${endorsed.dir} + true + + + javax + javaee-endorsed-api + 7.0 + jar + + + + + + + + + org.codehaus.mojo + buildnumber-maven-plugin + 1.4 + + + validate + + create + + + + + false + false + + + + + + maven-jar-plugin + + + + true + lib/ + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.1 + + / + + + + + maven-compiler-plugin + ${mvn-compiler-plugin.version} + + ${java.version} + ${java.version} + + + + + maven-dependency-plugin + ${maven-dependency-plugin.version} + + + prepare-package + + unpack + + + + + org.webjars + swagger-ui + ${swagger-ui.version} + + + ${project.build.directory}/swagger-ui + + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + + + ${project.build.directory}/swagger-ui/META-INF/resources/webjars/swagger-ui/${swagger-ui.version} + + **/*.* + + swagger-ui + + + + + + + com.google.code.maven-replacer-plugin + replacer + ${replacer.version} + + + prepare-package + + replace + + + + + ${project.build.directory}/swagger-ui/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/index.html + + + http://petstore.swagger.io/v2/swagger.json + ../rest/openapi.json + + + + + + + + + src/main/resources + true + + + - - - - org.apache.httpcomponents - httpclient - 4.5.2 - - - org.slf4j - jcl-over-slf4j - 1.7.21 - - - javax - javaee-web-api - 6.0 - provided - - - - junit - junit - 4.8.2 - test - - - - com.sun.jersey - jersey-servlet - ${jersey.version} - - - com.sun.jersey - jersey-json - ${jersey.version} - - - com.sun.jersey - jersey-client - ${jersey.version} - test - - - com.sun.jersey - jersey-bundle - ${jersey.version} - - - com.sun.jersey.contribs - jersey-multipart - ${jersey.version} - - - org.jdom - jdom - 1.1 - jar - - - org.apache.jena - jena-arq - 2.11.1 - jar - - - org.apache.httpcomponents - httpclient - - - org.slf4j - jcl-over-slf4j - - - - - - com.googlecode.json-simple - json-simple - 1.1 - - - com.google.code.gson - gson - 1.7.1 - - - - com.jamesmurty.utils - java-xmlbuilder - 0.6 - - - jdom - jdom - 1.1 - - - - org.apache.commons - commons-io - 1.3.2 - - - commons-io - commons-io - 2.5 - jar - - - commons-io - commons-io - - - - - org.apache.commons - commons-compress - 1.1 - - - - javax.ws.rs - javax.ws.rs-api - 2.0-m01 - - - org.jboss.resteasy - resteasy-jaxrs - 3.0.9.Final - - - org.apache.httpcomponents - httpclient - - - commons-io - commons-io - - - - - org.jboss.resteasy - resteasy-jaxrs - 3.0.9.Final - - - - com.github.jsonld-java - jsonld-java - 0.8.3 - - - com.github.jsonld-java - jsonld-java-jena - 0.4.1 - - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - 2.3.0 - - - - org.hashids - hashids - 1.0.1 - - - - com.github.linkedgeodesy - jena-ext - c2a9de99bf - - - com.github.linkedgeodesy - rdf4j-ext - 64a72d082c - + + + + org.apache.httpcomponents + httpclient + 4.5.2 + + + org.slf4j + jcl-over-slf4j + 1.7.21 + + + org.toile-libre.libe + curl + 0.0.40 + jar + + + javax + javaee-web-api + 6.0 + provided + + + + junit + junit + 4.8.2 + test + + + + + + org.glassfish.jaxb + txw2 + 2.2.11 + + + + + org.glassfish.jersey.core + jersey-server + 2.31 + + + org.glassfish.jersey.containers + jersey-container-servlet + 2.31 + + + org.glassfish.jersey.inject + jersey-hk2 + 2.31 + + + org.apache.jena + jena-arq + 2.11.1 + jar + + + org.apache.httpcomponents + httpclient + + + org.slf4j + jcl-over-slf4j + + + + + + com.googlecode.json-simple + json-simple + 1.1 + + + com.google.code.gson + gson + 1.7.1 + + + + com.jamesmurty.utils + java-xmlbuilder + 0.6 + + + jdom + jdom + 1.1 + + + + org.apache.commons + commons-io + 1.3.2 + + + commons-io + commons-io + 2.5 + jar + + + commons-io + commons-io + + + + + org.apache.commons + commons-compress + 1.1 + + + + javax.ws.rs + javax.ws.rs-api + 2.0-m01 + + + + + com.github.jsonld-java + jsonld-java + 0.8.3 + + + com.github.jsonld-java + jsonld-java-jena + 0.4.1 + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + 2.3.0 + + + + org.hashids + hashids + 1.0.1 + + + + com.github.linkedgeodesy + jena-ext + c2a9de99bf + + + com.github.linkedgeodesy + rdf4j-ext + 64a72d082c + - - - org.toile-libre.libe - curl - LATEST - - + + + + + io.swagger.core.v3 + swagger-jaxrs2 + ${swagger.version} + + + io.swagger.core.v3 + swagger-jaxrs2-servlet-initializer + ${swagger.version} + + + - - - - - org.apache.maven.plugins - maven-surefire-report-plugin - 2.20 - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.0.0-M1 - - ${javadoc.opts} - - - - + + + + + org.apache.maven.plugins + maven-surefire-report-plugin + 2.20 + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.0-M1 + + ${javadoc.opts} + + + + diff --git a/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java b/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java index 7e8b9f4..6fc5d46 100644 --- a/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java +++ b/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java @@ -17,6 +17,7 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; +import java.net.URI; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; @@ -27,12 +28,29 @@ import javax.ws.rs.core.Response; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; @Path("/") public class AlligatorAPI { @GET + @Path("/") + @Tag(name = "Info") @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "library information" + ) public Response getInfo(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader) throws IOException { try { return ResponseGZIP.setResponse(acceptEncoding, POM.getInfo().toString()); @@ -42,10 +60,45 @@ public Response getInfo(@HeaderParam("Accept-Encoding") String acceptEncoding, @ } } + @GET + @Path("/info") + @Tag(name = "Info") + @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "text/html", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "api documentation" + ) + public Response getInfo2(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader) throws IOException { + try { + URI targetURIForRedirection = new URI("../swagger-ui/index.html"); + return Response.seeOther(targetURIForRedirection).build(); + } catch (Exception e) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(Logging.getMessageJSON(e, "de.rgzm.alligator.rest.AlligatorAPI")) + .header("Content-Type", "application/json;charset=UTF-8").build(); + } + } + @POST @Path("/matrixallen") + @Tag(name = "Matrix") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get allen matrix as json" + ) public Response loadCAgetMATRIXALLEN(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -74,8 +127,19 @@ public Response loadCAgetMATRIXALLEN(@HeaderParam("Accept-Encoding") String acce @POST @Path("/matrixdist") + @Tag(name = "Matrix") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get distance matrix as json" + ) public Response loadCAgetMATRIXDIST(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); diff --git a/src/main/java/de/rgzm/alligator/restconfig/CORSFilter.java b/src/main/java/de/rgzm/alligator/restconfig/CORSFilter.java index 145a0e1..6190877 100644 --- a/src/main/java/de/rgzm/alligator/restconfig/CORSFilter.java +++ b/src/main/java/de/rgzm/alligator/restconfig/CORSFilter.java @@ -1,31 +1,34 @@ package de.rgzm.alligator.restconfig; -import com.sun.jersey.spi.container.ContainerRequest; -import com.sun.jersey.spi.container.ContainerResponse; -import com.sun.jersey.spi.container.ContainerResponseFilter; -import de.rgzm.alligator.utils.config.ConfigProperties; +import de.rgzm.alligator.config.ConfigProperties; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerResponseContext; +import javax.ws.rs.container.ContainerResponseFilter; + public class CORSFilter implements ContainerResponseFilter { - @Override - public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { + @Override + public void filter(ContainerRequestContext request, ContainerResponseContext response) + throws IOException { String method = request.getMethod(); try { if (method.equals("GET")) { - response.getHttpHeaders().add("Access-Control-Allow-Origin", ConfigProperties.getPropertyParam("get_origin")); + response.getHeaders().add("Access-Control-Allow-Origin", ConfigProperties.getPropertyParam("get_origin")); } else { - response.getHttpHeaders().add("Access-Control-Allow-Origin", ConfigProperties.getPropertyParam("other_origin")); + response.getHeaders().add("Access-Control-Allow-Origin", ConfigProperties.getPropertyParam("other_origin")); } - response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT"); - response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, Accept-Encoding"); - response.getHttpHeaders().add("Access-Control-Allow-Credentials", "false"); - } catch (IOException ex) { + response.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT"); + response.getHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, Accept-Encoding"); + response.getHeaders().add("Access-Control-Allow-Credentials", "false"); + } catch (Exception ex) { Logger.getLogger(CORSFilter.class.getName()).log(Level.SEVERE, null, ex); } - return response; - } + return; + + } } diff --git a/src/main/webapp/WEB-INF/openapi.yaml b/src/main/webapp/WEB-INF/openapi.yaml new file mode 100644 index 0000000..5925f19 --- /dev/null +++ b/src/main/webapp/WEB-INF/openapi.yaml @@ -0,0 +1,9 @@ +openapi: 3.0.1 +prettyPrint: true +cacheTTL: 0 +openAPI: + info: + version: '1.0.0' + title: 'alligator' + servers: + - url: '/alligator' diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index d7261fe..38cf40e 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -2,28 +2,28 @@ alligator - com.sun.jersey.spi.container.servlet.ServletContainer + org.glassfish.jersey.servlet.ServletContainer - com.sun.jersey.config.property.packages - de.rgzm.alligator.rest + jersey.config.server.provider.packages + de.rgzm.alligator.rest,io.swagger.v3.jaxrs2.integration.resources,io.swagger.sample.resource - com.sun.jersey.spi.container.ContainerResponseFilters + javax.ws.rs.container.ContainerResponseFilters de.rgzm.alligator.restconfig.CORSFilter - com.sun.jersey.spi.container.ContainerRequestFilters - com.sun.jersey.api.container.filter.GZIPContentEncodingFilter + javax.ws.rs.spi.container.ContainerRequestFilters + org.glassfish.jersey.container.filter.GZIPContentEncodingFilter - com.sun.jersey.spi.container.ContainerResponseFilters - com.sun.jersey.api.container.filter.GZIPContentEncodingFilter + javax.ws.rs.container.ContainerResponseFilters + javax.ws.rs.container.filter.GZIPContentEncodingFilter 1 alligator - /* + /rest/* diff --git a/src/main/webapp/alligator_logo.png b/src/main/webapp/alligator_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9b37f17495a4a5296399e313a260269d34cebc4c GIT binary patch literal 84158 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html new file mode 100644 index 0000000..275f88b --- /dev/null +++ b/src/main/webapp/index.html @@ -0,0 +1,81 @@ + + + + + + + + Alligator + + + + +

+
+

alligator

+
Alligator - Allen Transformer
+
+
+
+ + +
+
developed by Florian Thiery M.Sc. and Allard W. Mees (RGZM)
+
+
+ + + \ No newline at end of file From 1e577bf2a26c7af6532aa853768aa7268a47e942 Mon Sep 17 00:00:00 2001 From: Florian Thiery Date: Thu, 8 Dec 2022 14:15:12 +0100 Subject: [PATCH 2/2] api docu --- .../de/rgzm/alligator/rest/AlligatorAPI.java | 61 +++++++++++++++++++ src/main/webapp/index.html | 1 + 2 files changed, 62 insertions(+) diff --git a/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java b/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java index 6fc5d46..9aba421 100644 --- a/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java +++ b/src/main/java/de/rgzm/alligator/rest/AlligatorAPI.java @@ -11,6 +11,7 @@ import de.rgzm.alligator.functions.Timeline; import de.rgzm.alligator.log.Logging; import de.rgzm.alligator.restconfig.ResponseGZIP; +import io.swagger.v3.oas.annotations.Hidden; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; @@ -33,6 +34,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import javax.ws.rs.QueryParam; @Path("/") public class AlligatorAPI { @@ -40,6 +42,7 @@ public class AlligatorAPI { @GET @Path("/") @Tag(name = "Info") + @Hidden @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") @ApiResponse( responseCode = "200", @@ -63,6 +66,7 @@ public Response getInfo(@HeaderParam("Accept-Encoding") String acceptEncoding, @ @GET @Path("/info") @Tag(name = "Info") + @Hidden @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") @ApiResponse( responseCode = "200", @@ -168,8 +172,19 @@ public Response loadCAgetMATRIXDIST(@HeaderParam("Accept-Encoding") String accep @POST @Path("/timeline") + @Tag(name = "Visualisation") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get timeline as json" + ) public Response loadCAgetTIMELINEJSON(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -198,8 +213,19 @@ public Response loadCAgetTIMELINEJSON(@HeaderParam("Accept-Encoding") String acc @POST @Path("/graph") + @Tag(name = "Visualisation") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get graph as json" + ) public Response loadCAgetGRAPHJSON(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -228,8 +254,19 @@ public Response loadCAgetGRAPHJSON(@HeaderParam("Accept-Encoding") String accept @POST @Path("/turtle") + @Tag(name = "Graph Data") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get results as ttl" + ) public Response loadCAgetRDFFILE(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -258,8 +295,19 @@ public Response loadCAgetRDFFILE(@HeaderParam("Accept-Encoding") String acceptEn @POST @Path("/cypher") + @Tag(name = "Graph Data") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get results as cypther" + ) public Response loadCAgetCYPHERFILE(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -288,8 +336,19 @@ public Response loadCAgetCYPHERFILE(@HeaderParam("Accept-Encoding") String accep @POST @Path("/amt") + @Tag(name = "Graph Data") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN + ";charset=UTF-8") + @ApiResponse( + responseCode = "200", + content = @Content( + mediaType = "application/json", + array = @ArraySchema( + schema = @Schema(implementation = String.class) + ) + ), + description = "get results as AMT ttl" + ) public Response loadCAgetAMTFILE(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { try { String[] split = tsv.split("#data"); @@ -318,6 +377,7 @@ public Response loadCAgetAMTFILE(@HeaderParam("Accept-Encoding") String acceptEn @POST @Path("/amtrepo") + @Hidden @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN + ";charset=UTF-8") public Response loadCAgetAMTREPO(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { @@ -348,6 +408,7 @@ public Response loadCAgetAMTREPO(@HeaderParam("Accept-Encoding") String acceptEn @POST @Path("/turtlefile") + @Hidden @Consumes(MediaType.TEXT_PLAIN) @Produces("text/turtle;charset=UTF-8") public Response loadCAgetRDF(@HeaderParam("Accept-Encoding") String acceptEncoding, @HeaderParam("Accept") String acceptHeader, String tsv) throws IOException { diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 275f88b..c1319ac 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -72,6 +72,7 @@

alligator


+
developed by Florian Thiery M.Sc. and Allard W. Mees (RGZM)