[jboss-cvs] JBossAS SVN: r89824 - in projects/microcontainer/trunk: dependency/src/main/java/org/jboss/dependency/spi/graph and 22 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jun 4 10:20:50 EDT 2009


Author: kabir.khan at jboss.com
Date: 2009-06-04 10:20:48 -0400 (Thu, 04 Jun 2009)
New Revision: 89824

Added:
   projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/package.html
   projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/package.html
Modified:
   projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/GraphController.java
   projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/LookupStrategy.java
   projects/microcontainer/trunk/jmx-aop-mc-int/.classpath
   projects/microcontainer/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceDeployment.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Aliases.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ArrayValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Bean.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/BeanFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Cleanup.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CleanupOnly.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CollectionValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Constructor.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Create.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demand.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demands.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Dependency.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Depends.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Destroy.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/EntryValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstall.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstalls.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalUninstalls.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Factory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/FactoryMethod.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Inject.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Install.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/InstallMethod.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/JavaBeanValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ListValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MCAnnotations.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MapValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/NullValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Parameter.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/SetValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Start.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Stop.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/StringValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supply.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supplys.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ThisValue.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Uninstall.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/UninstallMethod.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Value.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ValueFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/AutowireType.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContext.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContextDelegate.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/InjectOption.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AnnotationMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaDataFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CachingAnnotationMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassLoaderMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ConstructorMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DemandMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DependencyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/FeatureMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/InstallMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/LifecycleMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitor.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/NamedAliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterizedMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/PropertyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/SupplyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/AbstractBeanFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/BeanFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/api/dependency/MatcherFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/KernelObject.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/AnnotationToBeanMetaDataFactory.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/BeanMetaDataAnnotationAdapter.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/KernelInitializer.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/ConfigureKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/CreateKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilder.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilderListItem.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DescribeKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstallKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstantiateKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelController.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/StartKernelControllerContextAware.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/AbstractDependencyBuilder.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/KernelDeployment.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEvent.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventEmitter.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventFilter.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventListener.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventManager.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/lazy/LazyInitializer.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/KernelMetaDataRepository.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/package.html
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelBus.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistry.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntry.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryAlreadyRegisteredException.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryNotFoundException.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryPlugin.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/package.html
Log:
[JBKERNEL-14] Javadocs for kernel module

Added: projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/package.html
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 31497 2005-05-24 16:47:10Z adrian $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Interfaces that may be inplemented by a <a href="../ControllerContext.html">ControllerContext</a> implementation, which 
+    allows you to make calls on the <a href="../ControllerContext.html">ControllerContext</a>s underlying bean.    The 
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/GraphController.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/GraphController.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/GraphController.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,6 +21,7 @@
 */
 package org.jboss.dependency.spi.graph;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 
@@ -28,7 +29,8 @@
  * Graph controller.
  *
  * Either GraphController itself understands
- * SearchInfo, or delegates work to LookupStrategy.
+ * SearchInfo, or delegates work to the LookupStrategy contained in the SearchInfo.
+ * {@link Controller} implementations may implement this interface.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/LookupStrategy.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/LookupStrategy.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/graph/LookupStrategy.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -26,7 +26,8 @@
 import org.jboss.dependency.spi.ControllerState;
 
 /**
- * Context lookup strategy.
+ * Context lookup strategy. Specifies how a context should be looked for 
+ * in a hierarchy of {@link Controller}s.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Added: projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/package.html
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 31497 2005-05-24 16:47:10Z adrian $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Helper classes for the controller.
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/jmx-aop-mc-int/.classpath
===================================================================
--- projects/microcontainer/trunk/jmx-aop-mc-int/.classpath	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/jmx-aop-mc-int/.classpath	2009-06-04 14:20:48 UTC (rev 89824)
@@ -1,45 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1.1/activation-1.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/bcel/bcel/5.1/bcel-5.1.jar" sourcepath="M2_REPO/bcel/bcel/5.1/bcel-5.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/wutka-dtdparser/dtdparser121/1.2.1/dtdparser121-1.2.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.10.0.GA/javassist-3.10.0.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4.jar" sourcepath="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/aop/jboss-aop/2.1.0.CR3/jboss-aop-2.1.0.CR3.jar" sourcepath="M2_REPO/org/jboss/aop/jboss-aop/2.1.0.CR3/jboss-aop-2.1.0.CR3-sources.jar"/>
-  <classpathentry kind="src" path="/jboss-aop-mc-int"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/integration/jboss-classloading-spi/6.0.0.Alpha4/jboss-classloading-spi-6.0.0.Alpha4.jar" sourcepath="M2_REPO/org/jboss/integration/jboss-classloading-spi/6.0.0.Alpha4/jboss-classloading-spi-6.0.0.Alpha4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.13.GA/jboss-common-core-2.2.13.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.13.GA/jboss-common-core-2.2.13.GA-sources.jar"/>
-  <classpathentry kind="src" path="/jboss-dependency"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-j2se/6.0.0.Beta2/jboss-j2se-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-j2se/6.0.0.Beta2/jboss-j2se-6.0.0.Beta2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-jmx/6.0.0.Beta2/jboss-jmx-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-jmx/6.0.0.Beta2/jboss-jmx-6.0.0.Beta2-sources.jar"/>
-  <classpathentry kind="src" path="/jboss-jmx-mc-int"/>
-  <classpathentry kind="src" path="/jboss-kernel"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-managed/2.1.0.CR8/jboss-managed-2.1.0.CR8.jar" sourcepath="M2_REPO/org/jboss/man/jboss-managed/2.1.0.CR8/jboss-managed-2.1.0.CR8-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-mbeans/6.0.0.Beta2/jboss-mbeans-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-mbeans/6.0.0.Beta2/jboss-mbeans-6.0.0.Beta2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-mbeanserver/6.0.0.Beta2/jboss-mbeanserver-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-mbeanserver/6.0.0.Beta2/jboss-mbeanserver-6.0.0.Beta2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-metatype/2.1.0.CR8/jboss-metatype-2.1.0.CR8.jar" sourcepath="M2_REPO/org/jboss/man/jboss-metatype/2.1.0.CR8/jboss-metatype-2.1.0.CR8-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.1.GA/jbossxb-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossxb/2.0.1.GA/jbossxb-2.0.1.GA-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/qdox/qdox/1.6.1/qdox-1.6.1.jar" sourcepath="M2_REPO/qdox/qdox/1.6.1/qdox-1.6.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/trove/trove/2.1.1/trove-2.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.9.1/xml-apis-2.9.1.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1.1/activation-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/bcel/bcel/5.1/bcel-5.1.jar" sourcepath="M2_REPO/bcel/bcel/5.1/bcel-5.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/wutka-dtdparser/dtdparser121/1.2.1/dtdparser121-1.2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.10.0.GA/javassist-3.10.0.GA.jar"/>
+	<classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4.jar" sourcepath="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/aop/jboss-aop/2.1.1.GA/jboss-aop-2.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/aop/jboss-aop/2.1.0.CR3/jboss-aop-2.1.0.CR3-sources.jar"/>
+	<classpathentry kind="src" path="/jboss-aop-mc-int"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/integration/jboss-classloading-spi/6.0.0.Alpha4/jboss-classloading-spi-6.0.0.Alpha4.jar" sourcepath="M2_REPO/org/jboss/integration/jboss-classloading-spi/6.0.0.Alpha4/jboss-classloading-spi-6.0.0.Alpha4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.13.GA/jboss-common-core-2.2.13.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.13.GA/jboss-common-core-2.2.13.GA-sources.jar"/>
+	<classpathentry kind="src" path="/jboss-dependency"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-j2se/6.0.0.Beta2/jboss-j2se-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-j2se/6.0.0.Beta2/jboss-j2se-6.0.0.Beta2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-jmx/6.0.0.Beta2/jboss-jmx-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-jmx/6.0.0.Beta2/jboss-jmx-6.0.0.Beta2-sources.jar"/>
+	<classpathentry kind="src" path="/jboss-jmx-mc-int"/>
+	<classpathentry kind="src" path="/jboss-kernel"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-managed/2.1.0.CR8/jboss-managed-2.1.0.CR8.jar" sourcepath="M2_REPO/org/jboss/man/jboss-managed/2.1.0.CR8/jboss-managed-2.1.0.CR8-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-mbeans/6.0.0.Beta2/jboss-mbeans-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-mbeans/6.0.0.Beta2/jboss-mbeans-6.0.0.Beta2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/mx/jboss-mbeanserver/6.0.0.Beta2/jboss-mbeanserver-6.0.0.Beta2.jar" sourcepath="M2_REPO/org/jboss/mx/jboss-mbeanserver/6.0.0.Beta2/jboss-mbeanserver-6.0.0.Beta2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-metatype/2.1.0.CR8/jboss-metatype-2.1.0.CR8.jar" sourcepath="M2_REPO/org/jboss/man/jboss-metatype/2.1.0.CR8/jboss-metatype-2.1.0.CR8-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.2.GA/jboss-reflect-2.0.2.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.1.GA/jbossxb-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossxb/2.0.1.GA/jbossxb-2.0.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/qdox/qdox/1.6.1/qdox-1.6.1.jar" sourcepath="M2_REPO/qdox/qdox/1.6.1/qdox-1.6.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/trove/trove/2.1.1/trove-2.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.9.1/xml-apis-2.9.1.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: projects/microcontainer/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceDeployment.java
===================================================================
--- projects/microcontainer/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceDeployment.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceDeployment.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -37,7 +37,8 @@
 import org.w3c.dom.Element;
 
 /**
- * ServiceDeployment.
+ * ServiceDeployment. Used to parse the legacy -service.xml files
+ * for MBean deployment.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author Scott.Stark at jboss.org
@@ -67,7 +68,7 @@
    private List<ServiceDeploymentClassPath> classPaths;
    
    /**
-    * Get the name.
+    * Get the name o.
     * 
     * @return the name.
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Aliases.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Aliases.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Aliases.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,9 +27,22 @@
 import java.lang.annotation.Target;
 
 /**
- * The aliases.
+ * Used to create aliases for a bean. An alias is an alternative name for a bean within the controller
  * Equivalent to deployment's alias element.
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Aliases({"Red", "Blue"})
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * Creates an instance of MyBean and installs it in the Microcontainer using the name <code>MyBean</code>,
+ * and registers the aliases <code>Red</code> and <code>Blue</code>.
+ * Other beans can inject it using <code>MyBean</code>, <code>Red</code> and <code>Blue</code>.
+ *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getAliases()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -45,7 +58,7 @@
    String[] value();
 
    /**
-    * Do system property replace.
+    * Do system property replacement
     *
     * @return true to replace system property, false otherwise
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ArrayValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ArrayValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ArrayValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,15 @@
 import java.lang.annotation.Target;
 
 /**
- * Injecting array value.
+ * Creates an array that can be used as a parameter.
+ * 
+ * <pre>
+ * &#64;ArrayValue(elementClass="java.lang.Float", 
+ *            {&#64;Value(string=&#64;StringValue("1.0")), 
+ *            &#64;Value(string=&#64;StringValue("2.0"))}) 
+ * public void setArray(Float[] array) {}
+ * </pre>
+ * creates a Float array with the entries {1.0, 2.0}
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -43,7 +51,7 @@
    Class<?> clazz() default void.class;
 
    /**
-    * Array's element class.
+    * Array's element class. If absent, the default is Object.
     *
     * @return element class
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Bean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Bean.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Bean.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -32,8 +32,19 @@
 import org.jboss.dependency.spi.ErrorHandlingMode;
 
 /**
- * Mark the MC bean.
+ * Used to mark a class as a Microcontainer bean and to set properties on the resulting bean metadata.
+ * The class of the bean becomes the class that was annotated.
+ * 
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * Creates an instance of MyBean and installs it in the Microcontainer using the name <code>MyBean</code>.
  *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -41,7 +52,7 @@
 public @interface Bean
 {
    /**
-    * Get the name.
+    * Get the bean's name.
     *
     * This is only meant to be used before
     * bean meta data is already installed
@@ -92,7 +103,7 @@
    AutowireType autowireType() default AutowireType.NONE;
 
    /**
-    * Get the mode
+    * Get the controller mode 
     *
     * Note that this is only gonna be
     * used after Describe state.
@@ -112,7 +123,7 @@
    ErrorHandlingMode errorHandlingMode() default ErrorHandlingMode.DISCARD;
 
    /**
-    * Get the access mode
+    * Get the bean access mode
     *
     * @return the access mode
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/BeanFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/BeanFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/BeanFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -30,7 +30,7 @@
 import org.jboss.dependency.spi.ControllerMode;
 
 /**
- * Mark the MC bean factory.
+ * Used to mark a class as a Microcontainer bean factory and to set properties on the bean metadata.
  *
  * Only useful before actual metadata instantiation,
  * since we need to instantiate GenericBeanFactoryMetaData
@@ -43,7 +43,7 @@
 public @interface BeanFactory
 {
    /**
-    * Get the name.
+    * Get the bean name.
     *
     * @return bean's name
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Cleanup.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Cleanup.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Cleanup.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,8 @@
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * Marks that an annotation is cleaned up while uninstalling.
+ * Marks that data introduced into a {@link org.jboss.beans.metadata.spi.BeanMetaData} annotation is 
+ * cleaned up while uninstalling.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CleanupOnly.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CleanupOnly.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CleanupOnly.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,7 @@
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * Marks that an annotation is only used while uninstalling.
+ * Marks that an annotation is only used while uninstalling. 
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CollectionValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CollectionValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/CollectionValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * Collection injection.
+ * Creates a collection that can be used as a parameter.
+ * 
+ * <pre>
+ * &#64;CollectionValue(elementClass="java.lang.String", 
+ *                 clazz="org.jboss.example.CustomCollection",  
+ *                 {&#64;Value(string=&#64;StringValue("string1")), 
+ *                 &#64;Value(string=&#64;StringValue("string2")), 
+ *                 &#64;Value(string=&#64;StringValue("string3")), 
+ *                 &#64;Value(string=&#64;StringValue("string4"))}) 
+ * public void setCollection(Collection collection) {} 
+ * </pre>
+ * creates a collection of the type <code>org.jboss.example.CustomCollection</code>, where all the elements are of type String.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -36,10 +47,12 @@
 public @interface CollectionValue
 {
    /**
-    * Get collection class.
+    * Get collection class. By default a {@link java.util.ArrayList}
+    * will be used.
     *
     * @return the collection class
     */
