We need 4 new test classes, one for each of the following assertions:
- A14.8-1: These methods delete the instances of affected classes that pass the filter, and all dependent instances. Affected classes are the candidate class and its persistence-capable subclasses.
- A14.8-2: The number of instances of affected classes that were deleted is returned. Embedded instances and dependent instances are not counted in the return value.
- A14.8-3: Query elements filter, parameters, imports, variables, and unique are valid in queries used for delete. Elements result, result class, range, grouping, and ordering are invalid. If any of these elements is set to its non-default value when one of the deletePersistentAll methods is called, a JDOUserException is thrown and no instances are deleted.
- A14.8-4: Dirty instances of affected classes are first flushed to the datastore. Instances already in the cache when deleted via these methods or brought into the cache as a result of these methods undergo the life cycle transitions as if deletePersistent had been called on them. That is, if an affected class implements the DeleteCallback interface, the instances to be deleted are instantiated in memory and the jdoPreDelete method is called prior to deleting the instance in the datastore. If any LifecycleListener instances are registered with affected classes, these listeners are called for each deleted instance. Before returning control to the application, instances of affected classes in the cache are refreshed by the implementation so their status in the cache reflects whether they were deleted from the datastore.
Details can be found on Wiki page
http://wiki.apache.org/jdo/QueryTests#DeletionByQuery.