/**
* Copyright (c) 2006-2011 Floggy Open Source Group. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.sourceforge.floggy.persistence;
/**
* An interface that helps the developer to delete in cascade Persistable
* fields. This interface is optional.
*
* The developer can implement this class to clean up the RecordStore system
* from orphan entities. The <code>delete</code> method must contain all
* clean up code necessary to delete Persistable fields.
* <br>
* <br>
* <code>
* public class Order implements Persistable, Deletable {<br>
* protected Shipment shipment;<br>
* public void delete() throws FloggyException {<br>
* if (shipment != null) {<br>
* PersistableManager.getInstance().delete(shipment);<br>
* }
* }<br>
* }
* </code>
* <br>
* @since 1.3.0
*
*/
public interface Deletable {
/**
* It is used to clean up references that the implementation class may
* have to another entities.
*
* @throws FloggyException Exception thrown if an error occurs while deleting
* the object.
*/
void delete() throws FloggyException;
}