+   
    Class<?> clazz() default void.class;
 
    /**
@@ -50,7 +63,7 @@
    Class<?> elementClass() default void.class;
 
    /**
-    * Get values.
+    * An array of the values in the collection.
     *
     * @return the values
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Constructor.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Constructor.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Constructor.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,43 @@
 import java.lang.annotation.Target;
 
 /**
- * Mark the constructor used to instantiate bean.
- *
+ * Mark the constructor used to instantiate a bean. If absent, the default constructor 
+ * of the @{@link Bean} annotated class will be used. If the constructor has parameters,
+ * use the following annotations on the parameters to set their values:
+ * <ul>
+ *   <li>@{@link ArrayValue}</li>
+ *   <li>@{@link CollectionValue}</li>
+ *   <li>@{@link Inject}</li>
+ *   <li>@{@link JavaBeanValue}</li>
+ *   <li>@{@link ListValue}</li> 
+ *   <li>@{@link MapValue}</li> 
+ *   <li>@{@link NullValue}</li> 
+ *   <li>@{@link SetValue}</li> 
+ *   <li>@{@link StringValue}</li>
+ * </ul>
+ * 
+ * For example the following configuration:<p>
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *   public MyBean()
+ *   {
+ *   }
+ * 
+ *   &#64;Constructor
+ *   public MyBean(&#64;StringValue(value="25", type="long") long age, &#64;Inject(bean="OtherBean") Object other)
+ *   {
+ *      ...
+ *   }
+ * }
+ * </pre>
+ * uses the non-default constructor as its constructor and uses the long value <code>25</code> for the <code>age</code> parameter, and injects
+ * the bean <code>OtherBean</code> into the <code>other</code> parameter. 
+ * 
+ * @see Factory
+ * @see FactoryMethod
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getConstructor()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Create.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Create.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Create.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -7,7 +7,23 @@
 
 /**
  * Mark lifecycle create method.
+ * 
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Create
+ *    public void init()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is installed to the {@link org.jboss.dependency.spi.ControllerState#CREATE}
+ * state, the <code>init</code> method is called by the Microcontainer. You can also specify parameters 
+ * if necessary, see {@link Constructor} for an example.
  *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getCreate()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demand.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demand.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demand.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,22 @@
 import java.lang.annotation.Target;
 
 /**
- * The demand.
- *
+ * Used to specify a bean's demand.
+ * 
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Demand("java:/something")
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * <code>SomeBean</code> cannot be installed until another bean called, or another bean that supplies something
+ * called <code>java:/something</code> has been installed.  
+ *  
+ * @see Supplys
+ * @see Supply
+ * @see Demands
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getDemands()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demands.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demands.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Demands.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,23 @@
 import java.lang.annotation.Target;
 
 /**
- * The demands.
- *
+ * Used to specify a bean's demands if it has more than one demand.
+ * 
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Demands({&#64;Demand("OtherBean"), &#64;Demand("java:/something")})
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * <code>SomeBean</code> cannot be installed until another bean called, or another bean that supplies something
+ * called, <code>OtherBean</code> has been installed AND until another bean called, or another bean that supplies something
+ * called, <code>java:/something</code> has been installed.  
+ *  
+ * @see Supplys
+ * @see Supply
+ * @see Demand
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getDemands()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Dependency.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Dependency.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Dependency.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,9 @@
 import java.lang.annotation.Target;
 
 /**
- * Dependency.
+ * Dependency. If a bean is annotated with an annotation that in turn has been
+ * annotated with this annotation, that bean becomes dependent on a bean being deployed
+ * with the name in this annotations's <code>name</code> field. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
@@ -38,7 +40,7 @@
 public @interface Dependency
 {
    /**
-    * Get the name.
+    * Get the name of the bean this annotation introduces a dependency on.
     *
     * @return the name
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Depends.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Depends.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Depends.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * The depends values.
+ * Used to specify other beans we have a dependency on without wanting to inject that bean.
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Depends({"BeanA","BeanB"})
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * Creates an dependency of SomeBean on BeanA and BeanB.
  *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getDepends()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Destroy.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Destroy.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Destroy.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -7,7 +7,23 @@
 
 /**
  * Mark destroy lifecycle method.
+ * 
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Destroy
+ *    public void remove()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is uninstalled from the {@link org.jboss.dependency.spi.ControllerState#CREATE}
+ * state, the <code>remove</code> method is called by the Microcontainer. You can also specify parameters 
+ * if necessary, see {@link Constructor} for an example.
  *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getDestroy()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/EntryValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/EntryValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/EntryValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,7 @@
 import java.lang.annotation.ElementType;
 
 /**
- * Map entry value.
+ * Represents an entry in a {@link MapValue}
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstall.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstall.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstall.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,9 +27,33 @@
 import java.lang.annotation.ElementType;
 
 /**
- * Define external install.
- * Must define other bean to execute instal method on.
+ * Install method defined within another bean. By default these will be called when the bean enters the
+ * {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state, and the other bean must have entered
+ * the INSTALLED state. 
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;ExternalInstall(bean="OtherBean", method="someMethod")
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When SomeBean enters the INSTALLED state, the Microcontainer calls the <code>someMethod</code> method on OtherBean.
+ * You can also specify parameters if necessary:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;ExternalInstall(bean="OtherBean", method="otherMethod", parameters={@Value(thisValue=@ThisValue)})
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When SomeBean enters the INSTALLED state, the Microcontainer calls the <code>otherMethod</code> method on OtherBean
+ * passing in a reference to the SomeBean being installed.
+ *
+ * @see InstallMethod
+ * @see ExternalInstalls
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getInstalls()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -37,21 +61,21 @@
 public @interface ExternalInstall
 {
    /**
-    * Get the bean.
+    * Get the name of the bean containing the install method.
     *
     * @return the bean
     */
    String bean();
 
    /**
-    * Get the method.
+    * Get the name of the install method.
     *
     * @return the method
     */
    String method();
 
    /**
-    * Get the dependant state.
+    * Get the state the bean containing the install method must be in.
     *
     * @return the dependant state
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstalls.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstalls.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalInstalls.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,11 @@
 import java.lang.annotation.Target;
 
 /**
- * Array of external installs.
+ * Used to define several install methods defined in other beans.
  *
+ * @see ExternalInstall
+ * @see InstallMethod
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getInstalls()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalUninstalls.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalUninstalls.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ExternalUninstalls.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,35 @@
 import java.lang.annotation.Target;
 
 /**
- * Array of external uninstalls.
+ * Used to define one or more uninstall methods defined in other beans.<p>
+ * 
+ * By default these will be called when the bean is uninstalled from the
+ * {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state, and the other bean must be in
+ * the INSTALLED state. 
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;ExternalUninstalls(&#64;ExternalInstall(bean="OtherBean", method="someMethod"))
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When SomeBean is uninstalled from the INSTALLED state, the Microcontainer calls the <code>someMethod</code> method on OtherBean.
+ * You can also specify parameters if necessary:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;ExternalUninstalls(&#64;ExternalInstall(bean="OtherBean", method="otherMethod", parameters={@Value(thisValue=@ThisValue)}))
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When SomeBean is uninstalled from the INSTALLED state, the Microcontainer calls the <code>otherMethod</code> method on OtherBean
+ * passing in a reference to the SomeBean being uninstalled.
+ *
+ * @see ExternalInstall
+ * @see InstallMethod
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getUninstalls()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Factory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Factory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Factory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,78 @@
 import java.lang.annotation.Target;
 
 /**
- * Define constructor factory.
+ * Define a static or non-static factory method to instantiate a bean. The factory method
+ * can exist outside the bean class. If the method has parameters, use the 
+ * <code>parameters</code> attribute to set the parameters in the following annotations wrapped in @{@link Value}
+ * annotations. 
+ * <ul>
+ *   <li>@{@link ArrayValue}</li>
+ *   <li>@{@link CollectionValue}</li>
+ *   <li>@{@link Inject}</li>
+ *   <li>@{@link JavaBeanValue}</li>
+ *   <li>@{@link ListValue}</li> 
+ *   <li>@{@link MapValue}</li> 
+ *   <li>@{@link NullValue}</li> 
+ *   <li>@{@link SetValue}</li> 
+ *   <li>@{@link StringValue}</li>
+ * </ul>
+ * 
+ * For example the following configuration for a static factory method:<p>
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Factory (
+ *    factoryClass="org.jboss.example.StaticFactory", 
+ *    factoryMethod="createMyBeanInstance",
+ *    parameters={&#64;Value(string=&#64;StringValue(value="25", type="long")), &#64;Inject(bean="OtherBean"))})
+ * public class MyBean
+ * {
+ *   
+ *   public MyBean(long age, Object other)
+ *   {
+ *      ...
+ *   }
+ *   
+ *   &#64;FactoryMethod
+ *   public static MyBean createInstance(&#64;StringValue(value="25", type="long") long age, &#64;Inject(bean="OtherBean") Object other)
+ *   {
+ *       return new MyBean(age, other);
+ *   }
+ * }
+ * </pre>
+ * will call the static method <code>createMyBeanInstance</code> on the class <code>org.jboss.example.StaticFactory</code> to create the 
+ * <code>MyBean</code> instance, passing in the long value <code>25</code> for the first parameter, and inject 
+ * the bean <code>OtherBean</code> into the second parameter.
+ * 
+ * This configuration for a non-static factory method:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Factory (
+ *    factory=@Value(javabean=@JavaBeanValue("org.jboss.example.NonStaticFactory")),
+ *    factoryMethod="createMyBeanInstance",
+ *    parameters={&#64;Value(string=&#64;StringValue(value="25", type="long")), &#64;Inject(bean="OtherBean"))})
+ * public class MyBean
+ * {
+ *   
+ *   public MyBean(long age, Object other)
+ *   {
+ *      ...
+ *   }
+ *   
+ *   &#64;FactoryMethod
+ *   public static MyBean createInstance(&#64;StringValue(value="25", type="long") long age, &#64;Inject(bean="OtherBean") Object other)
+ *   {
+ *       return new MyBean(age, other);
+ *   }
+ * }
+ * </pre>
+ * will instantiate an object of type <code>org.jboss.example.NonStaticFactory</code> and call the method <code>createMyBeanInstance</code> 
+ * it to create the <code>MyBean</code> instance, passing in the long value <code>25</code> for the first parameter, and inject 
+ * the bean <code>OtherBean</code> into the second parameter.
  *
+ *
+ * @see Constructor
+ * @see FactoryMethod
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getConstructor()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -36,21 +106,23 @@
 public @interface Factory
 {
    /**
-    * Get the factory.
+    * Get the non-static factory. Only used if we want to 
+    * use a non-static factory
     *
     * @return the factory value
     */
    Value factory() default @Value();
 
    /**
-    * Get the factory class.
+    * Get the static factory class. Only used if we want to 
+    * use a static factory
     *
     * @return the factory class
     */
    Class<?> factoryClass() default void.class;
 
    /**
-    * Get the factory method.
+    * Get the factory method name.
     *
     * @return the factory method
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/FactoryMethod.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/FactoryMethod.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/FactoryMethod.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,46 @@
 import java.lang.annotation.Target;
 
 /**
- * Mark static method as factory method.
+ * Mark a static method as a factory method to instantiate a bean. The method must exist on
+ * the bean class itself. If the method has parameters,
+ * use the following annotations on the parameters to set their values:
+ * <ul>
+ *   <li>@{@link ArrayValue}</li>
+ *   <li>@{@link CollectionValue}</li>
+ *   <li>@{@link Inject}</li>
+ *   <li>@{@link JavaBeanValue}</li>
+ *   <li>@{@link ListValue}</li> 
+ *   <li>@{@link MapValue}</li> 
+ *   <li>@{@link NullValue}</li> 
+ *   <li>@{@link SetValue}</li> 
+ *   <li>@{@link StringValue}</li>
+ * </ul>
+ * 
+ * For example the following configuration:<p>
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *   
+ *   public MyBean(long age, Object other)
+ *   {
+ *      ...
+ *   }
+ *   
+ *   &#64;FactoryMethod
+ *   public static MyBean createInstance(&#64;StringValue(value="25", type="long") long age, &#64;Inject(bean="OtherBean") Object other)
+ *   {
+ *       return new MyBean(age, other);
+ *   }
+ *   
+ * }
+ * </pre>
+ * uses the <code>createInstance</code> method to construct the bean instance and uses the long value <code>25</code> for the <code>age</code> parameter, and injects
+ * the bean <code>OtherBean</code> into the <code>other</code> parameter. 
  *
+ * @see Constructor
+ * @see Factory
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getConstructor()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Inject.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Inject.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Inject.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -34,6 +34,7 @@
  * Beans when injected by class type are by default changed to configured
  * state - if not yet configured.
  * You can change this behavior by setting state.
+ * See {@link Constructor} for an example of the usage.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -42,15 +43,15 @@
 public @interface Inject
 {
    /**
-    * Get bean.
-    * Default is no bean.
+    * Get bean name to inject.
+    * Default is no bean, in which
     *
     * @return bean name
     */
    String bean() default "";
 
    /**
-    * Get property.
+    * Get property of bean to inject.
     * Default is no property.
     *
     * @return property name

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Install.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Install.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Install.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -26,10 +26,26 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-
 /**
- * Install callback.
+ * Define an Install callback on a bean to be notified whenever beans
+ * of a particular type are installed into the Microcontainer.
  *
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Install
+ *    public void addDatasource(Datasource ds)
+ *    {
+ *       ...
+ *    }
+ * }
+ * </pre>
+ * Whenever a bean of type <code>Datasource</code> is installed, <code>MyBean</code>'s
+ * <code>addDataSource</code> method gets called with the <code>Datasource</code> bean as the parameter.
+ * 
+ * @see Uninstall
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getInstallCallbacks()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -40,23 +56,24 @@
     * Get the cardinality.
     * Default is no cardinality.
     *
+    * @see org.jboss.dependency.spi.Cardinality
     * @return cardinality
     */
    String cardinality() default "";
 
    /**
-    * Get when required.
+    * Get when required. i.e. my state.
     * Default is Configured.
     *
-    * @return when required.
+    * @return String representation of the {@link org.jboss.dependency.spi.ControllerState} when required.
     */
    String whenRequired() default "Installed";
 
    /**
-    * Get dependent state.
+    * Get dependent state, i.e. the state the beans we are listening for must be in
     * Default is Installed.
     *
-    * @return dependent state.
+    * @return String representation of the dependenct {@link org.jboss.dependency.spi.ControllerState}.
     */
    String dependentState() default "Installed";
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/InstallMethod.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/InstallMethod.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/InstallMethod.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,27 @@
 import java.lang.annotation.Target;
 
 /**
- * Internal installation method.
+ * Install method defined within the bean class itself. Several methods within the bean can be
+ * annotated with this annotation. By default these will be called when the bean enters the
+ * {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state. 
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Install
+ *    public void installation()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When SomeBean enters the INSTALLED state, the Microcontainer calls the <code>installation</code> method.
+ * You can also specify parameters if necessary, see {@link Constructor} for an example.
+ *
+ * @see ExternalInstall
+ * @see ExternalInstalls
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getInstalls()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/JavaBeanValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/JavaBeanValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/JavaBeanValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,14 @@
 import java.lang.annotation.Target;
 
 /**
- * Java bean value.
+ * Java bean value. Instantiates an instance of the class.
+ * 
+ * <pre>
+ * &#64;JavaBeanValue(Person.class)
+ * void setPerson(Person person)
+ * </pre>
+ * instantiates an instance of <code>Person</code> using its default 
+ * constructor, and uses it for the <code>person</code> parameter.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ListValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ListValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ListValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * List value injection.
- *
+ * Creates a list that can be used as a parameter
+  * <pre>
+ * &#64;ListValue(elementClass="java.lang.String", 
+ *                 clazz="org.jboss.example.CustomList",  
+ *                 {&#64;Value(string=&#64;StringValue("string1")), 
+ *                 &#64;Value(string=&#64;StringValue("string2")), 
+ *                 &#64;Value(string=&#64;StringValue("string3")), 
+ *                 &#64;Value(string=&#64;StringValue("string4"))}) 
+ * public void setList(List collection) {} 
+ * </pre>
+ * creates a collection of the type <code>org.jboss.example.CustomList</code>, where all the elements are of type String.
+ * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -36,7 +46,8 @@
 public @interface ListValue
 {
    /**
-    * Get list class.
+    * Get list class. By default a {@link java.util.ArrayList}
+    * will be used.
     *
     * @return the list class
     */
@@ -50,7 +61,7 @@
    Class<?> elementClass() default void.class;
 
    /**
-    * Get the values.
+    * An array of the values in the List.
     *
     * @return the values
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MCAnnotations.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MCAnnotations.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MCAnnotations.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -28,7 +28,8 @@
 import java.lang.annotation.Target;
 
 /**
- * Possible IoC annotations.
+ * Possible IoC annotations. Can be used to narrow the number of annotations to
+ * look for.
  *
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MapValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MapValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/MapValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * Map value injection.
+ * Creates a map that can be used as a parameter
+ * <pre>
+ *  &#64;MapValue(keyClass="java.lang.String", 
+ *         valueClass="java.lang.String", 
+ *         {@EntryValue(key=&#64;Value(string=&#64;StringValue("foo.bar.key")), 
+ *                      value=&#64;Value(string=&#64;StringValue("QWERT"))), 
+ *          &#64;EntryValue(key=&#64;Value(string=&#64;StringValue("xyz.key")), 
+ *                      value=&#64;Value(string=&#64;StringValue("QWERTY"))) 
+ *        }) 
+ * public void setMap(Map<String, String> map) {} 
+ * </pre>
+ * creates a collection of the type <code>org.jboss.example.CustomList</code>, where all the elements are of type String.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -36,7 +47,7 @@
 public @interface MapValue
 {
    /**
-    * Get the map class.
+    * Get the map class. If absent, the default type is java.util.HashMap 
     *
     * @return the map class
     */
@@ -57,7 +68,7 @@
    Class<?> valueClass() default void.class;
 
    /**
-    * Get the entries.
+    * Get the array containing this map's entries.
     *
     * @return the entries
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/NullValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/NullValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/NullValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,7 @@
 import java.lang.annotation.Target;
 
 /**
- * Null value.
+ * Null value. Used to specify that a value is null.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -37,7 +37,7 @@
 {
    /**
     * Is valid.
-    * Used in @Parameter and @value to define
+    * Used in @{@link Parameter} and @{@link Value} to define
     * unused value.
     *
     * @return is value valid

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Parameter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Parameter.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Parameter.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,10 @@
 import java.lang.annotation.ElementType;
 
 /**
- * The parameter.
+ * The parameter. Similar to @{@link Value},
+ * but is used for {@link ValueFactory#parameter()}
+ * and {@link ValueFactory#parameters()}. ValueFactory, in turn,
+ * may be used within a {@link Value#valueFactory()}.
  * We must distingush between @Value and @Parameter,
  * since annotations don't allow cyclic dependencies.
  * ValueFactory uses @Parameter to break the cycle.

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/SetValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/SetValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/SetValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * Set value injection.
- *
+ * Creates a set that can be used as a parameter
+ * <pre>
+ * &#64;SetValue(elementClass="java.lang.String", 
+ *                 clazz="org.jboss.example.CustomSet",  
+ *                 {&#64;Value(string=&#64;StringValue("string1")), 
+ *                 &#64;Value(string=&#64;StringValue("string2")), 
+ *                 &#64;Value(string=&#64;StringValue("string3")), 
+ *                 &#64;Value(string=&#64;StringValue("string4"))}) 
+ * public void setSet(Set collection) {} 
+ * </pre>
+ * creates a Set of the type <code>org.jboss.example.CustomSet</code>, where all the elements are of type String.
+ * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -36,7 +46,7 @@
 public @interface SetValue
 {
    /**
-    * Get the set class.
+    * Get the set class. If unspecified, the default is java.util.HashSet.
     *
     * @return the set class
     */
@@ -50,7 +60,7 @@
    Class<?> elementClass() default void.class;
 
    /**
-    * Get the values.
+    * Get the array of the Values in the set.
     *
     * @return the values
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Start.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Start.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Start.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -8,6 +8,22 @@
 /**
  * Mark start lifecycle method.
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Start
+ *    public void startIt()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is installed to the {@link org.jboss.dependency.spi.ControllerState#START}
+ * state, the <code>startIt</code> method is called by the Microcontainer. You can also specify parameters 
+ * if necessary, see {@link Constructor} for an example.
+ *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getStart()
  * @author <a href="mailto:ales.justin at gmail.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Stop.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Stop.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Stop.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -8,6 +8,22 @@
 /**
  * Mark stop lifecycle method.
  * 
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Stop
+ *    public void stopIt()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is uninstalled from the {@link org.jboss.dependency.spi.ControllerState#START}
+ * state, the <code>stopIt</code> method is called by the Microcontainer. You can also specify parameters 
+ * if necessary, see {@link Constructor} for an example.
+ *
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getStop()
  * @author <a href="mailto:ales.justin at gmail.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/StringValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/StringValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/StringValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,13 @@
 import java.lang.annotation.Target;
 
 /**
- * String value.
+ * String value. Contains the String representation of a value,
+ * with a type to cast it to the correct type.
+ * 
+ * <pre>
+ * void setInteger(&#64;StringValue(value="123", type="int") int i){}
+ * </pre>
+ * causes the parameter <code>i</code> to be called with the int <code>123</code>.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supply.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supply.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supply.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,23 @@
 import java.lang.annotation.Target;
 
 /**
- * The supplys.
+ * Used to specify that a bean supplies something which another bean can depend on using a {@link Demand}
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Supply("java:/something")
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is installed it is also registered in the Microcontainer that it
+ * supplies <code>java:/something</code>. Other beans that have a
+ * demand on <code>java:/something</code> cannot be installed until <code>java:/something</code>
+ * is supplied.  
  *
+ * @see Supplys
+ * @see Demands
+ * @see Demand
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getSupplies()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supplys.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supplys.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Supplys.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,22 @@
 import java.lang.annotation.Target;
 
 /**
- * The supplys.
+ * Used to specify a bean's supplies if it has more than one supply.
+ * 
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * &#64;Supplys({&#64;Supply("java:/athing"), @Supply("java:/something"})
+ * public class MyBean
+ * {
+ * }
+ * </pre>
+ * When <code>SomeBean</code> is installed it is also registered in the Microcontainer that it
+ * supplies <code>java:/athing</code> and <code>java:/something</code>.  
  *
+ * @see Supply
+ * @see Demands
+ * @see Demand
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getSupplies()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ThisValue.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ThisValue.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ThisValue.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -28,7 +28,7 @@
 
 /**
  * This value.
- * Get the underlying target.
+ * Get the underlying target. See {@link ExternalInstall} for an example of the use
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Uninstall.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Uninstall.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Uninstall.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,25 @@
 import java.lang.annotation.Target;
 
 /**
- * Uninstall callback.
+ * Define an Uninstall callback on a bean to be notified whenever beans
+ * of a particular type are uninstalled from the Microcontainer.
+ *
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Uninstall
+ *    public void removeDatasource(Datasource ds)
+ *    {
+ *       ...
+ *    }
+ * }
+ * </pre>
+ * Whenever a bean of type <code>Datasource</code> is uninstalled, <code>MyBean</code>'s
+ * <code>removeDataSource</code> method gets called with the <code>Datasource</code> bean as the parameter.
  * 
+ * @see Install
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getUninstallCallbacks()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)
@@ -47,7 +64,7 @@
     * Get when required.
     * Default is Configured.
     *
-    * @return when required.
+    * @return String representation of the {@link org.jboss.dependency.spi.ControllerState} when required.
     */
    String whenRequired() default "Installed";
 
@@ -55,7 +72,7 @@
     * Get dependent state.
     * Default is Installed.
     *
