Hi Andi,

Thanks for opening the ticket.  I don't know that the hidden attributes
would cause an error in the generated client; I haven't gotten as far as
testing it because I couldn't get code that sufficed.  The generated client
just doesn't have access to the object id that is required for invoking an
object's actions.

As for a work-around - I don't see where I'd get the object id from, so I
can't readily put it in a read-only property.  If you can point me to where
I'd get, for example, "i_1" from an object with a single integer primary
key, then I could make such a property.  Otherwise, it'll be a bit more of
a kludge to code the property to return "i_" + this.id or have a
DomainService action that takes the primary key among its arguments.

Thanks again!
Brian

On Tue, Aug 28, 2018 at 9:45 PM Andi Huber <[email protected]> wrote:

> We are tracking this issue [1] now.
>
> [1] https://issues.apache.org/jira/browse/ISIS-1975
>
> On 2018/08/24 08:38:12, Johan Doornenbal <[email protected]>
> wrote:
> > Hi Brian,
> > Ah, sorry for responding to quickly. I clearly missed your point.Indeed
> all the
> > $$xxx properties are not in the example response like you
> indicate.However, at
> > the moment I am not aware of the reason why it is implemented this
> way...(My
> > guess would be the different representation types)
> > Maybe somebody else has thoughts on this?
> > grtz Johan
> >
> >
> >
> >
> >
> > On Thu, Aug 23, 2018 10:57 PM, Brian K [email protected]  wrote:
> > Hi Johan,
> >
> >
> >
> >
> > Thanks for the reply. In using the REST API from a csharp application, I
> >
> > want to be able to generate a client stub and code to that. This is what
> >
> > Swagger Codegen is made for. For the Apache Isis REST implementation, I
> >
> > notice the following:
> >
> >   1. All the domain object actions are represented by REST operations
> >
> > that take the object's instanceId as the first argument. This is a string
> >
> > that for an integer primary key is something like "i_1". I see this in
> the
> >
> > REST response as either the property "$$instanceId" or the JSON property
> >
> > "instanceId" above the "members" property.
> >
> >   2. This instanceId is not in the Swagger specification generated by
> >
> > Isis. When I load the specification (from the prototyping menu) into
> >
> > https://editor.swagger.io/, the response example it creates for the
> action
> >
> > does not include the $$instanceId property that is there when I call that
> >
> > endpoint on the Isis application. This is true for each schema I download
> >
> > (public, private, private with prototyping).
> >
> > Therefore, the client generated by codegen is not useable without falling
> >
> > back to looking directly at the JSON of the REST operation response.
> >
> >
> >
> >
> > It may be a good idea to include the instanceId in the generated
> >
> > specification so that these actions can be called from generated clients.
> >
> > I could add a read-only property to return the instanceId, but I am
> hoping
> >
> > there is a better way.
> >
> >
> >
> >
> > Thanks,
> >
> > Brian
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Wed, Aug 22, 2018 at 10:48 PM Johan Doornenbal <[email protected]>
> >
> > wrote:
> >
> >
> >
> >
> > > Hi Brian,
> >
> > > The restful objects viewer implemented in Apache Isis and exposed by
> >
> > > swagger-ui
> >
> > > implements the restful objects spec 1)
> >
> > > The basic idea is that you can 'discover' the domain.In the case of
> simple
> >
> > > app:
> >
> > > you can start out with
> >
> > > curl -X GET --header 'Accept: application/json' --header
> 'Authorization:
> >
> > > Basic
> >
> > > c3ZlbjpwYXNz'
> >
> > >
> >
> > >
> >
> '[YOUR_BASE_URL]/restful/services/simple.SimpleObjectMenu/actions/listAll/invoke'
> >
> > > That will give you among others the oid's.
> >
> > > Then update name can be done by
> >
> > > curl -X PUT --header 'Content-Type: application/json' --header 'Accept:
> >
> > > application/json' --header 'Authorization: Basic c3ZlbjpwYXNz' -d '{ \
> >
> > > "name" :
> >
> > > { \ "value" : "some new name" \ } \ }'
> >
> > >
> >
> > >
> >
> '[YOUR_BASE_URL]/restful/objects/simple.SimpleObject/0/actions/updateName/invoke'
> >
> > >
> >
> > > Grtz Johan
> >
> > >
> >
> > > 1) http://isis.apache.org/guides/ugvro/ugvro.html#__ugvro
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > > On Wed, Aug 22, 2018 11:15 PM, Brian K [email protected] wrote:
> >
> > > Hello,
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > > I see by using the Swagger-UI that the REST view is usable by
> inspecting
> >
> > >
> >
> > > the JSON. For instance, I can get an object via the GET url, and then
> >
> > >
> >
> > > execute an action on it by looking at the "$$instanceId" member to
> fill in
> >
> > >
> >
> > > the action string argument that is needed for its actions: "objectID".
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > > But, swagger-codegen seems to ignore this attribute. Maybe it's
> because it
> >
> > >
> >
> > > starts with $$ and is not a part of the generated swagger
> specification.
> >
> > >
> >
> > > Using a generated client stub (I tried both "java" and "csharp"
> >
> > >
> >
> > > generators), I don't see a way of finding out the objectID string
> needed to
> >
> > >
> >
> > > execute the object's actions.
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > > Has anyone been able to execute actions from a REST client generated by
> >
> > >
> >
> > > swagger codegen? For instance, in SimpleApp archetype, can you execute
> the
> >
> > >
> >
> > > UpdateName action of SimpleObject? Is there a basic piece I'm missing?
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > > Thank you,
> >
> > >
> >
> > > Brian
>

Reply via email to