Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java104
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/MEMDB4OStore.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java8
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java2
5 files changed, 130 insertions, 14 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java
index a0a7380f51..3fbc73f0e1 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java
@@ -33,6 +33,7 @@ import com.db4o.query.Query;
import com.db4o.reflect.jdk.JdkReflector;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -220,10 +221,15 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
}
finally
{
- container.close();
+ closeClient(container);
}
}
+ protected void closeClient(ObjectContainer container)
+ {
+ container.close();
+ }
+
private void commitServerInfo(ObjectContainer container)
{
ObjectContainer usedContainer = container != null ? container : openClient();
@@ -237,7 +243,7 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
{
if (usedContainer != container)
{
- usedContainer.close();
+ closeClient(usedContainer);
}
}
}
@@ -295,6 +301,12 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
return (DB4ORevision)revisions.get(0);
}
+ public static <T> List<T> getElementsOfType(ObjectContainer container, Class<T> clazz)
+ {
+ ObjectSet<T> elements = container.query(clazz);
+ return elements;
+ }
+
public static IDB4OIdentifiableObject getIdentifiableObject(ObjectContainer container, String id)
{
Query query = container.query();
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java
index c5a11f2884..47335fa3de 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java
@@ -19,6 +19,8 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.lob.CDOLobHandler;
import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionCacheAdder;
import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
@@ -27,6 +29,7 @@ import org.eclipse.emf.cdo.common.util.CDOQueryInfo;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.ISession;
+import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.IStoreChunkReader;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.db4o.IDB4OIdentifiableObject;
@@ -68,6 +71,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
+import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -81,7 +85,7 @@ import java.util.Set;
/**
* @author Victor Roldan Betancort
*/
-public class DB4OStoreAccessor extends LongIDStoreAccessor
+public class DB4OStoreAccessor extends LongIDStoreAccessor implements IStoreAccessor.Raw
{
private ObjectContainer objectContainer;
@@ -312,8 +316,11 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
{
Query query = getObjectContainer().query();
query.constrain(DB4ORevision.class);
- query.descend(DB4ORevision.ATTRIBUTE_PACKAGE_NS_URI).constrain(eClass.getEPackage().getNsURI());
- query.descend(DB4ORevision.ATTRIBUTE_CLASS_NAME).constrain(eClass.getName());
+ if (eClass != null)
+ {
+ query.descend(DB4ORevision.ATTRIBUTE_PACKAGE_NS_URI).constrain(eClass.getEPackage().getNsURI());
+ query.descend(DB4ORevision.ATTRIBUTE_CLASS_NAME).constrain(eClass.getName());
+ }
ObjectSet<?> revisions = query.execute();
if (revisions.isEmpty())
@@ -425,8 +432,42 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
public void handleLobs(long fromTime, long toTime, CDOLobHandler handler) throws IOException
{
- // TODO: implement DB4OStoreAccessor.handleLobs(fromTime, toTime, handler)
- throw new UnsupportedOperationException();
+ for (DB4OBlob db4oBlob : DB4OStore.getElementsOfType(getObjectContainer(), DB4OBlob.class))
+ {
+ byte[] id = HexUtil.hexToBytes(db4oBlob.getId());
+ byte[] blob = db4oBlob.getValue();
+ ByteArrayInputStream in = new ByteArrayInputStream(blob);
+ OutputStream out = handler.handleBlob(id, blob.length);
+ if (out != null)
+ {
+ try
+ {
+ IOUtil.copyBinary(in, out, blob.length);
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ }
+ for (DB4OClob db4oClob : DB4OStore.getElementsOfType(getObjectContainer(), DB4OClob.class))
+ {
+ byte[] id = HexUtil.hexToBytes(db4oClob.getId());
+ char[] clob = db4oClob.getValue();
+ CharArrayReader in = new CharArrayReader(clob);
+ Writer out = handler.handleClob(id, clob.length);
+ if (out != null)
+ {
+ try
+ {
+ IOUtil.copyCharacter(in, out, clob.length);
+ }
+ finally
+ {
+ IOUtil.close(out);
+ }
+ }
+ }
}
public void loadLob(byte[] id, OutputStream out) throws IOException
@@ -715,4 +756,57 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
throw new IllegalStateException("Duplicate resource or folder: " + name + " in folder " + folderID); //$NON-NLS-1$ //$NON-NLS-2$
}
}
+
+ public void rawExport(CDODataOutput out, int fromBranchID, int toBranchID, long fromCommitTime, long toCommitTime)
+ throws IOException
+ {
+ // TODO: Implement DB4OStoreAccessor.rawExport(CDODataOutput, int, int, long, long)
+ throw new UnsupportedOperationException();
+ }
+
+ public void rawImport(CDODataInput in, int fromBranchID, int toBranchID, long fromCommitTime, long toCommitTime,
+ OMMonitor monitor) throws IOException
+ {
+ // TODO: Implement DB4OStoreAccessor.rawImport(CDODataInput, int, int, long, long, OMMonitor)
+ throw new UnsupportedOperationException();
+ }
+
+ public void rawStore(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
+ {
+ writePackageUnits(packageUnits, monitor);
+ }
+
+ public void rawStore(InternalCDORevision revision, OMMonitor monitor)
+ {
+ writeRevision(revision, monitor);
+ }
+
+ public void rawStore(byte[] id, long size, InputStream inputStream) throws IOException
+ {
+ // TODO: Implement DB4OStoreAccessor.rawExport(CDODataOutput, int, int, long, long)
+ throw new UnsupportedOperationException();
+ }
+
+ public void rawStore(byte[] id, long size, Reader reader) throws IOException
+ {
+ // TODO: Implement DB4OStoreAccessor.rawStore(byte[], long, Reader)
+ throw new UnsupportedOperationException();
+ }
+
+ public void rawStore(CDOBranch branch, long timeStamp, long previousTimeStamp, String userID, String comment,
+ OMMonitor monitor)
+ {
+ writeCommitInfo(branch, timeStamp, previousTimeStamp, userID, comment, monitor);
+ }
+
+ public void rawDelete(CDOID id, int version, CDOBranch branch, EClass eClass, OMMonitor monitor)
+ {
+ // TODO: Implement DB4OStoreAccessor.rawDelete(CDOID, int, CDOBranch, EClass, OMMonitor)
+ throw new UnsupportedOperationException();
+ }
+
+ public void rawCommit(double commitWork, OMMonitor monitor)
+ {
+ doCommit(monitor);
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/MEMDB4OStore.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/MEMDB4OStore.java
index 434617500e..d7eff1c621 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/MEMDB4OStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/MEMDB4OStore.java
@@ -23,6 +23,8 @@ import com.db4o.ext.MemoryFile;
public final class MEMDB4OStore extends DB4OStore
{
+ private ObjectContainer objectContainer;
+
public MEMDB4OStore()
{
super(null, 0);
@@ -31,7 +33,11 @@ public final class MEMDB4OStore extends DB4OStore
@Override
public ObjectContainer openClient()
{
- return ExtDb4o.openMemoryFile(new MemoryFile());
+ if (objectContainer == null)
+ {
+ objectContainer = ExtDb4o.openMemoryFile(new MemoryFile());
+ }
+ return objectContainer;
}
@Override
@@ -45,4 +51,10 @@ public final class MEMDB4OStore extends DB4OStore
{
// no server is defined. Objects are mantained in-memory in ObjectContainer instances
}
+
+ @Override
+ protected void closeClient(ObjectContainer container)
+ {
+ // no server is defined. Objects are mantained in-memory in ObjectContainer instances
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java b/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java
index 91223f5004..0ffa57e412 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java
@@ -14,8 +14,6 @@ import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.internal.db4o.MEMDB4OStore;
import org.eclipse.emf.cdo.tests.AllConfigs;
-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_316444_Test;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
import org.eclipse.emf.cdo.tests.config.impl.RepositoryConfig;
@@ -40,9 +38,9 @@ public class AllTestsDB4O extends AllConfigs
{
super.initTestClasses(testClasses);
- // Takes too much time
- testClasses.remove(Bugzilla_261218_Test.class);
- testClasses.remove(Bugzilla_316444_Test.class);
+ // Added here testcases to skip, example:
+ // testClasses.remove(Bugzilla_261218_Test.class);
+ // testClasses.remove(Bugzilla_316444_Test.class);
}
@Override
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java
index e8a41888c9..cb6c1d892a 100644
--- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java
+++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java
@@ -50,7 +50,7 @@ import junit.framework.TestResult;
*/
public abstract class AbstractOMTest extends TestCase
{
- public static final long DEFAULT_TIMEOUT = 120 * 1000;
+ public static final long DEFAULT_TIMEOUT = 15 * 1000;
public static final long DEFAULT_TIMEOUT_EXPECTED = 2 * 1000;

Back to the top