public List<BeanMetaData> getBeans()
{
ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
//Create Stack
BeanMetaDataBuilder stackBuilder = AOPBeanMetaDataBuilder.createBuilder(name, Stack.class.getName());
stackBuilder.addPropertyMetaData("name", name);
setAspectManagerProperty(stackBuilder);
result.add(stackBuilder.getBeanMetaData());
if (interceptors.size() > 0)
{
List<ValueMetaData> advices = stackBuilder.createList();
int i = 0;
for (BaseInterceptorData interceptor : interceptors)
{
String intName = name + "$" + i++;
BeanMetaDataBuilder interceptorBuilder = AOPBeanMetaDataBuilder.createBuilder(intName, interceptor.getBeanClassName());
setAspectManagerProperty(interceptorBuilder);
interceptorBuilder.addPropertyMetaData("forStack", Boolean.TRUE);
if (interceptor instanceof AdviceOrInterceptorData)
{
ValueMetaData injectAspect = interceptorBuilder.createInject(interceptor.getRefName());
interceptorBuilder.addPropertyMetaData("aspect", injectAspect);
if (((AdviceOrInterceptorData)interceptor).getAdviceMethod() != null)
{
interceptorBuilder.addPropertyMetaData("aspectMethod", ((AdviceOrInterceptorData)interceptor).getAdviceMethod());
}
interceptorBuilder.addPropertyMetaData("type", ((AdviceOrInterceptorData)interceptor).getType());
}
else
{
ValueMetaData injectStack = interceptorBuilder.createInject(interceptor.getRefName());
interceptorBuilder.addPropertyMetaData("stack", injectStack);
}
result.add(interceptorBuilder.getBeanMetaData());
ValueMetaData injectAdvice = stackBuilder.createInject(intName);
advices.add(injectAdvice);
}
stackBuilder.addPropertyMetaData("advices", advices);
}