-    * @return dependent state.
+    * @return String representation of the dependenct {@link org.jboss.dependency.spi.ControllerState}.
     */
    String dependentState() default "Installed";
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/UninstallMethod.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/UninstallMethod.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/UninstallMethod.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,27 @@
 import java.lang.annotation.Target;
 
 /**
- * Mark the uninstall method.
+ * Unnstall method defined within the bean class itself. Several methods within the bean can be
+ * annotated with this annotation. By default these will be called when the bean is uninstalled from the
+ * {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state. 
  *
+ * For example this configuration:
+ * <pre>
+ * &#64;Bean(name="SomeBean")
+ * public class MyBean
+ * {
+ *    &#64;Uninstall
+ *    public void uninstallation()
+ *    {
+ *    }
+ * }
+ * </pre>
+ * When SomeBean enters the INSTALLED state, the Microcontainer calls the <code>uninstallation</code> method.
+ * You can also specify parameters if necessary, see {@link Constructor} for an example.
+ *
+ * @see ExternalInstall
+ * @see ExternalInstalls
+ * @see org.jboss.beans.metadata.spi.BeanMetaData#getUninstalls()
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Value.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Value.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/Value.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,16 @@
 import java.lang.annotation.ElementType;
 
 /**
- * The value.
+ * Used to hold a value within one of the values representing a collection or an
+ * external method requiring parameters
+ * 
+ * @see ArrayValue
+ * @see CollectionValue
+ * @see EntryValue
+ * @see ExternalInstall
+ * @see Factory
+ * @see ListValue
+ * @see SetValue
  * @see Parameter
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ValueFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ValueFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/ValueFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,8 +27,18 @@
 import java.lang.annotation.Target;
 
 /**
- * The value factory.
- *
+ * A value that is calculated by making a method call on another bean.
+ * 
+ * <pre>
+ * &#64;ValueFactory(
+ *    bean="PersonRegister", 
+ *    method="getPersonFromId", 
+ *    parameters={&#64;Parameter(string=@StringValue(value="123", type="int"))}) 
+ * public void setCalculatedValue(Person person) {} 
+ * </pre>
+ * Here, the <code>person</code> parameter is calculated, by calling <code>getPersonFromId(123)</code>
+ * on the bean called <code>PersonRegister</code>.
+ * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @Retention(RetentionPolicy.RUNTIME)

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/annotations/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 26060 2004-11-22 15:45:18Z ejort $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    Annotations used to deploy beans. An example of a bean created using annotations is created here.
+<pre>
+&#64;Bean(name="SomeBean")
+&#64;Bean(name="ABean")
+public class MyBean
+{
+   long age;
+   String property;
+   
+   &#64;Constructor
+   public MyBean(&#64;StringValue(value="25", type="long") long age)
+   {
+      ...
+   }
+   
+   &#64;StringValue(value="Hello", type="java.lang.String")
+   public void setProperty(String property)
+   {
+      this.property = property;
+   }
+}   
+</pre>
+
+      If this class is compiled, we can use 
+      <a href="../../../../kernel/spi/annotations/AnnotationToBeanMetaDataFactory.html">AnnotationToBeanMetaDataFactory</a> to obtain the
+      <a href="../../spi/BeanMetaData.html">BeanMetaData</a>, which can then be deployed into the controller using the
+      <a href="../../../../kernel/spi/dependency/KernelController.html">KernelController</a>.<p>
+      
+      
+      Once deployed, we will have a bean called <code>MyBean</code>, with an alias <code>ABean</code>. The bean will
+      be constructed using the non-default constructor passing in <code>25</code> for the <age>parameter</code>. Next it will
+      be configured with a call to <code>setProperty()</code> passing in <code>Hello</code> as the parameter. The individual 
+      annotations have more examples.
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/AutowireType.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/AutowireType.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/AutowireType.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,22 +27,37 @@
 import org.jboss.xb.annotations.JBossXmlEnum;
 
 /**
- * Autowire type:
- *  * ByClass - matching the class type of value (default)
- *  * ByName - matching the property name
- *  * Constructor - matching the constructor args
- *  * Auto - matching constructor or by type
- *  * None - do not autowire
+ * Autowire type.
+ * When autowiring is used, there is no need to explicitly specify the name of the bean 
+ * you want to inject. Instead a search will be done according to this enum.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @JBossXmlEnum(ignoreCase=true)
 public enum AutowireType
 {
+   /**
+    * No autowiring will take place
+    */
    NONE(MicrocontainerConstants.NONE),
+   /**
+    * The type of the target property is used to look up a bean of that type in the microcontainer,
+    * which is then injected.
+    */
    @XmlEnumValue("ByClass") BY_CLASS(MicrocontainerConstants.BY_CLASS),
+   /**
+    * The name of the target property is used to look up a bean with that name in the microcontainer,
+    * which is then injected.
+    */
    @XmlEnumValue("ByName") BY_NAME(MicrocontainerConstants.BY_NAME),
+   /**
+    * The types of the constructor arguments are used to look for beans of those types,
+    * which are then injected into the constructor parameters. 
+    */
    CONSTRUCTOR(MicrocontainerConstants.CONSTRUCTOR),
+   /**
+    * Automatically follows CONSTRUCTOR or BY_CLASS
+    */
    AUTO(MicrocontainerConstants.AUTO);
 
    /** The type string */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContext.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContext.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -28,29 +28,48 @@
 import org.jboss.xb.annotations.JBossXmlEnum;
 
 /**
- * Inject from controller context:
- *  * name - controller context name
- *  * aliases - aliases
- *  * metadata - inject MetaData
- *  * beaninfo - BeanInfo
- *  * scope - ScopeKey
- *  * id - identifier
- *  * dynamic - method specific
- *  * ...
+ * Values available to inject from the controller context
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 @JBossXmlEnum(ignoreCase=true)
 public enum FromContext
 {
+   /** Does not get any values */
    NOOP(FromContextDelegate.NOOP),
+   /** Gets the name from the controller context. The target property must be assignable from 
+    * the actual name value, normally this means it must be a <code>java.util.Object</code> or 
+    * <code>java.util.String</code> */
    NAME(FromContextDelegate.NAME),
+   /** Gets the aliases from the controller context. The target property
+    * must be a <code>java.util.Set&lt;Object&gt;</code>
+    */
    ALIASES(FromContextDelegate.ALIASES),
+   /** Gets the {@link org.jboss.beans.metadata.spi.BeanMetaData} from the controller context. The 
+    * target property must be assignable from <code>org.jboss.beans.metadata.spi.BeanMetaData</code>
+    */
    METADATA(FromContextDelegate.METADATA),
+   /** Gets the {@link org.jboss.beans.info.spi.BeanInfo} from the controller context. The 
+    * target property must be assignable from <code>org.jboss.beans.info.spi.BeanInfo</code>
+    */
    BEANINFO(FromContextDelegate.BEANINFO),
+   /** Gets the {@link org.jboss.dependency.spi.ScopeInfo} from the controller context. The 
+    * target property must be assignable from <code>org.jboss.dependency.spi.ScopeInfo</code>
+    */
    SCOPE(FromContextDelegate.SCOPE),
+   /** Gets the {@link org.jboss.dependency.spi.ControllerState} from the controller context. The 
+    * target property must be assignable from <code>org.jboss.dependency.spi.ControllerState</code>
+    */
    STATE(FromContextDelegate.STATE),
+   /**
+    * Currently the same as {@link #NAME}. In the future will contain a unique id
+    */
    ID(FromContextDelegate.ID),
