NetBeans 6.0 FCS REST Support Engineering Plan

This is the FCS engineering plan for the RESTful service support in NetBeans 6.0.


Since FCS has a short release cycle (code freeze on Nov 3), we will concentrate on a select few features we would like to improve and, of course, fixing bugs. Here are the high-level requrements:

  • More partner service integration (Amazon S3, etc)
  • Improve the component code generation infrastructure
  • Improve query support for resource classes generated from entity classes
  • Improve our converters to allow more information to be returned on demand
  • Switch to Jersey 0.4 release
  • Switch to using ant script build extension and LookupProvider

Functional Specifications

This section provides high-level functional descriptions of the requirements. For features requiring more detailed specifications, we will add them here as they become available.

Partner Services

We need to work on incorporating more components into our component palette such as Amazon S3, Flickr, etc. One way to this is to create hand-crafted wadl files for these services and then use our existing code generation infrastructure to generate the wrapper services from these wadl files.

Improve Component Code Generation Infrastructure

This requirement goes hand in hand with the first requirement. Currently, our infrastructure for generating wrapper services can only generated GET HTTP methods. For some services, this is not sufficient. For example, Amazon S3 services supports the basic CRUD operations so in order to support these types of services, we need to expand the existing code generation facility to also generate HTTP methods for PUT, POST and DELETE. We will need to enhance our component.xml to let users specify which operation is mapped to which HTTP methods. The same concept can be extended to WSDL-based services. For example, some operations for WSDL-based services perform updates instead of retrieving information and should be generated as PUT methods.

Another deficiency is that for Google AdSense components, there are some custom code for configuring the look-and-feel that needs to be hand coded by users. We should generate this custom code automatically so users can easily modify it. To do this, we need to allow some template code to be specified in the component.xml which can be generated as part of the wrapper service. This is similar to what we do with custom components such as Google Map.

Improve Query Support

We need to allow users to specify query on the URI to constrain the result set. Microsoft Astoria supports queries in each segment of the URI. We will probably go that far. Instead, we will allow users to specify the query for the collection resource in the last segment of the URI. We will use the JPA query syntax for the constraint with certain keywords substituted. For example, we need to replace "=" with "eq" since "=" has special meaning in an URI.

Improve Representation Converters

We need to enhance our converter layer to allow users to specify whether to expand date or not. Currently, the representation of a container resource is a collection of references to the actual resources. We should provide a query parameter to let the user decide whether to include all the information in the reference or not.

The difficulty with supporting this is that jaxb is static and we need to figure out a way to dynamically change what gets serialized by jaxb.

Switch to Jersey 0.4 Release

The 0.4 release of Jersey should be available on November 2.

Switch to Using Ant Build Extension

Currently, we have a dependency between the web project and our rest api module. Furthermore, we have REST-specific code in the web project. Now that we are nearing FCS, if we do not remove this dependency and code from the web project, we will not be able to make any more changes in this area in the future. To avoid this, we need to switch to using the ant script extension and LookupProvider interface.

QE Plan


Documentation Plan



  • REST implementation in Jersey.



Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo