On Fri, Sep 13, 2013 at 7:15 AM, Dan Gornstein <[email protected]> wrote:
> All, > > I put up an earlier patch on JIRA-1045 [1] which added widgetTitle to the > RegionWidget rest model and only added it to the response in the pages for > render endpoint. > > This sparked some discussion about adding immutable fields to the Rest > model. While there was some discussion, I don't believe there was a > resolution. > Dan, I thought there was a resolution, or at least a very strong suggestion, to not change the CRUD models but instead provide an alternate read-only data structure to be used for rendering that would have all the data you needed. I will craft up another email with my opinion on data structure. Chris > > I was working more on the angular branch adding a RegionWidget controller > which handles the events on a RegionWidget. Whenever you want to save a > RegionWidget with the angular resource, you need to supply the pageId > because it is in the URL path of the endpoint. It does not make sense to > have to pull this information from somewhere else, because you lose the > feature of being able to call .$save() directly on an instance of an > angular RegionWidget resource, without having to supply additional > information such as $.save(pageId). > > Similarly, when rendering the chrome of a RegionWidget on the page, you > need to have the title to put in the top bar. It again does not make sense > to have to grab this information separately. > > I have created a new patch for both JIRA-1045 [1] and JIRA-1047 [2], which > can be found on the review board [3] > > This patch covers a few different things: > > 1. It adds pageId and widgetTitle to the rest model. > > 2. It sets the pageId and widgetTitle when hitting' /pages/render' endpoint > or a 'pages/id/regions/id/regionWidget/id' endpoint. > > When hitting the '/pages/id' or '/pages/id/regions/id' endpoints those > properties will be null, but this is okay because we plan to make those > endpoints return flat data models in the near future anyways. > > 3. It fills in the update method for the RegionWidget Rest endpoint, which > now also handles being able to move RegionWidgets between pages, regions, > and render order. All you have to do is change these properties on the > RegionWidget object when saving. > > This is where I believe we should 'document' that there are immutable > fields in the form of comprehensive error messages. If you try to change > the widgetTitle when saving to the REST endpoint, it will throw a > BadRequestException with the correct error code and a detailed message > describing the issue. > > What still needs to be added in is error messaging for the move feature, > which will describe what went wrong if changing the page, region, or order > properties incorrectly. I believe this can come later when we strengthen > the REST API. It would be nice to have this feature in the api now to > continue with angular development. > > If there are no strong reservations or better alternate solutions I plan to > apply this patch to trunk and merge it into the angular branch over the > weekend. > > Thanks, > Dan Gornstein > > [1] https://issues.apache.org/jira/browse/RAVE-1045 > [2] https://issues.apache.org/jira/browse/RAVE-1047 > [3] https://reviews.apache.org/r/14125/ >
