From 5daba06f77a4e62c534153bcb69760c4981549ec Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Fri, 17 Jan 2020 11:19:15 +0100
Subject: [PATCH] WIP: json

---
 .../converter/misc/AbstractContainerHelper.java       |  6 +++++-
 .../server/converter/misc/HttpStatusConverter.java    | 11 ++++++++---
 .../server/resource/AuthenticationResource.java       |  4 +---
 .../caosdb/server/resource/XMLServerResource.java     |  8 ++++----
 4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/main/java/caosdb/server/converter/misc/AbstractContainerHelper.java b/src/main/java/caosdb/server/converter/misc/AbstractContainerHelper.java
index 9bace44d..ebcba786 100644
--- a/src/main/java/caosdb/server/converter/misc/AbstractContainerHelper.java
+++ b/src/main/java/caosdb/server/converter/misc/AbstractContainerHelper.java
@@ -58,10 +58,14 @@ public abstract class AbstractContainerHelper extends ConverterHelper {
     return -1.0F;
   }
 
+  public List<VariantInfo> getVariants() {
+    return variants;
+  }
+
   @Override
   public List<VariantInfo> getVariants(Class<?> source) throws IOException {
     if (source != null && TransactionContainer.class.isAssignableFrom(source)) {
-      return variants;
+      return getVariants();
     }
 
     return null;
diff --git a/src/main/java/caosdb/server/converter/misc/HttpStatusConverter.java b/src/main/java/caosdb/server/converter/misc/HttpStatusConverter.java
index d58f0280..80de82dc 100644
--- a/src/main/java/caosdb/server/converter/misc/HttpStatusConverter.java
+++ b/src/main/java/caosdb/server/converter/misc/HttpStatusConverter.java
@@ -34,7 +34,8 @@ public class HttpStatusConverter extends ConverterHelper {
   @Override
   public List<VariantInfo> getVariants(Class<?> source) throws IOException {
     if (isCompatible(source)) {
-      return containerConverter.getVariants(TransactionContainer.class);
+      List<VariantInfo> result = containerConverter.getVariants(TransactionContainer.class);
+      return result;
     }
     return null;
   }
@@ -45,7 +46,11 @@ public class HttpStatusConverter extends ConverterHelper {
 
   @Override
   public float score(Object source, Variant target, Resource resource) {
-    return containerConverter.score(dummyContainer, target, resource);
+    if (source instanceof StatusInfo) {
+      return containerConverter.score(dummyContainer, target, resource);
+    } else {
+      return -1.0F;
+    }
   }
 
   @Override
@@ -66,7 +71,7 @@ public class HttpStatusConverter extends ConverterHelper {
       throws IOException {
     Representation result = null;
 
-    if (source != null && StatusInfo.class.isAssignableFrom(source.getClass())) {
+    if (source != null && source instanceof StatusInfo) {
       StatusInfo status = (StatusInfo) source;
       result = toJdomRepresentation(status, target, resource);
     }
diff --git a/src/main/java/caosdb/server/resource/AuthenticationResource.java b/src/main/java/caosdb/server/resource/AuthenticationResource.java
index 556763b2..58e11132 100644
--- a/src/main/java/caosdb/server/resource/AuthenticationResource.java
+++ b/src/main/java/caosdb/server/resource/AuthenticationResource.java
@@ -38,7 +38,6 @@ import org.restlet.data.Form;
 import org.restlet.data.Reference;
 import org.restlet.data.Status;
 import org.restlet.engine.application.StatusInfo;
-import org.restlet.representation.Representation;
 import org.restlet.resource.Delete;
 import org.restlet.resource.Post;
 import org.restlet.resource.ResourceException;
@@ -60,7 +59,7 @@ public class AuthenticationResource extends AbstractCaosDBServerResource {
   }
 
   @Post
-  public StatusInfo login(final Representation entity) {
+  public StatusInfo login(final Form f) {
 
     getUser().logout();
 
@@ -69,7 +68,6 @@ public class AuthenticationResource extends AbstractCaosDBServerResource {
     String password = null;
 
     // get realm, username and password from HTTP Form
-    final Form f = new Form(entity);
     if (!f.isEmpty()) {
       username = f.getFirstValue("username");
       realm =
diff --git a/src/main/java/caosdb/server/resource/XMLServerResource.java b/src/main/java/caosdb/server/resource/XMLServerResource.java
index 66ed8c5b..36a4e25b 100644
--- a/src/main/java/caosdb/server/resource/XMLServerResource.java
+++ b/src/main/java/caosdb/server/resource/XMLServerResource.java
@@ -145,7 +145,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
     userInfo.setAttribute("realm", ((Principal) user.getPrincipal()).getRealm());
   }
 
-  @Get
+  @Get("xml")
   public Representation httpGet() {
     try {
       return httpGetInChildClass();
@@ -158,7 +158,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
       throws ConnectionException, IOException, SQLException, CaosDBException,
           NoSuchAlgorithmException, Exception;
 
-  @Post
+  @Post("form|xml:xml")
   public Representation httpPost(final Representation entity) {
     try {
       return httpPostInChildClass(entity);
@@ -167,7 +167,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
     }
   }
 
-  @Put
+  @Put("form|xml:xml")
   public Representation httpPut(final Representation entity) {
     try {
       // catch empty post entity.
@@ -194,7 +194,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
     return null;
   }
 
-  @Delete
+  @Delete("xml")
   public Representation httpDelete() {
     try {
       return httpDeleteInChildClass();
-- 
GitLab