diff --git a/src/main/java/de/cismet/cids/server/ws/rest/RESTfulSerialInterfaceConnector.java b/src/main/java/de/cismet/cids/server/ws/rest/RESTfulSerialInterfaceConnector.java index 9d0c415c..dc1ba71d 100644 --- a/src/main/java/de/cismet/cids/server/ws/rest/RESTfulSerialInterfaceConnector.java +++ b/src/main/java/de/cismet/cids/server/ws/rest/RESTfulSerialInterfaceConnector.java @@ -62,6 +62,7 @@ import de.cismet.cids.server.search.CidsServerSearch; import de.cismet.cids.server.ws.SSLConfig; +import de.cismet.cidsx.server.api.types.GenericResourceWithContentType; import de.cismet.cidsx.server.search.builtin.legacy.LightweightMetaObjectsByQuerySearch; import de.cismet.netutil.Proxy; @@ -2277,7 +2278,20 @@ public Object executeTask(final User user, } try { - return getResponsePOST("executeTask", queryParams, Object.class); // NOI18N + final Object response = getResponsePOST("executeTask", queryParams, Object.class); // NOI18N + + // ensure backwards compatilbity of RestApiCidsServerAction, unwrap GenericResourceWithContentType + if ((response != null) && GenericResourceWithContentType.class.isAssignableFrom(response.getClass())) { + final GenericResourceWithContentType reponseWithContentType = (GenericResourceWithContentType) + response; + if (LOG.isDebugEnabled()) { + LOG.debug("unwrapping response of type '" + reponseWithContentType.getContentType() + + "' of action '" + taskname + "'"); + } + return reponseWithContentType.getRes(); + } + + return response; } catch (final UniformInterfaceException ex) { if (LOG.isDebugEnabled()) { LOG.debug("exception during request, remapping", ex); diff --git a/src/main/java/de/cismet/cidsx/client/connector/RESTfulInterfaceConnector.java b/src/main/java/de/cismet/cidsx/client/connector/RESTfulInterfaceConnector.java index b51a0a91..0a88d1c2 100644 --- a/src/main/java/de/cismet/cidsx/client/connector/RESTfulInterfaceConnector.java +++ b/src/main/java/de/cismet/cidsx/client/connector/RESTfulInterfaceConnector.java @@ -2355,6 +2355,7 @@ public Object executeTask(final User user, + webResource.toString()); } + // FIXME: Fails if the action does nor return APPLICATION_JSON builder.type(MediaType.MULTIPART_FORM_DATA_TYPE).accept(MediaType.APPLICATION_JSON_TYPE); FormDataMultiPart multiPartData = new FormDataMultiPart(); @@ -2423,6 +2424,7 @@ public Object executeTask(final User user, + taskResult.getContentType() + "'"); } + // TODO: unwrap / deserialize result depending on conent type! return taskResult.getRes(); }