[jsword-devel] OSGi plugin opportunity

DM Smith dmsmith555 at yahoo.com
Mon Dec 11 13:36:16 MST 2006


P. R. B. wrote:
> I think we'll need to identify where exactly the JSword jar and Common 
> jar connect to each other, and probably with BibleDesktop's 
> application jars. I created one RCP plugin for these jars because I 
> didn't see a gain in managing the package relationships. Would we want 
> to export/expose all of their packages or should we consider making 
> some packages private (implementation packages, e.g. 
> o.c.j.book.filter.gbf, come to mind)?

Common.jar provides the following:
gnu.gpl and gnu.lgpl - These are merely class representations of the GNU 
licenses. They are used for displaying the license to a user within an 
application.
o.c.c.activate - is used within jsword's implementation of a 
o.c.j.book.sword.AbstractBackend and o.c.j.book.index.lucene.LuceneIndex 
to help facilitate memory management.
o.c.c.config - is used for managing user level options. Used within 
BibleDesktop, via common-swing.jar but not within JSword. This probably 
won't be used when BD is re-written to use RCP/SWT/JFace as Property 
Pages make more sense.
o.c.c.crypt - contains the cipher algorithm used to lock/unlock Sword 
modules. Used by o.c.j.book.sword.*.
o.c.c.history - a rather poor attempt to support history navigation 
within BD. Use within BD via common-swing.jar, but not within JSword. 
This needs to be fixed to be more robust.
o.c.c.progress - Job management. Used within JSword and BibleDesktop for 
background tasks and their asynchronous communication to the client.
o.c.c.util - a mish-mash of various functionalities in JSword and 
BibleDesktop. Most notably:
    Messaging
    Exceptions
    Logging
    Reporting
    Resource lookup
    simple utilities
o.c.c.xml - XML document management and a "plugin" for a "Converter" 
(mentioned in previous post in thread)

The reason that common is not part of jsword is more one of 
partitioning. We saw the functionality of common being independent of 
JSword and being useful to any Java application.

The same is true wrt bibledesktop and common-swing.

The dependency tree for BibleDesktop
bibledesktop.jar
    common.jar
    common-swing.jar
       common.jar
    jsword.jar
       common.jar

With regard to exposing packages it is important to understand the 
packaging philosophy in JSword:
Book:
o.c.j.book - The Book API
o.c.j.book.basic - An abstraction of the Book API. Only 
DefaultBookMetaData is expected to be seen by clients.
o.c.j.book.readings - private implementation
o.c.j.book.sword - private implementation

Key:
o.c.j.passage - The Key API

Versification:
o.c.j.versification - The Versification API (currently this is only the 
KJV v11n, but it will be changed to an Interface and a private 
implementation)

Filter:
o.c.j.book.filter - The Filter API
o.c.j.book.filter.gbf - private implementation
o.c.j.book.filter.osis - private implementation
o.c.j.book.filter.plaintext - private implementation
o.c.j.book.filter.thml - private implementation

Install:
o.c.j.book.install - The Install API
o.c.j.book.install.sword - private implementation

Index:
o.c.j.index - The Index API
o.c.j.index.query - The Query API
o.c.j.index.search - The Search API
o.c.j.index.lucene - private implementation

Utilities:
o.c.j.util - Miscellaneous capabilities that are here as opposed to o.c.j
   
   




More information about the jsword-devel mailing list