blob: 3988082c72ffcf19cb964b7a13f1ee1e6db6bbd9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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
<<<<<<< Updated upstream
*
* https://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
=======
*
* https://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
>>>>>>> Stashed changes
* limitations under the License.
*/
/*
* InstanceCallbacks.java
*
*/
package javax.jdo;
/**
* A <code>PersistenceCapable</code> class that provides callback methods for life cycle events
* implements this interface.
*
* <p>For JDO 2.0, <code>InstanceCallbacks</code> has been refactored to extend four other
* interfaces, without changing any of the methods or semantics. This allows fine-grained control
* over callbacks, for example to allow a class to implement the load callback without implementing
* any of the other callbacks. For backward compatibility with JDO 1.0, the <code>InstanceCallbacks
* </code> interface is preserved.
*
* <p>Classes which include non-persistent fields whose values depend on the values of persistent
* fields require callbacks on specific JDO instance life cycle events in order to correctly
* populate the values in these fields.
*
* <p>The callbacks might also be used if the persistent instances need to be put into the runtime
* infrastructure of the application. For example, a persistent instance might notify other
* instances on changes to state. The persistent instance might be in a list of managed instances.
* When the persistent instance is made hollow, it can no longer generate change events, and the
* persistent instance should be removed from the list of managed instances.
*
* <p>To implement this, the application programmer would implement <code>jdoPostLoad</code> to put
* itself into the list of managed instances, and implement <code>jdoPreClear</code> to remove
* itself from the list. With JDO 1.0, the domain class would be declared to implement <code>
* InstanceCallbacks</code>. With JDO 2.0, the domain class would be declared to implement <code>
* javax.jdo.listener.LoadCallback</code> and <code>javax.jdo.listener.ClearCallback</code>.
*
* <p>Note that JDO does not manage the state of non-persistent fields, and when a JDO instance
* transitions to hollow, JDO clears the persistent fields. It is the programmer's responsibility to
* clear non-persistent fields so that garbage collection of referred instances can occur.
*
* @since 1.0
* @version 2.0
*/
public interface InstanceCallbacks
extends javax.jdo.listener.ClearCallback,
javax.jdo.listener.DeleteCallback,
javax.jdo.listener.LoadCallback,
javax.jdo.listener.StoreCallback {}