/* * 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 * * 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 org.apache.openjpa.event; import java.util.EventObject; /** * Lifecycle event on a persistent instance. The event source * is the persistent instance whose state has changed. * * @author Steve Kim * @author Abe White * @since 0.3.3 */ public class LifecycleEvent extends EventObject { /** * Event type before an instance is made persistent */ public static final int BEFORE_PERSIST = 0; /** * Event type when an instance is made persistent */ public static final int AFTER_PERSIST = 1; /** * Event type when an instance is made persistent, after the record has * been written to the store */ public static final int AFTER_PERSIST_PERFORMED = 18; /** * Event type when an instance is loaded. */ public static final int AFTER_LOAD = 2; /** * Event type when an instance is stored. */ public static final int BEFORE_STORE = 3; /** * Event type when an instance is stored. */ public static final int AFTER_STORE = 4; /** * Event type when an instance is cleared. */ public static final int BEFORE_CLEAR = 5; /** * Event type when an instance is cleared. */ public static final int AFTER_CLEAR = 6; /** * Event type when an instance is deleted. */ public static final int BEFORE_DELETE = 7; /** * Event type when an instance is deleted. */ public static final int AFTER_DELETE = 8; /** * Event type when an instance is deleted, after the record has been * deleted from the store. */ public static final int AFTER_DELETE_PERFORMED = 19; /** * Event type when an instance is dirtied for the first time. */ public static final int BEFORE_DIRTY = 9; /** * Event type when an instance is dirtied for the first time. */ public static final int AFTER_DIRTY = 10; /** * Event type when an instance is dirtied for the first time after flush. */ public static final int BEFORE_DIRTY_FLUSHED = 11; /** * Event type when an instance is dirtied for the first time after flush. */ public static final int AFTER_DIRTY_FLUSHED = 12; /** * Event type when an instance is detached. */ public static final int BEFORE_DETACH = 13; /** * Event type when an instance is detached. */ public static final int AFTER_DETACH = 14; /** * Event type when an instance is attached. */ public static final int BEFORE_ATTACH = 15; /** * Event type when an instance is attached. */ public static final int AFTER_ATTACH = 16; /** * Event type when an instances is refreshed. */ public static final int AFTER_REFRESH = 17; /** * Event type when an instance is modified. This is not invoked for * PNEW records, but is invoked for PNEWFLUSHED. */ public static final int BEFORE_UPDATE = 20; /** * Event type when an instance is modified, after the change has been * sent to the store. This is not invoked for PNEW records, but is * invoked for PNEWFLUSHED records. */ public static final int AFTER_UPDATE_PERFORMED = 21; /** * Convenience array of all event types. */ public static final int[] ALL_EVENTS = new int[]{ BEFORE_PERSIST, AFTER_PERSIST, AFTER_PERSIST_PERFORMED, AFTER_LOAD, BEFORE_STORE, AFTER_STORE, BEFORE_CLEAR, AFTER_CLEAR, BEFORE_DELETE, AFTER_DELETE, AFTER_DELETE_PERFORMED, BEFORE_DIRTY, AFTER_DIRTY, BEFORE_DIRTY_FLUSHED, AFTER_DIRTY_FLUSHED, BEFORE_DETACH, AFTER_DETACH, BEFORE_ATTACH, AFTER_ATTACH, AFTER_REFRESH, BEFORE_UPDATE, AFTER_UPDATE_PERFORMED, }; private final int _type; private final Object _related; /** * Constructor. * * @param pc the persistent instance that triggered the event * @param type the event type */ public LifecycleEvent(Object pc, int type) { this(pc, null, type); } /** * Constructor. * * @param pc the persistent instance that triggered the event * @param type the event type * @param related the related instance such as the detached copy. */ public LifecycleEvent(Object pc, Object related, int type) { super(pc); _type = type; _related = related; } /** * Return the event type. */ public int getType() { return _type; } /** * Return the related object. */ public Object getRelated () { return _related; } }