package org.tynamo.descriptor.decorators; import org.apache.commons.lang.StringUtils; import org.apache.tapestry5.beaneditor.NonVisual; import org.apache.tapestry5.beaneditor.ReorderProperties; import org.apache.tapestry5.ioc.services.ClassPropertyAdapter; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.PropertyAdapter; import org.tynamo.descriptor.TynamoClassDescriptor; import org.tynamo.descriptor.extension.BeanModelExtension; public class TapestryDecorator implements DescriptorDecorator { PropertyAccess propertyAccess; public TapestryDecorator(PropertyAccess propertyAccess) { this.propertyAccess = propertyAccess; } public TynamoClassDescriptor decorate(TynamoClassDescriptor descriptor) { ClassPropertyAdapter adapter = propertyAccess.getAdapter(descriptor.getBeanType()); for (final String propertyName : adapter.getPropertyNames()) { PropertyAdapter pa = adapter.getPropertyAdapter(propertyName); if (pa.getAnnotation(NonVisual.class) != null) { descriptor.getPropertyDescriptor(pa.getName()).setNonVisual(true); } else if (pa.getAnnotation(ReorderProperties.class) != null) { String reorder = pa.getAnnotation(ReorderProperties.class).value(); BeanModelExtension beanModelExtension = BeanModelExtension.obtainBeanModelExtension(descriptor); if (StringUtils.isNotEmpty(reorder)) beanModelExtension.setReorderPropertyNames(reorder); } } return descriptor; } }