+   /**
+    * Gets the whole {@link org.jboss.dependency.spi.ControllerContext}. The target property must be assignable 
+    * from <code>org.jboss.dependency.spi.ControllerContext</code>
+    * 
+    */
    CONTEXT(FromContextDelegate.CONTEXT);
 
    /** The delegate */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContextDelegate.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContextDelegate.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/FromContextDelegate.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -41,7 +41,7 @@
 import org.jboss.util.JBossStringBuilder;
 
 /**
- * Inject from controller context:
+ * Helper class for {@link FromContext} to inject from controller context:
  *  * name - controller context name
  *  * aliases - aliases
  *  * metadata - inject MetaData

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/InjectOption.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/InjectOption.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/api/model/InjectOption.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,15 +24,36 @@
 import org.jboss.xb.annotations.JBossXmlEnum;
 
 /**
- * Injection option - strict or optional / callback.
+ * Injection option defines how dependencies are injected.
+ * Unless specified when creating the injection, the default is 
+ * {@link #STRICT}
  *
  * @author <a href="mailto:ales.justin at gmail.com">Ales Justin</a>
  */
 @JBossXmlEnum(ignoreCase=true)
 public enum InjectOption
 {
+   /**
+    * If the injected dependency is not available
+    * the target bean will wait until the dependency 
+    * becomes available.
+    */
    STRICT(MicrocontainerConstants.STRICT),
+   /**
+    * If the injected dependency is not available
+    * the target bean will not wait until the dependency 
+    * becomes available, but move through the controller
+    * lifecycle. If the injected dependency becomes available
+    * at a later stage, it is injected then. 
+    */
    CALLBACK(MicrocontainerConstants.CALLBACK),
+   /**
+    * If the injected dependency is not available
+    * the target bean will not wait until the dependency 
+    * becomes available, but move through the controller
+    * lifecycle. If the injected dependency becomes available
+    * at a later stage, it is ignored.
+    */
    OPTIONAL(MicrocontainerConstants.OPTIONAL);
 
    private String optionString;

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AliasMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AliasMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -23,15 +23,21 @@
 
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.util.JBossInterface;
 
 /**
- * Metadata about an alias attribute.
+ * Metadata about an alias attribute. These are alternative names to be used to identify a bean
+ * locally within a {@link Controller}.
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
 public interface AliasMetaData extends JBossInterface, MetaDataVisitorNode
 {
    @XmlTransient
+   /**
+    * Gets the name of the alias to use
+    * @return the name of the alias
+    */
    Object getAliasValue();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AnnotationMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AnnotationMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/AnnotationMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,10 +24,13 @@
 import java.lang.annotation.Annotation;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.util.JBossInterface;
 
 /**
- * Metadata about an annotation attribute.
+ * Metadata about an annotation attribute that should go in the metadata
+ * repository for the {@link ControllerContext} resulting from the {@link BeanMetaData}
+ * owning this {@link AnnotationMetaData}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -35,7 +38,7 @@
 public interface AnnotationMetaData extends JBossInterface, MetaDataVisitorNode
 {
    /**
-    * Get the annotation using passed in classloader
+    * Get the annotation using the passed in classloader
     * @param classloader The classloader
     * @return The annotation instance
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,14 +24,22 @@
 import java.util.List;
 import java.util.Set;
 
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.dependency.spi.ErrorHandlingMode;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.beans.metadata.api.model.AutowireType;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.beans.info.spi.BeanAccessMode;
 
 /**
- * Metadata about a bean.
- * 
+ * Metadata about a bean. This is the main source of information about a bean, and is the result of parsing a 
+ * <code>-beans.xml</code> or reading the bean class annotation. It can also be constructed programatically using 
+ * {@link BeanMetaDataBuilder}. The MC will translate the bean metadata into a 
+ * {@link KernelControllerContext} that is put into the {@link Controller} to install the bean.
+ *  
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
@@ -39,14 +47,15 @@
 public interface BeanMetaData extends FeatureMetaData, ValueMetaData
 {
    /**
-    * Get the bean.
+    * Get the bean's classname.
     * 
-    * @return the bean.
+    * @return the bean's classname.
     */
    String getBean();
 
    /**
-    * Get the name
+    * Get the name of the bean. This is the name it will be registered under in the {@link Controller}.
+    * In the case of a hierarchy of controllers this must be unique across all the controllers.
     * 
     * @return the name
     */
@@ -60,14 +69,17 @@
    Set<RelatedClassMetaData> getRelated();
 
    /**
-    * Set the name
+    * Set the name of the bean. This is the name it will be registered under in the {@link Controller}.
+    * In the case of a hierarchy of controllers this must be unique across all the controllers.
     * 
     * @param name the name
     */
    void setName(String name);
 
    /**
-    * The aliases
+    * The aliases. An alias is an alternative name for the bean that is local to a particular 
+    * {@link Controller}. Beans can express dependencies on other beans via their alias or
+    * their names.
     *
     * @return the aliases or null if there are no aliases
     */
@@ -88,35 +100,38 @@
    boolean isAbstract();
 
    /**
-    * Get the autowire type.
-    *
-    * @return the autowire type
+    * Gets the autowire type. If autowiring is enabled then 
+    * {@link ControllerContext}s wanting to inject the bean resulting from this bean metadata
+    * do not need to specify the name of the {@link ControllerContext}. This specifies how
+    * to lookup the autowired beans.
+    *  
+    * @return the autowire type, or null if we don't want injection by autowiring
     */
    AutowireType getAutowireType();
 
    /**
-    * Get the mode
+    * Get the controller mode to be used when installing this bean.
     * 
     * @return the mode
     */
    ControllerMode getMode();
    
    /**
-    * Set the name
+    * Set the controller mode to be used when installing this bean.
     *
     * @param mode the mode
     */
    void setMode(ControllerMode mode);
 
    /**
-    * Get error handling mode
+    * Get error handling mode to be used when installing this bean.
     *
     * @return the error handling mode
     */
    ErrorHandlingMode getErrorHandlingMode();
 
    /**
-    * Get the access mode
+    * Get the access mode for this bean.
     *
     * @return the access mode
     */
@@ -125,124 +140,134 @@
    /**
     * Is this bean is a candidate for
     * getting injected via contextual matching
-    * or callback resolution.
-    *
+    * or callback resolution. 
+    * If autowiring is enabled then 
+    * {@link ControllerContext}s wanting to inject the bean resulting from this bean metadata
+    * do not need to specify the name of the {@link ControllerContext}. Instead a match between the type of the target property/
+    * parameter and my bean type can be used.
+    * 
     * @return true (default) if used for autowiring
     */
    boolean isAutowireCandidate();
 
    /**
-    * Get the annotations
+    * Get the annotations for this bean. They will eventually end up in the meta data repository for the 
+    * resulting {@link ControllerContext}.
+    * 
     * @return the bean annotations
     */
    Set<AnnotationMetaData> getAnnotations();
    /**
-    * Set the annotations
+    * Set the annotations. They will eventually end up in the meta data repository for the 
+    * resulting {@link ControllerContext}.
     *
     * @param annotations the annotations
     */
    void setAnnotations(Set<AnnotationMetaData> annotations);
 
    /**
-    * Get the properties.
+    * Get the properties for the bean. This will contain the values for each property
+    * and can include injections of other beans.
     * 
     * @return List<PropertyMetaData>.
     */
    Set<PropertyMetaData> getProperties();
 
    /**
-    * Get the bean ClassLoader
+    * Get the bean ClassLoader. This is the classloader to use when constructing the bean. If not
+    * set the {@link KernelDeployment#getClassLoader()} will be used instead.
     * 
     * @return the ClassLoader metadata
     */
    ClassLoaderMetaData getClassLoader();
 
    /**
-    * Set the bean ClassLoader
+    * Set the bean ClassLoader. This is the classloader to use when constructing the bean. If not
+    * set the {@link KernelDeployment#getClassLoader()} will be used instead.
     * 
     * @param classLoader the ClassLoader metadata
     */
    void setClassLoader(ClassLoaderMetaData classLoader);
 
    /**
-    * Get the constructor
+    * Get how the bean should be constructed. If null the default constructor will be used.
     * 
-    * @return the constructor metadata
+    * @return the constructor metadata, or null for the default constructor
     */
    ConstructorMetaData getConstructor();
 
    /**
-    * Get the create lifecycle
+    * Get the create lifecycle method.
     * 
-    * @return the create lifecycle
+    * @return the create lifecycle method
     */
    LifecycleMetaData getCreate();
 
    /**
-    * Get the start lifecycle
+    * Get the start lifecycle method.
     * 
-    * @return the start lifecycle
+    * @return the start lifecycle method
     */
    LifecycleMetaData getStart();
 
    /**
-    * Get the stop lifecycle
+    * Get the stop lifecycle method.
     * 
-    * @return the stop lifecycle
+    * @return the stop lifecycle method
     */
    LifecycleMetaData getStop();
 
    /**
-    * Get the destroy lifecycle
+    * Get the destroy lifecycle method.
     * 
-    * @return the destroy lifecycle
+    * @return the destroy lifecycle method
     */
    LifecycleMetaData getDestroy();
    
    /**
-    * Get what this bean demands.
+    * Get what this bean demands for dependencies not specified using injections.
     * 
     * @return Set<DemandMetaData>
     */
    Set<DemandMetaData> getDemands();
 
    /**
-    * Get what this bean supplies.
+    * Get what this bean supplies for dependencies not specified using injections.
     * 
     * @return Set<SupplyMetaData>
     */
    Set<SupplyMetaData> getSupplies();
    
    /**
-    * Get what this bean depends.
+    * Get what other beans this bean depends on.
     * 
     * @return Set<DependencyMetaData>
     */
    Set<DependencyMetaData> getDepends();
 
    /**
-    * Get the installation oeprations.
+    * Get the installation lifecycle methods.
     * 
     * @return List<InstallMetaData>
     */
    List<InstallMetaData> getInstalls();
 
    /**
-    * Get the uninstallation operations.
+    * Get the uninstallation lifecycle methods.
     * 
     * @return List<InstallMetaData>
     */
    List<InstallMetaData> getUninstalls();
    
    /**
-    * Get the installation oeprations.
+    * Get the install callbacks that are registered for this bean.
     *
     * @return List<InstallMetaData>
     */
    List<CallbackMetaData> getInstallCallbacks();
 
    /**
-    * Get the uninstallation operations.
+    * Get the uninstall callbacks that are registered for this bean.
     *
     * @return List<InstallMetaData>
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaDataFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/BeanMetaDataFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,7 +24,8 @@
 import java.util.List;
 
 /**
- * BeanMetaDataFactory.
+ * BeanMetaDataFactory is used to parse some metadata and return one or more {@link BeanMetaData}
+ * entries.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -32,7 +33,7 @@
 public interface BeanMetaDataFactory 
 {
    /**
-    * Get the beans
+    * Get the beans from this {@link BeanMetaDataFactory}.
     * 
     * @return a List<BeanMetaData>
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CachingAnnotationMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CachingAnnotationMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CachingAnnotationMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,7 +24,9 @@
 import java.lang.annotation.Annotation;
 
 /**
- * CachingAnnotationMetaData.
+ * A cached annotation metadata that does not try to load up the
+ * annotation using a classloader every time the {@link #getAnnotationInstance()}
+ * or {@link #getAnnotationInstance(ClassLoader)} methods are called.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
@@ -32,7 +34,8 @@
 public interface CachingAnnotationMetaData extends AnnotationMetaData
 {
    /**
-    * Retrieve any cached annotation and flush it
+    * Retrieve any cached annotation and flush it. The next call to {@link #getAnnotationInstance()}
+    * or {@link #getAnnotationInstance(ClassLoader)} will then need to load it up using the classloader.
     * 
     * @return the annotation instance or null if non was constructed
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CallbackMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/CallbackMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,38 +22,44 @@
 package org.jboss.beans.metadata.spi;
 
 import org.jboss.dependency.spi.Cardinality;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 
 /**
- * Metadata about a callback method.
+ * Metadata about a callback method that should be invoked on us when a bean of a specific type is
+ * installed into the {@link Controller}.
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
 public interface CallbackMetaData extends LifecycleMetaData
 {
    /**
-    * Get the cardinality.
+    * Get the cardinality. This is the number of beans as a range of a certain type that must have been registered
+    * with the {@link Controller} before invoking the callback method/property/attribute specified 
+    * by a {@link #getProperty()} for that type on a bean's {@link ControllerContext}.
     *
     * @return cardinality
     */
    Cardinality getCardinality();
 
    /**
-    * Get the property name.
+    * Get the name of the property that should be invoked when triggering the callback. Alternatively,
+    * a method should be called, specified by {@link #getMethodName()}.
     *
     * @return the property name.
     */
    String getProperty();
 
    /**
-    * Get the required state of the dependency
+    * Get the required state of the items we are listening for. The default is {@link ControllerState#INSTALLED}.
     *
     * @return the required state
     */
    ControllerState getDependentState();
 
    /**
-    * Get signature.
+    * Get signature of the method/property. This is required if overloading has been used.
     *
     * @return method / property parameter signature
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassLoaderMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassLoaderMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassLoaderMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -32,7 +32,7 @@
 public interface ClassLoaderMetaData extends JBossInterface, MetaDataVisitorNode
 {
    /**
-    * Get the classloader
+    * Get the value metadata containing the actual classloader
     * 
     * @return the classloader
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ClassMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,11 +24,15 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * Class/interface metadata. 
+ * Class/interface metadata. It contains a class name.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 public interface ClassMetaData extends JBossInterface
 {
+   /**
+    * Get the class name
+    * @return the class name
+    */
    String getClassName();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ConstructorMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ConstructorMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -23,38 +23,87 @@
 
 
 /**
- * Metadata about construction.
+ * Metadata about construction of a bean. If absent from the BeanMetaData, the default constructor will be called.
+ * This is used to specify the following types of construction, with a description of what values are set.
  * 
+ * <table border="1">
+ * <tr valign="top">
+ *   <td><b><i>Type of construction/Values set</i></b></td>
+ *   <td><b>{@link #getValue()}</b></td>
+ *   <td><b>{@link #getFactory()}</b></td>
+ *   <td><b>{@link #getFactoryClass()}</b></td>
+ *   <td><b>{@link #getFactoryMethod()}</b></td>
+ *   <td><b>{@link #getParameters()}</b></td>
+ *   <td><b>{@link #getAnnotations()}</b></td>
+ * </tr>
+ * <tr valign="top">
+ *   <td><b>Normal constructor</b> - The constructor on the bean class will be called</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>Optional, present if we want to pass parameters in</td>
+ *   <td>Optional, present if we want to annotate the contructor</td>
+ * </tr>
+ * <tr valign="top">
+ *   <td><b>Static Factory</b> - A static method is called to create the bean</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>Yes, if the factory method is not on the bean clas itself</td>
+ *   <td>Yes</td>
+ *   <td>Optional, present if we want to pass parameters in</td>
+ *   <td>Optional, present if we want to annotate the contructor</td>
+ * </tr>
+ * <tr valign="top">
+ *   <td><b>Non-Static Factory</b> - a method on another bean is called to create the bean instance</td>
+ *   <td>No</td>
+ *   <td>Yes, contains the name of the Microcontainer bean containing the factory method</td>
+ *   <td>No</td>
+ *   <td>Yes</td>
+ *   <td>Optional, present if we want to pass parameters in</td>
+ *   <td>Optional, present if we want to annotate the contructor</td>
+ * </tr>
+ * <tr valign="top">
+ *   <td><b>Value</b> - Used to create a bean from a value. This can be another bean, an injection or a Set or Map</td>
+ *   <td>Yes</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>No</td>
+ *   <td>Optional, present if we want to pass parameters in</td>
+ *   <td>Optional, present if we want to annotate the contructor</td>
+ * </tr>
+ * </table>
+ * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
 public interface ConstructorMetaData extends ParameterizedMetaData, FeatureMetaData
 {
    /**
-    * Get the value.
+    * Get the value shat should be used to create the bean
     *
-    * @return the value.
+    * @return the value, or null if not present
     */
    ValueMetaData getValue();
    
    /**
-    * Get the factory.
+    * Get the non-static factory that should be used to create the bean
     *
-    * @return the factory.
+    * @return the factory, or null if not present
     */
    ValueMetaData getFactory();
 
    /**
-    * Get the factory class.
+    * Get the static factory class that should be used to create the bean
     *
-    * @return the class name of the factory.
+    * @return the class name of the factory, or null if not present
     */
    String getFactoryClass();
    
    /**
-    * Get the factory method.
+    * Get the factory method that should be used to create the bean
     *
-    * @return the factory method.
+    * @return the factory method, or null if not present
     */
    String getFactoryMethod();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DemandMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DemandMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DemandMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -25,8 +25,10 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * Metadata about what a bean demands.
+ * Metadata about what a bean demands. A demand is a dependency
+ * that does not use injection. 
  * 
+ * @see SupplyMetaData
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
@@ -34,7 +36,7 @@
 public interface DemandMetaData extends MetaDataVisitorNode, JBossInterface
 {
    /**
-    * What is demanded
+    * The name of the demanded bean
     * 
     * @return the demand
     */
@@ -48,7 +50,7 @@
    ControllerState getWhenRequired();
 
    /**
-    * Get the target state
+    * Get the target state of the demanded bean
     *
     * @return the target state
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DependencyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DependencyMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/DependencyMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,7 +24,7 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * Metadata about what a bean's dependency.
+ * Metadata about a bean's dependency.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -34,7 +34,7 @@
    /**
     * What is the dependency
     * 
-    * @return the dependency
+    * @return the name of the bean we depend on.
     */
    Object getDependency();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/FeatureMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/FeatureMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/FeatureMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -26,7 +26,7 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * General MetaData
+ * Root interface for meta datas that can have annotations. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/InstallMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/InstallMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/InstallMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,22 +24,30 @@
 import org.jboss.dependency.spi.ControllerState;
 
 /**
- * Metadata about an installation method.
+ * Metadata about an (un)installation method.
+ * The method will be called when the bean is installed (if this metadata
+ * is in the list returned by {@link BeanMetaData#getInstalls()}, or when the bean
+ * is uninstalled if it is in the list returned by {@link BeanMetaData#getUninstalls()}.
+ * Install methods can either exist on the bean owning this {@link InstallMetaData} or
+ * on another bean, in which case we will get a dependency on the other bean.<p>
  * 
+ * Normally (un)installation methods will be called when invoked upon installing to/uninstalling from
+ * the {@link ControllerState#INSTALLED} state, but this can be overridden by setting {@link #setState(ControllerState)} 
+ * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
 public interface InstallMetaData extends LifecycleMetaData
 {
    /**
-    * Get the bean name.
+    * Get the bean name on which we should invoke the (un)installation method.
     *
     * @return the bean name.
     */
    String getBean();
    
    /**
-    * Get the required state of the dependency
+    * Get the required state of bean containing the (un)installation method
     * 
     * @return the required state or null if it must be in the registry
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/LifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/LifecycleMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/LifecycleMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -32,35 +32,37 @@
 public interface LifecycleMetaData extends ParameterizedMetaData, FeatureMetaData
 {
    /**
-    * Get the state
-    * 
+    * Get when the dependency is required. 
+    * The default is {@link ControllerState#CONFIGURED}    
+    *  
     * @return the state
     */
    ControllerState getState();
    
    /**
-    * Set the state
-    * 
+    * Set when the dependency is required. 
+    * The default is {@link ControllerState#CONFIGURED}
+    *  
     * @param state the state
     */
    void setState(ControllerState state);
    
    /**
-    * Get the method name.
+    * Get the method name that should be called.
     *
     * @return the method name.
     */
    String getMethodName();
 
    /**
-    * Set the method name
+    * Set the method name that shuld be called.
     * 
     * @param methodName the method name
     */
    void setMethodName(String methodName);
    
    /**
-    * Is default ignored.
+    * Is ignored by default.
     *
     * @return should we ignore default
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitor.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitor.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitor.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -29,7 +29,9 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 
 /**
- * A metadata vistor.
+ * A metadata vistor. The main use is to traverse a BeanMetaData composite,
+ * where each component implements the {@link MetaDataVisitorNode},
+ * and build up the {@link KernelControllerContext} parts.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -38,6 +40,7 @@
 {
    /**
     * Get the kernel controller context
+    * we are doing work on.
     * 
     * @return the context
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -23,8 +23,12 @@
 
 import java.util.Iterator;
 
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
 /**
- * A metadata vistor node.
+ * A metadata vistor node. Each type of metadata in this package implements
+ * this interface and knows how to augment the {@link KernelControllerContext}
+ * with the information contained.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
@@ -32,14 +36,14 @@
 public interface MetaDataVisitorNode
 {
    /**
-    * Visit the node
+    * Visit the node before any classloading has been set up.
     * 
     * @param vistor the visitor
     */
    public void initialVisit(MetaDataVisitor vistor);
    
    /**
-    * Revisit the node
+    * Revisit the node once classloading has been set up.
     *
     * @param vistor the visitor
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/NamedAliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/NamedAliasMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/NamedAliasMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -28,5 +28,9 @@
  */
 public interface NamedAliasMetaData extends AliasMetaData
 {
+   /**
+    * Gets the name of the alias to use
+    * @return the name of the alias
+    */
    Object getName();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.beans.metadata.spi;
 
 /**
- * Metadata about a parameter.
+ * Metadata about a parameter in the {@link ParameterizedMetaData} list.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -30,28 +30,28 @@
 public interface ParameterMetaData extends FeatureMetaData
 {
    /**
-    * Get the type.
+    * Get the type if possible.
     * 
-    * @return the type.
+    * @return the class name if set, null otherwise
     */
    String getType();
    
    /**
-    * Get the value.
+    * Get the value of the parameter.
     * 
     * @return the value.
     */
    ValueMetaData getValue();
 
    /**
-    * Get the index
+    * Get the index of the parameter in the list of parameters
     *
     * @return index in list
     */
    int getIndex();
 
    /**
-    * Set the index
+    * Set the index of the parameter in the list of parameters
     * 
     * @param index the index
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterizedMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterizedMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ParameterizedMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,7 +24,7 @@
 import java.util.List;
 
 /**
- * ParameterizedMetaData.
+ * ParameterizedMetaData is a holder for a list of {@link ParameterMetaData}
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/PropertyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/PropertyMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/PropertyMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -30,7 +30,7 @@
 public interface PropertyMetaData extends FeatureMetaData
 {
    /**
-    * Get the name.
+    * Get the name of the property.
     * 
     * @return the name.
     */
@@ -51,7 +51,7 @@
    boolean isPreInstantiate();
 
    /**
-    * Get the value.
+    * Get the value the property is being set to.
     * 
     * @return the value.
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/SupplyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/SupplyMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/SupplyMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,8 +24,10 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * Metadata about what a bean demands.
+ * Metadata about what a bean supplies. This is something that is not bound as a bean itself,
+ * but looked for by a bean that 'demands' it. 
  * 
+ * @see DemandMetaData
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ValueMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/ValueMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -39,7 +39,7 @@
 import org.jboss.xb.annotations.JBossXmlGroupWildcard;
 
 /**
- * Metadata about a value.
+ * Metadata about a value used for a parameter or property.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -37,6 +37,9 @@
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
 import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
+import org.jboss.beans.metadata.spi.ConstructorMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.beans.metadata.spi.RelatedClassMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.dependency.spi.Cardinality;
@@ -44,9 +47,28 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.ErrorHandlingMode;
 import org.jboss.dependency.spi.graph.SearchInfo;
+import org.jboss.kernel.api.dependency.MatcherFactory;
 
 /**
- * BeanMetaDataBuilder contract.
+ * The BeanMetaDataBuilder is a class that allows you to construct a {@link BeanMetaData}
+ * programatically.<p>
+ * Users should first call one of the <code>createBuilder()</code> methods, do some work on
+ * the returned builder and then call <code>getBeanMetaData()</code>. e.g.:
+ * <pre>
+ * BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("MyBean", "org.acme.Foo");
+ * builder.addAnnotation("@org.acme.Marker").addPropertyMetaData("simple", "Simple");
+ * ValueMetaData inject = aspectBuilder.createInject("OtherBean");
+ * builder.addPropertyMetaData("injected", inject);
+ * BeanMetaData bmd = builder.getBeanMetaData();
+ * </pre> 
+ * will result in a similar BeanMetaData to deploying the following xml
+ * <pre>
+ * &lt;bean name="MyBean" class="org.acme.Foo"&gt;
+ *   &lt;annotation&gt;@org.acme.Marker&lt;/annotation&gt;
+ *   &lt;property name="simple"&gt;Simple&lt;/property&gt
+ *   &lt;property name="injected"&gt;&lt;inject name="OtherBean"/&gt;&lt;/property&gt
+ * &lt;/bean&gt;
+ * </pre> 
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
@@ -54,10 +76,10 @@
 public abstract class BeanMetaDataBuilder
 {
    /**
-    * Create builder from bean.
+    * Create builder from a bean's class name.
     *
     * @param beanClassName bean class name
-    * @return new Builder
+    * @return a new BeanMetaDataBuilder
     */
    public static BeanMetaDataBuilder createBuilder(String beanClassName)
    {
@@ -65,11 +87,11 @@
    }
 
    /**
-    * Create builder from name and bean.
+    * Create builder from name and bean's classname.
     *
     * @param beanInstanceName bean name
     * @param beanClassName bean class name
-    * @return new Builder
+    * @return a new BeanMetaDataBuilder
     */
    public static BeanMetaDataBuilder createBuilder(String beanInstanceName, String beanClassName)
    {
@@ -77,10 +99,10 @@
    }
    
    /**
-    * Create builder from BeanMetaData
+    * Create builder from an existing BeanMetaData
     * 
     * @param beanMetaData the bean metadata
-    * @return new Builder()
+    * @return a new BeanMetaDataBuilder
     */
    public static BeanMetaDataBuilder createBuilder(BeanMetaData beanMetaData)
    {
@@ -107,7 +129,7 @@
     * Note: this one includes all nested beans from
     * underlying bean metadata.
     *
-     * @return bean meta data factory
+    * @return bean meta data factory
     */
    public abstract BeanMetaDataFactory getBeanMetaDataFactory();
 
@@ -131,100 +153,119 @@
    }
 
    /**
-    * Set the bean name.
+    * Set the bean name
     *
+    * @see BeanMetaData#getName()
     * @param name the name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setName(String name);
 
    /**
-    * Set the bean.
+    * Set the bean class.
     *
+    * @see BeanMetaData#getBean()
     * @param bean the bean class name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setBean(String bean);
 
    /**
-    * Set the aliases
+    * Set the aliases. This overwrites any existing aliases.
     * 
+    * @see BeanMetaData#getAliases()
     * @param aliases the aliases
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setAliases(Set<Object> aliases);
 
    /**
-    * Add related class.
+    * Add related class to the set of related classes.
     *
+    * @see BeanMetaData#getRelated()
     * @param className the related class name
     * @param enabled the enabled
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addRelatedClass(String className, Object... enabled);
 
    /**
-    * Add related class.
+    * Add related class to the set of related classes.
     *
+    * @see BeanMetaData#getRelated()
     * @param related the related class
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addRelatedClass(RelatedClassMetaData related);
 
    /**
-    * Set the related
+    * Set the related classes. This overwrites any existing related classes.
     *
-    * @param related the related
-    * @return the builder
+    * @see BeanMetaData#getRelated()
+    * @param related the set of related classes
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setRelated(Set<RelatedClassMetaData> related);
 
    /**
-    * Add alias.
+    * Add alias to the set of aliases.
     *
+    * @see BeanMetaData#getAliases()
     * @param alias the alias
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addAlias(Object alias);
 
    /**
-    * Set the annotations
+    * Set the annotations. This overwrites any exisisting annotations.
     *
+    * @see BeanMetaData#getAnnotations()
     * @param annotations the annotations
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setAnnotations(Set<String> annotations);
 
    /**
-    * Add annotation.
+    * Add annotation to the set of annotations, with system property replacement.
     *
-    * @param annotation the annotation
-    * @return the builder
+    * @see #addAnnotation(String, boolean)
+    * @see BeanMetaData#getAnnotations()
+    * @param annotation string representation of the annotation, e.g. <code>@org.acme.Marker</code>
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addAnnotation(String annotation);
 
    /**
-    * Add annotation.
+    * Add annotation to the set of annotations, with system property replacement.
     *
-    * @param annotation the annotation
-    * @return the builder
+    * @see #addAnnotation(String, boolean)
+    * @see BeanMetaData#getAnnotations()
+    * @param annotation the annotation instance
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addAnnotation(Annotation annotation);
 
    /**
-    * Add annotation.
+    * Add annotation to the set of annotations.
     *
-    * @param annotation the annotation
-    * @param replace the replace flag
-    * @return the builder
+    * @param annotation string representation of the annotation, e.g. <code>@org.acme.Marker</code>
+    * @param replace whether system property replacement should happen on the values. e.g. if we have
+    * <code>@org.acme.WithProperty("${test.property}")</code> and the value of 
+    * <code>-Dtest.property=hello</code>, this becomes <code>@org.acme.WithProperty("hello")</code>.
+    * 
+    * @see BeanMetaData#getAnnotations()
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addAnnotation(String annotation, boolean replace);
 
    /**
-    * Set the mode
+    * Set the controller mode to use for the 
+    * {@link org.jboss.kernel.spi.dependency.KernelControllerContext} constructed
+    * from the {@link BeanMetaData} created from this builder.
     * 
-    * @param modeString the mode
-    * @return the builder
+    * @see BeanMetaData#getMode()
+    * @param modeString the name of the {@link org.jboss.dependency.spi.ControllerMode}
+    * @return this builder
     */
    public BeanMetaDataBuilder setMode(String modeString)
    {
@@ -232,61 +273,73 @@
    }
 
    /**
-    * Set the mode
+    * Set the controller mode to use for the 
+    * {@link org.jboss.kernel.spi.dependency.KernelControllerContext} constructed
+    * from the {@link BeanMetaData} created from this builder.
     * 
+    * @see BeanMetaData#getMode()
     * @param mode the mode
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setMode(ControllerMode mode);
 
    /**
-    * Set the access mode
+    * Set the bean access mode to use for the bean.
     *
+    * @see BeanMetaData#getAccessMode()
     * @param mode the access mode
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setAccessMode(BeanAccessMode mode);
 
    /**
-    * Set the error handling mode
+    * Set the error handling mode to use for the 
+    * {@link org.jboss.kernel.spi.dependency.KernelControllerContext} constructed
+    * from the {@link BeanMetaData} created from this builder.
     *
+    * @see BeanMetaData#getErrorHandlingMode()
     * @param mode the error handling mode
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setErrorHandlingMode(ErrorHandlingMode mode);
 
    /**
-    * Set the autowire type
+    * Set the autowire type to be used for the  
+    * {@link org.jboss.kernel.spi.dependency.KernelControllerContext} constructed
+    * from the {@link BeanMetaData} created from this builder.
     *
+    * @see BeanMetaData#getAutowireType()
     * @param type the autowire type
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setAutowireType(AutowireType type);
 
    /**
-    * Is bean autowire candidate.
+    * Set whether the bean is an autowire candidate
     *
+    * @see BeanMetaData#isAutowireCandidate()
     * @param candidate the candidate flag
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setAutowireCandidate(boolean candidate);
 
    /**
     * Set that we don't want to use the deployment classloader
     * 
-    * @return the builder
+    * @see BeanMetaData#getClassLoader()
+    * @return this builder
     */
-
    public BeanMetaDataBuilder setNoClassLoader()
    {
       return setClassLoader(createNull());
    }
 
    /**
-    * Set the classloader
+    * Set the classloader to be used to load the class for this bean
     * 
+    * @see BeanMetaData#getClassLoader()
     * @param classLoader the classloader
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder setClassLoader(Object classLoader)
    {
@@ -294,26 +347,30 @@
    }
 
    /**
-    * Set the classloader
+    * Set the classloader to be used to load the class for this bean
     * 
-    * @param classLoader the classloader
-    * @return the builder
+    * @see BeanMetaData#getClassLoader()
+    * @param classLoader a value metadata containing the classloader
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setClassLoader(ValueMetaData classLoader);
 
    /**
-    * Set the classloader
+    * Set the classloader to be used to load the class for this bean
     * 
+    * @see BeanMetaData#getClassLoader()
     * @param classLoader the classloader
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setClassLoader(ClassLoaderMetaData classLoader);
 
    /**
-    * Set the factory
+    * Set the non-static factory bean to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactory()
     * @param factory the factory
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder setFactory(Object factory)
    {
@@ -321,10 +378,12 @@
    }
 
    /**
-    * Set the factory
+    * Set the non-static factory bean to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactory()
     * @param bean the bean name
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder setFactory(String bean)
    {
@@ -332,11 +391,13 @@
    }
 
    /**
-    * Set the factory
+    * Set the non-static factory bean to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactory()
     * @param bean the bean name
     * @param property the property name for the factory
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder setFactory(String bean, String property)
    {
@@ -344,327 +405,397 @@
    }
 
    /**
-    * Set the factory
+    * Set the non-static factory bean to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactory()
     * @param factory the factory
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setFactory(ValueMetaData factory);
 
    /**
-    * Set the factory class
+    * Set the non-static factory class to use constructing the bean
     * 
-    * @param factoryClass the factory class
-    * @return the builder
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactoryClass()
+    * @param factoryClass the factory class name
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setFactoryClass(String factoryClass);
 
    /**
-    * Set the factory method
+    * Set the factory method to use constructing the bean. 
     * 
-    * @param factoryMethod the factory method
-    * @return the builder
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getFactoryMethod()
+    * @param factoryMethod the name of the factory method
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setFactoryMethod(String factoryMethod);
 
    /**
-    * Set the constructor value
+    * Set the constructor value to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getValue()
     * @param value the object "constructed"
-    * @return the builder
+    * @return this builder
     */
-   
    public BeanMetaDataBuilder setConstructorValue(Object value)
    {
       return setConstructorValue(createValue(value));
    }
 
    /**
-    * Set the constructor value
+    * Set the constructor value to use constructing the bean
     * 
-    * @param type the type
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getValue()
+    * @param type the type of the object
     * @param value the object "constructed"
-    * @return the builder
+    * @return this builder
     */
-   
    public BeanMetaDataBuilder setConstructorValue(String type, String value)
    {
       return setConstructorValue(createString(type, value));
    }
 
    /**
-    * Set the constructor value
+    * Set the constructor value to use constructing the bean
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getValue()
     * @param value the object "constructed"
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setConstructorValue(ValueMetaData value);
 
    /**
-    * Add a constructor parameter
+    * Add a constructor parameter to use when calling the constructor or a factory method
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getParameters()
     * @param type the parameter type
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addConstructorParameter(String type, Object value);
 
    /**
-    * Add a constructor parameter
+    * Add a constructor parameter to use when calling the constructor or a factory method
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value String representation of the value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addConstructorParameter(String type, String value);
 
    /**
-    * Add a constructor parameter
+    * Add a constructor parameter to use when calling the constructor or a factory method
     * 
+    * @see BeanMetaData#getConstructor()
+    * @see ConstructorMetaData#getParameters()
     * @param type the parameter type
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addConstructorParameter(String type, ValueMetaData value);
 
    /**
-    * Add a property, replace it if it already exists
+    * Add a property to the beans set of properties, replace it if it already exists
     * 
+    * @see BeanMetaData#getProperties()
     * @param name the property name
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Object value);
 
    /**
-    * Add a property, replace it if it already exists
+    * Add a property to the beans set of properties, replace it if it already exists
     * 
+    * @see BeanMetaData#getProperties()
     * @param name the property name
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyMetaData(String name, String value);
 
    /**
-    * Add a property, replace it if it already exists
+    * Add a property to the beans set of properties, replace it if it already exists
     * 
+    * @see BeanMetaData#getProperties()
     * @param name the property name
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyMetaData(String name, ValueMetaData value);
 
    /**
-    * Add a property, replace it if it already exists
+    * Add a property to the beans set of properties, replace it if it already exists
     * 
+    * @see BeanMetaData#getProperties()
     * @param name the property name
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Collection<ValueMetaData> value);
 
    /**
-    * Add a property annotation.
+    * Add an annotation to a property, with system property replacement
     *
+    * @see #addPropertyAnnotation(String, String, boolean)
+    * @see BeanMetaData#getProperties()
+    * @see PropertyMetaData#getAnnotations()
     * @param name the property name
-    * @param annotation the annotation
-    * @return the builder
+    * @param annotation the annotation in string format, e.g. <code>@org.acme.Marker</code>
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyAnnotation(String name, String annotation);
 
    /**
-    * Add a property annotation.
+    * Add an annotation to a property, with system property replacement
     *
+    * @see #addPropertyAnnotation(String, String, boolean)
+    * @see BeanMetaData#getProperties()
+    * @see PropertyMetaData#getAnnotations()
     * @param name the property name
-    * @param annotation the annotation
-    * @param replace the replace flag
-    * @return the builder
+    * @param annotation string representation of the annotation, e.g. <code>@org.acme.Marker</code>
+    * @param replace whether system property replacement should happen on the values. e.g. if we have
+    * <code>@org.acme.WithProperty("${test.property}")</code> and the value of 
+    * <code>-Dtest.property=hello</code>, this becomes <code>@org.acme.WithProperty("hello")</code>.
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyAnnotation(String name, String annotation, boolean replace);
 
    /**
     * Add a property annotation.
     *
+    * @see #addPropertyAnnotation(String, String, boolean)
+    * @see BeanMetaData#getProperties()
+    * @see PropertyMetaData#getAnnotations()
     * @param name the property name
     * @param annotation the annotation
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyAnnotation(String name, Annotation annotation);
 
    /**
-    * Add a property, replace it if it already exists
+    * Add a property to the beans set of properties, replace it if it already exists
     * 
+    * @see BeanMetaData#getProperties()
     * @param name the property name
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyMetaData(String name, Map<ValueMetaData, ValueMetaData> value);
    
    /**
     * Should we ignore default create invocation.
     *
-    * @return the builder
+    * @see BeanMetaData#getCreate()
+    * @see LifecycleMetaData#isIgnored()
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder ignoreCreate();
 
    /**
     * Set the create method
     * 
+    * @see BeanMetaData#getCreate()
+    * @see LifecycleMetaData#getMethodName()
     * @param methodName the method name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setCreate(String methodName);
 
    /**
-    * Add a create parameter
+    * Add a parameter to be passed in to the create method
     * 
+    * @see BeanMetaData#getCreate()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addCreateParameter(String type, Object value);
 
    /**
-    * Add a create parameter
+    * Add a parameter to be passed in to the create method
     * 
+    * @see BeanMetaData#getCreate()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value String representation of the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addCreateParameter(String type, String value);
 
    /**
-    * Add a create parameter
+    * Add a parameter to be passed in to the create method
     * 
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addCreateParameter(String type, ValueMetaData value);
 
    /**
     * Should we ignore default start invocation.
     *
-    * @return the builder
+    * @see BeanMetaData#getStart()
+    * @see LifecycleMetaData#isIgnored()
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder ignoreStart();
 
    /**
     * Set the start method
     * 
+    * @see BeanMetaData#getStart()
+    * @see LifecycleMetaData#getMethodName()
     * @param methodName the method name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setStart(String methodName);
 
    /**
-    * Add a start parameter
+    * Add a parameter to be passed in to the start method
     * 
+    * @see BeanMetaData#getStart()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStartParameter(String type, Object value);
 
    /**
-    * Add a start parameter
+    * Add a parameter to be passed in to the start method
     * 
-    * @param type the parameter type
+    * @see BeanMetaData#getStart()
+    * @see LifecycleMetaData#getParameters()
+    * @param type String representation of the parameter type
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStartParameter(String type, String value);
 
    /**
-    * Add a start parameter
+    * Add a parameter to be passed in to the start method
     * 
+    * @see BeanMetaData#getStart()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStartParameter(String type, ValueMetaData value);
 
    /**
     * Should we ignore default stop invocation.
     *
-    * @return the builder
+    * @see BeanMetaData#getStop()
+    * @see LifecycleMetaData#isIgnored()
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder ignoreStop();
 
    /**
     * Set the stop method
     * 
+    * @see BeanMetaData#getStop()
+    * @see LifecycleMetaData#getMethodName()
     * @param methodName the method name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setStop(String methodName);
 
    /**
-    * Add a stop parameter
+    * Add a parameter to be passed in to the stop method
     * 
+    * @see BeanMetaData#getStop()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStopParameter(String type, Object value);
 
    /**
-    * Add a stop parameter
+    * Add a parameter to be passed in to the stop method
     * 
+    * @see BeanMetaData#getStop()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStopParameter(String type, String value);
 
    /**
-    * Add a stop parameter
+    * Add a parameter to be passed in to the stop method
     * 
+    * @see BeanMetaData#getStop()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addStopParameter(String type, ValueMetaData value);
 
    /**
     * Should we ignore default destroy invocation.
     *
-    * @return the builder
+    * @See {@link BeanMetaData#getDestroy()}
+    * @see LifecycleMetaData#isIgnored()
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder ignoreDestroy();
 
    /**
     * Set the destroy method
     * 
+    * @see BeanMetaData#getDestroy()
+    * @see LifecycleMetaData#getMethodName()
     * @param methodName the method name
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder setDestroy(String methodName);
 
    /**
-    * Add a destroy parameter
+    * Add a parameter to be passed in to the destroy method
     * 
+    * @see BeanMetaData#getDestroy()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addDestroyParameter(String type, Object value);
 
    /**
-    * Add a destroy parameter
+    * Add a parameter to be passed in to the destroy method
     * 
+    * @see BeanMetaData#getDestroy()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addDestroyParameter(String type, String value);
 
    /**
-    * Add a destroy parameter
+    * Add a parameter to be passed in to the destroy method
     * 
+    * @see BeanMetaData#getDestroy()
+    * @see LifecycleMetaData#getParameters()
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addDestroyParameter(String type, ValueMetaData value);
 
@@ -672,7 +803,7 @@
     * Add a supply
     * 
     * @param supply the supply
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addSupply(Object supply)
    {
@@ -684,15 +815,18 @@
     * 
     * @param supply the supply
     * @param type the supply type
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addSupply(Object supply, String type);
 
    /**
-    * Add a demand
+    * Add a demand using the default value for when the supply is required by the demanding bean 
+    * {@link ControllerState#DESCRIBED} and the default value for the state of the supply 
+    * (link {@link ControllerState#INSTALLED} 
     * 
+    * @see BeanMetaData#getDemands()
     * @param demand the demand
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addDemand(Object demand)
    {
@@ -700,12 +834,15 @@
    }
 
    /**
-    * Add a demand
+    * Add a demand using the default value for the state of the supply 
+    * (link {@link ControllerState#INSTALLED}.
     * 
+    * @see BeanMetaData#getDemands()
+    * @see MatcherFactory
     * @param demand the demand
-    * @param whenRequired when the demand is required
-    * @param transformer the transformer
-    * @return the builder
+    * @param whenRequired string represenation of the when the demand is required
+    * @param transformer the transformer name as described in {@link MatcherFactory}
+    * @return this builder
     */
    public BeanMetaDataBuilder addDemand(Object demand, String whenRequired, String transformer)
    {
@@ -716,12 +853,15 @@
    }
 
    /**
-    * Add a demand
+    * Add a demand using the default value for the state of the supply 
+    * (link {@link ControllerState#INSTALLED} and the 
     * 
+    * @see BeanMetaData#getDemands()
+    * @see MatcherFactory
     * @param demand the demand
     * @param whenRequired when the demand is required
-    * @param transformer the transformer
-    * @return the builder
+    * @param transformer the transformer name as described in {@link MatcherFactory}
+    * @return this builder
     */
    public BeanMetaDataBuilder addDemand(Object demand, ControllerState whenRequired, String transformer)
    {
@@ -729,29 +869,33 @@
    }
 
    /**
-    * Add a demand
-    *
+    * Add a demand 
+    * 
+    * @see BeanMetaData#getDemands()
+    * @see MatcherFactory
     * @param demand the demand
     * @param whenRequired when the demand is required
-    * @param targetState the target state
-    * @param transformer the transformer
-    * @return the builder
+    * @param targetState the target state of the supply
+    * @param transformer the transformer name as described in {@link MatcherFactory}
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addDemand(Object demand, ControllerState whenRequired, ControllerState targetState, String transformer);
 
    /**
     * Add a dependency
-    * 
-    * @param dependency the dependency
-    * @return the builder
+    *
+    * @see BeanMetaData#getDepends()
+    * @param dependency the name of the dependency, i.e. bean name
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addDependency(Object dependency);
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being built here
     * 
-    * @param methodName the method name
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName)
    {
@@ -759,12 +903,14 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String type, Object value)
    {
@@ -772,12 +918,14 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value String representation of the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String type, String value)
    {
@@ -785,12 +933,14 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String type, ValueMetaData value)
    {
@@ -798,12 +948,17 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param methodName the method name
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String[] types, Object[] values)
    {
@@ -811,12 +966,16 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the string representations of the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String[] types, String[] values)
    {
@@ -824,12 +983,16 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String[] types, ValueMetaData[] values)
    {
@@ -837,11 +1000,13 @@
    }
 
    /**
-    * Add an install with a this parameter
+    * Add an install, where the install method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean)
    {
@@ -849,12 +1014,14 @@
    }
 
    /**
-    * Add an install with a this parameter
+    * Add an install, where the install method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @param state the state of the bean
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
+    * @param state the required state of the bean containing the install method
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean, ControllerState state)
    {
@@ -862,13 +1029,15 @@
    }
 
    /**
-    * Add an install with a this parameter
+    * Add an install, where the install method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here
     *
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param state the state of the bean
-    * @param whenRequired the state when to install
-    * @return the builder
+    * @param whenRequired the state when to call install
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstallWithThis(String methodName, String bean, ControllerState state, ControllerState whenRequired)
    {
@@ -878,11 +1047,12 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean)
    {
@@ -891,13 +1061,15 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param type the parameter type
     * @param value the value
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, Object value)
    {
@@ -907,13 +1079,15 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the string representation of the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, String value)
    {
@@ -923,13 +1097,15 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String type, ValueMetaData value)
    {
@@ -939,13 +1115,17 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, Object[] values)
    {
@@ -956,13 +1136,17 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the string representations of the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, String[] values)
    {
@@ -973,13 +1157,17 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addInstall(String methodName, String bean, String[] types, ValueMetaData[] values)
    {
@@ -990,10 +1178,12 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in the bean being built here,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @return the parameter builder
     */
    public ParameterMetaDataBuilder addInstallWithParameters(String methodName)
    {
@@ -1001,11 +1191,13 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
+    * @return the parameter builder
     */
    public ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean)
    {
@@ -1013,10 +1205,12 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param state the state of the bean
     * @return the parameter builder
     */
@@ -1026,21 +1220,24 @@
    }
 
    /**
-    * Add an install
+    * Add an install where the install method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     *
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getInstalls()
+    * @param methodName the name of the method to be called upon install
+    * @param bean the name of the bean containing the method to be called upon install
     * @param state the state of the bean
-    * @param whenRequired the state when to install
+    * @param whenRequired the state when to call install
     * @return the parameter builder
     */
    public abstract ParameterMetaDataBuilder addInstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired);
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being built here
     * 
-    * @param methodName the method name
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName)
    {
@@ -1048,12 +1245,14 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String type, Object value)
    {
@@ -1061,12 +1260,14 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value String representation of the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String type, String value)
    {
@@ -1074,12 +1275,14 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking a single parameter.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String type, ValueMetaData value)
    {
@@ -1087,12 +1290,17 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param methodName the method name
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String[] types, Object[] values)
    {
@@ -1100,12 +1308,16 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the string representations of the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String[] types, String[] values)
    {
@@ -1113,12 +1325,16 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being build here,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String[] types, ValueMetaData[] values)
    {
@@ -1126,11 +1342,13 @@
    }
 
    /**
-    * Add an uninstall with a this parameter
+    * Add an uninstall, where the uninstall method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean)
    {
@@ -1138,12 +1356,14 @@
    }
 
    /**
-    * Add an uninstall with a this parameter
+    * Add an uninstall, where the uninstall method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @param state the state when to uninstall
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
+    * @param state the required state of the bean containing the uninstall method
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean, ControllerState state)
    {
@@ -1151,13 +1371,15 @@
    }
 
    /**
-    * Add an uninstall with a this parameter
+    * Add an uninstall, where the uninstall method resides in another bean, passing in a single
+    * parameter which is the 'this' pointer to the bean being created here
     *
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param state the state of the bean
-    * @param whenRequired the state when to uninstall
-    * @return the builder
+    * @param whenRequired the state when to call uninstall
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstallWithThis(String methodName, String bean, ControllerState state, ControllerState whenRequired)
    {
@@ -1167,11 +1389,12 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean)
    {
@@ -1180,13 +1403,15 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, Object value)
    {
@@ -1196,13 +1421,15 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the string representation of the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, String value)
    {
@@ -1212,13 +1439,15 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * taking a single parameter
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param type the parameter type
-    * @param value the value
-    * @return the builder
+    * @param value the parameter value
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String type, ValueMetaData value)
    {
@@ -1228,13 +1457,17 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, Object[] values)
    {
@@ -1245,13 +1478,17 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the string representations of the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, String[] values)
    {
@@ -1262,13 +1499,17 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in in another bean,
+    * taking several parameters. The <code>types</code> and <code>values</code>
+    * arrays must have the same lengths, and <code>types[i]</code> is the type of
+    * <code>values[i]</code>.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param types the parameter types
-    * @param values the values
-    * @return the builder
+    * @param values the parameter values
+    * @return this builder
     */
    public BeanMetaDataBuilder addUninstall(String methodName, String bean, String[] types, ValueMetaData[] values)
    {
@@ -1279,10 +1520,12 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in the bean being built here,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @return the parameter builder
     */
    public ParameterMetaDataBuilder addUninstallWithParameters(String methodName)
    {
@@ -1290,11 +1533,13 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
-    * @return the builder
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
+    * @return the parameter builder
     */
    public ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean)
    {
@@ -1302,10 +1547,12 @@
    }
 
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     * 
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param state the state of the bean
     * @return the parameter builder
     */
@@ -1315,12 +1562,14 @@
    }
    
    /**
-    * Add an uninstall
+    * Add an uninstall where the uninstall method resides in another bean,
+    * returning a parameter builder that can be used to add parameters.
     *
-    * @param methodName the method name
-    * @param bean the bean name
+    * @see BeanMetaData#getUninstalls()
+    * @param methodName the name of the method to be called upon uninstall
+    * @param bean the name of the bean containing the method to be called upon uninstall
     * @param state the state of the bean
-    * @param whenRequired the state when to uninstall
+    * @param whenRequired the state when to call uninstall
     * @return the parameter builder
     */
    public abstract ParameterMetaDataBuilder addUninstallWithParameters(String methodName, String bean, ControllerState state, ControllerState whenRequired);
@@ -1328,8 +1577,9 @@
    /**
     * Add property install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param property the property name
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyInstallCallback(String property)
    {
@@ -1339,9 +1589,10 @@
    /**
     * Add property install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param property the property name
     * @param whenRequired the when required state
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyInstallCallback(String property, ControllerState whenRequired)
    {
@@ -1351,9 +1602,10 @@
    /**
     * Add property install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param property the property name
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyInstallCallback(String property, Cardinality cardinality)
    {
@@ -1363,10 +1615,11 @@
    /**
     * Add property install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param property the property name
     * @param whenRequired the when required state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyInstallCallback(String property, ControllerState whenRequired, Cardinality cardinality)
    {
@@ -1376,12 +1629,13 @@
    /**
     * Add property install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param property the property name
     * @param signature the property signature
     * @param whenRequired the when required state
     * @param dependentState the dependant state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyInstallCallback(
          String property,
@@ -1393,8 +1647,9 @@
    /**
     * Add property uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param property the property name
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyUninstallCallback(String property)
    {
@@ -1404,9 +1659,10 @@
    /**
     * Add property uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param property the property name
     * @param whenRequired the when required state
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyUninstallCallback(String property, ControllerState whenRequired)
    {
@@ -1416,9 +1672,10 @@
    /**
     * Add property uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param property the property name
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyUninstallCallback(String property, Cardinality cardinality)
    {
@@ -1428,10 +1685,11 @@
    /**
     * Add property uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param property the property name
     * @param whenRequired the when required state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addPropertyUninstallCallback(String property, ControllerState whenRequired, Cardinality cardinality)
    {
@@ -1441,12 +1699,13 @@
    /**
     * Add property uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param property the property name
     * @param signature the property signature
     * @param whenRequired the when required state
     * @param dependentState the dependant state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addPropertyUninstallCallback(
          String property,
@@ -1458,8 +1717,9 @@
    /**
     * Add method install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param method the method name
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodInstallCallback(String method)
    {
@@ -1469,9 +1729,10 @@
    /**
     * Add method install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param method the method name
     * @param whenRequired the when required state
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodInstallCallback(String method, ControllerState whenRequired)
    {
@@ -1481,9 +1742,10 @@
    /**
     * Add method install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param method the method name
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodInstallCallback(String method, Cardinality cardinality)
    {
@@ -1493,10 +1755,11 @@
    /**
     * Add method install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param method the method name
     * @param whenRequired the when required state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodInstallCallback(String method, ControllerState whenRequired, Cardinality cardinality)
    {
@@ -1506,12 +1769,13 @@
    /**
     * Add method install callback.
     *
+    * @see BeanMetaData#getInstallCallbacks()
     * @param method the method name
     * @param signature the method signature
     * @param whenRequired the when required state
     * @param dependentState the dependant state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addMethodInstallCallback(
          String method,
@@ -1523,8 +1787,9 @@
    /**
     * Add method uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param method the method name
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodUninstallCallback(String method)
    {
@@ -1534,9 +1799,10 @@
    /**
     * Add method uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param method the method name
     * @param whenRequired the when required state
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodUninstallCallback(String method, ControllerState whenRequired)
    {
@@ -1546,9 +1812,10 @@
    /**
     * Add method uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param method the method name
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodUninstallCallback(String method, Cardinality cardinality)
    {
@@ -1558,10 +1825,11 @@
    /**
     * Add method uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param method the method name
     * @param whenRequired the when required state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public BeanMetaDataBuilder addMethodUninstallCallback(String method, ControllerState whenRequired, Cardinality cardinality)
    {
@@ -1571,12 +1839,13 @@
    /**
     * Add method uninstall callback.
     *
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param method the method name
     * @param signature the method signature
     * @param whenRequired the when required state
     * @param dependentState the dependant state
     * @param cardinality the cardinality
-    * @return the builder
+    * @return this builder
     */
    public abstract BeanMetaDataBuilder addMethodUninstallCallback(
          String method,
@@ -1588,6 +1857,7 @@
    /**
     * Create related class name.
     *
+    * @see BeanMetaData#getRelated()
     * @param className the related class name
     * @param enabled the enabled
     * @return new related class meta data
@@ -1609,7 +1879,7 @@
    public abstract ValueMetaData createThis();
    
    /**
-    * Create a value
+    * Create a value containing an object
     * 
     * @param value the already constructed value
     * @return the value
@@ -1626,9 +1896,9 @@
    public abstract ValueMetaData createString(String type, String value);
    
    /**
-    * Create an injection
+    * Create an injection using a bean as what is being injected
     * 
-    * @param bean the bean to inject
+    * @param bean the name of bean to inject
     * @return the injection
     */
    public ValueMetaData createInject(Object bean)
@@ -1637,10 +1907,10 @@
    }
    
    /**
-    * Create an injection
+    * Create an injection being able to specify the the property of a bean as what is being injected
     * 
-    * @param bean the bean to inject
-    * @param property the property of the bean
+    * @param bean the name of the bean 
+    * @param property the name of the property of the bean to inject. If null, the bean itself will be injected
     * @return the injection
     */
    public ValueMetaData createInject(Object bean, String property)
@@ -1649,12 +1919,12 @@
    }
    
    /**
-    * Create an injection
+    * Create an injection being able to specify the property of a bean as what is being injected
     * 
-    * @param bean the bean to inject
-    * @param property the property of the bean
+    * @param bean the name of the bean 
+    * @param property the name of the property of the bean to inject. If null, the bean itself will be injected
     * @param whenRequired when the injection is required
-    * @param dependentState the state of the injected bean
+    * @param dependentState the required state of the injected bean
     * @return the injection
     */
    public ValueMetaData createInject(Object bean, String property, ControllerState whenRequired, ControllerState dependentState)
