Checking DeploymentContext for failures
alesj Nov 14, 2007 10:48 AMRegarding http://jira.jboss.com/jira/browse/JBMICROCONT-187.
What's the best way to get failing ControllerContexts that belong to DeploymentContext param?
This is what I came up currently:
protected final void checkComplete( DeploymentContext context, Map<String, Throwable> contextsInError, Map<String, Set<MissingDependency>> contextsMissingDependencies, Set<ControllerContext> notInstalled, List<ControllerState> states) { Attachments attachments = context.getDeploymentUnit(); if (attachments != null && checkers != null) { for (AttachmentChecker checker : checkers) { ControllerContext cc = checker.getControllerContext(controller, attachments); if (cc != null) { if (cc.getState().equals(cc.getRequiredState()) == false && notInstalled.contains(cc)) { checkControllerContext(cc, contextsInError, contextsMissingDependencies, states); } } } } List<DeploymentContext> children = context.getChildren(); if (children != null && children.isEmpty() == false) { for(DeploymentContext child : children) checkComplete(child, contextsInError, contextsMissingDependencies, notInstalled, states); } }
where AttachmentChecker looks like this, e.g. Bean checker:
public abstract class AbstractAttachmentChecker<T> implements AttachmentChecker { private Class<T> type; protected AbstractAttachmentChecker(Class<T> type) { if (type == null) throw new IllegalArgumentException("Null type."); this.type = type; } public ControllerContext getControllerContext(Controller controller, Attachments attachments) { T attachment = attachments.getAttachment(type); if (attachment != null) return getControllerContext(controller, attachment); return null; } protected abstract ControllerContext getControllerContext(Controller controller, T attachment); } public class BeanAttachmentChecker extends AbstractAttachmentChecker<BeanMetaData> { public BeanAttachmentChecker() { super(BeanMetaData.class); } protected ControllerContext getControllerContext(Controller controller, BeanMetaData attachment) { return controller.getContext(attachment.getName(), null); } }
Another checker implementations would include ServiceAC (mbeans) and ControllerContextAC (OSGi deployments).
Any others?