Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon McDuff2008-10-07 20:09:01 +0000
committerSimon McDuff2008-10-07 20:09:01 +0000
commitc992425c626f57a165d23e9f2c8b8c46df1305ef (patch)
treedf3d4e6110336125e8cfcfd3d2b0748367fd7293 /plugins/org.eclipse.emf.cdo.server.hibernate
parentf7159321e74cb919908959d554f9d6e312764438 (diff)
downloadcdo-c992425c626f57a165d23e9f2c8b8c46df1305ef.tar.gz
cdo-c992425c626f57a165d23e9f2c8b8c46df1305ef.tar.xz
cdo-c992425c626f57a165d23e9f2c8b8c46df1305ef.zip
[248052] [Hibernate] UnsupportedOperationException in HibernateStoreReader
https://bugs.eclipse.org/bugs/show_bug.cgi?id=248052
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.hibernate')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java33
2 files changed, 34 insertions, 15 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
index 6987480051..858a75b80e 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
@@ -10,11 +10,9 @@
**************************************************************************/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
+import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.spi.common.InternalCDORevision;
-import org.eclipse.net4j.util.collection.MoveableArrayList;
-import org.eclipse.net4j.util.collection.MoveableList;
-
import org.hibernate.HibernateException;
import org.hibernate.collection.PersistentCollection;
@@ -55,16 +53,8 @@ public class CDOManyReferenceGetter extends CDOPropertyGetter
return collection;
}
- // Not yet, get the moveablearraylist
- @SuppressWarnings("unchecked")
- MoveableList<Object> list = (MoveableList<Object>)super.get(target);
- if (list == null)
- {
- // TODO: what initial size?
- list = new MoveableArrayList<Object>(10);
- InternalCDORevision revision = (InternalCDORevision)target;
- revision.setValue(getCDOFeature(), list);
- }
+ InternalCDORevision revision = (InternalCDORevision)target;
+ CDOList list = revision.getList(getCDOFeature(), 10);
// Wrap the moveablearraylist
HibernateMoveableListWrapper wrapper = new HibernateMoveableListWrapper();
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
index edebb51549..a15147667a 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
@@ -11,9 +11,12 @@
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.revision.CDOList;
+import org.eclipse.emf.cdo.common.model.CDOType;
+import org.eclipse.emf.cdo.common.revision.CDOListFactory;
+import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateUtil;
+import org.eclipse.emf.cdo.spi.common.InternalCDOList;
import java.util.ArrayList;
import java.util.Collection;
@@ -26,7 +29,7 @@ import java.util.ListIterator;
*
* @author Martin Taal
*/
-public class WrappedHibernateList implements CDOList
+public class WrappedHibernateList implements InternalCDOList
{
private List<Object> delegate;
@@ -82,6 +85,31 @@ public class WrappedHibernateList implements CDOList
}
}
+ public void adjustReferences(CDOReferenceAdjuster adjuster)
+ {
+ int size = size();
+ for (int i = 0; i < size; i++)
+ {
+ Object element = get(i);
+ Object newID = adjuster.adjustReference(element);
+ if (newID != element)
+ {
+ set(i, newID);
+ }
+ }
+ }
+
+ public InternalCDOList clone(CDOType type)
+ {
+ int size = size();
+ InternalCDOList list = (InternalCDOList)CDOListFactory.DEFAULT.createList(size, 0, 0);
+ for (int i = 0; i < size; i++)
+ {
+ list.add(type.copyValue(get(i)));
+ }
+ return list;
+ }
+
/**
* @return the delegate
*/
@@ -388,4 +416,5 @@ public class WrappedHibernateList implements CDOList
delegate.set(((CDORevision)o).getID());
}
}
+
}

Back to the top