@@ -1663,20 +1933,23 @@
    }
 
    /**
-    * Create an injection
-    *
-    * @param bean the bean to inject
-    * @param property the property of the bean
+    * Create an injection being able to specify the property of a bean as what is being injected
+    * 
+    * @param bean the name of the bean 
+    * @param property the name of the property of the bean to inject. If null, the bean itself will be injected
     * @param whenRequired when the injection is required
-    * @param dependentState the state of the injected bean
-    * @param search the search info
+    * @param dependentState the required state of the injected bean
+    * @param search the search info describing how to search for the injected bean if we have a hierarchy of 
+    * {@link org.jboss.dependency.spi.Controller}s 
     * @return the injection
     */
    public abstract ValueMetaData createInject(Object bean, String property, ControllerState whenRequired, ControllerState dependentState, SearchInfo search);
 
    /**
-    * Create contextual injection.
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
     *
+    * @see BeanMetaData#isAutowireCandidate()
     * @return the contextual injection
     */
    public ValueMetaData createContextualInject()
@@ -1685,8 +1958,10 @@
    }
 
    /**
-    * Create contextual injection.
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
     *
+    * @see BeanMetaData#isAutowireCandidate()
     * @param whenRequired when the injection is required
     * @param dependentState the state of the injected bean
     * @return the contextual injection
@@ -1697,11 +1972,14 @@
    }
 
    /**
-    * Create contextual injection.
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
     *
+    * @see BeanMetaData#isAutowireCandidate()
+    * @see BeanMetaData#getAutowireType()
     * @param whenRequired when the injection is required
     * @param dependentState the state of the injected bean
-    * @param autowire the autowire type
+    * @param autowire the autowire type. If null, the type is {@link AutowireType#BY_CLASS} 
     * @param option the inject option
     * @return the contextual injection
     */
