Coherence Features to plan
For now this is just growing collection of ideas which later will be prioritized and put into a plan.
F01: Coherence Library
IDE should provide Coherence Libraries (jar and Javadoc) for all Coherence Java API relevant on client side (server side jars can be omitted). Provide would perhaps mention that the library will be created when any Coherence server is registered in the IDE. For every registered Coherence platform/server version should be new library with appropriate version label created.
If fine granularity is needed a several libraries might need to be provided:
- "Coherence Library" (coherence.jar)
- "Coherence JPA Integration Library" (coherence-jpa.jar)
- "Coherence Transaction Library"
That way user can add to project classpath whatever is required. Alternative to consider it to have just one library bundling all Coherence relevant jars.
F02: NetBeans Project integration
Enabling Coherence in a NetBeans project means adding the Coherence library to project classpath. Initially no extra support is provided apart from Coherence New File Wizards checking presence of Coherence library in project and modifying project classpath automatically if Coherence Library is missing. Later a more tight integration can be provided, eg. by adding Coherence panel to project's properties where user could enable/disable Coherence support in project.
F03: New File Wizards
New file wizards for common Coherence artifacts are available, eg. Entry Processor, Portable Object, POF Serializer, Aggregator, Cache Config, Coherence Config, POF Config, etc.
If the required Coherence Library is missing in the project classpath, the file wizards provide UI that allows the user to add it.
The file wizards automatically update Coherence configuration files, eg. new Portable Object should be registered in POF configuration file.
F04: Java Editor
Several new code inserts are defined and automatically available in Coherence enabled projects (that is projects which has Coherence Library on classpath): Create POF Serializer, Create Portable Object Methods, etc.
"Inject NamedCache" code insert showing dialog with list of all named caches in case Coherence*Web/ActiveCache is enabled/available in the project.
Code completion in 'mappedName' attribute in @Resource annotation on NamedCache objects lists known cache names.
Editor hints wherever possible.
Coherence is highly customizable through several configuration files. These configuration files can override each other and their placement on project classpath is important. A configuration file overriding some base settings can specify only the subset of settings which it is overriding and omit everything else therefore inheriting it from base configuration. Most of the settings can be also changed via system properties.
Presentation and editing of these configuration files is simplified:
- show Coherence configuration files for example under 'Configuration Files' in Web/EE projects
- New File wizards for common configuration files
- smart code completion
- GUI editor
- configuration validation/warnings/hints (eg. warn if cache, service, schema names are not unique)
- ability to override settings via system properties (execution of coherence from J2SE project)
- etc. TBD
F06: Sample projects
Sample projects from Coherence distribution should be available in the IDE as NetBeans projects and should be listed in New Project -> Samples category.
F07: Coherence*Web web framework
Coherence*Web feature is provided as NetBeans Web Framework. Adding it to a Web Project results in:
- addition of required Coherence jars to project classpath. The placement of these jars must be configurable - based on desired cache visibility they might be stored in WAR or (in case Web Project is part of EAR) in EAR.
- modification of web.xml
- modification of server specific deployment descriptors
F08: Coherence Server
Main step would be to rewrite Coherence Server to External Execution API which would allowed handle Coherence server in standard way and it would resolve synchronisations and streams locking issues.
Server start/stop. Perhaps an action to open JMX console for the server?? (not sure how handy it is during development)
F09: Coherence Console
It would be nice to have a Coherence Console in IDE in which user can interact and evaluate cache content. The result would be the same as if users starts Coherence Cache server from command line.
Coherence tutorial for NetBeans should illustrate how Coherence integration in NetBeans works. Such tutorial could start as simple as creating a Coherence cache in J2SE app and advanced to Coherence*Web running outside of application server (a setup where you can demonstrate that restarting server does not have impact on HTTP session). Or JPA cache over Coherence.
F11: Maven Support?
Not fully sure if will be possible to improve work for Maven based projects because Coherence is not available to download from Maven repositories. Anyway we should take a look on this point later again if there wouldn't be something to support. (at least running of Maven based projects should be similar to Ant one)
F12: License Handling
If the Coherence library could be included into standard distribution it's needed to follow license conditions (e.g. some license confirmation by starting the IDE or by running the installer).