Hi,

I'm wrestling with a service which is going to be called by a
hand-written javascript client (written by others). The client wants to
send something like this:

{
    "urls": [ { "id": "test-1", "url": "http://example.com/abc"; }, { "id": 
"test-2", "url": "http://example.com/def"; } ]
}

and get back 

{
    "urls": [ { "id": "test-1", "url": "http://example.com/ybpnyubftnnfwqs"; }, 
{ "id": "test-2", "url": "http://example.com/63dgjrevlhnsufqw"; } ]
}


The second part was simple. I created

@ViewModel
public class IdentifiedUrl {
    protected String id;
    protected String url;
...

and

@ViewModel
public class UrlList {
    protected Set<IdentifiedUrl> urls;
...

Then, in my domain service, I can create an action:

public UrlList encodeUrls(@Parameter @ParameterLayout(named = "urls") String 
urls)
    HashSet<IdentifiedUrl> responseUrls= new HashSet<IdentifiedUrl>();
    responseUrls.add(new IdentifiedUrl("test-1", 
"http://example.com/102398432313410948710798713028941209374";));
    responseUrls.add(new IdentifiedUrl("test-2", 
"http://example.com/123452309028954723049875023152310239843";));
    return new UrlList(responseUrls);
}

and when called with the header Accept: 
application/json;profile="urn:org.apache.isis/v1", 
returns

{
  "urls" : [ {
    "$$href" : 
"http://localhost:12080/restful/objects/com.example.mas.dom.services.IdentifiedUrl/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8vPg==";,
    "$$title" : "Untitled Identified Url",
    "$$instanceId" : 
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8vPg==",
    "id" : "test-2",
    "url" : "http://example.com/123452309028954723049875023152310239843";
  }, {
    "$$href" : 
"http://localhost:12080/restful/objects/com.example.mas.dom.services.IdentifiedUrl/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8vPg==";,
    "$$title" : "Untitled Identified Url",
    "$$instanceId" : 
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8vPg==",
    "id" : "test-1",
    "url" : "http://example.com/102398432313410948710798713028941209374";
  } ]
}


But regarding the action argument, I don't get anywhere. Can someone
please propose which direction to take? It would be helpful if the JSON
which needs to be posted could be in a 'simple' representation.

Thanks a lot


Kambiz

Reply via email to