[jboss-as7-dev] Modules and hidden packages

David M. Lloyd david.lloyd at redhat.com
Tue Apr 2 11:47:15 EDT 2013


There is a mechanism in JBoss Modules to support packages which are not 
visible to consumers of a module.  The idea is to come up with an easy 
convention so that we can put module-private APIs and classes in one 
place that is visible from multiple packages, without exposing or 
documenting these packages.

Until 1.2, the only way available to do this for statically defined 
modules was to add an export filter in your module.xml via the <exports> 
element to exclude the specific package directories that are hidden.

Starting in 1.2, you can also create a series of packages whose first 
segment is "_private".  These packages will automatically be excluded 
from the exported paths list.

What I'd like to propose is:

1) For any given module, all generated JavaDoc should exclude packages 
under the _private hierarchy.
2) For any module which does i18n logging, all logging messages should 
be consolidated in one or more (but preferably one) interface(s) stored 
in a public _private.org.yourproject.YourInterface.
3) Once the new name is announced, I think we should break up our main 
logging IDs into per-subsystem categories.  For example, "XXEE" for EE, 
"XXEJB" for EJB, etc., each with their own numerical space and message 
interface.  These two changes should put an end to our log message ID 
fragmentation problems and give us a (one-time only!) chance to clean up 
this mess.
4) Projects that wish to exploit this mechanism can do so, noting that 
they should use "_private.org.yourproject" as a package prefix instead 
of just putting things directly under "_private" (to avoid conflicts 
when JARs are used on a flat class path).

Flame on!

-- 
- DML


More information about the jboss-as7-dev mailing list