The draft version is committed to this branch:
http://anonsvn.jboss.org/repos/jbossas/projects/weld-int/branches/Deployment_WELDINT-1/
Now we finally have something concrete to use in our discussion. So, my draft version of WELDINT-1 is fully documented in order to make it easier for others to understand and to stimulate discussion :-)
Basically, I created an Archive class that maps to a Module and contains all the info necessary for creating a corresponding BeanDeploymentArchive. An Archive can reach other archives through Classpath, which maps one-to-one to ClassLoader domains and contains a list of archives/bdas. A Classpath can internaly point to another classpath, which corresponds to the parent domain relationship. This sets up the graph structure Pete suggested, which is actually a tree.
At first, when a deployment is created, BDAs are created only for those Archives that contain one or more CDI xml file. After that, as a result of Deployment.loadBeanDeploymentArchive, a BDA may be created by an Archive. Al lthe BDA collections are updated accordingly, mainly by the use of a BDALyfecycleListener.
Take a good look at the ClasspathImpl class. This is a very naïve but simple to understand implementation of the Classpath interface. It returns always a flat collection of all BDAs or archives visible, including