Marshalling service persistence interfaces that are separated into read-only and persistent operations, similar to the service layer.
Example 1. PersistenceFindMarshallingService
The find persistence interface has constants for creating request paths and the basic find methods.
public interface PersistenceFindMarshallingService<R extends EntityResponseResult, FR extends EntityFindResponseResult> { public final static String PATH_DELIM = "/"; public final static String ID_VAR = "id"; public final static String PAGE_VAR = "page"; public final static String PAGE_SIZE_VAR = "page-size"; public final static String PAGE_PATH = PATH_DELIM + PAGE_VAR; public final static String PAGE_SIZE_PATH = PATH_DELIM + PAGE_SIZE_VAR; public final static String PAGINATED = PAGE_PATH + PATH_DELIM + "{" + PAGE_VAR + "}" + PAGE_SIZE_PATH + PATH_DELIM + "{" + PAGE_SIZE_VAR + "}"; /** * Find by primary key. */ public R findById(long id); /** * Find a paginated record set. */ public FR find(int page, int pageSize); /** * Find all records. */ public FR find(); }
Example 2. PersistenceMarshallingService
Save and delete are both overloaded so they would continue to work with existing backend tests, but also automatically work with Sencha stores.
public interface PersistenceMarshallingService<R extends EntityResponseResult, FR extends EntityFindResponseResult, S extends PkEntityBase> extends PersistenceFindMarshallingService<R, FR> { /** * Save record. */ public R save(S request); /** * Update record. */ public R update(S request); /** * Delete record. */ public ResponseResult delete(long id); /** * Delete record. */ public ResponseResult delete(S request); }