Hello,

Just wondering, is this feature available in apache Isis 1.10.0? I tried to 
follow a link, but it issues an error "not a string". It would help a lot with 
my client application if I can eagerly load links (parent - child ) just like 
in the video.

This link works ok and shows value.href values with its link:
http://localhost:8080/restful/objects/simple.BusinessLocation/1/collections/itemBusinessLocations

The this one:
http://localhost:8080/restful/objects/simple.BusinessLocation/1/collections/itemBusinessLocations?x-ro-follow-links=value.href

issues:

{
className: "java.lang.IllegalArgumentException",
message: "is not a string",
stackTrace: [
"org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation.checkValue(JsonRepresentation.java:1712)",
"org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation.getString(JsonRepresentation.java:964)",
"org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation.asString(JsonRepresentation.java:957)",
"org.apache.isis.viewer.restfulobjects.applib.util.Parser.valueOf(Parser.java:64)",
"org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest$RequestParameter.valueOf(RestfulRequest.java:93)",
"org.apache.isis.viewer.restfulobjects.server.ResourceContext.getArg(ResourceContext.java:240)",
"org.apache.isis.viewer.restfulobjects.server.ResourceContext.init(ResourceContext.java:135)",
"org.apache.isis.viewer.restfulobjects.server.ResourceContext.<init>(ResourceContext.java:125)",
"org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.init(ResourceAbstract.java:120)",
"org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.init(ResourceAbstract.java:87)",
"org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside.accessCollection(DomainObjectResourceServerside.java:286)",
"sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
"sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"java.lang.reflect.Method.invoke(Method.java:497)",
"org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)",
"org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)",
"org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)",
"org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)",
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)",
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)",
"org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)",
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)",
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)",
"javax.servlet.http.HttpServlet.service(HttpServlet.java:790)",
"org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:816)",
"org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1684)",
"org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:41)",
"org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667)",
"org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:307)",
"org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667)",
"org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52)",
"org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667)",
"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.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1667)",
"org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)",
"org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
"org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)",
"org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)",
"org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1114)",
"org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)",
"org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)",
"org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1048)",
"org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
"org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)",
"org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)",
"org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)",
"org.eclipse.jetty.server.Server.handle(Server.java:517)",
"org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302)",
"org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)",
"org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)",
"org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)",
"org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)",
"org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)",
"org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)",
"org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)",
"org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)",
"java.lang.Thread.run(Thread.java:745)"
],
causedBy: null
}

Cesar.

-----Original Message-----
From: Dan Haywood [mailto:d...@haywood-associates.co.uk]
Sent: Wednesday, November 11, 2015 8:45 AM
To: users
Subject: Re: Restful objects list action result with domain object 
representation instead of links

It would.  I'll look into it.

Thx
Dan


On 11 November 2015 at 14:43, Willie Loyd Tandingan <tandingan....@gmail.com
> wrote:

