/**
* ResolvableEntityProviderMock.java - created by aaronz on Jul 25, 2007
*/
package org.sakaiproject.entitybroker.mocks;
import java.util.ArrayList;
import java.util.List;
import org.sakaiproject.entitybroker.EntityReference;
import org.sakaiproject.entitybroker.entityprovider.CoreEntityProvider;
import org.sakaiproject.entitybroker.entityprovider.capabilities.CollectionResolvable;
import org.sakaiproject.entitybroker.entityprovider.capabilities.Outputable;
import org.sakaiproject.entitybroker.entityprovider.capabilities.Resolvable;
import org.sakaiproject.entitybroker.entityprovider.extension.Formats;
import org.sakaiproject.entitybroker.entityprovider.search.Search;
import org.sakaiproject.entitybroker.mocks.data.MyEntity;
/**
* Stub class to make it possible to test the {@link Resolvable} capability, will perform like the
* actual class so it can be reliably used for testing<br/>
* Returns {@link MyEntity} objects<br/>
* Allows for testing {@link CollectionResolvable} as well, returns 3 {@link MyEntity} objects
* if no search restrictions, 1 if "stuff" property is set, none if other properties are set<br/>
* Finally, this allows us to test the outputting of data because it implements outputable
*
* @author Aaron Zeckoski (aaronz@vt.edu)
*/
public class ResolvableEntityProviderMock extends CoreEntityProviderMock implements
CoreEntityProvider, Resolvable, CollectionResolvable, Outputable {
/**
* TEST Constructor: allows for easy setup of this stub for testing
*
* @param prefix
* @param ids
*/
public ResolvableEntityProviderMock(String prefix, String[] ids) {
super(prefix, ids);
}
public String[] getHandledOutputFormats() {
return new String[] {Formats.HTML, Formats.JSON, Formats.JSONP, Formats.XML};
}
/* (non-Javadoc)
* @see org.sakaiproject.entitybroker.entityprovider.capabilities.Resolvable#getEntity(org.sakaiproject.entitybroker.EntityReference)
*/
public Object getEntity(EntityReference reference) {
if (reference.getId() == null) {
return new MyEntity();
}
return new MyEntity(reference.getId(), "something");
}
public List<?> getEntities(EntityReference ref, Search search) {
List<MyEntity> entities = new ArrayList<MyEntity>();
if (search.isEmpty()) {
// return all
for (int i = 0; i < ids.length; i++) {
entities.add( new MyEntity( ids[i], "something" + i ) );
}
} else {
// restrict based on search param
if (search.getRestrictionByProperty("stuff") != null) {
entities.add( new MyEntity( ids[1], "something1" ) );
}
}
return entities;
}
}