@@ -1711,21 +1989,23 @@
    }
 
    /**
-    * Create contextual injection.
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
     *
     * @param whenRequired when the injection is required
     * @param dependentState the state of the injected bean
     * @param autowire the autowire type
     * @param option the inject option
-    * @param search the search info
+    * @param search the search info describing how to search for the injected bean if we have a hierarchy of 
+    * {@link org.jboss.dependency.spi.Controller}s 
     * @return the contextual injection
     */
    public abstract ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, SearchInfo search);
 
    /**
-    * Create from context injection.
+    * Inject values from the context of the bean we are creating
     *
-    * @param fromContext from context enum
+    * @param fromContext enum specifying what to inject from the {@link org.jboss.kernel.spi.dependency.KernelControllerContext}
     * @return the from context injection
     */
    public ValueMetaData createFromContextInject(FromContext fromContext)
@@ -1734,9 +2014,9 @@
    }
 
    /**
-    * Create from context injection.
+    * Inject values from the context of another bean
     *
-    * @param fromContext from context enum
+    * @param fromContext enum specifying what to inject from the {@link org.jboss.kernel.spi.dependency.KernelControllerContext}
     * @param contextName the context name
     * @return the from context injection
     */
@@ -1746,11 +2026,11 @@
    }
 
    /**
-    * Create from context injection.
+    * Inject values from the context of another bean
     *
-    * @param fromContext from context enum
+    * @param fromContext enum specifying what to inject from the {@link org.jboss.kernel.spi.dependency.KernelControllerContext}
     * @param contextName the context name
-    * @param dependentState the state of the injected context
+    * @param dependentState the state of the injected/other context
     * @return the from context injection
     */
    public ValueMetaData createFromContextInject(FromContext fromContext, Object contextName, ControllerState dependentState)
@@ -1759,12 +2039,13 @@
    }
 
    /**
-    * Create from context injection.
+    * Inject values from the context of another bean
     *
-    * @param fromContext from context enum
+    * @param fromContext enum specifying what to inject from the {@link org.jboss.kernel.spi.dependency.KernelControllerContext}
     * @param contextName the context name
-    * @param dependentState the state of the injected context
-    * @param search the search info
+    * @param dependentState the state of the injected/other context
+    * @param search the search info describing how to search for the injected bean if we have a hierarchy of 
+    * {@link org.jboss.dependency.spi.Controller}s 
     * @return the from context injection
     */
    public abstract ValueMetaData createFromContextInject(FromContext fromContext, Object contextName, ControllerState dependentState, SearchInfo search);
@@ -1780,7 +2061,7 @@
    }
    
    /**
-    * Create a new collection
+    * Create a new collection, where we can specify the exact type of Collection we would like
     * 
     * @param collectionType the collection type
     * @param elementType the element type
@@ -1799,7 +2080,7 @@
    }
    
    /**
-    * Create a new list
+    * Create a new list, where we can specify the exact type of List we would like
     * 
     * @param listType the list type
     * @param elementType the element type
@@ -1818,7 +2099,7 @@
    }
    
    /**
-    * Create a new set
+    * Create a new set, where we can specify the exact type of Set we would like
     * 
     * @param setType the set type
     * @param elementType the element type
@@ -1837,7 +2118,7 @@
    }
    
    /**
-    * Create a new array
+    * Create a new array, where we can specify the exact type of array we would like
     * 
     * @param arrayType the array type
     * @param elementType the element type
@@ -1856,7 +2137,7 @@
    }
    
    /**
-    * Create a new map
+    * Create a new map, where we can specify the exact type of Map we would like
     * 
     * @param mapType the map type
     * @param keyType the key type

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/ParameterMetaDataBuilder.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,10 +21,12 @@
 */
 package org.jboss.beans.metadata.spi.builder;
 
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.ParameterizedMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**
- * ParameterMetaDataBuilder.
+ * ParameterMetaDataBuilder, used to add parameters to a parameterized part of the metadata
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
@@ -34,6 +36,7 @@
    /**
     * Add a parameter
     * 
+    * @see ParameterizedMetaData#getParameters()
     * @param type the type
     * @param value the value
     * @return the parameter
@@ -43,6 +46,7 @@
    /**
     * Add a parameter
     * 
+    * @see ParameterizedMetaData#getParameters()
     * @param type the type
     * @param value the value
     * @return the builder
@@ -52,6 +56,7 @@
    /**
     * Add a parameter
     * 
+    * @see ParameterizedMetaData#getParameters()
     * @param type the type
     * @param value the value
     * @return the builder

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 26060 2004-11-22 15:45:18Z ejort $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Classes used to construct <a href="../BeanMetaData.html">BeanMetaData</a> programatically.  
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/AbstractBeanFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/AbstractBeanFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/AbstractBeanFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -37,6 +37,8 @@
 
 /**
  * SPI contract of bean factory we can create from GenericBeanFactoryMetaData.
+ * This is the base class to be used for different implementations of the {@link BeanFactory}
+ * interface.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/BeanFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/BeanFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/BeanFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,10 @@
 package org.jboss.beans.metadata.spi.factory;
 
 /**
- * Bean factory interface.
+ * Bean factory interface. A bean factory is defined in much the same way as a bean,
+ * but instead of instantiating and configuring a single instance of the bean,
+ * we get a reference to the bean factory, which can then be used to create several
+ * instances of a bean.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -65,10 +65,14 @@
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
 import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.util.JBossObject;
 
 /**
- * GenericBeanFactoryMetaData.
+ * GenericBeanFactoryMetaData. Used to configure, or parse a <code>&lt;beanfactory&gt;</code>
+ * element into, this {@link BeanMetaDataFactory} that can be used to obtain
+ * the bean factories {@link BeanMetaData} so it can be deployed into the {@link KernelController}.
+ * The resulting bean will be an instance of a {@link BeanFactory}. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
@@ -148,8 +152,9 @@
    }
 
    /**
-    * Get the name
+    * Get the name of the bean factory
     * 
+    * @see BeanMetaData#getName(String)
     * @return the name
     */
    public String getName()
@@ -158,8 +163,9 @@
    }
 
    /**
-    * Set the bean name
+    * Set the bean factory name
     * 
+    * @see BeanMetaData#setName(String)
     * @param name the name
     */
    @XmlAttribute
@@ -169,8 +175,12 @@
    }
 
    /**
-    * Get the bean class
+    * Get the bean class. This is the type of object that will be 
+    * created by the {@link BeanFactory} once this metadata has been
+    * converted into a {@link BeanFactory} following the call to
+    * {@link #getBeans()} and installing it into the {@link KernelController}
     * 
+    * @see BeanMetaData#getBean()
     * @return the bean class
     */
    public String getBean()
@@ -179,8 +189,12 @@
    }
 
    /**
-    * Set the bean class
+    * Set the bean class. This is the type of object that will be 
+    * created by the {@link BeanFactory} once this metadata has been
+    * converted into a {@link BeanFactory} following the call to
+    * {@link #getBeans()} and installing it into the {@link KernelController} 
     * 
+    * @see BeanMetaData#getBean()
     * @param bean the bean class
     */
    @XmlAttribute(name="class")
@@ -201,9 +215,9 @@
 
    /**
     * Set the factory class.
-
     * Note: this class param must either extend GenericBeanFactory
     * or have the same constructor and properties aka 'callbacks'.
+    * If not set a default implementation will be used.
     *
     * @param factoryClass the factory class
     */
@@ -216,6 +230,7 @@
    /**
     * Get the aliases
     * 
+    * @see BeanMetaData#getAliases()
     * @return the aliases
     */
    public Set<AliasMetaData> getAliases()
@@ -226,6 +241,7 @@
    /**
     * Set the aliases
     * 
+    * @see BeanMetaData#getAliases()
     * @param aliases the aliases
     */
    @XmlElement(name="alias", type=AbstractAliasMetaData.class)
@@ -237,6 +253,7 @@
    /**
     * Get the access mode.
     *
+    * @see BeanMetaData#getAccessMode()
     * @return the access mode
     */
    public BeanAccessMode getAccessMode()
@@ -247,6 +264,7 @@
    /**
     * Set the access mode.
     *
+    * @see BeanMetaData#getAccessMode()
     * @param accessMode the access mode
     */
    @XmlAttribute(name = "access-mode")
@@ -258,6 +276,7 @@
    /**
     * Get the mode
     * 
+    * @see BeanMetaData#getMode()
     * @return the mode
     */
    public ControllerMode getMode()
@@ -268,6 +287,7 @@
    /**
     * Set the mode
     * 
+    * @see BeanMetaData#getMode()
     * @param mode the mode
     */
    @XmlAttribute
@@ -279,6 +299,7 @@
    /**
     * Get the annotations
     * 
+    * @see BeanMetaData#getAnnotations()
     * @return the annotations
     */
    public Set<AnnotationMetaData> getAnnotations()
@@ -289,6 +310,7 @@
    /**
     * Set the annotations
     * 
+    * @see BeanMetaData#getAnnotations()
     * @param annotations the annotations
     */
    @XmlElement(name="annotation", type=AbstractAnnotationMetaData.class)
@@ -300,6 +322,7 @@
    /**
     * Get the classloader
     * 
+    * @see BeanMetaData#getClassLoader()
     * @return the classloader
     */
    public ClassLoaderMetaData getClassLoader()
@@ -310,6 +333,7 @@
    /**
     * Set the classloader
     * 
+    * @see BeanMetaData#getClassLoader()
     * @param classLoader the classloader
     */
    @XmlElement(name="classloader", type=AbstractClassLoaderMetaData.class)
@@ -321,6 +345,7 @@
    /**
     * Get the constructor
     * 
+    * @see BeanMetaData#getConstructor()
     * @return the constructor
     */
    public ConstructorMetaData getConstructor()
@@ -331,6 +356,7 @@
    /**
     * Set the constructor
     * 
+    * @see BeanMetaData#getConstructor()
     * @param constructor the constructor
     */
    @XmlElement(name="constructor", type=AbstractConstructorMetaData.class)
@@ -342,6 +368,7 @@
    /**
     * Get the create
     * 
+    * @see BeanMetaData#getCreate()
     * @return the create
     */
    public LifecycleMetaData getCreate()
@@ -352,6 +379,7 @@
    /**
     * Set the create
     * 
+    * @see BeanMetaData#getCreate()
     * @param create the create
     */
    @XmlElement(name="create", type=AbstractLifecycleMetaData.class)
@@ -363,6 +391,7 @@
    /**
     * Get the properties
     * 
+    * @see BeanMetaData#getProperties()
     * @return the properties
     */
    public Set<PropertyMetaData> getProperties()
@@ -373,6 +402,7 @@
    /**
     * Set the properties
     * 
+    * @see BeanMetaData#getProperties()
     * @param properties the properties
     */
    @XmlElement(name="property", type=AbstractPropertyMetaData.class)
@@ -384,6 +414,7 @@
    /**
     * Get the start
     * 
+    * @see BeanMetaData#getStart()
     * @return the start
     */
    public LifecycleMetaData getStart()
@@ -394,6 +425,7 @@
    /**
     * Set the start
     * 
+    * @see BeanMetaData#getStart()
     * @param start the start
     */
    @XmlElement(name="start", type=AbstractLifecycleMetaData.class)
@@ -403,8 +435,9 @@
    }
 
    /**
-    * Get the demans
+    * Get the demands
     * 
+    * @see BeanMetaData#getDemands()
     * @return the demands
     */
    @XmlElement(name="demand", type=AbstractDemandMetaData.class)
@@ -416,6 +449,7 @@
    /**
     * Set the demands
     * 
+    * @see BeanMetaData#getDemands()
     * @param demands the demands
     */
    public void setDemands(Set<DemandMetaData> demands)
@@ -426,6 +460,7 @@
    /**
     * Get the dependencies
     * 
+    * @see BeanMetaData#getDepends()
     * @return the dependencies
     */
    public Set<DependencyMetaData> getDepends()
@@ -436,6 +471,7 @@
    /**
     * Set the dependencies
     * 
+    * @see BeanMetaData#getDepends()
     * @param depends the dependencies
     */
    @XmlElement(name="depends", type=AbstractDependencyMetaData.class)
@@ -447,6 +483,7 @@
    /**
     * Get the install callbacks
     * 
+    * @see BeanMetaData#getInstallCallbacks()
     * @return the install callbacks
     */
    public List<CallbackMetaData> getInstallCallbacks()
@@ -457,6 +494,7 @@
    /**
     * Set the install callbacks
     * 
+    * @see BeanMetaData#getInstallCallbacks()
     * @param installCallbacks the install callbacks
     */
    @XmlElement(name="incallback", type=InstallCallbackMetaData.class)
@@ -468,6 +506,7 @@
    /**
     * Get the installs
     * 
+    * @see BeanMetaData#getInstalls()
     * @return the installs
     */
    public List<InstallMetaData> getInstalls()
@@ -478,6 +517,7 @@
    /**
     * Set the installs
     * 
+    * @see BeanMetaData#getInstalls()
     * @param installs the installs
     */
    @XmlElement(name="install", type=AbstractInstallMetaData.class)
@@ -489,6 +529,7 @@
    /**
     * Get the supples
     * 
+    * @see BeanMetaData#getSupplies()
     * @return the supplies
     */
    public Set<SupplyMetaData> getSupplies()
@@ -499,6 +540,7 @@
    /**
     * Set the supplies
     * 
+    * @see BeanMetaData#getSupplies()
     * @param supplies the supplies
     */
    @XmlElement(name="supply", type=AbstractSupplyMetaData.class)
