Hi,
it seems that the metadata is a bit scattered around the place.
A) Some metadata are at rules themselves, e.g. as returned by
getExecuteAfter().
B) Some are sunken into the dark depth of ~.rewrite.Context, like
rewriteCtx.put(RuleMetadata.CATEGORY, DEFAULT_CATEGORY);
However when I try to retrieve this,
Object cat = event.getRewriteContext().get(RuleMetadata.CATEGORY);
I get null.
So I debugged and found the data stored in a weird data structure,
context.map[WindupRuleMetadata].providersToRules[?RuleProvider][?].contextMap
So I was trying to get it out,
WindupRuleMetadata wrm = (WindupRuleMetadata)
event.getRewriteContext().get(WindupRuleMetadata.class);
Assert.assertNotNull("event.getRewriteContext()[WindupRuleMetadata.class] is
not null", wrm);
for(WindupRuleProvider provider : wrm.getProviders())
{
if(provider.getClass().equals(TestMetadataAnnotationExecRuleProvider.class))
continue;
provider.get
}
But here I got lost as there seems to be no API for providersToRules.
1) How can I get to the metadata?
2) I suggest to review where and how the metadata are stored and unify
it a bit.
Thanks,
Ondra
PS: I admit that I didn't look much around for some working usages of
metadata as I am going to sleep, but CATEGORY seems not to be used anywhere.
Show replies by date