⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventlisteners.java

📁 一个Java持久层类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors.  All third-party contributions are * distributed under license by Red Hat Middleware LLC. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA  02110-1301  USA */package org.hibernate.event;import java.io.Serializable;import java.lang.reflect.Field;import java.util.Collections;import java.util.HashMap;import java.util.Map;import org.hibernate.AssertionFailure;import org.hibernate.MappingException;import org.hibernate.cfg.Configuration;import org.hibernate.event.def.DefaultAutoFlushEventListener;import org.hibernate.event.def.DefaultDeleteEventListener;import org.hibernate.event.def.DefaultDirtyCheckEventListener;import org.hibernate.event.def.DefaultEvictEventListener;import org.hibernate.event.def.DefaultFlushEntityEventListener;import org.hibernate.event.def.DefaultFlushEventListener;import org.hibernate.event.def.DefaultInitializeCollectionEventListener;import org.hibernate.event.def.DefaultLoadEventListener;import org.hibernate.event.def.DefaultLockEventListener;import org.hibernate.event.def.DefaultMergeEventListener;import org.hibernate.event.def.DefaultPersistEventListener;import org.hibernate.event.def.DefaultPostLoadEventListener;import org.hibernate.event.def.DefaultPreLoadEventListener;import org.hibernate.event.def.DefaultRefreshEventListener;import org.hibernate.event.def.DefaultReplicateEventListener;import org.hibernate.event.def.DefaultSaveEventListener;import org.hibernate.event.def.DefaultSaveOrUpdateCopyEventListener;import org.hibernate.event.def.DefaultSaveOrUpdateEventListener;import org.hibernate.event.def.DefaultUpdateEventListener;import org.hibernate.event.def.DefaultPersistOnFlushEventListener;import org.hibernate.util.Cloneable;/** * A convience holder for all defined session event listeners. * * @author Steve Ebersole */public class EventListeners extends Cloneable implements Serializable {	private LoadEventListener[] loadEventListeners = { new DefaultLoadEventListener() };	private SaveOrUpdateEventListener[] saveOrUpdateEventListeners = { new DefaultSaveOrUpdateEventListener() };	private MergeEventListener[] mergeEventListeners = { new DefaultMergeEventListener() };	private PersistEventListener[] persistEventListeners = { new DefaultPersistEventListener() };	private PersistEventListener[] persistOnFlushEventListeners = { new DefaultPersistOnFlushEventListener() };	private ReplicateEventListener[] replicateEventListeners = { new DefaultReplicateEventListener() };	private DeleteEventListener[] deleteEventListeners = { new DefaultDeleteEventListener() };	private AutoFlushEventListener[] autoFlushEventListeners = { new DefaultAutoFlushEventListener() };	private DirtyCheckEventListener[] dirtyCheckEventListeners = { new DefaultDirtyCheckEventListener() };	private FlushEventListener[] flushEventListeners = { new DefaultFlushEventListener() };	private EvictEventListener[] evictEventListeners = { new DefaultEvictEventListener() };	private LockEventListener[] lockEventListeners = { new DefaultLockEventListener() };	private RefreshEventListener[] refreshEventListeners = { new DefaultRefreshEventListener() };	private FlushEntityEventListener[] flushEntityEventListeners = { new DefaultFlushEntityEventListener() };	private InitializeCollectionEventListener[] initializeCollectionEventListeners = 			{ new DefaultInitializeCollectionEventListener() };	private PostLoadEventListener[] postLoadEventListeners = { new DefaultPostLoadEventListener() };	private PreLoadEventListener[] preLoadEventListeners = { new DefaultPreLoadEventListener() };		private PreDeleteEventListener[] preDeleteEventListeners = {};	private PreUpdateEventListener[] preUpdateEventListeners = {};	private PreInsertEventListener[] preInsertEventListeners = {};	private PostDeleteEventListener[] postDeleteEventListeners = {};	private PostUpdateEventListener[] postUpdateEventListeners = {};	private PostInsertEventListener[] postInsertEventListeners = {};	private PostDeleteEventListener[] postCommitDeleteEventListeners = {};	private PostUpdateEventListener[] postCommitUpdateEventListeners = {};	private PostInsertEventListener[] postCommitInsertEventListeners = {};	private PreCollectionRecreateEventListener[] preCollectionRecreateEventListeners = {};	private PostCollectionRecreateEventListener[] postCollectionRecreateEventListeners = {};	private PreCollectionRemoveEventListener[] preCollectionRemoveEventListeners = {};	private PostCollectionRemoveEventListener[] postCollectionRemoveEventListeners = {};	private PreCollectionUpdateEventListener[] preCollectionUpdateEventListeners = {};	private PostCollectionUpdateEventListener[] postCollectionUpdateEventListeners = {};		private SaveOrUpdateEventListener[] saveEventListeners = { new DefaultSaveEventListener() };	private SaveOrUpdateEventListener[] updateEventListeners = { new DefaultUpdateEventListener() };	private MergeEventListener[] saveOrUpdateCopyEventListeners = { new DefaultSaveOrUpdateCopyEventListener() };//saveOrUpdateCopy() is deprecated!	private static Map eventInterfaceFromType;	static {		eventInterfaceFromType = new HashMap();		eventInterfaceFromType.put("auto-flush", AutoFlushEventListener.class);		eventInterfaceFromType.put("merge", MergeEventListener.class);		eventInterfaceFromType.put("create", PersistEventListener.class);		eventInterfaceFromType.put("create-onflush", PersistEventListener.class);		eventInterfaceFromType.put("delete", DeleteEventListener.class);		eventInterfaceFromType.put("dirty-check", DirtyCheckEventListener.class);		eventInterfaceFromType.put("evict", EvictEventListener.class);		eventInterfaceFromType.put("flush", FlushEventListener.class);		eventInterfaceFromType.put("flush-entity", FlushEntityEventListener.class);		eventInterfaceFromType.put("load", LoadEventListener.class);		eventInterfaceFromType.put("load-collection", InitializeCollectionEventListener.class);		eventInterfaceFromType.put("lock", LockEventListener.class);		eventInterfaceFromType.put("refresh", RefreshEventListener.class);		eventInterfaceFromType.put("replicate", ReplicateEventListener.class);		eventInterfaceFromType.put("save-update", SaveOrUpdateEventListener.class);		eventInterfaceFromType.put("save", SaveOrUpdateEventListener.class);		eventInterfaceFromType.put("update", SaveOrUpdateEventListener.class);		eventInterfaceFromType.put("pre-load", PreLoadEventListener.class);		eventInterfaceFromType.put("pre-update", PreUpdateEventListener.class);		eventInterfaceFromType.put("pre-delete", PreDeleteEventListener.class);		eventInterfaceFromType.put("pre-insert", PreInsertEventListener.class);		eventInterfaceFromType.put("pre-collection-recreate", PreCollectionRecreateEventListener.class);		eventInterfaceFromType.put("pre-collection-remove", PreCollectionRemoveEventListener.class);		eventInterfaceFromType.put("pre-collection-update", PreCollectionUpdateEventListener.class);		eventInterfaceFromType.put("post-load", PostLoadEventListener.class);		eventInterfaceFromType.put("post-update", PostUpdateEventListener.class);		eventInterfaceFromType.put("post-delete", PostDeleteEventListener.class);		eventInterfaceFromType.put("post-insert", PostInsertEventListener.class);		eventInterfaceFromType.put("post-commit-update", PostUpdateEventListener.class);		eventInterfaceFromType.put("post-commit-delete", PostDeleteEventListener.class);		eventInterfaceFromType.put("post-commit-insert", PostInsertEventListener.class);		eventInterfaceFromType.put("post-collection-recreate", PostCollectionRecreateEventListener.class);		eventInterfaceFromType.put("post-collection-remove", PostCollectionRemoveEventListener.class);		eventInterfaceFromType.put("post-collection-update", PostCollectionUpdateEventListener.class);		eventInterfaceFromType = Collections.unmodifiableMap( eventInterfaceFromType );	}	public Class getListenerClassFor(String type) {		Class clazz = (Class) eventInterfaceFromType.get(type);				if (clazz == null) {			throw new MappingException("Unrecognized listener type [" + type + "]");		}		return clazz;	}	private static interface ListenerProcesser {		public void processListener(Object listener);	}	private void processListeners(ListenerProcesser processer) {		Field[] fields = getClass().getDeclaredFields();		for ( int i = 0; i < fields.length; i++ ) {			try {				final Object field = fields[i].get( this );				if ( field instanceof Object[] ) {					final Object[] listeners = ( Object[] ) field;					int length = listeners.length;					for ( int index = 0 ; index < length ; index++ ) {						processer.processListener( listeners[index ] );					}				}			}			catch ( Exception e ) {				throw new AssertionFailure( "could not process listeners" );			}		}	}	/**	 * Call {@link Initializable#initialize} on any listeners that implement the	 * {@link Initializable} interface.	 *	 * @param cfg The configuration.	 */	public void initializeListeners(final Configuration cfg) {		try {			processListeners(					new ListenerProcesser() {						public void processListener(Object listener) {							if ( listener instanceof Initializable ) {								( ( Initializable ) listener ).initialize( cfg );							}						}					}			);		}		catch ( Exception e ) {			throw new AssertionFailure("could not init listeners");		}	}	public void destroyListeners() {		try {			processListeners(					new ListenerProcesser() {						public void processListener(Object listener) {							if ( listener instanceof Destructible ) {								( ( Destructible ) listener ).cleanup();							}						}					}			);		}		catch ( Exception e ) {			throw new AssertionFailure("could not init listeners");		}	}	public LoadEventListener[] getLoadEventListeners() {        return loadEventListeners;    }    public void setLoadEventListeners(LoadEventListener[] loadEventListener) {        this.loadEventListeners = loadEventListener;    }	public ReplicateEventListener[] getReplicateEventListeners() {		return replicateEventListeners;	}	public void setReplicateEventListeners(ReplicateEventListener[] replicateEventListener) {		this.replicateEventListeners = replicateEventListener;	}	public DeleteEventListener[] getDeleteEventListeners() {		return deleteEventListeners;	}	public void setDeleteEventListeners(DeleteEventListener[] deleteEventListener) {		this.deleteEventListeners = deleteEventListener;	}	public AutoFlushEventListener[] getAutoFlushEventListeners() {		return autoFlushEventListeners;	}	public void setAutoFlushEventListeners(AutoFlushEventListener[] autoFlushEventListener) {		this.autoFlushEventListeners = autoFlushEventListener;	}	public DirtyCheckEventListener[] getDirtyCheckEventListeners() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -