Title:
Implement oData (Open Data Protocol) API via ORM/Hibernate to Produce and Consume oData
| View in TrackerStatus/Resolution/Reason: Closed/Deferred/
Reporter/Name(from Bugbase): Abram Adams / Abram Adams (Abram Adams)
Created: 11/19/2013
Components: ORM Support
Versions: 10.0
Failure Type: Enhancement Request
Found In Build/Fixed In Build: Final /
Priority/Frequency: Trivial / Unknown
Locale/System: English / Linux All
Vote Count: 0
With development trends moving rapidly to mobile platforms (as well as a trend back to thick client paradigms: SPAs, web native OS, Chrome Apps, etc..) and CF's new push to provide some sort of tooling in the mobile space it would be awesome to see us implement oData (http://www.odata.org/) support. The oData protocol is a standardized protocol for creating and consuming data APIs.
Today there are various client-side JS libraries that can talk oData and provide a client side abstraction between locally stored data and remote data. Currently the prominent library is BreezeJS (http://www.breezejs.com/) which can fetch oData from a server and automatically create client-side representations of that model including all relationships and handle the local and remote states of the model with very little effort. Developers can utilize this library to retrieve remote data, cache it locally, persist it back to the serve and query the local and/or remote data using a very well constructed query syntax, i.e:
var query = EntityQuery.from("Customers").where("CompanyName", "startsWith", "A");
(see http://www.breezejs.com/documentation/query-examples for more)
The BreezeJS library handles the communication between the local model and the remote model making it much easier for a developer to write their application. It removes the need to manually duplicate your model classes locally and will always reflect your server side model. This is an over-simplified description of these technologies, so please check out the aforementioned links for in-depth features.
This feature request would add oData support to our CF-ORM/Hibernate models, and can perhaps be accomplished with relatively little effort by leveraging the existing oData4j project (https://code.google.com/p/odata4j/) or the Apache Olingo (currently in incubator stage http://olingo.incubator.apache.org/). There are samples available of using oData4j on top of Hibernate, so it's already being done in the Java world.
This feature would not be limited to mobile development, or to BreezeJS as it would also lend itself to interaction with other remote services that produce/consume oData (ebay, just about any Microsoft platform, Stack Overflow, etc...). This is the type of feature that would put CF in a space where developers have either never heard of CFML or think of it as not relevant in today's tech stacks.
NOTE: The idea of this feature would be to simply produce/consume oData and to provide the server side functionality to do so via Hibernate/Entity CFCs, not to do anything on the client side. This should bridge the gap between server and client - not blur the lines.
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3671657
External Customer Info:
External Company:
External Customer Name: Abram Adams
External Customer Email:
External Test Config: My Hardware and Environment details:
Attachments:
Comments: