"adrian(a)jboss.org" wrote :
| Those sound overly complicated.
| The simplest fix would be in the component visitor, something like:
|
|
| | protected static void addBeanComponent(DeploymentUnit unit, BeanMetaData bean)
| | {
| | DeploymentUnit component = unit.addComponent(bean.getName());
| | component.addAttachment(BeanMetaData.class.getName(), bean);
| | + String className = bean.getBean();
| | + if (className != null)
| | + component.getScope().addScope(CommonLevels.CLASS, className);
| | }
| |
This is the code
+
| + unit.addAttachment(ScopeBuilder.class, BeanMetaDataScopeBuilder.INSTANCE);
| +
| KernelControllerContext context = new AbstractKernelControllerContext(null,
deployment, null);
| ScopeInfo scopeInfo = context.getScopeInfo();
| - if (scopeInfo != null)
| - {
| - mergeScopes(scopeInfo.getScope(), unit.getScope());
| - mergeScopes(scopeInfo.getMutableScope(), unit.getMutableScope());
| - }
| + scopeInfo.setScope(unit.getScope());
| + scopeInfo.setMutableScope(unit.getMutableScope());
| try
| {
| controller.install(context);
| @@ -190,4 +194,18 @@
| return new AbstractValueMetaData(unit.getClassLoader());
| }
| }
| +
| + private static class BeanMetaDataScopeBuilder extends DefaultScopeBuilder
| + {
| + private static final ScopeBuilder INSTANCE = new BeanMetaDataScopeBuilder();
| +
| + public ScopeKey getComponentScope(DeploymentContext context)
| + {
| + BeanMetaData bmd =
context.getDeploymentUnit().getAttachment(BeanMetaData.class);
| + ScopeKey scopeKey = super.getComponentScope(context);
| + if (bmd != null && bmd.getBean() != null)
| + scopeKey.addScope(CommonLevels.CLASS, bmd.getBean());
| + return scopeKey;
| + }
| + }
| }
But you're right, yours looks easier. :-)
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185153#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...