diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java deleted file mode 100644 index 108747dca9..0000000000 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java +++ /dev/null @@ -1,111 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2004 - 2008 Martin Taal and others - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Martin Taal - copied from CDORevisionPropertyHandler and adapted - **************************************************************************/ -package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; - -import org.eclipse.emf.cdo.common.model.CDOFeature; -import org.eclipse.emf.cdo.common.revision.CDORevision; -import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM; - -import org.eclipse.net4j.util.om.trace.ContextTracer; - -import org.hibernate.collection.PersistentCollection; - -import java.util.HashMap; -import java.util.Map; - -/** - * Keeps mappings from object/feature combinations to a hibernate persistable list. This works because the write action - * is done in one thread. - * - * @author Martin Taal - */ -public class PersistableListHolder -{ - private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, PersistableListHolder.class); - - private static PersistableListHolder instance = new PersistableListHolder(); - - private ThreadLocal<Map<Key, PersistentCollection>> listMapping = new ThreadLocal<Map<Key, PersistentCollection>>(); - - public PersistableListHolder() - { - } - - public void putListMapping(Object target, CDOFeature cdoFeature, PersistentCollection collection) - { - Key key = new Key(target, cdoFeature); - getListMapping().put(key, collection); - if (TRACER.isEnabled()) - { - TRACER.trace("Stored hb list in threadlocal: " + ((CDORevision)target).getCDOClass().getName() + "." - + cdoFeature.getName()); - } - } - - public PersistentCollection getListMapping(Object target, CDOFeature cdoFeature) - { - Key key = new Key(target, cdoFeature); - return getListMapping().get(key); - } - - private Map<Key, PersistentCollection> getListMapping() - { - if (listMapping.get() == null) - { - listMapping.set(new HashMap<Key, PersistentCollection>()); - } - - return listMapping.get(); - } - - public static PersistableListHolder getInstance() - { - return instance; - } - - public static void setInstance(PersistableListHolder instance) - { - PersistableListHolder.instance = instance; - } - - private static final class Key - { - private Object owner; - - private CDOFeature cdoFeature; - - public Key(Object owner, CDOFeature cdoFeature) - { - this.owner = owner; - this.cdoFeature = cdoFeature; - } - - @Override - public boolean equals(Object obj) - { - if (!(obj instanceof Key)) - { - return false; - } - - Key otherKey = (Key)obj; - // the owner is uniquely present in mem, the same applies for the cdoFeature - // therefore == is allowed - return owner == otherKey.owner && cdoFeature == otherKey.cdoFeature; - } - - @Override - public int hashCode() - { - return owner.hashCode() + cdoFeature.hashCode(); - } - } -} |