> Hey Dan,
>
> I just tried it and works great for domain object, properties, collections!
>
> Is it possible to extend it also for action results? Our use case
> involves search actions (with keywords, or all) returning lists that
> need to be displayed in a grid.
>
>
> Many thanks,
> Willie
>
> On Tue, Nov 10, 2015 at 2:26 AM, Dan Haywood
> <d...@haywood-associates.co.uk
> >
> wrote:
>
> > Hi Willie,
> >
> > Edit:this was in my drafts, forgot to send! Don't think it says
> > anything you didn't work out already...
> >
> > just following up, I've got the x-ro-follow-links stuff working to
> support
> > the eager loading of either collections, or of parent references; ie
> > ISIS-1232 and ISIS-1233.  My original plan for x-ro-follow-links was
> > to make it fully generic, but that's a lot of testing without
> > necessarily
> any
> > real use case.  So I think I'm going to descope it just to support
> > your
> use
> > cases.
> >
> > To explain how to use this feature I've recorded a screencast [1]
> > which uses the kitchensink app [2]
> >
> > If you want to try this out, you'll need to checkout the ISIS-1232
> > branch and build locally.
> >
> > Feedback welcome!
> >
> > Thx
> > Dan
> >
> > [1] https://youtu.be/hSKnqqBQ7Zo
> > [2] https://github.com/isisaddons/isis-app-kitchensink
> > Hi Willie,
> >
> > I admit I haven't thought about any of this too much over and above
> what's
> > in the spec (that I wrote a *long* time ago).  I just wanted to
> > commit myself mentally to doing this stuff soon.
> >
> > I know that some of this stuff has been implemented on Naked
> > Objects.NET, so I will check with those guys (Richard and Stef) to
> > see how they did
> it.
> >
> > But if you have ideas, please feel free to comment on the tickets raised.
> >
> > Thx
> > Dan
> >
> >
> >
> > On 4 November 2015 at 16:57, Willie Loyd Tandingan <
> > tandingan....@gmail.com>
> > wrote:
> >
> > > That's great to hear!
> > >
> > > I'm pretty curious on how x-ro-sort-by, x-ro-page, and
> > > x-ro-page-size
> > will
> > > be implemented. Will these parameters be acquired from a request
> > > scoped service or something like an action invocation context? How
> > > about the properties for the paged collection e.g. total number of
> > > records, page number, size, etc.?
> > >
> > > On Tue, Nov 3, 2015 at 8:31 AM, Dan Haywood <
> > d...@haywood-associates.co.uk>
> > > wrote:
> > >
> > > > I've raised ISIS-1232, ISIS-1233, ISIS-1234 and ISIS-1235 for these.
> > > I'll
> > > > aim to implement the first two (x-ro-follow-links, table grids)
> > > > in
> > > 1.11.0.
> > > >
> > > > Thx
> > > > Dan
> > > >
> > > > https://issues.apache.org/jira/browse/ISIS-1232
> > > > https://issues.apache.org/jira/browse/ISIS-1233
> > > > https://issues.apache.org/jira/browse/ISIS-1234
> > > > https://issues.apache.org/jira/browse/ISIS-1235
> > > >
> > > >
> > > > On 15 October 2015 at 22:26, Dan Haywood <
> d...@haywood-associates.co.uk
> > >
> > > > wrote:
> > > >
> > > > > OK, I can focus on those sections, as and when I get the chance.
> > > > >
> > > > > IIRC, I did implement some of the x-ro-follow-links stuff, but
> > > > > it
> > must
> > > > > have been over 2 years ago, so I forget the details as to how
> > > > > to
> make
> > > it
> > > > > work exactly.  Some slightly odd xpath-like syntax, I think.
> > > > >
> > > > > Thx
> > > > > Dan
> > > > >
> > > > > On 14 October 2015 at 19:29, Willie Loyd Tandingan <
> > > > > tandingan....@gmail.com> wrote:
> > > > >
> > > > >> Hello Dan,
> > > > >>
> > > > >> The short answer is no.  I'm not averse to enhancing this
> > > > >> with
> > > > extensions
> > > > >> > as they make sense.
> > > > >> >
> > > > >> > But the longer answer is that there a couple of SPI
> > > > >> > services
> that
> > > > allow
> > > > >> you
> > > > >> > to customize the representations, [1], [2].  The default RO
> > > > >> representations
> > > > >> > are performed by an implementation of [1].
> > > > >> >
> > > > >> > Eventually I'm thinking that Isis might provide
> > > > >> > out-of-the-box implementations for HAL, Collection+JSON,
> > > > >> > Siren etc... but you
> > might
> > > > >> find
> > > > >> > that your client-side (Javascript?) widget UI libraries
> > > > >> > work
> best
> > > with
> > > > >> some
> > > > >> > other more "adhoc" representations.
> > > > >> >
> > > > >> > What these SPI services *don't* allow is for the resources
> defined
> > > by
> > > > RO
> > > > >> > (or their input JSON) to change.  I don't see any
> > > > >> > particular
> need
> > to
> > > > >> > customize this, though.
> > > > >> >
> > > > >>
> > > > >> I think I saw ContentMappingService being used in ToDoApp.
> > > > >> Using
> > those
> > > > >> SPIs
> > > > >> would work, however while going through the Spiro framework
> > > > >> as
> > > discussed
> > > > >> in
> > > > >> the other thread, I saw interesting additional sections in
> > > > >> the RO
> > spec
> > > > >> v1.1.0 about:
> > > > >>
> > > > >> 34.4 Minimizing Round-trips (x-ro-follow-links)
> > > > >> 34.9 Minimizing Round-trips by supporting table grids
> > > > >>
> > > > >> I had skimmed through RO v1.0.0 before and afaik, those
> > > > >> weren't
> > there
> > > > yet.
> > > > >> Those sections, especially 34.9, addresses our need.
> > > > >>
> > > > >> 34.2 Sorting (x-ro-sort-by) and 34.3 Pagination (x-ro-page,
> > > > >> x-ro-page-size)
> > > > >> are also nice to haves.
> > > > >>
> > > > >
> > > > >
> > > >
> > >
> >
>


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

Reply via email to