@@ -510,6 +552,7 @@
    /**
     * Get the uninstall callbacks
     * 
+    * @see BeanMetaData#getUninstallCallbacks()
     * @return the uninstall callbacks
     */
    public List<CallbackMetaData> getUninstallCallbacks()
@@ -520,6 +563,7 @@
    /**
     * Set the uninstall callbacks
     * 
+    * @see BeanMetaData#getUninstallCallbacks()
     * @param uninstallCallbacks the uninstall callbacls
     */
    @XmlElement(name="uncallback", type=UninstallCallbackMetaData.class)
@@ -531,6 +575,7 @@
    /**
     * Get the uninstalls
     * 
+    * @see BeanMetaData#getUninstalls()
     * @return the uninstalls
     */
    public List<InstallMetaData> getUninstalls()
@@ -541,6 +586,7 @@
    /**
     * Set the uninstalls
     * 
+    * @see BeanMetaData#getUninstalls()
     * @param uninstalls the uninstalls
     */
    @XmlElement(name="uninstall", type=AbstractInstallMetaData.class)
@@ -555,6 +601,12 @@
       return Collections.singletonList(getBeanMetaData());
    }
 
+   /**
+    * Get the bean metadata for the {@link BeanFactory} created by this bean factory metadata
+    * 
+    * @see BeanMetaData#getUninstalls()
+    * @param uninstalls the uninstalls
+    */
    @XmlTransient
    public BeanMetaData getBeanMetaData()
    {

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -44,6 +44,9 @@
 
 /**
  * PropertyMap.
+ * Used to copy the properties from the {@link GenericBeanFactoryMetaData}
+ * to the resulting {@link BeanFactory} implementation following the call to 
+ * {@link GenericBeanFactoryMetaData#getBeans()}.
  *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,9 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to deploy beans.
+    <p>Classes used to describe beans for deployment. Whether you are deploying beans using a <code>-beans.xml</code> or
+    using annotations, they all end up as <code>BeanMetaData</code> which describes one bean. To construct a bean
+    programatically, the <a href="builder/BeanMetaDataBuilder.html">BeanMetaDataBuilder</a> can be used.  
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +27,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,12 +27,24 @@
 import org.jboss.kernel.spi.event.KernelEventManager;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
 import org.jboss.kernel.spi.registry.KernelBus;
+import org.jboss.kernel.spi.registry.KernelRegistry;
 import org.jboss.kernel.spi.validation.KernelBeanValidator;
 
 /**
  * The kernel.<p>
  * 
- * The kernel is the entry point into the kernel services. 
+ * The kernel is the entry point into the kernel services. The kernel
+ * is the {@link KernelController} + additional services such as the
+ * <ul>
+ *   <li>{@link KernelBus}</li>
+ *   <li>{@link KernelConfig}</li>
+ *   <li>{@link KernelConfigurator}</li>
+ *   <li>{@link KernelController}</li>
+ *   <li>{@link KernelEventManager}</li>
+ *   <li>{@link KernelMetaDataRepository}</li>
+ *   <li>{@link KernelRegistry}</li>
+ *   <li>{@link KernelBeanValidator}</li>
+ * </ul>
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="mailto:les.hazlewood at jboss.org">Les A. Hazlewood</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/api/dependency/MatcherFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/api/dependency/MatcherFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/api/dependency/MatcherFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,11 +21,19 @@
 */
 package org.jboss.kernel.api.dependency;
 
+import org.jboss.kernel.plugins.dependency.IntervalMatcherTransformer;
 import org.jboss.kernel.plugins.dependency.MatcherFactoryBuilder;
+import org.jboss.kernel.plugins.dependency.RegexpMatcherTransformer;
 
 /**
- * Matcher factory.
- * Holding the obvious Matcher implementations.
+ * Matcher factory singleton holding the obvious Matcher implementations.
+ * The default implementation comes with the following built in matchers:
+ * <ul>
+ *   <li><b>default</b> - A {@link Matcher} that requires an exact match between the names</li>
+ *   <li><b>regexp</b> -  A {@link Matcher} that matches on regular expressions</li>
+ *   <li><b>interval</b> - A {@link Matcher} that matches on an interval</li>
+ * </ul>
+
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -53,11 +61,16 @@
    public abstract void addMatcherTransfomer(String key, MatcherTransformer transformer);
 
    /**
-    * Create the Matcher.
+    * Create the Matcher. The <code>transformer</code> String can contain one of the predefined
+    * matcher implementations <code>default</code>, <code>regexp</code> or <code>interval</code>,
+    * the key of a {@link MatcherTransformer} added using the {@link #addMatcherTransfomer(String, MatcherTransformer)}
+    * method, or it can contain the name of a class implementing the {@link MatcherTransformer} interface that has a default
+    * constructor. 
     *
-    * @param transformer the transformer
+    * @param transformer the transformer key
     * @param value the value to wrap
     * @return new Matcher instance
+    * @throws IllegalArgumentException if no matcher could be found
     */
    public abstract Matcher createMatcher(String transformer, Object value);
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,7 @@
   </head>
 
   <body bgcolor="white">
-    <p>The core Kernel implementation.
+    <p>The core Kernel implementation. 
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +25,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/KernelObject.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/KernelObject.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/KernelObject.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -25,7 +25,8 @@
 import org.jboss.kernel.spi.event.KernelEventEmitter;
 
 /**
- * A kernel object.<p>
+ * A kernel object.<p> 
+ * All kernel service interfaces implement this interface
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/AnnotationToBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/AnnotationToBeanMetaDataFactory.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/AnnotationToBeanMetaDataFactory.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -37,7 +37,8 @@
 import org.jboss.metadata.plugins.loader.reflection.AnnotatedElementMetaDataLoader;
 
 /**
- * Annotation to bean metadata factory.
+ * Annotation to bean metadata factory. Used to translate MC annotations on bean classes to
+ * {@link BeanMetaData}
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -59,9 +60,9 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations.
     *
-    * @param beanClass the bean class
+    * @param beanClass the bean class to read for annotations
     * @return bean metadata
     * @throws Throwable for any error
     */
@@ -71,7 +72,9 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations allowing specification of the bean access mode.
+    * Use the default {@link BeanMetaDataAnnotationAdapter} which recognises the annotations in the
+    * <a href="../../../beans/metadata/api/annotations/package-summary.html">org.jboss.beans.metadata.api.annotations</a> package
     *
     * @param beanClass the bean class
     * @param mode the bean access mode
@@ -84,7 +87,9 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations, and the annotations applied in the passed in metadata.
+    * Use the default {@link BeanMetaDataAnnotationAdapter} which recognises the annotations in the
+    * <a href="../../../beans/metadata/api/annotations/package-summary.html">org.jboss.beans.metadata.api.annotations</a> package
     *
     * @param beanClass the bean class
     * @param metaData predefined metadata
@@ -97,7 +102,7 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations using the specified bean metadata annotation adapter.
     *
     * @param beanClass the bean class
     * @param adapter bean metadata adapter
@@ -110,7 +115,7 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations using the specified bean access mode and metadata annotation adapter.
     *
     * @param beanClass the bean class
     * @param mode the bean access mode
@@ -124,7 +129,9 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations and add to the existing bean metadata.
+    * Use the default {@link BeanMetaDataAnnotationAdapter} which recognises the annotations in the
+    * <a href="../../../beans/metadata/api/annotations/package-summary.html">org.jboss.beans.metadata.api.annotations</a> package
     *
     * @param beanClass the bean class
     * @param existingMetaData the existing bean metadata
@@ -137,7 +144,9 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations, using the specified bean access mode, and add to the existing bean metadata.
+    * Use the default {@link BeanMetaDataAnnotationAdapter} which recognises the annotations in the
+    * <a href="../../../beans/metadata/api/annotations/package-summary.html">org.jboss.beans.metadata.api.annotations</a> package
     *
     * @param beanClass the bean class
     * @param mode the bean access mode
@@ -151,7 +160,7 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations, using the specified bean metadata annotation adapter, and add to the existing bean metadata.
     *
     * @param beanClass the bean class
     * @param existingMetaData the existing bean metadata
@@ -165,7 +174,8 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations, using the specified bean access mode and metadata annotation adapter,
+    * and add to the existing bean metadata.
     *
     * @param beanClass the bean class
     * @param mode the bean access mode
@@ -180,8 +190,9 @@
    }
 
    /**
-    * Create bean metadata for class.
-    *
+    * Create bean metadata for a class from its annotations, and the ones specified in the passed in metadata, using the specified bean metadata annotation adapter,
+    * and add to the existing bean metadata.
+    * 
     * @param beanClass the bean class
     * @param metaData predefined metadata
     * @param existingMetaData the existing bean metadata
@@ -195,7 +206,8 @@
    }
 
    /**
-    * Create bean metadata for class.
+    * Create bean metadata for a class from its annotations, and the ones specified in the passed in metadata, using the specified bean access mode and metadata annotation adapter,
+    * and add to the existing bean metadata.
     *
     * @param beanClass the bean class
     * @param mode the bean access mode

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/BeanMetaDataAnnotationAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/BeanMetaDataAnnotationAdapter.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/BeanMetaDataAnnotationAdapter.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -26,7 +26,8 @@
 import org.jboss.metadata.spi.MetaData;
 
 /**
- * Annotations adapter contract based on metadata.
+ * Annotations adapter contract based on metadata. Implementing classes specify the annotations to
+ * look for and build up the resulting {@link BeanMetaData}.
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -35,9 +36,9 @@
    /**
     * Apply the annotations on bean metadata.
     *
-    * @param beanInfo the bean info
-    * @param metaData the metadata
-    * @param beanMetaData the bean meta data
+    * @param beanInfo the bean info describing the class 
+    * @param metaData the metadata that might 
+    * @param beanMetaData the bean meta data we are working on.
     * @throws Throwable for any error
     */
    void applyAnnotations(BeanInfo beanInfo, MetaData metaData, BeanMetaData beanMetaData) throws Throwable;

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/annotations/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 26060 2004-11-22 15:45:18Z ejort $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Classes used to define the plugins used when bootstrapping the kernel to create the services that make up the kernel.
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/KernelInitializer.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/KernelInitializer.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/KernelInitializer.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,11 +22,12 @@
 package org.jboss.kernel.spi.bootstrap;
 
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
 
 /**
  * Kernel Factory.<p>
  * 
- * Initialises a kernel. 
+ * Initialises a {@link Kernel} with its {@link KernelController} and other services. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/bootstrap/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,7 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to define bootstrap plugins.
+    <p>Classes used to define the plugins used to parse MC annotations to create bean metadata.
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +25,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -47,7 +47,7 @@
 public interface KernelConfig extends KernelObject
 {
    /**
-    * Get the bean info
+    * Get the bean info for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -57,7 +57,7 @@
    BeanInfo getBeanInfo(String className, ClassLoader cl) throws Throwable;
 
    /**
-    * Get the bean info
+    * Get the bean info for a class.
     * 
     * @param clazz the class
     * @return the bean info
@@ -66,7 +66,7 @@
    BeanInfo getBeanInfo(Class<?> clazz) throws Throwable;
 
    /**
-    * Get the bean info
+    * Get the bean info from a type info.
     * 
     * @param type the type info
     * @return the bean info
@@ -75,7 +75,7 @@
    BeanInfo getBeanInfo(TypeInfo type) throws Throwable;
    
    /**
-    * Get the bean info
+    * Get the bean info for a class using the given bean access mode.
     *
     * @param className the class name
     * @param cl the classloader
@@ -86,7 +86,7 @@
    BeanInfo getBeanInfo(String className, ClassLoader cl, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the bean info
+    * Get the bean info for a class using the given bean access mode.
     *
     * @param clazz the class
     * @param mode the access mode
@@ -96,7 +96,7 @@
    BeanInfo getBeanInfo(Class<?> clazz, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the bean info
+    * Get the bean info from a type info using the given bean access mode.
     *
     * @param type the type info
     * @param mode the access mode
@@ -106,7 +106,7 @@
    BeanInfo getBeanInfo(TypeInfo type, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the type info for a class
+    * Get the type info for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -116,7 +116,7 @@
    TypeInfo getTypeInfo(String className, ClassLoader cl) throws Throwable;
    
    /**
-    * Get the type info for a class
+    * Get the type info for a class.
     * 
     * @param clazz the class
     * @return the type info
@@ -125,7 +125,7 @@
    TypeInfo getTypeInfo(Class<?> clazz) throws Throwable;
 
    /**
-    * Get the class info for a class
+    * Get the class info for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -135,7 +135,7 @@
    ClassInfo getClassInfo(String className, ClassLoader cl) throws Throwable;
    
    /**
-    * Get the class info for a class
+    * Get the class info for a class.
     * 
     * @param clazz the class
     * @return the class info

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -31,6 +31,7 @@
 import org.jboss.joinpoint.spi.Joinpoint;
 import org.jboss.joinpoint.spi.MethodJoinpoint;
 import org.jboss.kernel.spi.KernelObject;
+import org.jboss.metadata.spi.MetaData;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.TypeInfo;
 
@@ -38,7 +39,8 @@
  * A configurator.<p>
  * 
  * The configurator is a utility class used by the controller
- * to create and configure beans. 
+ * to create and configure beans. It will typically wrap a
+ * {@link KernelConfig}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -46,7 +48,7 @@
 public interface KernelConfigurator extends KernelObject
 {
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -56,7 +58,7 @@
    BeanInfo getBeanInfo(String className, ClassLoader cl) throws Throwable;
    
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo for a class.
     * 
     * @param clazz the class
     * @return the bean info
@@ -65,7 +67,7 @@
    BeanInfo getBeanInfo(Class<?> clazz) throws Throwable;
    
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo from a type info.
     * 
     * @param type the type info
     * @return the bean info
@@ -74,7 +76,7 @@
    BeanInfo getBeanInfo(TypeInfo type) throws Throwable;
    
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo for a class using the specified bean access mode.
     *
     * @param className the class name
     * @param cl the classloader
@@ -85,7 +87,7 @@
    BeanInfo getBeanInfo(String className, ClassLoader cl, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo for a class using the specified bean access mode.
     *
     * @param clazz the class
     * @return the bean info
@@ -95,7 +97,7 @@
    BeanInfo getBeanInfo(Class<?> clazz, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo from a typ info using the specified bean access mode.
     *
     * @param type the type info
     * @param mode the access mode
@@ -105,7 +107,8 @@
    BeanInfo getBeanInfo(TypeInfo type, BeanAccessMode mode) throws Throwable;
 
    /**
-    * Get the BeanInfo for some metadata
+    * Get the BeanInfo for some metadata. The BeanInfo will be for the bean metadata's
+    * specified class.
     * 
     * @param metaData the metadata
     * @return the bean info
@@ -114,7 +117,7 @@
    BeanInfo getBeanInfo(BeanMetaData metaData) throws Throwable;
    
    /**
-    * Get the type info for a class
+    * Get the type info for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -124,7 +127,7 @@
    TypeInfo getTypeInfo(String className, ClassLoader cl) throws Throwable;
    
    /**
-    * Get the type info for a class
+    * Get the type info for a class.
     * 
     * @param clazz the class
     * @return the type info
@@ -133,7 +136,7 @@
    TypeInfo getTypeInfo(Class<?> clazz) throws Throwable;
    
    /**
-    * Get the class info for a class
+    * Get the class info for a class.
     * 
     * @param className the class name
     * @param cl the classloader
@@ -143,7 +146,7 @@
    ClassInfo getClassInfo(String className, ClassLoader cl) throws Throwable;
    
    /**
-    * Get the class info for a class
+    * Get the class info for a class.
     * 
     * @param clazz the class
     * @return the class info
@@ -152,7 +155,7 @@
    ClassInfo getClassInfo(Class<?> clazz) throws Throwable;
    
    /**
-    * Get a constructor join point
+    * Get a constructor join point for a bean info. This will be the default constructor.
     * 
     * @param info the bean info
     * @return the join point
@@ -161,7 +164,8 @@
    Joinpoint getConstructorJoinPoint(BeanInfo info) throws Throwable;
    
    /**
-    * Get a constructor join point
+    * Get a constructor join point for a bean metadata. This will be the constructor 
+    * that is the closest match to the constructor specified in the bean metadata.
     * 
     * @param metaData the bean metadata
     * @return the join point
@@ -170,7 +174,9 @@
    Joinpoint getConstructorJoinPoint(BeanMetaData metaData) throws Throwable;
    
    /**
-    * Get a constructor join point
+    * Get a constructor join point for a bean metadata. This will be the constructor 
+    * that is the closest match to the constructor specified by the passed in constructor
+    * metadata.
     * 
     * @param info the bean info
     * @param metaData the constructor metadata
@@ -181,19 +187,21 @@
    Joinpoint getConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData) throws Throwable;
    
    /**
-    * Get a constructor join point
+    * Get a constructor join point a bean info. This will be the constructor 
+    * that is the closest match to the constructor specified by the passed in constructor
+    * metadata. 
     * 
     * @param info the bean info
     * @param metaData the constructor metadata
     * @param beanMetaData the bean metadata
-    * @param object an opaque object
+    * @param object an opaque object. If used with AOP this should be the {@link MetaData} for the bean.
     * @return the join point
     * @throws Throwable for any error
     */
    Joinpoint getConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable;
 
    /**
-    * Get a method joinpoint
+    * Get a method joinpoint for a bean.
     * 
     * @param info the bean info
     * @param cl the classloader

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,8 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to define configuration plugins.
+    <p>Interfaces used to define configuration plugins, which are used on starting up the Kernel to 
+    help create all the services that make up the Kernel.
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +26,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/ConfigureKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/ConfigureKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/ConfigureKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,10 +21,15 @@
 */
 package org.jboss.kernel.spi.dependency;
 
