package com.googlecode.tawus; import javax.persistence.Entity; import javax.servlet.ServletContext; import org.apache.tapestry5.TapestryFilter; import org.apache.tapestry5.internal.TapestryInternalUtils; import org.apache.tapestry5.ioc.def.ModuleDef; import org.apache.tapestry5.ioc.internal.util.CollectionFactory; import com.googlecode.tawus.internal.AbstractEntityLocator; import com.googlecode.tawus.internal.def.EntityModuleDef; import com.googlecode.tawus.services.EntityLocator; public class TapestryTawusFilter extends TapestryFilter { private static final String MODEL_PACKAGES = "tawus-model-packages"; @Override protected ModuleDef[] provideExtraModuleDefs(ServletContext context) { String packages = context.getInitParameter(MODEL_PACKAGES); if(packages == null) { return new ModuleDef[] {}; } EntityLocator entityLocator = new AbstractEntityLocator( CollectionFactory.newSet(TapestryInternalUtils.splitAtCommas(packages))) { @Override @SuppressWarnings("unchecked") public boolean isEntity(@SuppressWarnings("rawtypes") Class entityType) { return entityType.getAnnotation(Entity.class) != null; } }; return new ModuleDef[] { new EntityModuleDef(entityLocator) }; } }