OSGI HengSin/Issues
Contents
The Challenge
- This Project is migrating ADempiere to the OSGI framework.
- It will be tougher for everyone else (later, including me) if i do not take the meticulous time writing it all down, in excruciating detail.
- This can be the available historical record of a project in the making as it happens.
- If you have any question go ahead and ask in the discussion tab. I will be glad to answer intelligently (to intelligible questions).
- You can also try asking HengSin himself.
- In all, hope you enjoy reading and following or joining the project as i have. - Redhuan D. Oon
What Is Going On?
Here i record any revision changes of the OSGI HengSin project and issues i discovered which i promptly debug and try to find workarounds, reporting back to the Kenai project for HengSin final consideration. My tasks are:
- Update every revision done in Kenai project into local workspace
- Conduct standard launch of server and client products for OSGI Hengsin/Beta testing.
- Test Java POS creating some sales.
- Test related Invoice accounts posting and display of AccountViewer.
- Test customised Window Tables and print preview.
- Continue testing the builds deployment if not issue at this juncture.
- Document every damn twig i find so the human race may progress.
Issue Tracking
Occasionally some issue happens either due to bug or compatibility with my 360LTS (also constantly udpated from latest SVN trunk). Here i will document what i do to resolve them. Or just the roads i traveled to even comprehend the destination. This is also important as my MacBook may be the only living link between our SVN Trunk and this Kenai project.
- I debug from my Eclipse and put breaks at the suspected sourcecode line of issue.
- I research what the code is trying to do and why the issue occur.
- I attempt a workaround*.
- When the workaround works (if i ever find a workaround), then i prepare an Issue posting to the Kenai project.
- I then wait for HengSin's approval or remedy.
- I study his remedy and then set to document it here. I think i only have time to record my own learning curve. You go and make your own Discovery Channel.
ISSUES
Using Extensions
- Missing PostgreSQL Selection is my maiden issue posting and i am not that proud that its accepted in full by HengSin. It is because i followed his prepared solution for the Oracle connection and merely copied over to the PostgreSQL one.
- The use of OSGI framework of registered extensions is classic here.
- For example, in order to have more DB connections, we need not do it in tightly coupled code, but loosely done by putting them as Extensions.
- This follows the OSGI principle of Tightly Cohesive, Loosely Coupled. If it is hard to imagine, think about your kids' behaviour playing cyber games.
- More graphics here.
Bundles Refactoring
- Protected Class Issue arises when we separate into separate bundle projects that are decoupled from each other.
- Here in the UI Swing bundle, it no longer see the usual protected class/methods even though it imports from the core.report package where those class/methods reside.
- I workaround by moving those class/methods into the UI Swing bundle.
- However HengSin's approach is merely to unprotect those class/methods in the core.report package of the Base bundle. (See Revision 6584).
- There is a suggested fragment solution as described here in Nirmal's Blog
Event Manager
- Event Manager Issue reveals the use of Declared Services (DS) approach to wrap events such as in the case of ModelValidator.
- Here are the code changes in Revision 6596.
- The issue is because this misses a new bundle - org.eclipse.equinox.event which HengSin updated in the target.platform source. So to bring into my instance via org.adempiere.sdk-feature, opening the adempiere.cquery to Resolve and Materialize. However that did not work but using the Resolve to Wizard works.
2Pack Refactoring
- As promised by HengSin, this is a major refactoring effort, and surely it is a goldmine of discovery.
Extensions IDs Matching
- Here the first one i came across is of the same kind as OSGI HengSin/Using Extensions.
- This bug issue reveals the extensive use of such Extensions to loosely couple the call of sub-ElementHandlers.
- Thus an implementer can access the HangleRegistry for such Handlers as registered by the org.adempiere.pipo.handler Extensions.
- The extensions and their IDs can also be read up in the pipoHandler's plugin.xml.
- The issue is caused by some of the IDs as not matching those in the ElementHandlers' classes.
- A patch here shows the matching IDs.
- The 2Pack PackOut.xml is now much better than before. Packout
Sub-Tags UnResolved
- I am now debugging more issues such as sub-tags deferred but not processed, as it hit its next issue here.
- Details of this debugging at OSGI HengSin/2Pack/Debugging.
Missing Rule Element Handler
- As reported in this tracker, there is no RuleElementHandler for Rule that is referred to in the Callout field.
- It is a good example of how to extend the 2Pack using OSGI HengSin/Using Extensions and adapting from other ElementHandlers.
Sub Topic Listing
Footnotes
*Workaround - is a remedy i attempted but to avoid looking silly, i humbly classify all my attempts as 'workarounds', meaning that they could not possibly be the right exact solution. Usually they are not. But at least i told the creator where to look. :)