On Wed, Jul 24, 2013 at 1:14 PM, Dan Haywood
<[email protected]>wrote:

> Hi Bhargav,
> sorry not to get back to you sooner.
>
> couple of things:
> 1. the PUT resource on the object (RO spec 14.2) is for updating ALL
> properties, not just a single one.
> 2. the "complete" property is ALWAYS disabled (you can see that from the
> code [1], and from the arguments map in the representation[2]
> 3. notwithstanding, I think there's a bug in the RO viewer.  I tried
> several different formats for the body [3], [4], [5], but got the same
> error in each case [6]
>
> So, if you want to raise a ticket for this, then either go ahead and fix
> it, or wait for me to do so...
>
Created an issue [1]. Will try to fix it.

>
> In the meantime, you could workaround by doing a PUT to each of the
> individual property resources (per 16.2 of the spec); I believe this is
> working fine.
>
I am getting a 500 now that says that "does not represent map" when a make
a request like [2]. Any help?

Regards
Bhargav

[1] https://issues.apache.org/jira/browse/ISIS-479
[2] PUT /myapp-webapp/restful/objects/TODO/L_0/properties/notes HTTP/1.1
Host: localhost:8080
Accept: application/json
Authorization: Basic c3ZlbjpwYXNz
Cache-Control: no-cache

{ "value": "10/22/2013" }

Result:
{
    "message": "does not represent map",
    "stackTrace": [

"org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation.mapHas(JsonRepresentation.java:1126)",

"org.apache.isis.viewer.restfulobjects.rendering.domainobjects.JsonValueEncoder.asAdapter(JsonValueEncoder.java:359)",

"org.apache.isis.viewer.restfulobjects.server.resources.DomainResourceHelper.objectAdapterFor(DomainResourceHelper.java:313)",

"org.apache.isis.viewer.restfulobjects.server.resources.DomainResourceHelper.parseAsMapWithSingleValue(DomainResourceHelper.java:463)",

"org.apache.isis.viewer.restfulobjects.server.resources.DomainResourceHelper.parseAsMapWithSingleValue(DomainResourceHelper.java:454)",

"org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside.modifyProperty(DomainObjectResourceServerside.java:197)",
        "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",

"sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)",

"sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
        "java.lang.reflect.Method.invoke(Method.java:601)",

"org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)",

"org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)",

"org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)",

"org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)",

"org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)",

"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)",

"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)",

"org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)",

"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)",

"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)",
        "javax.servlet.http.HttpServlet.service(HttpServlet.java:820)",

"org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)",

"org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)",

"org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:315)",

"org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:404)",

"org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)",

"org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)",

"org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)",

"org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)",

"org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)",

"org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)",

"org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)",

"org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)",

"org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)",

"org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)",

"org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)",

"org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)",

"org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)",

"org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)",

"org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)",

"org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)",

"org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)",
        "org.mortbay.jetty.Server.handle(Server.java:326)",

"org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)",

"org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)",
        "org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)",
        "org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)",
        "org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)",

"org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)",

"org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)"
    ],
    "causedBy": null
}

>
> Thx
> Dan
>
>
>
> [1]
> https://github.com/apache/isis/blob/f38fdb92941172eabb12e0943509f239e6d5925f/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java#L219
> [2]
>
> http://localhost:8080/restful/objects/TODO/L_11
> , {
>
>    - members:
>    {
>       - ownedBy:
>       {
>          - memberType: "property",
>          - value: "sven",
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - dueBy:
>       {
>          - memberType: "property",
>          - value: "2013-07-24",
>          - format: "date",
>          - x-isis-format: "jodalocaldate"
>          },
>       - cost:
>       {
>          - memberType: "property",
>          - value: 1.75,
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - notes:
>       {
>          - memberType: "property",
>          - value: null,
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - attachment:
>       {
>          - memberType: "property",
>          - value: null,
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - description:
>       {
>          - memberType: "property",
>          - value: "Buy bread",
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - category:
>       {
>          - memberType: "property",
>          - value: "Domestic",
>          - format: "decimal",
>          - x-isis-format: "bigdecimal"
>          },
>       - complete:
>       {
>          - memberType: "property",
>          - value: false,
>          - x-isis-format: "boolean",
>          - disabledReason: "Always disabled"
>          },
>       - versionSequence:
>       {
>          - memberType: "property",
>          - value: 1,
>          - format: "int",
>          - x-isis-format: "long",
>          - disabledReason: "Always disabled"
>          }
>       }
>
>
>
> [3] this - which is valid according to the spec, I think - didn't work:
> {
>     "cost" : {
>       "value" : 2.75
>     },
>     "description" : {
>       "value" : "An updated description"
>     },
>     "category" : {
>       "value" : "Professional"
>     }
> }
>
> [4] nor did this:
> {
>   "members:" {
>     "cost" : {
>       "memberType": "property",
>       "value" : 2.75
>     },
>     "description" : {
>       "memberType": "property",
>       "value" : "An updated description"
>     },
>     "category" : {
>       "memberType": "property",
>       "value" : "Professional"
>     }
>   }
> }
>
>
> [5] nor did this:
> {
>     "cost" : {
>       "memberType": "property",
>       "value" : 2.75
>     },
>     "description" : {
>       "memberType": "property",
>       "value" : "An updated description"
>     },
>     "category" : {
>       "memberType": "property",
>       "value" : "Professional"
>     }
> }
>
>
> [6]
>
>    1. Status Code: 400
>    2. Server: Jetty(6.1.26)
>    3. Content-Length: 0
>    4. Warning: 199 RestfulObjects Could not find properties list (nomembers
>    [memberType=property]); got {"cost":{"memberType":"property","value":
>    2.75},"description":{"memberType":"property","value":"An updated
>    description"},"category":{"memberType":"property","value":
>    "Professional"}}
>    5. Content-Type: application/json
>
>
>
>
> On 23 July 2013 18:05, Bhargav Golla <[email protected]> wrote:
>
>> Hi Dan
>>
>> I am trying to edit the properties of an object and am following 14.2 in
>> ROSpec to do the same. I tried to make a PUT request to the URL by chagning
>> few properties and putting them into JSON. My request is as follows:
>> PUT /myapp-webapp/restful/objects/TODO/L_0 HTTP/1.1
>> Host: localhost:8080
>> Accept: application/json
>> Authorization: Basic c3ZlbjpwYXNz
>> Cache-Control: no-cache
>>
>> { "complete": { "value": "true" } }
>>
>> But it is giving me a 400 error. Do you have any help here?
>>
>> Regards
>>
>> Bhargav Golla
>> Developer. Freelancer.
>> B.E (Hons.) Computer Science
>> BITS-Pilani
>> Github <http://www.github.com/bhargavgolla> | 
>> LinkedIN<http://www.linkedin.com/in/bhargavgolla>
>>  | Website <http://www.bhargavgolla.com/>
>>
>
>

Reply via email to