[jboss-dev] Re: [jboss-dev-forums] [Design the new POJO MicroContainer] - Checking DeploymentContext for failures
Ales Justin
ales.justin at gmail.com
Wed Nov 14 11:37:38 EST 2007
How does this take care of DeploymentControllerContext?
Since it's not a part of Deployers.
Or just treating this ControllerContext lookup differently?
Via AttachmentCreator this was transparent. :-)
public class ControllerContextAttachmentChecker extends
AbstractAttachmentChecker<ControllerContext>
{
public ControllerContextAttachmentChecker()
{
super(ControllerContext.class);
}
protected ControllerContext getControllerContext(Controller
controller, ControllerContext attachment)
{
return attachment;
}
}
> You don't need to do anything so complicated.
>
> You just need the relevant deployers to record the context names in some
> well defined place, e.g. the Deployment{Unit|Context}
>
> It's probably important enough to use a special method rather than
> an attachment.
>
> e.g.
>
> public class BeanMetaDataDeployer extends
> AbstractSimpleRealDeployer<BeanMetaData>
> {
> /** The kernel controller */
> private final KernelController controller;
>
> /**
> * Create a new BeanDeployer.
> *
> * @param kernel the kernel
> * @throws IllegalArgumentException for a null kernel
> */
> public BeanMetaDataDeployer(Kernel kernel)
> {
> super(BeanMetaData.class);
> if (kernel == null)
> throw new IllegalArgumentException("Null kernel");
> controller = kernel.getController();
> setComponentsOnly(true);
> }
>
> @Override
> public void deploy(DeploymentUnit unit, BeanMetaData deployment)
> throws DeploymentException
> {
> KernelControllerContext context = new
> AbstractKernelControllerContext(null, deployment, null);
> try
> {
> controller.install(context);
> + unit.addControllerContextName(deployment.getName());
> }
> catch (Throwable t)
> {
> throw DeploymentException.rethrowAsDeploymentException("Error
> deploying: " + deployment.getName(), t);
> }
> }
>
> @Override
> public void undeploy(DeploymentUnit unit, BeanMetaData deployment)
> {
> + unit.removeControllerContextName(deployment.getName());
> controller.uninstall(deployment.getName());
> }
> }
>
> In practice, the component deployment unit name should be the context
> name.
> This is at least true for the POJO and Service deployers.
>
> So you could just add it as some kind of easy declaration in the
> constructor:
>
> public BeanMetaDataDeployer(Kernel kernel)
> {
> super(BeanMetaData.class);
> if (kernel == null)
> throw new IllegalArgumentException("Null kernel");
> controller = kernel.getController();
> setComponentsOnly(true);
> // obviously some shorter property name ;-)
> setComponentDeploymentNameIsControllerContextName(true);
> }
>
> and handle it in the abstract classes:
>
> deploy(...); // will throw an error if not registered in the
> controller
> if (unit.isComponent() &&
> isComponentDeploymentNameControllerContextName())
> addComponentContextName(unit.getSimpleName());
>
>
>> View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4104658#4104658
>>
>> Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4104658
>> _______________________________________________
>> jboss-dev-forums mailing list
>> jboss-dev-forums at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-dev-forums
More information about the jboss-development
mailing list