package org.tynamo.internal.services; import org.apache.commons.lang.StringUtils; import org.apache.tapestry5.beaneditor.BeanModel; import org.apache.tapestry5.plastic.MethodInvocation; import org.apache.tapestry5.services.Environment; import org.tynamo.services.BeanModelSourceContext; public class BeanModelSourceAdviceImpl implements BeanModelSourceAdvice { private final BeanModelsAnnotationBMModifier beanModelProvider; private final Environment environment; public BeanModelSourceAdviceImpl(BeanModelsAnnotationBMModifier beanModelProvider, Environment environment) { this.beanModelProvider = beanModelProvider; this.environment = environment; } public void advise(MethodInvocation invocation) { invocation.proceed(); if (BeanModel.class.isAssignableFrom(invocation.getMethod().getReturnType())) { BeanModel<?> dataModel = (BeanModel) invocation.getReturnValue(); BeanModelSourceContext context = environment.peek(BeanModelSourceContext.class); if (context != null && StringUtils.isNotEmpty(context.getKey())) { beanModelProvider.modify(dataModel, context.getKey()); invocation.setReturnValue(dataModel); } } } }