package com.googlecode.tawus.internal.def; import java.util.Set; import org.apache.tapestry5.ioc.ObjectCreator; import org.apache.tapestry5.ioc.ScopeConstants; import org.apache.tapestry5.ioc.ServiceBuilderResources; import org.apache.tapestry5.ioc.def.ServiceDef; import org.apache.tapestry5.ioc.internal.util.CollectionFactory; import com.googlecode.tawus.EntityDAONotFoundException; import com.googlecode.tawus.services.EntityDAO; import com.googlecode.tawus.services.EntityDAOSource; public class EntityDAOServiceDef implements ServiceDef { private EntityDef entityDef; public EntityDAOServiceDef(EntityDef entityDef) { this.entityDef = entityDef; } public ObjectCreator<Object> createServiceCreator(final ServiceBuilderResources resources) { return new ObjectCreator<Object>() { public Object createObject() { Object object = resources.getService(EntityDAOSource.class).get(entityDef.getType()); if(object == null) { throw new EntityDAONotFoundException("Could not find EntityDAO implementation for " + entityDef.getType()); } return object; } }; } public String getServiceId() { return entityDef.getServiceId(); } @SuppressWarnings("rawtypes") public Set<Class> getMarkers() { return CollectionFactory.newSet(); } @SuppressWarnings("rawtypes") public Class getServiceInterface() { return EntityDAO.class; } public String getServiceScope() { return ScopeConstants.DEFAULT; } public boolean isEagerLoad() { return false; } }