RestService#isSupported(ResourceContext)

This patch changes the RestService interface to accept
a ResourceContext now instead of just the media type,
since it may depend on other requests paramaters, e.g.
the requested action, whether the media type is
be supported.

Change-Id: I9b8c78396b264f6c019d63542a027c1fb88cc109
Signed-off-by: Michael Ochmann <michael.ochmann@sap.com>
diff --git a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ErrorRepresentation.java b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ErrorRepresentation.java
index 8bba1b5..e440aec 100644
--- a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ErrorRepresentation.java
+++ b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ErrorRepresentation.java
@@ -78,7 +78,7 @@
     public void write(Writer writer) throws IOException {
         RestService restService = Services.getRequiredService(RestService.class);
         MediaType mediaType = context.getMediaType();
-        if (!restService.isSupportedMediaType(mediaType)) {
+        if (!restService.isSupported(context)) {
             throw new IOException(MessageFormat.format("Unsupported media type ''{0}''", mediaType));
         }
         RestWriter restWriter = restService.getRestWriter(writer, context);
diff --git a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ResourceRepresentation.java b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ResourceRepresentation.java
index 6433357..efa387d 100644
--- a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ResourceRepresentation.java
+++ b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/extension/rest/ResourceRepresentation.java
@@ -131,7 +131,7 @@
             } else if (converter.getConversionClass().isAssignableFrom(object.getClass())) {
                 RestService restService = Services.getRequiredService(RestService.class);
                 MediaType mediaType = context.getMediaType();
-                if (!restService.isSupportedMediaType(mediaType)) {
+                if (!restService.isSupported(context)) {
                     throw new IOException(MessageFormat.format("Unsupported media type ''{0}''", mediaType));
                 }
                 RestWriter restWriter = restService.getRestWriter(writer, context);
diff --git a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/rest/RestService.java b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/rest/RestService.java
index eee7c09..1b3c265 100644
--- a/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/rest/RestService.java
+++ b/org.eclipse.skalli.api/src/main/java/org/eclipse/skalli/services/rest/RestService.java
@@ -12,8 +12,6 @@
 
 import java.io.Writer;
 
-import org.restlet.data.MediaType;
-
 /**
  * Interface for a service that provides writers for REST resources.
  */
@@ -21,11 +19,12 @@
 
     /**
      * Returns <code>true</code>, if there is a suitable REST writer available
-     * for the given media type.
+     * based on the HTTP action and media type found in the given request context.
      *
-     * @param mediaType  the media type, for which to retrieve a REST writer
+     * @param context  the request context providing the source/target media type,
+     * HTTP action and additional request parameters.
      */
-    public boolean isSupportedMediaType(MediaType mediaType);
+    public boolean isSupported(RequestContext context);
 
     /**
      * Retrieves a REST writer for the given media type.
diff --git a/org.eclipse.skalli.core/src/main/java/org/eclipse/skalli/core/rest/RestComponent.java b/org.eclipse.skalli.core/src/main/java/org/eclipse/skalli/core/rest/RestComponent.java
index 1437630..d569cb5 100644
--- a/org.eclipse.skalli.core/src/main/java/org/eclipse/skalli/core/rest/RestComponent.java
+++ b/org.eclipse.skalli.core/src/main/java/org/eclipse/skalli/core/rest/RestComponent.java
@@ -24,7 +24,8 @@
 public class RestComponent implements RestService {
 
     @Override
-    public boolean isSupportedMediaType(MediaType mediaType) {
+    public boolean isSupported(RequestContext context) {
+        MediaType mediaType = context.getMediaType();
         return  MediaType.TEXT_XML.equals(mediaType) ||  MediaType.APPLICATION_JSON.equals(mediaType);
     }