package org.tynamo.internal.services;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
import org.tynamo.descriptor.TynamoClassDescriptor;
import org.tynamo.descriptor.extension.BeanModelExtension;
import org.tynamo.services.BeanModelModifier;
import org.tynamo.services.DescriptorService;
/**
* Performs standard set of modifications to a {@link org.apache.tapestry5.beaneditor.BeanModel}
* properties may be included, removed or reordered based on the contents of the {@link org.tynamo.descriptor.extension.BeanModelExtension}
* and the value of context key
*/
public class BeanModelExtensionBMModifier implements BeanModelModifier
{
private DescriptorService descriptorService;
public BeanModelExtensionBMModifier(DescriptorService descriptorService)
{
this.descriptorService = descriptorService;
}
public boolean modify(BeanModel beanModel, String key)
{
TynamoClassDescriptor classDescriptor = descriptorService.getClassDescriptor(beanModel.getBeanType());
if (!classDescriptor.supportsExtension(BeanModelExtension.class)) return false;
BeanModelExtension extension = classDescriptor.getExtension(BeanModelExtension.class);
if (!extension.hasModifiersForKey(key)) return false;
BeanModelUtils.modify(beanModel, null, extension.getIncludePropertyNames(key),
extension.getExcludePropertyNames(key),
extension.getReorderPropertyNames(key));
return true;
}
}