+;
+
 /**
- * A Configure KernelControllerContextAware.
+ * A Configure KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#CONFIGURED} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#CONFIGURED} state.
+ *
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
- *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
 public interface ConfigureKernelControllerContextAware extends KernelControllerContextAware

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/CreateKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/CreateKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/CreateKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,11 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * A Create KernelControllerContextAware.
+ * A Create KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#CREATE} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#CREATE} state.
+ *
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilder.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilder.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,12 @@
 import org.jboss.metadata.spi.MetaData;
 
 /**
- * DependencyBuilder.
+ * DependencyBuilder helps to determine extra dependencies during the
+ * {@link org.jboss.dependency.spi.ControllerState#DESCRIBED} state.
+ * The default implementation does not determine extra information,
+ * but if used with <code>jboss-aop-mc-int.jar</code> on the classpath, 
+ * extra dependencies coming from AOP will be returned as a list
+ * of {@link DependencyBuilderListItem}.  
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 69888 $

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilderListItem.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilderListItem.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DependencyBuilderListItem.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,9 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * DependencyBuilderListItem.
+ * DependencyBuilderListItem. Used during the {@link org.jboss.dependency.spi.ControllerState#DESCRIBED}
+ * state to add extra dependencies on unstall and remove them upon uninstall. These extra dependencies 
+ * might for example come from AOP.
  *
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DescribeKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DescribeKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/DescribeKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,11 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * A Describe KernelControllerContextAware.
+ * A Describe KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#DESCRIBED} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#DESCRIBED} state.
+ *
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
  * @deprecated at the describe state there is no target yet instantiated
  *

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstallKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstallKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstallKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,11 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * An Install KernelControllerContextAware.
+ * A Configure KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#INSTALLED} state.
+ * 
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstantiateKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstantiateKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/InstantiateKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,11 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * An Instantiate KernelControllerContextAware.
+ * An Instantiate KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#INSTANTIATED} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#INSTANTIATED} state.
+ * 
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelController.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelController.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -26,6 +26,7 @@
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.KernelObject;
 
 /**
@@ -34,7 +35,8 @@
  * The controller is the core component for keeping track
  * of beans to make sure the configuration and lifecycle are
  * done in the correct order including dependencies and
- * classloading considerations. 
+ * classloading considerations. The {@link Kernel} uses this class as its
+ * controller, rather than the normal {@link Controller}, and it contains a few
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -42,40 +44,45 @@
 public interface KernelController extends KernelObject, Controller
 {
    /**
-    * Install a context
+    * Install a context from a {@link BeanMetaData}.
     * 
-    * @param metaData the metaData
-    * @return the context
+    * @see Controller#install(org.jboss.dependency.spi.ControllerContext)
+    * @param metaData the bean metadata
+    * @return the context that is created from the bean meta data. 
     * @throws Throwable for any error
     */
    KernelControllerContext install(BeanMetaData metaData) throws Throwable;
 
    /**
-    * Install a context
+    * Install a context from a {@link BeanMetaData} in the same way as
+    * {@link #install(BeanMetaData)}, but use the passed in target as the target
+    * for this context instead of instantiating one in the {@link ControllerState#INSTANTIATED}
+    * state.
     * 
+    * @see #install(BeanMetaData)
     * @param metaData the metaData
     * @param target the target object
-    * @return the context
+    * @return the context that is cre
     * @throws Throwable for any error
     */
    KernelControllerContext install(BeanMetaData metaData, Object target) throws Throwable;
 
    /**
-    * Add supplies
+    * Add supplies from the context to the my list of suppliers.
     * 
-    * @param context the context
+    * @param context the context we want to check for supplies
     */
    void addSupplies(KernelControllerContext context);
 
    /**
-    * Remove supplies
+    * Remove supplies from the context from my list of suppliers.
     * 
-    * @param context the context
+    * @param context the context we want to check for supplies
     */
    void removeSupplies(KernelControllerContext context);
 
    /**
-    * Get all instantiated contexts of a type
+    * Get all instantiated contexts of a given type
     * 
     * @param clazz the type
     * @return the contexts
@@ -83,7 +90,7 @@
    Set<KernelControllerContext> getInstantiatedContexts(Class<?> clazz);
 
    /**
-    * Get all contexts of a type which are at least in state.
+    * Get all contexts of a type which are in the given state or above
     *
     * @param clazz the type
     * @param state the required state
@@ -92,6 +99,7 @@
    Set<KernelControllerContext> getContexts(Class<?> clazz, ControllerState state);
 
    /**
+    * Get an instantiated context that is of the type passed in.
     * If zero or multiple instances match class clazz
     * a warning is issued, but no throwable is thrown
     *
@@ -101,16 +109,16 @@
    KernelControllerContext getContextByClass(Class<?> clazz);
 
    /**
-    * Add instantiated context into contextsByClass map
-    * look at all target's superclasses and interfaces
+    * Add instantiated context into the map used by {@link #getContextByClass(Class)}.
+    * Look at all the context's target's superclasses and interfaces.
     * 
     * @param context the context
     */
    void addInstantiatedContext(KernelControllerContext context);
 
    /**
-    * Remove instantiated context from contextsByClass map
-    * look at all target's superclasses and interfaces
+    * Remove instantiated context from the map used by {@link #getContextByClass(Class)}.
+    * Look at all target's superclasses and interfaces.
     * 
     * @param context the context
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -23,12 +23,18 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.dispatch.LifecycleDispatchContext;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
 
 /**
- * Information about dependencies and state.
+ * Information about dependencies and state. Extension of {@link ControllerContext}
+ * that allows access to extra information when running in the {@link Kernel}. When 
+ * deploying a {@link BeanMetaData} into the {@link Kernel}, a 
+ * <code>KernelControllerContext</code> is created by the Microcontainer, rather tha
+ * vanilla {@link ControllerContext}. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -36,35 +42,37 @@
 public interface KernelControllerContext extends KernelRegistryEntry, LifecycleDispatchContext
 {
    /**
-    * Get the kernel
+    * Get the kernel this kernel controller context was deployed into.
     * 
     * @return the kernel
     */
    Kernel getKernel();
 
    /**
-    * Get the BeanInfo
+    * Get the BeanInfo for the bean represented by this kernel controller context
     * 
     * @return the bean info
     */
    BeanInfo getBeanInfo();
 
    /**
-    * Set the bean info
+    * Set the bean info for the bean represented by this kernel controller context.
+    * This method should only be called by the {@link KernelController}.
     * 
     * @param info the bean info
     */
    void setBeanInfo(BeanInfo info);
 
    /**
-    * Get the metadata
+    * Get the metadata representing the bean to be installed by this kernel controller context.
     * 
     * @return the bean metadata
     */
    BeanMetaData getBeanMetaData();
 
    /**
-    * Set the target
+    * Set the target. This will be the bean instance once the kernel controller context reaches the
+    * {@link ControllerState#INSTANTIATED} state.
     * 
     * @param target the target
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,9 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * A KernelControllerContextAware.
+ * A KernelControllerContextAware interface, which can be implemented by users' beans to 
+ * have the {@link KernelControllerContext} injected. When in the lifecycle this happens
+ * depends on the particular sub-interface that has been implemented.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/StartKernelControllerContextAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/StartKernelControllerContextAware.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/StartKernelControllerContextAware.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,11 @@
 package org.jboss.kernel.spi.dependency;
 
 /**
- * A Start KernelControllerContextAware.
+ * A Start KernelControllerContextAware. If a user implements this interface
+ * in a bean the KernelControllerContext will be injected upon installing
+ * to the {@link org.jboss.dependency.spi.ControllerState#START} state,
+ * and set to null on uninstalling from the {@link org.jboss.dependency.spi.ControllerState#START} state.
+ * 
  * @see org.jboss.kernel.plugins.dependency.KernelControllerContextAction
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/AbstractDependencyBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/AbstractDependencyBuilder.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/AbstractDependencyBuilder.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -29,7 +29,9 @@
 import org.jboss.metadata.spi.MetaData;
 
 /**
- * AbstractDependencyBuilder.
+ * AbstractDependencyBuilder used as the base class for the pluggable dependency builders such as the 
+ * AOP dependency builders. This is the default implementation used in the {@link org.jboss.dependency.spi.ControllerState#DESCRIBED}
+ * state to determine extra dependencies if the AOP dependency builder is absent.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -25,12 +25,15 @@
 import org.jboss.beans.info.spi.helpers.UnmodifiableBeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 
 /**
- * Unmodifiable instance.
+ * A wrapper around a {@link KernelControllerContext} that throws UnsupportedOperationException when any
+ * methods that might mutate the underlying context's state is called. 
  * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -57,6 +60,13 @@
       return beanInfo != null ? new UnmodifiableBeanInfo(beanInfo) : null;
    }
 
+   /**
+    * Overrides {@link KernelControllerContext#setBeanInfo(BeanInfo)} to throw an {@link UnsupportedOperationException}
+    * when called.
+    * 
+    * @param info the bean info to set
+    * @throws UnsupportedOperationException when called
+    */
    public void setBeanInfo(BeanInfo info)
    {
       throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
@@ -67,16 +77,39 @@
       return getDelegate().getBeanMetaData();
    }
 
+   /**
+    * Overrides {@link KernelControllerContext#setTarget(Object)} to throw an {@link UnsupportedOperationException}
+    * when called.
+    * 
+    * @param target the target to set
+    * @throws UnsupportedOperationException when called
+    */
    public void setTarget(Object target)
    {
       throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
    }
 
+   /**
+    * Overrides {@link KernelControllerContext#setName(Object)} to throw an {@link UnsupportedOperationException}
+    * when called.
+    * 
+    * @param info the name to set
+    * @throws UnsupportedOperationException when called
+    */
    public void setName(Object name)
    {
       throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
    }
 
+   /**
+    * Overrides {@link KernelControllerContext#invoke(String, Object[], String[])} to throw an {@link UnsupportedOperationException}
+    * when called.
+    * 
+    * @param name the name of the method to call
+    * @param parameters an array of the parameter values to pass in
+    * @param signature the type of each parameter
+    * @throws UnsupportedOperationException when called
+    */
    public Object invoke(String name, Object parameters[], String[] signature) throws Throwable
    {
       throw new UnsupportedOperationException("Cannot execute invoke on unmodifiable wrapper.");
@@ -92,6 +125,14 @@
       return getDelegate().get(name);
    }
 
+   /**
+    * Overrides {@link KernelControllerContext#set(String, Object)} to throw an {@link UnsupportedOperationException}
+    * when called.
+    * 
+    * @param name the name of the property/attribute to set
+    * @param value the value of the property to set
+    * @throws UnsupportedOperationException when called
+    */
    public void set(String name, Object value) throws Throwable
    {
       throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/KernelDeployment.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/KernelDeployment.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/KernelDeployment.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -31,11 +31,17 @@
 import org.jboss.beans.metadata.spi.LifecycleMetaData;
 import org.jboss.beans.metadata.spi.NamedAliasMetaData;
 import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.util.JBossInterface;
 
 /**
- * A kernel deployment.
+ * A kernel deployment. It contains one or more {@link BeanMetaData}s
+ * that each contain the configuration for a bean. Each {@link BeanMetaData}
+ * becomes a {@link KernelControllerContext} that is used by the {@link KernelController}
+ * to move the beans through the controller lifecycle. If a <code>-beans.xml</code>
+ * was used to specify the deployment, this represents one <code>-beans.xml</code>. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -127,42 +133,44 @@
    Set<NamedAliasMetaData> getAliases();
 
    /**
-    * Get the ControllerMode.
+    * Get the ControllerMode for this deployement.
     *
     * @return mode
     */
    ControllerMode getMode();
 
    /**
-    * Get the beans in the deployment
+    * Get the bean metadatas in the deployment.
     *
     * @return List<BeanMetaData> 
     */
    List<BeanMetaData> getBeans();
 
    /**
-    * Get the bean factories in the deployment
+    * Get the bean factories in the deployment. A {@link BeanMetaDataFactory}
+    * becomes one or more {@link BeanMetaData}s.
     *
     * @return List<BeanMetaDataFactory> 
     */
    List<BeanMetaDataFactory> getBeanFactories();
    
    /**
-    * Get the installed contexts
+    * Get the installed contexts in this deployment. These are the {@link KernelControllerContext}s
+    * resulting from {@link #getBeans()} and {@link #getBeanFactories()}.
     *
     * @return the installed contexts 
     */
    List<KernelControllerContext> getInstalledContexts();
    
    /**
-    * Add an installed context
+    * Add an installed context to the deployment once we have parsed its {@link BeanMetaData}.
     *
     * @param context the context to add 
     */
    void addInstalledContext(KernelControllerContext context);
    
    /**
-    * Remove an installed context
+    * Remove an installed context from the deployment on undeployment.
     *
     * @param context the context to add 
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/deployment/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -25,16 +25,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEvent.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEvent.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEvent.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.spi.event;
 
 /**
- * A listener
+ * An event in the kernel. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventEmitter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventEmitter.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventEmitter.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.spi.event;
 
 /**
- * An event emitter
+ * An event emitter raises {@link KernelEvent}s.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -30,7 +30,7 @@
 public interface KernelEventEmitter
 {
    /**
-    * Register a listener
+    * Register a listener who is interested in cer
     * 
     * @param listener the listener
     * @param filter the filter
@@ -50,7 +50,7 @@
    void unregisterListener(KernelEventListener listener, KernelEventFilter filter, Object handback) throws Throwable;
 
    /**
-    * Fire an event
+    * Fire a kernel event and notify all the listeners who are listening for this event.
     * 
     * @param event the event
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventFilter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventFilter.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventFilter.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,8 @@
 package org.jboss.kernel.spi.event;
 
 /**
- * A filter
+ * A filter to narrow down which {@link KernelEvent}s a {@link KernelEventListener}
+ * is interested in. They are managed by the {@link KernelEventManager}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -30,7 +31,7 @@
 public interface KernelEventFilter
 {
    /**
-    * Invoked when an event occurs
+    * Invoked when an event occurs to see if a particular {@link KernelEventListener} is interested in it.
     * 
     * @param event the event
     * @param handback the handback

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventListener.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventListener.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventListener.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.spi.event;
 
 /**
- * A listener
+ * A listener for {@link KernelEvent}s
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventManager.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventManager.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/KernelEventManager.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,12 +21,13 @@
 */
 package org.jboss.kernel.spi.event;
 
+import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.KernelObject;
 
 /**
  * An event manager.<p>
  * 
- * The event manager co-ordinates events. 
+ * The event manager co-ordinates events in the {@link Kernel}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/event/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,11 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to define event plugins.
+    <p>Classes used to define event handling in the microcontainer. The mechanism is similar to that of JMX notifications,
+    where by one can create a <code>KernelEventListener</code> and register and unregister it with the
+    <code>KernelEventManager</code>. Events that the <code>KernelEventListener</code> are interested in can be furter narrowed
+    down by implementing a <code>KernelEventFilter</code>. The events are in the form of <code>KernelEvent</code> implementations,
+    and emitted by a <code>KernelEventEmitter</code>. 
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +29,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/lazy/LazyInitializer.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/lazy/LazyInitializer.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/lazy/LazyInitializer.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -27,7 +27,7 @@
 import org.jboss.metadata.spi.MetaData;
 
 /**
- * Lazy initializer.
+ * Lazy initializer used by LazyProxyFactory
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/KernelMetaDataRepository.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/KernelMetaDataRepository.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/KernelMetaDataRepository.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,6 +24,7 @@
 import java.util.List;
 
 import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.KernelObject;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
@@ -31,7 +32,7 @@
 import org.jboss.metadata.spi.scope.ScopeKey;
 
 /**
- * KernelMetaDataRepository.
+ * The entry point to the {@link MutableMetaDataRepository} used for a {@link Kernel}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -39,14 +40,15 @@
 public interface KernelMetaDataRepository extends KernelObject
 {
    /**
-    * Get the meta data repository
+    * Get the meta data repository for the {@link Kernel}
     * 
     * @return the meta data repository
     */
    MutableMetaDataRepository getMetaDataRepository();
 
    /**
-    * Get MetaData
+    * Get MetaData for a {@link ControllerContext} from the {@link Kernel}'s 
+    * {@link MutableMetaDataRepository}.
     * 
     * @param context the context
     * @return the metadata
@@ -54,21 +56,22 @@
    MetaData getMetaData(ControllerContext context);
 
    /**
-    * Add metadata to the bean.
+    * Add metadata to a bean's {@link ControllerContext} from the {@link Kernel}'s 
+    * {@link MutableMetaDataRepository}
     * 
     * @param context the context
     */
    void addMetaData(ControllerContext context);
 
    /**
-    * Remove any previously added metadata
+    * Remove any previously added metadata from a {@link ControllerContext}.
     * 
     * @param context the context
     */
    void removeMetaData(ControllerContext context);
 
    /**
-    * Get the default scope for a context
+    * Get the default (non-mutable) scope key for a context
     * 
     * @param context the context
     * @return the default scope
@@ -76,7 +79,7 @@
    ScopeKey getFullScope(ControllerContext context);
    
    /**
-    * Get the mutable scope for a context
+    * Get the mutable scope key for a context
     * 
     * @param context the context
     * @return the default scope
@@ -84,7 +87,8 @@
    ScopeKey getMutableScope(ControllerContext context);
 
    /**
-    * Create a metadata retrieval
+    * Create a metadata retrieval for a {@link ControllerContext}.
+    * The returned metadata retrieval will be a composite containing the passed in retrievals. 
     * 
     * @param context the controller context
     * @param retrievals the retrievals

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/metadata/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 26060 2004-11-22 15:45:18Z ejort $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Contains the KernelMetaDataRepository that is used for associating metadata with the Kernel.
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,7 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to define kernel plugins.
+    <p>The KernelObject is the root interface for the Kernel service interfaces.
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +25,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelBus.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelBus.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelBus.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -24,10 +24,9 @@
 import org.jboss.kernel.spi.KernelObject;
 
 /**
- * A bus.<p>
- * 
  * The bus allows detatched invocations on named components in
- * the registry. 
+ * the registry. This is similar to how one would invoke on an 
+ * MBean via an MBean server. 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistry.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistry.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistry.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -47,10 +47,10 @@
    public static final String KERNEL_REGISTRY_UNREGISTERED = "KERNEL_REGISTRY_UNREGISTERED";
    
    /**
-    * Find a registration
+    * Find a registeration
     * 
     * @param name the name of the object
-    * @return the registration
+    * @return the registration or null if not found
     * @throws IllegalArgumentException for a null name
     */
    KernelRegistryEntry findEntry(Object name);

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntry.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntry.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntry.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -25,7 +25,7 @@
 import org.jboss.util.JBossInterface;
 
 /**
- * A registry entry
+ * A registry entry to be registered in the {@link KernelRegistry}
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
@@ -33,7 +33,7 @@
 public interface KernelRegistryEntry extends JBossInterface, ControllerContext
 {
    /**
-    * Set the name
+    * Set the name of the entry
     * 
     * @param name the name
     */

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryAlreadyRegisteredException.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryAlreadyRegisteredException.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryAlreadyRegisteredException.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.spi.registry;
 
 /**
- * Thrown when an invocation context does not exist
+ * Thrown when a {@link KernelRegistryEntry} already exists in the {@link KernelRegistry}
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryNotFoundException.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryNotFoundException.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryEntryNotFoundException.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.spi.registry;
 
 /**
- * Thrown when an invocation context does not exist
+ * Thrown when an {@link KernelRegistryEntry} does not exist in the {@link KernelRegistry}
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryPlugin.java	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/KernelRegistryPlugin.java	2009-06-04 14:20:48 UTC (rev 89824)
@@ -21,8 +21,12 @@
 */
 package org.jboss.kernel.spi.registry;
 
+import org.jboss.kernel.spi.dependency.KernelController;
+
 /**
- * A registry plugin.
+ * A registry plugin used to get {@link KernelRegistryEntry} objects
+ * from the {@link KernelRegistry}. The default implementation of {@link KernelController}
+ * implements this interface.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/package.html	2009-06-04 14:19:41 UTC (rev 89823)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/registry/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -13,7 +13,7 @@
   </head>
 
   <body bgcolor="white">
-    <p>Classes used to define registry plugins.
+    <p>Contains the KernelBus and interface used to define registry plugins. Note that the KernelRegistry is deprecated.
 
     <h2>Package Specification</h2>
     <ul>
@@ -25,16 +25,6 @@
       <li><a href="javascript: alert('not available')">Not Available</a>
     </ul>
 
-    <h2>Package Status</h2>
-    <ul>
-      <li><font color="red"><b>ALPHA</b></font>
-    </ul>
-
-    <h2>Todo</h2>
-    <ul>
-      <li>???
-    </ul>
-
     <!-- Put @see and @since tags down here. -->
 
   </body>

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/package.html
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/package.html	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/package.html	2009-06-04 14:20:48 UTC (rev 89824)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <!-- $Id: package.html 26060 2004-11-22 15:45:18Z ejort $ -->
+    <!--
+
+    JBoss: The OpenSource J2EE WebOS 
+
+    Distributable under LGPL license.
+    See terms of license at gnu.org.
+
+    -->
+  </head>
+
+  <body bgcolor="white">
+    <p>Defines the interfaces for the bridge between JR 303 and our POJO handling.
+
+    <h2>Package Specification</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+      
+    <h2>Related Documentation</h2>
+    <ul>
+      <li><a href="javascript: alert('not available')">Not Available</a>
+    </ul>
+
+    <!-- Put @see and @since tags down here. -->
+
+  </body>
+</html>




More information about the jboss-cvs-commits mailing list