package er.rest.example.delegates;
import com.webobjects.eocontrol.EOClassDescription;
import com.webobjects.foundation.NSArray;
import er.extensions.eof.ERXQ;
import er.rest.ERXAbstractRestDelegate;
import er.rest.ERXRestContext;
import er.rest.example.model.Manufacturer;
/**
* ManufacturerRestDelegate is an example of a rest delegate for retrieving
* and creating objects of non-EO types. The name of the class is
* important (the delegate for the "Manufacturer" entity), though you can
* manually register a different class name via IERXRestDelegate.Factory.
*
* @author mschrag
*/
public class ManufacturerRestDelegate extends ERXAbstractRestDelegate {
public ManufacturerRestDelegate() {
}
public Object createObjectOfEntityWithID(EOClassDescription entity, Object id, ERXRestContext context) {
return new Manufacturer();
}
public Object primaryKeyForObject(Object obj, ERXRestContext context) {
return ((Manufacturer) obj).getName();
}
public Object objectOfEntityWithID(EOClassDescription entity, Object id, ERXRestContext context) {
NSArray<Manufacturer> manufacturers = ERXQ.filtered(Manufacturer.manufacturers(), ERXQ.is("name", id));
return manufacturers.size() == 0 ? null : manufacturers.objectAtIndex(0);
}
}