On 03/30/2012 04:38 PM, Julien Viet wrote:
Hi Nick,

here are my initial comments remarks

1/ for pagination I see "page=2&per-page=10"  can it work in a reliable manner with concurrency ? (i.e if I go on page 2 and someone added a result meanwhile).
No it cannot unless we keep state on the server. See my discussion point on this, where we can pass a token back to the client which could expire if the collection has changed. Atom spec just says that results are lossy, see http://tools.ietf.org/html/rfc5005#section-3. We may just go with this approach for first iteration.

2/ at some point there will a few improvements in application management, in particular we should have the capability to scope applications per site (like pages and navigations). The current proposal to use

/applications/app-type/app-id

will be an issue as it will not be possible to scope an application to a site.
So we will have applications that are "global" and some that are specific to a site ? I'll have to think about this.

And the existing application registry should be seen as a "parent" registry.
Do you mean instead of /registry/applications it should just be /appregistry ?

3/ for site based API : why do we have the scheme /something/site-type/site-name/foobar and not /sites/site-type/site-name/concern/foobar ?

this would enable to have /applications per site (see remark 2) and have a global /applications for current application registry without conflicts.
This is how I organized the resources for gatein management and something I am interested in hearing from others. I think it makes sense to represent it this way and /pages, etc are more just search views that eventually link to /sites/site-type/site-name/concern/foobar.

So for example /pages = [
   {
       "site-type": "portal"
       "site-name": "classic"
       "page-name": "homepage"
       "link": {
          "href" : "/sites/portal/classic/homepage"
          "rel" : "gtn:page"
       }
   },
   ...
]

4/ the current model for application registry is broken and prevents to do a correct API (java or rest). I want to change that for the next major version, you should be prepared to this change.
We should be able to design the API on how we see this looking right ? In other words the API can be the use case on making the underlying model and implementation better.

Basically an application is seen in the application registry as en entry of /production/app:applications/category/application but the corresponding configuration application is a node under /production/mop:workspace/mop:customizations/application

For instance

"/production/mop:workspace/mop:customizations/mop:Todo"

and

"/production/app:applications/app:Gadgets/app:Todo"

This is broken because an application can be described twice with different data, i.e there can be several entries under app:applications/* that can point to the same customization (the real application).

Worse than that the same application can appear twice in the application registry with different security permissions.

I want to fix this and instead remove the application part of the app:applications.

Instead use mixins to put on a customization to add the data that will describe it (i.e enhance it) with the mixins gtn:described and gtn:protectedresource  we have already in gatein.
The whole customization's thing for the MOP is confusing. Can we not make a generic application that has portlet and gadget mixins and drop the whole customization thing ? I am not too familiar with this and not sure if this even makes sense.

The app:applications would somehow remain but it would be a simple relationship to the customization itself instead of en entity. This would allow the same application to appear in several categories. There would be a new mixin to make an application point to several categories to put on an application. This would provide the many-to-many relationship between application and categories.

That's the only major changes I foresee so far in MOP for the next major version.


On Mar 30, 2012, at 10:00 PM, Nick Scavelli wrote:

The initial draft of the REST API specification is available now https://community.jboss.org/wiki/GateInRESTAPISpecification. I tried to design it as RESTful as possible for now, and we can decide if some complexity that comes with REST is appropriate for the GateIn REST API. For example Twitter's REST API is fairly easy to understand, however some would not call it quite so "RESTful".

Also this specification conflicts with the stuff I've built for GateIn Management, especially the organization of the resources (pages, navigation, etc). However we should be in sync with how the Public Java API is going to expose these resources. For example if I can do api.getPages() as apposed to api.getSite().getPages() then Pages should be a "first class resource".

All feedback is welcome.

- Nick
_______________________________________________
gatein-dev mailing list
gatein-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/gatein-dev