"kabir.khan(a)jboss.com" wrote :
| The instanceMetaData.toString() method shows
|
| |
org.jboss.metadata.spi.retrieval.MetaDataRetrievalToMetaDataBridge@1286c00{[JVM=THIS,
CLASS=org.jboss.test.microcontainer.matrix.AnnotatedChild, INSTANCE=AnnotatedChild,
WORK=1209895]}
| |
|
That's clearly wrong. The invocation of:
MetaData instanceMetaData = metaData.getScopeMetaData(CommonLevels.INSTANCE);
should be giving you back a MetaData object that only contains the
INSTANCE=AnnotatedChild.
The bug is fairly obvious.
The single scope metadata shouldn't have a parent! :-)
| public MetaData getScopeMetaData(ScopeLevel level)
| {
| if (level == null)
| throw new IllegalArgumentException("Null scope level");
|
| if (retrieval instanceof MetaDataContext)
| {
| MetaDataContext context = (MetaDataContext)retrieval;
| List<MetaDataRetrieval> matchingRetrievals = new
ArrayList<MetaDataRetrieval>();
| List<MetaDataRetrieval> localRetrievals =
context.getLocalRetrievals();
| for (MetaDataRetrieval localRetrieval : localRetrievals)
| {
| ScopeKey scopeKey = localRetrieval.getScope();
|
| if (scopeKey.getScopeLevel(level) != null)
| matchingRetrievals.add(localRetrieval);
| }
| if (matchingRetrievals.isEmpty() == false)
| - return new MetaDataRetrievalToMetaDataBridge(new
AbstractMetaDataContext(context, matchingRetrievals));
| + return new MetaDataRetrievalToMetaDataBridge(new
AbstractMetaDataContext(null, matchingRetrievals));
| }
| else if (retrieval.getScope().getScopeLevel(level) != null)
| return new MetaDataRetrievalToMetaDataBridge(new
AbstractMetaDataContext(retrieval));
| return null;
| }
|
But on a related issue, I don't like the fact that this logic is in the bridge.
The bridge should be just delegating the request to the retrieval.
i.e. a plain retrieval will just match its scope level while a context
will have to filter its local retrievals. It's more OO.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4105165#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...