Date: 2004-08-12T19:17:59
Editor: KenTam <[EMAIL PROTECTED]>
Wiki: Apache Beehive Wiki
Page: Controls/AssemblyAndBinding
URL: http://wiki.apache.org/beehive/Controls/AssemblyAndBinding
no comment
Change Log:
------------------------------------------------------------------------------
@@ -62,15 +62,17 @@
== The Assembly Process ==
-A control implementation declares its desire to participate in the assembly
process via the optional "assemblyClass" attribute on the [EMAIL PROTECTED]
annotation. The class referenced by "assemblyClass" must implement the
{{{ControlAssembler}}} interface.
+A control implementation declares its desire to participate in the assembly
process via the optional "assembler" attribute on the
[http://svn.apache.org/viewcvs.cgi/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/ControlImplementation.java?rev=&root=Apache-SVN&view=markup
@ControlImplementation] annotation. The class referenced by "assembler" must
implement the
[http://svn.apache.org/viewcvs.cgi/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java?rev=&root=Apache-SVN&view=markup
ControlAssembler] interface.
+
Assembly takes place after the control clients have been handled by the
control client processor, and relies on the client manifest (or its moral
equivalent which can be obtained via reflection). All controls referenced by
the client be must completely compiled prior to assembly; in particular, the
assembler classes associated with the control implementations must be compiled
(note for nested controls usage -- "compiled" does not include running
assembly! It does include bean gen).
The assembly process operates on a set of "assembly targets". An assembly
target is any J2EE module that contains 1+ control clients, and represents the
smallest amount of assembly work that can be done. For example, an EJB-based
JWS is an assembly target, and a webapp with several JPFs that use controls is
an assembly target.
-For a J2EE module type to support control clients, there must be provided an
implementation of the {{{ControlAssemblyContext}}} interface, which exposes the
characteristics of the module to the assembly process (ie, providing access to
file system locations so files can be added to the module, providing access to
read/modify descriptors, etc).
+For a J2EE module type to support control clients, there must be provided an
implementation of the
[http://svn.apache.org/viewcvs.cgi/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java?rev=&root=Apache-SVN&view=markup
ControlAssemblyContext] interface, which exposes the characteristics of the
module to the assembly process (ie, providing access to file system locations
so files can be added to the module, providing access to read/modify
descriptors, etc).
{{{
-REVIEW: Consider exposing specific operations like "addEjbLink"
+TBD: Add message logging functionality to ControlAssemblyContext so
implementations can emit diagnostics to assembly tools.
+TBD: Expose more abstract operations like "addEjbRef()" on
ControlAssemblyContext.EJBModule, rather than just raw "getEjbJarXml()".
}}}
The assembly process: