EclipseLink Extensions Incubator
This incubator will allow the development of extensions to EclipseLink that illustrate to users how similar extensions can be written.
This incubator is not intended to be a catch-all but to specifically deal with EclipseLink's public extension points allowing common extensions to be shared. Some of these extension points include:
- Database Platforms
- Expression Operators
- Event Listeners
- Query Re-directors
- Server Platforms
- Descriptor policies
Each extension will be maintained in its own project with self contained test cases to illustrate and verify its usage. EclipseLink users can then use these extensions as per their EPL/EDL licensing terms.
Promoting an Extension Project
Over time extensions in this incubator may be migrated into core functionality. The basic criteria for promoting include:
- Committers agree that the functionality is valuable to the user community and there is enough interest among the committers to support the functionality. This will require a vote of the current committers with at least 5 positive votes and no negative votes.
- The functionality in the extension project passes a design review of committers with any issues raised addressed
- There exists reasonable test cases, JavaDoc comments, and usage documentation to simplify its promotion
At that time the associated wiki content will be updated to include migration instructions to upgrade to the shipped implementation.
Database Platform Promotion
For a contributed DatabasePlatform to be included in EclipseLink it should pass some basic tests and provide detailed documentation about what can be expected to work on the contributed database platform.
Basic Test Suites required for inclusion
In order to be included in the product it must be possible to run our SRG tests without failures. Failures can be avoided by either making tests pass, or assessing failures and determining that a test cannot be made to pass because of limitations on the platform and altering the tests not to run for that platform.
The following suites must run without failures.
- Core SRG
- JPA SRG
Functionality Check List
In addition to passing SRG testing, a platform must be accompanied by documentation of what is expected to work. A check list of features must be included in the class comment that indicates that testing status of the following EclipseLink functionality. Testing Status could be one of the following - Succeeds, Succeds with Limitations, Fails, Untested
The following is the list of features and the tests that should be run to test the functionality. To say the feature works, the accompanying test should run successfully.
- DDL Generation - test list under construction
- Outer Join - test list under construction
- Subquery - test list under construction
- Stored Procedure Calls - test list under construction
- Stored Procedure Generation - test list under construction
- Native Sequences/Identitier fields - test list under construction
- JPA Bulk Update/Delete - test list under construction
- Batch Reading - test list under construction
- Batch Writing - test list under construction
- Pessimistic Locking - test list under construction
- First Result/Limit - test list under construction
- Expression Framework - test list under construction
- Delimiters - test list under construction
- Auto Detection - test list under construction
Note: If a contributed DatabasePlatform replaces an existing DatabasePlatform, it must have a better success rate in our testing than the existing DatabasePlatform and pass all the tests the previous DataasePlatform passed
The following is a template for the class comment for a contributed platform:
/** * FooPlatform * Contributed and supported by: FooCompany * Contributed under bug: xxxxxxxx * @author authorName * @since EclipseLink 1.0 * * Developed on FooDB version 1.0 * SRG Passes on FoodDB version 1.1, 1.2, 2.0 * * Feature Testing * --------------- * - DDL Generation - Succeeds * - Outer Join - Succeeds * - Subquery - Succeeds with Limitations * - Stored Procedure Calls - Untested * - Stored Procedure Generation - Untested * - Native Sequences/Identitier fields - Succeeds with Limitations * - JPA Bulk Update/Delete - Succeeds * - Batch Reading - Succeeds * - Batch Writing - Fails * - Pessimistic Locking - Succeeds with Limitations * - First Result/Limit - Succeeds * - Expression Framework - Succeeds with Limitations * - Delimiters - Succeeds * - Auto Detection - Succeeds * * Additional Functionality * ------------------------ * - Additional Expression Operators: operator1, operator2 * * Limitations * ----------- * - Subqueries with joins to the outer query are not supported * - Identity fields are not supported * - Pessimistic Locking with WAIT is not supported * - JPQL Simple Case is not supported * - Date Arithmetic is not supported in expressions */
Certification of a DatabasePlatform for a particular release requires that our full suite of tests is run successfully against that DatabasePlatform with the bits for that release. Generally, that means the following tests run without errors:
- Core LRG
- JPA LRG
- Server testing on at least one Java EE server
We would like to set up a way of building a regression test suite for each database platform that contains just the tests that are expected to pass.
Extension Usage Tracking
Each project in this incubator should have its own bug associated so that users of the extension can add themselves to the cc list and therefore be notified of enhancements and migration of functionality into the project's distributed bundles/JARs. The users copied on an extension incubator bug and votes cast for the bug will be used to help judge the community interest in a given project.
Support for Extensions
The support for these extension incubator projects is limited. It is recommended that issues encountered be raised in the bug.
The following are the current extension projects maintained in this incubator.
|Bug||Committers||Description||Comments or Wiki link|
|bug 273057||Nested Fetch Group||dclarke||Extended FetchGroup implementation supporting specifying a FetchGroup for related objects where the relationships are LAZY. details|
|bug 288307||Fetch Plan||dclarke, ssmith||Custom query redirector that allows the specification of required related objects that are forced to be loaded before the query result is returned. details|
|bug 288363||GraphInvalidationListener||dclarke||A SessionEventListener that processes query results ensuring that the graph returned does not contain invalid objects. details|
|bug 253682||Ingres Platform||tware|| Custom database platform provided by vendor. details|
|bug 284657||MaxDB Platform||tware|| Custom database platform provided by community member. details|
|bug 215079||H2 Platform||tware|| Custom database platform provided by community member. details|
|bug 248205||DB2 AS400 Platform||tware|| Custom database platform provided by community member. details. |
|bug 287167||NetWeaver Platform||tware|| Custom server platform provided by vendor. details |
|bug 288715||Symfoware Platform||tware|| Custom database platform provided by vendor. details |