Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java')
-rw-r--r--hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java56
1 files changed, 30 insertions, 26 deletions
diff --git a/hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java b/hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java
index 5abeace13..735b9aa75 100644
--- a/hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java
+++ b/hibernate/org.eclipse.emf.teneo.hibernate/src/org/eclipse/emf/teneo/hibernate/mapping/elist/HbExtraLazyPersistableEMap.java
@@ -53,12 +53,12 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
public HbExtraLazyPersistableEMap(InternalEObject owner, EReference eref, List<Entry<K, V>> list) {
super(owner, eref, list);
}
-
+
@Override
public Iterator<java.util.Map.Entry<K, V>> iterator() {
return LazyCollectionUtils.getPagedLoadingIterator(this, LazyCollectionUtils.DEFAULT_PAGE_SIZE);
}
-
+
@Override
public int size() {
// if we are not loaded yet, we return the size of the buffered lazy
@@ -66,7 +66,7 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
if (!isLoaded() && isHibernateListPresent()) {
try {
- size = ((PersistentList)((PersistableEList<?>) delegateEList).getDelegate()).size();
+ size = ((PersistentList) ((PersistableEList<?>) delegateEList).getDelegate()).size();
return size;
} catch (Throwable t) {
// ignore on purpose, let the call to super handle it
@@ -83,20 +83,25 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
// do a lazy get
if (key != null && !isLoaded() && isHibernateListPresent()) {
final Session session = getSession();
-
+
session.flush();
-
- // create a query
- final AbstractPersistentCollection collection = (AbstractPersistentCollection)getDelegate();
- final CollectionEntry collectionEntry = ((SessionImplementor)session).getPersistenceContext().getCollectionEntry(collection);
- final AbstractCollectionPersister persister = (AbstractCollectionPersister)collectionEntry.getLoadedPersister();
- final String entityName = ((EntityType)persister.getCollectionMetadata().getElementType()).getAssociatedEntityName();
- final Query qry = session.createQuery("select e from " + entityName + " as e where e.key=:key and e." + StoreUtil.getExtraLazyInversePropertyName(getEStructuralFeature()) + "=:owner");
+
+ // create a query
+ final AbstractPersistentCollection collection = (AbstractPersistentCollection) getDelegate();
+ final CollectionEntry collectionEntry = ((SessionImplementor) session)
+ .getPersistenceContext().getCollectionEntry(collection);
+ final AbstractCollectionPersister persister = (AbstractCollectionPersister) collectionEntry
+ .getLoadedPersister();
+ final String entityName = ((EntityType) persister.getCollectionMetadata().getElementType())
+ .getAssociatedEntityName();
+ final Query qry = session.createQuery("select e from " + entityName
+ + " as e where e.key=:key and e."
+ + StoreUtil.getExtraLazyInversePropertyName(getEStructuralFeature()) + "=:owner");
qry.setParameter("key", key);
qry.setParameter("owner", getOwner());
final Object result = qry.uniqueResult();
if (result instanceof Map.Entry<?, ?>) {
- final Map.Entry<K, V> entry = (Map.Entry<K, V>)result;
+ final Map.Entry<K, V> entry = (Map.Entry<K, V>) result;
return entry.getValue();
}
return null;
@@ -109,26 +114,26 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
@Override
public V put(K key, V value) {
if (!isLoaded() && isHibernateListPresent()) {
- final Map.Entry<K, V> entry = (Map.Entry<K, V>)get(key);
+ final Map.Entry<K, V> entry = (Map.Entry<K, V>) get(key);
if (entry != null && entry instanceof org.eclipse.emf.common.util.BasicEMap.Entry<?, ?>) {
- V result = putEntry((org.eclipse.emf.common.util.BasicEMap.Entry<K, V>)entry, value);
- didModify((org.eclipse.emf.common.util.BasicEMap.Entry<K, V>)entry, result);
- return result;
- } else {
+ V result = putEntry((org.eclipse.emf.common.util.BasicEMap.Entry<K, V>) entry, value);
+ didModify((org.eclipse.emf.common.util.BasicEMap.Entry<K, V>) entry, result);
+ return result;
+ } else {
// we get here, create a new one and add it to the persistablelist...
- org.eclipse.emf.common.util.BasicEMap.Entry<K, V> newEntry = newEntry(hashOf(key), key, value);
+ org.eclipse.emf.common.util.BasicEMap.Entry<K, V> newEntry = newEntry(hashOf(key), key,
+ value);
delegateEList.add(newEntry);
- return null;
+ return null;
}
}
return super.put(key, value);
}
-
/** Needs to be implemented by concrete subclass */
@Override
- protected EList<BasicEMap.Entry<K, V>> createDelegateEList(InternalEObject owner, EStructuralFeature feature,
- List<BasicEMap.Entry<K, V>> delegateORMList) {
+ protected EList<BasicEMap.Entry<K, V>> createDelegateEList(InternalEObject owner,
+ EStructuralFeature feature, List<BasicEMap.Entry<K, V>> delegateORMList) {
return new HbExtraLazyPersistableEList<Entry<K, V>>(owner, feature, delegateORMList) {
private static final long serialVersionUID = 1L;
@@ -160,7 +165,6 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
};
}
-
@Override
public boolean remove(Object object) {
// TODO Auto-generated method stub
@@ -178,7 +182,7 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
// TODO Auto-generated method stub
return super.removeKey(key);
}
-
+
private boolean isHibernateListPresent() {
return getDelegate() instanceof AbstractPersistentCollection;
}
@@ -187,7 +191,7 @@ public class HbExtraLazyPersistableEMap<K, V> extends HibernatePersistableEMap<K
final AbstractPersistentCollection persistentCollection = (AbstractPersistentCollection) getDelegate();
final SessionImplementor session = ((AbstractPersistentCollection) persistentCollection)
.getSession();
- return (Session)session;
+ return (Session) session;
}
-
+
} \ No newline at end of file

Back to the top