Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-08-24 06:45:43 -0400
committerEike Stepper2010-08-24 06:45:43 -0400
commit018860e83b79bdf419a814ac7ed5de303bfff5c2 (patch)
tree0d698fd5291748460d985d9fcfadd058d6109343
parent70cc9e6cfd0bda3e1307e63dccc6517205c3ee51 (diff)
downloadcdo-018860e83b79bdf419a814ac7ed5de303bfff5c2.tar.gz
cdo-018860e83b79bdf419a814ac7ed5de303bfff5c2.tar.xz
cdo-018860e83b79bdf419a814ac7ed5de303bfff5c2.zip
[252255] Give support to Open Source object-oriented database
https://bugs.eclipse.org/bugs/show_bug.cgi?id=252255
-rw-r--r--features/org.eclipse.emf.cdo.sdk-feature/feature.xml3
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/.project17
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.tasks.ui.prefs4
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.team.ui.prefs3
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/about.html28
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/build.properties24
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/copyright.txt9
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/eclipse.gifbin0 -> 1058 bytes
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/epl-v10.html258
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/feature.properties167
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/feature.xml44
-rw-r--r--features/org.eclipse.emf.cdo.server.db4o-feature/license.html107
-rw-r--r--features/org.eclipse.emf.cdo.site-feature/feature.xml4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/plugin.xml2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/QueryUtil.java84
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/ServerInfo.java59
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/db4o/IDB4OStore.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OCommitInfo.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/CommitInfo.java)13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitivePackageUnit.java)13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OQueryUtil.java80
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4ORevision.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitiveRevision.java)154
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStore.java)203
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreAccessor.java)183
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreFactory.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreFactory.java)7
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/bundle/OM.java (renamed from plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/bundle/OM.java)2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java28
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db4o/CDO AllTests (DB4O).launch15
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java (renamed from plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/DB4OTestConfing.java)6
-rw-r--r--releng/org.eclipse.emf.cdo.releng/buckminster.cspec3
31 files changed, 1102 insertions, 428 deletions
diff --git a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
index bcf9868cac..a8da75d2ca 100644
--- a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
@@ -44,7 +44,10 @@
<includes id="org.eclipse.emf.cdo.doc" version="0.0.0"/>
<includes id="org.eclipse.emf.cdo.sdk.source" version="0.0.0"/>
+ <includes id="org.eclipse.emf.cdo.tests.source" version="0.0.0"/>
<includes id="org.eclipse.emf.cdo.server.hibernate.source" version="0.0.0"/>
+ <includes id="org.eclipse.emf.cdo.server.db4o.source" version="0.0.0"/>
+
<plugin id="org.eclipse.emf.cdo.migrator.source" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
</feature>
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/.project b/features/org.eclipse.emf.cdo.server.db4o-feature/.project
new file mode 100644
index 0000000000..272f0575da
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.cdo.server.db4o-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.tasks.ui.prefs b/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..7f1832044c
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,4 @@
+#Sun Mar 09 19:15:26 CET 2008
+eclipse.preferences.version=1
+project.repository.kind=bugzilla
+project.repository.url=https\://bugs.eclipse.org/bugs
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.team.ui.prefs b/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..e72b02b02f
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Sun Mar 09 19:15:26 CET 2008
+commit.comment.template=[${task.id}] ${task.description} \r\n${task.url}
+eclipse.preferences.version=1
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/about.html b/features/org.eclipse.emf.cdo.server.db4o-feature/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/build.properties b/features/org.eclipse.emf.cdo.server.db4o-feature/build.properties
new file mode 100644
index 0000000000..38f78d73df
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/build.properties
@@ -0,0 +1,24 @@
+# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
+# Eike Stepper - initial API and implementation
+
+# NLS_MESSAGEFORMAT_VAR
+
+bin.includes = feature.xml,\
+ epl-v10.html,\
+ copyright.txt,\
+ feature.properties,\
+ about.html,\
+ license.html,\
+ eclipse.gif,\
+ eclipse_update_120.jpg,\
+ category.xml
+src.includes = about.html,\
+ copyright.txt,\
+ epl-v10.html,\
+ license.html
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/copyright.txt b/features/org.eclipse.emf.cdo.server.db4o-feature/copyright.txt
new file mode 100644
index 0000000000..b655e1c584
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/copyright.txt
@@ -0,0 +1,9 @@
+Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
+ Victor Roldan Betancort - initial API and implementation
+ Eike Stepper - maintenance
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse.gif b/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse.gif
new file mode 100644
index 0000000000..bdc2912bfd
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse.gif
Binary files differ
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse_update_120.jpg b/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse_update_120.jpg
new file mode 100644
index 0000000000..bfdf708ad6
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/epl-v10.html b/features/org.eclipse.emf.cdo.server.db4o-feature/epl-v10.html
new file mode 100644
index 0000000000..832a9d448e
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/epl-v10.html
@@ -0,0 +1,258 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head><body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body></html> \ No newline at end of file
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/feature.properties b/features/org.eclipse.emf.cdo.server.db4o-feature/feature.properties
new file mode 100644
index 0000000000..3f673efa15
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/feature.properties
@@ -0,0 +1,167 @@
+# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
+# Simon McDuff - initial API and implementation
+# Ibrahim Sallam - Code refactring and CDO 3.0 support
+
+# NLS_MESSAGEFORMAT_VAR
+
+# ==============================================================================
+# Do not change the properties between this line and the last line containing:
+# %%% END OF TRANSLATED PROPERTIES %%%
+# Instead, either redefine an existing property, or create a new property,
+# append it to the end of the file, and change the code to use the new name.
+# ==============================================================================
+
+providerName = Eclipse Modeling Project
+featureName = CDO Model Repository Server DB4O
+description = CDO Model Repository Server DB4O contains the DB4O Store bundle. Ensure that DB4O Driver is already installed! Visit http://net4j.sourceforge.net/update for a p2 repository that contains DB4O Driver.
+
+
+copyrightURL = copyright.txt
+copyright = Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Victor Roldan Betancort - initial API and implementation\n\
+ Eike Stepper - maintenance
+
+licenseURL = license.html
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 14, 2010\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+
+# Label for the update site (on download1.eclipse.org)
+updateSiteName=Eclipse Modeling Project Updates
+
+# ==============================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# The above properties have been shipped for translation.
+# ==============================================================================
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/feature.xml b/features/org.eclipse.emf.cdo.server.db4o-feature/feature.xml
new file mode 100644
index 0000000000..bdc4380fda
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
+ Simon McDuff - initial API and implementation
+ Ibrahim Sallam - Code refactring and CDO 3.0 support
+-->
+<feature
+ id="org.eclipse.emf.cdo.server.db4o"
+ label="%featureName"
+ version="4.0.0.qualifier"
+ provider-name="%providerName"
+ image="eclipse_update_120.jpg">
+
+ <description>
+ %description
+ </description>
+
+ <copyright url="%copyrightURL">
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <url>
+ <update label="%updateSiteName" url="http://www.eclipse.org/modeling/updates/"/>
+ <discovery label="%updateSiteName" url="http://www.eclipse.org/modeling/updates/"/>
+ </url>
+
+ <plugin
+ id="org.eclipse.emf.cdo.server.db4o"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.emf.cdo.server.db4o-feature/license.html b/features/org.eclipse.emf.cdo.server.db4o-feature/license.html
new file mode 100644
index 0000000000..c184ca36a9
--- /dev/null
+++ b/features/org.eclipse.emf.cdo.server.db4o-feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+ on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/features/org.eclipse.emf.cdo.site-feature/feature.xml b/features/org.eclipse.emf.cdo.site-feature/feature.xml
index 49d28aa14a..0ae0ed5a85 100644
--- a/features/org.eclipse.emf.cdo.site-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.site-feature/feature.xml
@@ -81,6 +81,10 @@
version="0.0.0"/>
<includes
+ id="org.eclipse.emf.cdo.server.db4o"
+ version="0.0.0"/>
+
+ <includes
id="org.eclipse.emf.cdo.tests"
version="0.0.0"/>
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.db4o/META-INF/MANIFEST.MF
index f170494fcf..54e4caf184 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/META-INF/MANIFEST.MF
@@ -6,9 +6,9 @@ Bundle-Version: 4.0.0.qualifier
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.emf.cdo.server;bundle-version="[3.0.0,4.0.1)"
-Export-Package: org.eclipse.emf.cdo.internal.server.db4o;version="1.0.0";x-friends:="org.eclipse.emf.cdo.tests.db4o",
- org.eclipse.emf.cdo.internal.server.db4o.bundle;version="1.0.0";x-internal:=true,
- org.eclipse.emf.cdo.server.db4o;version="1.0.0"
+Export-Package: org.eclipse.emf.cdo.server.db4o;version="1.0.0",
+ org.eclipse.emf.cdo.server.internal.db4o;version="1.0.0";x-friends:="org.eclipse.emf.cdo.tests.db4o",
+ org.eclipse.emf.cdo.server.internal.db4o.bundle;version="1.0.0";x-internal:=true
Import-Package: com.db4o;version="[7.4.0,8.0.0)",
com.db4o.config;version="[7.4.0,8.0.0)",
com.db4o.query;version="[7.4.0,8.0.0)",
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/plugin.xml b/plugins/org.eclipse.emf.cdo.server.db4o/plugin.xml
index 9152773198..c6a30e8c52 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/plugin.xml
@@ -17,7 +17,7 @@
<extension
point="org.eclipse.emf.cdo.server.storeFactories">
<storeFactory
- class="org.eclipse.emf.cdo.internal.server.db4o.DB4OStoreFactory"
+ class="org.eclipse.emf.cdo.server.internal.db4o.DB4OStoreFactory"
storeType="db4o">
</storeFactory>
</extension>
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/QueryUtil.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/QueryUtil.java
deleted file mode 100644
index eed31d109e..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/QueryUtil.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
- * Victor Roldan Betancort - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server.db4o;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectSet;
-import com.db4o.query.Query;
-
-/**
- * @author Victor Roldan Betancort
- */
-public final class QueryUtil
-{
-
- public static PrimitiveRevision getLastPrimitiveRevision(ObjectContainer container, int branchId, CDOID id)
- {
- ObjectSet<?> set = getRevisionById(container, branchId, id);
-
- PrimitiveRevision lastRevision = null;
- for (Object value : set)
- {
- PrimitiveRevision rev = (PrimitiveRevision)value;
- if (lastRevision == null)
- {
- lastRevision = rev;
- }
- if (rev.getVersion() > lastRevision.getVersion())
- {
- lastRevision = rev;
- }
- }
- return lastRevision;
- }
-
- public static PrimitiveRevision getPrimitiveRevisionByVersion(ObjectContainer container, CDOID id, int branchId,
- int version)
- {
- ObjectSet<?> set = getRevisionById(container, branchId, id);
- for (Object value : set)
- {
- PrimitiveRevision rev = (PrimitiveRevision)value;
- if (rev.getVersion() == version)
- {
- return rev;
- }
- }
- return null;
- }
-
- private static ObjectSet<?> getRevisionById(ObjectContainer container, int branchId, CDOID id)
- {
- Query query = container.query();
- query.constrain(PrimitiveRevision.class);
- query.descend("id").constrain(CDOIDUtil.getLong(id));
- query.descend("branchID").constrain(branchId);
- ObjectSet<?> set = query.execute();
- return set;
- }
-
- public static void removeRevisionFromContainer(ObjectContainer container, int branchId, CDOID id)
- {
- PrimitiveRevision primitiveRevision = QueryUtil.getLastPrimitiveRevision(container, branchId, id);
- if (primitiveRevision != null)
- {
- container.delete(primitiveRevision);
- }
- else
- {
- throw new IllegalArgumentException("Revision with ID " + id + " not found, cannot detach");
- }
- }
-
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/ServerInfo.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/ServerInfo.java
deleted file mode 100644
index b09c6a32c7..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/ServerInfo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
- * Victor Roldan Betancort - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server.db4o;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Object meant to stores IStore related information
- *
- * @author Victor Roldan Betancort
- */
-public class ServerInfo
-{
- private boolean isFirstTime;
-
- private long creationTime;
-
- private Map<String, String> properties = new HashMap<String, String>();
-
- public boolean isFirstTime()
- {
- return isFirstTime;
- }
-
- public void setFirstTime(boolean isFirstTime)
- {
- this.isFirstTime = isFirstTime;
- }
-
- public void setCreationTime(long creationTime)
- {
- this.creationTime = creationTime;
- }
-
- public long getCreationTime()
- {
- return creationTime;
- }
-
- public void setProperties(Map<String, String> properties)
- {
- this.properties = properties;
- }
-
- public Map<String, String> getProperties()
- {
- return properties;
- }
-
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/db4o/IDB4OStore.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/db4o/IDB4OStore.java
index 05741f7989..75a20fcbb6 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/db4o/IDB4OStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/db4o/IDB4OStore.java
@@ -19,4 +19,8 @@ import org.eclipse.emf.cdo.server.IStore;
public interface IDB4OStore extends IStore
{
public static final String TYPE = "db4o";
+
+ public String getStoreLocation();
+
+ public int getPort();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/CommitInfo.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OCommitInfo.java
index 8b8b4a8563..c81af9140b 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/CommitInfo.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OCommitInfo.java
@@ -9,17 +9,18 @@
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
import org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager;
/**
* @author Victor Roldan Betancort
*/
-public class CommitInfo
+public class DB4OCommitInfo
{
private int branchID;
@@ -29,9 +30,9 @@ public class CommitInfo
private String comment;
- public CommitInfo(int branchId, long timeStamp, String userID, String comment)
+ public DB4OCommitInfo(int branchID, long timeStamp, String userID, String comment)
{
- branchID = branchId;
+ this.branchID = branchID;
this.timeStamp = timeStamp;
this.userID = userID;
this.comment = comment;
@@ -50,8 +51,8 @@ public class CommitInfo
public void handle(InternalCDOBranchManager branchManager, InternalCDOCommitInfoManager manager,
CDOCommitInfoHandler handler)
{
- CDOCommitInfo commitInfo = manager.createCommitInfo(branchManager.getBranch(branchID), timeStamp, userID, comment,
- null);
+ InternalCDOBranch branch = branchManager.getBranch(branchID);
+ CDOCommitInfo commitInfo = manager.createCommitInfo(branch, timeStamp, userID, comment, null);
handler.handleCommitInfo(commitInfo);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitivePackageUnit.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java
index f33c9dad05..dce6e55133 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitivePackageUnit.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java
@@ -8,7 +8,7 @@
* Contributors:
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
@@ -28,7 +28,7 @@ import java.util.List;
/**
* @author Victor Roldan Betancort
*/
-public class PrimitivePackageUnit
+public class DB4OPackageUnit
{
private String id;
@@ -38,7 +38,7 @@ public class PrimitivePackageUnit
private List<Byte> ePackageBytes;
- public PrimitivePackageUnit(String id, Integer ordinalType, Long timeStamp, List<Byte> ePackageBytes)
+ public DB4OPackageUnit(String id, Integer ordinalType, Long timeStamp, List<Byte> ePackageBytes)
{
setId(id);
setOrdinalType(ordinalType);
@@ -86,14 +86,14 @@ public class PrimitivePackageUnit
return ePackageBytes;
}
- public static PrimitivePackageUnit getPrimitivePackageUnit(IStore store, InternalCDOPackageUnit packageUnit)
+ public static DB4OPackageUnit getPrimitivePackageUnit(IStore store, InternalCDOPackageUnit packageUnit)
{
- return new PrimitivePackageUnit(new String(packageUnit.getID()), new Integer(packageUnit.getOriginalType()
+ return new DB4OPackageUnit(new String(packageUnit.getID()), new Integer(packageUnit.getOriginalType()
.ordinal()), new Long(packageUnit.getTimeStamp()), getEPackageBytes(store, packageUnit));
}
public static InternalCDOPackageUnit getPackageUnit(InternalCDOPackageRegistry packageRegistry,
- PrimitivePackageUnit packageUnit)
+ DB4OPackageUnit packageUnit)
{
InternalCDOPackageUnit cdoPackageUnit = (InternalCDOPackageUnit)CDOModelUtil.createPackageUnit();
CDOPackageUnit.Type type = CDOPackageUnit.Type.values()[packageUnit.getOrdinalType()];
@@ -127,6 +127,7 @@ public class PrimitivePackageUnit
{
packageBytes[i] = ePackageBytesList.get(i);
}
+
EPackage ePackage = EMFUtil.createEPackage("", packageBytes, true, rSet, false);
return ePackage;
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OQueryUtil.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OQueryUtil.java
new file mode 100644
index 0000000000..22b3d6f8d1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OQueryUtil.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
+ * Victor Roldan Betancort - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.db4o;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+
+import com.db4o.ObjectContainer;
+import com.db4o.ObjectSet;
+import com.db4o.query.Query;
+
+/**
+ * @author Victor Roldan Betancort
+ */
+public final class DB4OQueryUtil
+{
+ public static DB4ORevision getRevision(ObjectContainer container, CDOID id, int branchID)
+ {
+ // TODO Optimize this loop away
+ DB4ORevision result = null;
+ for (Object value : getRevisions(container, id, branchID))
+ {
+ DB4ORevision revision = (DB4ORevision)value;
+ if (result == null)
+ {
+ result = revision;
+ }
+
+ if (revision.getVersion() > result.getVersion())
+ {
+ result = revision;
+ }
+ }
+
+ return result;
+ }
+
+ public static DB4ORevision getRevisionByVersion(ObjectContainer container, CDOID id, int branchID, int version)
+ {
+ // TODO Optimize this loop away
+ for (Object value : getRevisions(container, id, branchID))
+ {
+ DB4ORevision revision = (DB4ORevision)value;
+ if (revision.getVersion() == version)
+ {
+ return revision;
+ }
+ }
+
+ return null;
+ }
+
+ private static ObjectSet<?> getRevisions(ObjectContainer container, CDOID id, int branchID)
+ {
+ Query query = container.query();
+ query.constrain(DB4ORevision.class);
+ query.descend("id").constrain(CDOIDUtil.getLong(id));
+ query.descend("branchID").constrain(branchID);
+ return query.execute();
+ }
+
+ public static void removeRevisionFromContainer(ObjectContainer container, int branchID, CDOID id)
+ {
+ DB4ORevision primitiveRevision = DB4OQueryUtil.getRevision(container, id, branchID);
+ if (primitiveRevision == null)
+ {
+ throw new IllegalArgumentException("Revision with ID " + id + " not found");
+ }
+
+ container.delete(primitiveRevision);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitiveRevision.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4ORevision.java
index 8571f9e66d..394b416930 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/PrimitiveRevision.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4ORevision.java
@@ -9,7 +9,7 @@
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
@@ -19,6 +19,7 @@ import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.model.CDOClassInfo;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
+import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
@@ -35,13 +36,13 @@ import java.util.List;
/**
* @author Victor Roldan Betancort
*/
-public class PrimitiveRevision
+public class DB4ORevision
{
- private String nsURI;
+ private String packageURI;
private String className;
- private Object id;
+ private long id;
private int version;
@@ -51,14 +52,15 @@ public class PrimitiveRevision
private long timeStamp;
- private Object resourceID;
+ private long resourceID;
- private Object containerID;
+ private long containerID;
private int containingFeatureID;
private List<Object> values;
+ // TODO enum RevisionType { NORMAL, ROOT_RESOURCE, RESOURCE, RESOURCE_FOLDER }??
private boolean isResource;
private boolean isResourceNode;
@@ -67,13 +69,13 @@ public class PrimitiveRevision
private boolean isRootResource;
- public PrimitiveRevision(String nsURI, String className, Object id, int version, int branchID, long revised,
- Object resourceID, Object containerID, int containingFeatureID, List<Object> values, long timestamp,
+ public DB4ORevision(String packageURI, String className, long id, int version, int branchID, long revised,
+ long resourceID, long containerID, int containingFeatureID, List<Object> values, long timestamp,
boolean isResource, boolean isResourceNode, boolean isResourceFolder, boolean isRootResource)
{
- setNsURI(nsURI);
+ setPackageURI(packageURI);
setClassName(className);
- setId(id);
+ setID(id);
setVersion(version);
setBranchID(branchID);
setRevised(revised);
@@ -88,14 +90,14 @@ public class PrimitiveRevision
setRootResource(isRootResource);
}
- public void setNsURI(String nsURI)
+ public void setPackageURI(String packageURI)
{
- this.nsURI = nsURI;
+ this.packageURI = packageURI;
}
- public String getNsURI()
+ public String getPackageURI()
{
- return nsURI;
+ return packageURI;
}
public void setClassName(String className)
@@ -108,12 +110,12 @@ public class PrimitiveRevision
return className;
}
- public void setId(Object id)
+ public void setID(long id)
{
this.id = id;
}
- public Object getId()
+ public long getID()
{
return id;
}
@@ -148,22 +150,22 @@ public class PrimitiveRevision
return revised;
}
- public void setResourceID(Object resourceID)
+ public void setResourceID(long resourceID)
{
this.resourceID = resourceID;
}
- public Object getResourceID()
+ public long getResourceID()
{
return resourceID;
}
- public void setContainerID(Object containerID)
+ public void setContainerID(long containerID)
{
this.containerID = containerID;
}
- public Object getContainerID()
+ public long getContainerID()
{
return containerID;
}
@@ -228,30 +230,41 @@ public class PrimitiveRevision
return isResourceFolder;
}
- static public PrimitiveRevision getPrimitiveRevision(InternalCDORevision revision)
+ public void setRootResource(boolean isRootResource)
+ {
+ this.isRootResource = isRootResource;
+ }
+
+ public boolean isRootResource()
+ {
+ return isRootResource;
+ }
+
+ public static DB4ORevision getDB4ORevision(InternalCDORevision revision)
{
CDOClassInfo classInfo = revision.getClassInfo();
EClass eClass = classInfo.getEClass();
- String nsURI = eClass.getEPackage().getNsURI();
+ String packageURI = eClass.getEPackage().getNsURI();
String className = eClass.getName();
- if (revision.getID().isTemporary())
+ CDOID revisionID = revision.getID();
+ if (revisionID.isTemporary())
{
- System.err.println("TEMPORARY CDOID");
+ throw new IllegalArgumentException("TEMPORARY CDOID: " + revisionID);
}
boolean isResource = revision.isResource();
boolean isResourceNode = revision.isResourceNode();
boolean isResourceFolder = revision.isResourceFolder();
- boolean isRootResource = CDOIDUtil.getLong(revision.getID()) == 1;
+ boolean isRootResource = CDOIDUtil.getLong(revisionID) == 1;
- Object id = getObjectFromId(revision.getID());
+ long id = (Long)getDB4OID(revisionID);
int version = revision.getVersion();
int branchID = revision.getBranch().getID();
long timeStamp = revision.getTimeStamp();
long revised = revision.getRevised();
- Object resourceID = getObjectFromId(revision.getResourceID());
- Object containerID = getObjectFromId((CDOID)revision.getContainerID());
+ long resourceID = (Long)getDB4OID(revision.getResourceID());
+ long containerID = (Long)getDB4OID((CDOID)revision.getContainerID());
int containingFeatureID = revision.getContainingFeatureID();
EStructuralFeature[] features = classInfo.getAllPersistentFeatures();
@@ -279,7 +292,7 @@ public class PrimitiveRevision
+ listElement.getClass().getName() + " instead");
}
- list.add(getObjectFromId((CDOID)listElement));
+ list.add(getDB4OID((CDOID)listElement));
}
values.add(i, list);
@@ -291,107 +304,74 @@ public class PrimitiveRevision
}
}
- return new PrimitiveRevision(nsURI, className, id, version, branchID, revised, resourceID, containerID,
+ return new DB4ORevision(packageURI, className, id, version, branchID, revised, resourceID, containerID,
containingFeatureID, values, timeStamp, isResource, isResourceNode, isResourceFolder, isRootResource);
}
- public static InternalCDORevision getRevision(IStore store, PrimitiveRevision primitiveRevision)
+ public static InternalCDORevision getCDORevision(IStore store, DB4ORevision primitiveRevision)
{
- String nsURI = primitiveRevision.getNsURI();
+ String nsURI = primitiveRevision.getPackageURI();
String className = primitiveRevision.getClassName();
EPackage ePackage = store.getRepository().getPackageRegistry().getEPackage(nsURI);
EClass eClass = (EClass)ePackage.getEClassifier(className);
InternalCDORevision revision = (InternalCDORevision)CDORevisionFactory.DEFAULT.createRevision(eClass);
- revision.setID(getIDFromObject(primitiveRevision.getId()));
- revision.setVersion(primitiveRevision.getVersion());
- int branchID = primitiveRevision.getBranchID();
- CDOBranch branch = store.getRepository().getBranchManager().getBranch(branchID);
+ CDOBranch branch = store.getRepository().getBranchManager().getBranch(primitiveRevision.getBranchID());
CDOBranchPoint point = branch.getPoint(primitiveRevision.getTimeStamp());
+
+ revision.setID(getCDOID(primitiveRevision.getID()));
+ revision.setVersion(primitiveRevision.getVersion());
revision.setBranchPoint(point);
revision.setRevised(primitiveRevision.getRevised());
- revision.setResourceID(getIDFromObject(primitiveRevision.getResourceID()));
- revision.setContainerID(getIDFromObject(primitiveRevision.getContainerID()));
+ revision.setResourceID(getCDOID(primitiveRevision.getResourceID()));
+ revision.setContainerID(getCDOID(primitiveRevision.getContainerID()));
revision.setContainingFeatureID(primitiveRevision.getContainingFeatureID());
EStructuralFeature[] features = revision.getClassInfo().getAllPersistentFeatures();
int i = 0;
- List<?> values = primitiveRevision.getValues();
- for (Object value : values)
+ for (Object value : primitiveRevision.getValues())
{
EStructuralFeature feature = features[i++];
- // transform List to CDOList
if (feature instanceof EReference && value instanceof List<?>)
{
List<?> sourceList = (List<?>)value;
- // CDOList list = new CDOListImpl(sourceList.size(), sourceList.size());
- CDOList list = CDOListFactory.DEFAULT.createList(sourceList.size(), sourceList.size(), sourceList.size());
+ CDOList list = CDOListFactory.DEFAULT.createList(sourceList.size(), sourceList.size(), CDORevision.UNCHUNKED);
for (int j = 0; j < sourceList.size(); j++)
{
- list.set(j, getIDFromObject(sourceList.get(j)));
+ list.set(j, getCDOID(sourceList.get(j)));
}
- revision.setValue(feature, list);
- }
- else
- {
- revision.setValue(feature, value);
+
+ value = list;
}
+
+ revision.setValue(feature, value);
}
return revision;
}
- public static Object getObjectFromId(CDOID cdoid)
+ public static Object getDB4OID(CDOID id)
{
- Object objectID = null;
- if (cdoid.isExternal())
- {
- objectID = new String(((CDOIDExternal)cdoid).getURI());
- }
- else
+ if (id.isExternal())
{
- objectID = CDOIDUtil.getLong(cdoid);
+ return new String(((CDOIDExternal)id).getURI());
}
- return objectID;
+
+ return CDOIDUtil.getLong(id);
}
- public static CDOID getIDFromObject(Object id)
+ public static CDOID getCDOID(Object id)
{
if (id == null)
{
return CDOID.NULL;
}
- else if (id instanceof String)
- {
- return CDOIDUtil.createExternal((String)id);
- }
- else
- {
- return CDOIDUtil.createLong((Long)id);
- }
- }
- public static boolean compareIDObject(Object id1, Object id2)
- {
- if (id1.getClass().equals(id2.getClass()))
+ if (id instanceof String)
{
- if (id1.equals(id2))
- {
- return true;
- }
+ return CDOIDUtil.createExternal((String)id);
}
- return false;
- }
-
- public void setRootResource(boolean isRootResource)
- {
- this.isRootResource = isRootResource;
- }
-
- public boolean isRootResource()
- {
- return isRootResource;
+ return CDOIDUtil.createLong((Long)id);
}
-
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStore.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java
index 8aa2ba84a7..003c7d37b0 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStore.java
@@ -8,9 +8,10 @@
* Contributors:
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.server.ISession;
+import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.IView;
@@ -35,18 +36,12 @@ import java.util.Set;
*/
public class DB4OStore extends LongIDStore implements IDB4OStore
{
- private transient ObjectServer server;
-
- @ExcludeFromDump
- private transient final StoreAccessorPool readerPool = new StoreAccessorPool(this, null);
-
- @ExcludeFromDump
- private transient final StoreAccessorPool writerPool = new StoreAccessorPool(this, null);
-
private transient String storeLocation;
private transient int port;
+ private transient ObjectServer server;
+
private transient Configuration serverConfiguration;
private ServerInfo serverInfo;
@@ -55,11 +50,14 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
private boolean requiredToSupportBranches;
+ @ExcludeFromDump
+ private transient final StoreAccessorPool readerPool = new StoreAccessorPool(this, null);
+
+ @ExcludeFromDump
+ private transient final StoreAccessorPool writerPool = new StoreAccessorPool(this, null);
+
public DB4OStore(String storeLocation, int port)
{
- // super(IDB4OStore.TYPE, Collections.singleton(ChangeFormat.REVISION), Collections
- // .singleton(RevisionTemporality.NONE), Collections.singleton(RevisionParallelism.NONE));
-
super(IDB4OStore.TYPE, set(ChangeFormat.REVISION), set(RevisionTemporality.NONE, RevisionTemporality.AUDITING),
set(RevisionParallelism.NONE, RevisionParallelism.BRANCHING));
@@ -73,43 +71,58 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
this.serverConfiguration = serverConfiguration;
}
- public long getCreationTime()
+ public String getStoreLocation()
{
- return getServerInfo().getCreationTime();
+ return storeLocation;
}
- public boolean isFirstTime()
+ public int getPort()
{
- return getServerInfo().isFirstTime();
+ return port;
}
- public ObjectContainer openClient()
+ public long getCreationTime()
{
- // Configuration configuration = clientConfiguration;
- // if (configuration == null)
- // {
- // configuration = createClientConfiguration();
- // }
+ return getServerInfo().getCreationTime();
+ }
- // server.openClient(configuration);
- return server.openClient();
+ public boolean isFirstTime()
+ {
+ return getServerInfo().isFirstTime();
}
public Map<String, String> getPropertyValues(Set<String> names)
{
- Map<String, String> properties = getServerInfo().getProperties();
- Map<String, String> propertiesSubSet = new HashMap<String, String>();
+ Map<String, String> result = new HashMap<String, String>();
for (String key : names)
{
- propertiesSubSet.put(key, properties.get(key));
+ String value = getServerInfo().getProperties().get(key);
+ if (value != null)
+ {
+ result.put(key, value);
+ }
}
- return propertiesSubSet;
+
+ return result;
}
public void setPropertyValues(Map<String, String> properties)
{
- getServerInfo().setProperties(properties);
- commitServerInfo(getServerInfo());
+ ServerInfo serverInfo = getServerInfo();
+ serverInfo.getProperties().putAll(properties);
+ commitServerInfo(null);
+ }
+
+ public void removePropertyValues(Set<String> names)
+ {
+ ServerInfo serverInfo = getServerInfo();
+ Map<String, String> properties = serverInfo.getProperties();
+ for (String key : names)
+ {
+ properties.remove(key);
+ }
+
+ commitServerInfo(null);
}
public boolean isRequiredToSupportAudits()
@@ -122,6 +135,11 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
return requiredToSupportBranches;
}
+ public ObjectContainer openClient()
+ {
+ return server.openClient();
+ }
+
@Override
protected void doBeforeActivate()
{
@@ -129,17 +147,6 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
requiredToSupportBranches = getRepository().isSupportingBranches();
}
- public void removePropertyValues(Set<String> names)
- {
- Map<String, String> properties = getServerInfo().getProperties();
- for (String key : names)
- {
- properties.remove(key);
- }
- getServerInfo().setProperties(properties);
- commitServerInfo(getServerInfo());
- }
-
@Override
protected void doActivate() throws Exception
{
@@ -158,49 +165,63 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
{
if (serverInfo == null)
{
- serverInfo = initServerInfo();
+ initServerInfo();
}
return serverInfo;
}
- private ServerInfo initServerInfo()
+ private void initServerInfo()
{
ObjectContainer container = openClient();
- ObjectSet<ServerInfo> infos = container.query(ServerInfo.class);
- if (infos.size() > 1)
+ try
{
- throw new IllegalStateException("ServeInfo is stored in container more than once");
+ ObjectSet<ServerInfo> infos = container.query(ServerInfo.class);
+ if (infos.size() > 1)
+ {
+ throw new IllegalStateException("ServeInfo is stored in container more than once");
+ }
+
+ if (infos.isEmpty())
+ {
+ serverInfo = new ServerInfo();
+ serverInfo.setFirstTime(true);
+ serverInfo.setCreationTime(System.currentTimeMillis());
+ commitServerInfo(container);
+ }
+ else
+ {
+ serverInfo = infos.get(0);
+ if (serverInfo.isFirstTime())
+ {
+ serverInfo.setFirstTime(false);
+ commitServerInfo(container);
+ }
+ }
+ }
+ finally
+ {
+ container.close();
}
+ }
- ServerInfo newServerInfo = null;
- if (infos.isEmpty())
+ private void commitServerInfo(ObjectContainer container)
+ {
+ ObjectContainer usedContainer = container != null ? container : openClient();
+
+ try
{
- newServerInfo = new ServerInfo();
- newServerInfo.setFirstTime(true);
- newServerInfo.setCreationTime(System.currentTimeMillis());
- commitServerInfo(newServerInfo);
+ usedContainer.store(serverInfo);
+ usedContainer.commit();
}
- else
+ finally
{
- newServerInfo = infos.get(0);
- if (newServerInfo.isFirstTime())
+ if (usedContainer != container)
{
- newServerInfo.setFirstTime(false);
- commitServerInfo(newServerInfo);
+ usedContainer.close();
}
}
- container.close();
- return newServerInfo;
- }
-
- private void commitServerInfo(ServerInfo serverInfo)
- {
- ObjectContainer container = openClient();
- container.store(serverInfo);
- container.commit();
- container.close();
}
@Override
@@ -213,8 +234,7 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
protected Configuration createServerConfiguration()
{
- Configuration conf = Db4o.newConfiguration();
- return conf;
+ return Db4o.newConfiguration();
}
@Override
@@ -240,4 +260,49 @@ public class DB4OStore extends LongIDStore implements IDB4OStore
{
return writerPool;
}
+
+ /**
+ * Carries {@link IStore}-related information.
+ *
+ * @author Victor Roldan Betancort
+ */
+ private static final class ServerInfo
+ {
+ private boolean isFirstTime;
+
+ private long creationTime;
+
+ private Map<String, String> properties = new HashMap<String, String>();
+
+ public boolean isFirstTime()
+ {
+ return isFirstTime;
+ }
+
+ public void setFirstTime(boolean isFirstTime)
+ {
+ this.isFirstTime = isFirstTime;
+ }
+
+ public void setCreationTime(long creationTime)
+ {
+ this.creationTime = creationTime;
+ }
+
+ public long getCreationTime()
+ {
+ return creationTime;
+ }
+
+ @SuppressWarnings("unused")
+ public void setProperties(Map<String, String> properties)
+ {
+ this.properties = properties;
+ }
+
+ public Map<String, String> getProperties()
+ {
+ return properties;
+ }
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java
index 784e7b2894..8904fed144 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreAccessor.java
@@ -8,7 +8,7 @@
* Contributors:
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
@@ -22,22 +22,25 @@ import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCacheAdder;
+import org.eclipse.emf.cdo.common.util.CDOCommonUtil;
import org.eclipse.emf.cdo.common.util.CDOQueryInfo;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
-import org.eclipse.emf.cdo.internal.server.db4o.bundle.OM;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStoreChunkReader;
import org.eclipse.emf.cdo.server.ITransaction;
+import org.eclipse.emf.cdo.server.internal.db4o.bundle.OM;
import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.emf.cdo.spi.server.InternalRepository;
import org.eclipse.emf.cdo.spi.server.LongIDStoreAccessor;
+import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.monitor.OMMonitor.Async;
@@ -87,11 +90,6 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
return objectContainer;
}
- public void setObjectContainer(ObjectContainer objectContainer)
- {
- this.objectContainer = objectContainer;
- }
-
public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
return packageUnit.getEPackages(true);
@@ -99,16 +97,18 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
public void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
- // TODO Where is this monitor worked on?
monitor.begin(packageUnits.length);
try
{
+ DB4OStore store = getStore();
+ ObjectContainer objectContainer = getObjectContainer();
+
for (InternalCDOPackageUnit packageUnit : packageUnits)
{
- PrimitivePackageUnit primitivePackageUnit = PrimitivePackageUnit.getPrimitivePackageUnit(getStore(),
- packageUnit);
- getObjectContainer().store(primitivePackageUnit);
+ DB4OPackageUnit primitivePackageUnit = DB4OPackageUnit.getPrimitivePackageUnit(store, packageUnit);
+ objectContainer.store(primitivePackageUnit);
+ monitor.worked(1);
}
}
catch (Exception ex)
@@ -123,23 +123,24 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
public Collection<InternalCDOPackageUnit> readPackageUnits()
{
- Collection<PrimitivePackageUnit> primitivePackageUnits = getObjectContainer().query(PrimitivePackageUnit.class);
List<InternalCDOPackageUnit> result = new ArrayList<InternalCDOPackageUnit>();
- for (PrimitivePackageUnit primitivePackageUnit : primitivePackageUnits)
+ InternalCDOPackageRegistry packageRegistry = getStore().getRepository().getPackageRegistry();
+ Collection<DB4OPackageUnit> primitivePackageUnits = getObjectContainer().query(DB4OPackageUnit.class);
+
+ for (DB4OPackageUnit primitivePackageUnit : primitivePackageUnits)
{
- InternalCDOPackageUnit packageUnit = PrimitivePackageUnit.getPackageUnit(getStore().getRepository()
- .getPackageRegistry(), primitivePackageUnit);
+ InternalCDOPackageUnit packageUnit = DB4OPackageUnit.getPackageUnit(packageRegistry, primitivePackageUnit);
result.add(packageUnit);
}
+
return result;
}
public InternalCDORevision readRevision(CDOID id, CDOBranchPoint branchPoint, int listChunk,
CDORevisionCacheAdder cache)
{
- InternalCDORevision revision = getRevisionFromContainer(branchPoint.getBranch().getID(), id);
- cache.addRevision(revision);
- return revision;
+ int branchID = branchPoint.getBranch().getID();
+ return getRevisionFromContainer(branchID, id);
}
public void queryResources(QueryResourcesContext context)
@@ -148,24 +149,25 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
final String name = context.getName();
final boolean exactMatch = context.exactMatch();
- ObjectSet<PrimitiveRevision> revisionObjectSet = getObjectContainer().query(new Predicate<PrimitiveRevision>()
+ ObjectSet<DB4ORevision> revisionObjectSet = getObjectContainer().query(new Predicate<DB4ORevision>()
{
private static final long serialVersionUID = 1L;
@Override
- public boolean match(PrimitiveRevision primitiveRevision)
+ public boolean match(DB4ORevision primitiveRevision)
{
if (!primitiveRevision.isResourceNode())
{
return false;
}
+
// is Root resource
if (primitiveRevision.isRootResource())
{
return false;
}
- if (PrimitiveRevision.compareIDObject(primitiveRevision.getContainerID(), folderID))
+ if (ObjectUtil.equals(primitiveRevision.getContainerID(), folderID))
{
String candidateName = (String)primitiveRevision.getValues().get(EresourcePackage.CDO_RESOURCE__NAME);
if (exactMatch)
@@ -187,12 +189,11 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
return false;
}
-
});
- for (PrimitiveRevision revision : revisionObjectSet)
+ for (DB4ORevision revision : revisionObjectSet)
{
- if (!context.addResource(PrimitiveRevision.getIDFromObject(revision.getId())))
+ if (!context.addResource(DB4ORevision.getCDOID(revision.getID())))
{
// No more results allowed
break;
@@ -203,7 +204,7 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
public IStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
{
- throw new UnsupportedOperationException("not yet implemented");
+ throw new UnsupportedOperationException();
}
public IQueryHandler getQueryHandler(CDOQueryInfo info)
@@ -214,20 +215,26 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
@Override
protected void doActivate() throws Exception
{
- setObjectContainer(getStore().openClient());
+ objectContainer = getStore().openClient();
}
@Override
protected void doDeactivate() throws Exception
{
- getObjectContainer().close();
- setObjectContainer(null);
+ if (objectContainer != null)
+ {
+ objectContainer.close();
+ objectContainer = null;
+ }
}
@Override
protected void doPassivate() throws Exception
{
- getObjectContainer().rollback();
+ if (objectContainer != null)
+ {
+ objectContainer.rollback();
+ }
}
@Override
@@ -241,42 +248,45 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
getObjectContainer().rollback();
}
- private InternalCDORevision getRevisionFromContainer(int branchId, CDOID id)
+ /**
+ * TODO Branching can only be supported with auditing. Where is the timeStamp parameter?
+ */
+ private InternalCDORevision getRevisionFromContainer(int branchID, CDOID id)
{
- PrimitiveRevision lastRevision = QueryUtil.getLastPrimitiveRevision(getObjectContainer(), branchId, id);
-
- // Revision does not exist. Return null to signal inexistent Revision
+ DB4ORevision lastRevision = DB4OQueryUtil.getRevision(getObjectContainer(), id, branchID);
if (lastRevision == null)
{
+ // Revision does not exist. Return null to signal inexistent Revision
return null;
}
- return PrimitiveRevision.getRevision(getStore(), lastRevision);
+
+ return DB4ORevision.getCDORevision(getStore(), lastRevision);
}
public InternalCDORevision readRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int listChunk,
CDORevisionCacheAdder cache)
{
- PrimitiveRevision revisionByVersion = QueryUtil.getPrimitiveRevisionByVersion(getObjectContainer(), id,
- branchVersion.getBranch().getID(), branchVersion.getVersion());
+ int branchID = branchVersion.getBranch().getID();
+ int version = branchVersion.getVersion();
+ DB4ORevision revisionByVersion = DB4OQueryUtil.getRevisionByVersion(getObjectContainer(), id, branchID, version);
// Revision does not exist. Return null to signal inexistent Revision
if (revisionByVersion == null)
{
return null;
}
- InternalCDORevision revision = PrimitiveRevision.getRevision(getStore(), revisionByVersion);
- cache.addRevision(revision);
- return revision;
+
+ return DB4ORevision.getCDORevision(getStore(), revisionByVersion);
}
public void handleRevisions(EClass eClass, CDOBranch branch, long timeStamp, CDORevisionHandler handler)
{
- throw new UnsupportedOperationException("not implemented");
+ throw new UnsupportedOperationException();
}
public Set<CDOID> readChangeSet(CDOChangeSetSegment... segments)
{
- return null;
+ throw new UnsupportedOperationException();
}
public void queryXRefs(final QueryXRefsContext context)
@@ -292,14 +302,14 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
final String eClassName = eClass.getName();
final String nsURI = eClass.getEPackage().getNsURI();
final List<EReference> eReferences = context.getSourceCandidates().get(eClass);
- getObjectContainer().query(new Predicate<PrimitiveRevision>()
+ getObjectContainer().query(new Predicate<DB4ORevision>()
{
private static final long serialVersionUID = 1L;
private boolean moreResults = true;
@Override
- public boolean match(PrimitiveRevision primitiveRevision)
+ public boolean match(DB4ORevision primitiveRevision)
{
if (!moreResults)
{
@@ -310,7 +320,7 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
return false;
}
- if (!primitiveRevision.getNsURI().equals(nsURI))
+ if (!primitiveRevision.getPackageURI().equals(nsURI))
{
return false;
}
@@ -328,16 +338,14 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
List<?> list = (List<?>)obj;
if (list.contains(targetID))
{
- moreResults = context.addXRef(target, PrimitiveRevision.getIDFromObject(primitiveRevision.getId()),
- eReference, 0);
+ moreResults = context.addXRef(target, DB4ORevision.getCDOID(primitiveRevision.getID()), eReference, 0);
}
}
else if (obj instanceof CDOID)
{
if (CDOIDUtil.getLong((CDOID)obj) == targetID)
{
- moreResults = context.addXRef(target, PrimitiveRevision.getIDFromObject(primitiveRevision.getId()),
- eReference, 0);
+ moreResults = context.addXRef(target, DB4ORevision.getCDOID(primitiveRevision.getID()), eReference, 0);
}
}
}
@@ -354,50 +362,50 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
public void rawExport(CDODataOutput out, int fromBranchID, int toBranchID, long fromCommitTime, long toCommitTime)
throws IOException
{
- throw new UnsupportedOperationException("not implemented");
+ throw new UnsupportedOperationException();
}
public void rawImport(CDODataInput in, int fromBranchID, int toBranchID, long fromCommitTime, long toCommitTime)
throws IOException
{
-
+ throw new UnsupportedOperationException();
}
public void rawImport(CDODataInput in, int fromBranchID, int toBranchID, long fromCommitTime, long toCommitTime,
OMMonitor monitor) throws IOException
{
- throw new UnsupportedOperationException("not implemented");
+ throw new UnsupportedOperationException();
}
public int createBranch(int branchID, BranchInfo branchInfo)
{
- return 0;
+ throw new UnsupportedOperationException();
}
public BranchInfo loadBranch(int branchID)
{
- return null;
+ throw new UnsupportedOperationException();
}
public SubBranchInfo[] loadSubBranches(int branchID)
{
- return null;
+ throw new UnsupportedOperationException();
}
public int loadBranches(int startID, int endID, CDOBranchHandler branchHandler)
{
- return 0;
+ throw new UnsupportedOperationException();
}
public void loadCommitInfos(final CDOBranch branch, final long startTime, final long endTime,
CDOCommitInfoHandler handler)
{
- ObjectSet<CommitInfo> resultSet = getObjectContainer().query(new Predicate<CommitInfo>()
+ ObjectSet<DB4OCommitInfo> resultSet = getObjectContainer().query(new Predicate<DB4OCommitInfo>()
{
private static final long serialVersionUID = 1L;
@Override
- public boolean match(CommitInfo info)
+ public boolean match(DB4OCommitInfo info)
{
if (startTime != CDOBranchPoint.UNSPECIFIED_DATE && info.getTimeStamp() < startTime)
{
@@ -416,26 +424,26 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
return true;
}
-
});
+
InternalRepository repository = getStore().getRepository();
InternalCDOCommitInfoManager commitInfoManager = repository.getCommitInfoManager();
InternalCDOBranchManager branchManager = repository.getBranchManager();
- // Although not specified in the API, the test-case suite
+ // Although not specified in the API, the test suite
// suggests CommitInfos should be returned ordered by timeStamp
+ // TODO Specify this in the API!
- List<CommitInfo> infos = new ArrayList<CommitInfo>();
- infos.addAll(resultSet);
- Collections.sort(infos, new Comparator<CommitInfo>()
+ List<DB4OCommitInfo> infos = new ArrayList<DB4OCommitInfo>(resultSet);
+ Collections.sort(infos, new Comparator<DB4OCommitInfo>()
{
-
- public int compare(CommitInfo arg0, CommitInfo arg1)
+ public int compare(DB4OCommitInfo arg0, DB4OCommitInfo arg1)
{
- return arg0.getTimeStamp() <= arg1.getTimeStamp() ? -1 : 1;
+ return CDOCommonUtil.compareTimeStamps(arg0.getTimeStamp(), arg1.getTimeStamp());
}
});
- for (CommitInfo info : infos)
+
+ for (DB4OCommitInfo info : infos)
{
info.handle(branchManager, commitInfoManager, handler);
}
@@ -465,16 +473,17 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
@Override
protected void writeCommitInfo(CDOBranch branch, long timeStamp, String userID, String comment, OMMonitor monitor)
{
- CommitInfo commitInfo = new CommitInfo(branch.getID(), timeStamp, userID, comment);
+ DB4OCommitInfo commitInfo = new DB4OCommitInfo(branch.getID(), timeStamp, userID, comment);
writeObject(commitInfo, monitor);
}
@Override
protected void writeRevisions(InternalCDORevision[] revisions, CDOBranch branch, OMMonitor monitor)
{
+ monitor.begin(revisions.length);
+
try
{
- monitor.begin(revisions.length);
for (InternalCDORevision revision : revisions)
{
writeRevision(revision, monitor.fork());
@@ -492,19 +501,19 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
final long revisionID = CDOIDUtil.getLong(revision.getID());
final String name = (String)revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0);
- ObjectSet<PrimitiveRevision> resultSet = getObjectContainer().query(new Predicate<PrimitiveRevision>()
+ ObjectSet<DB4ORevision> resultSet = getObjectContainer().query(new Predicate<DB4ORevision>()
{
private static final long serialVersionUID = 1L;
@Override
- public boolean match(PrimitiveRevision revision)
+ public boolean match(DB4ORevision revision)
{
- if (revision.isResourceNode() && PrimitiveRevision.compareIDObject(revision.getContainerID(), folderID))
+ if (revision.isResourceNode() && ObjectUtil.equals(revision.getContainerID(), folderID))
{
String candidateName = (String)revision.getValues().get(EresourcePackage.CDO_RESOURCE__NAME);
if (StringUtil.compare(name, candidateName) == 0)
{
- if (!PrimitiveRevision.compareIDObject(revision.getId(), revisionID))
+ if (!ObjectUtil.equals(revision.getID(), revisionID))
{
return true;
}
@@ -513,7 +522,6 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
return false;
}
-
});
if (!resultSet.isEmpty())
@@ -526,6 +534,7 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
{
Async async = null;
monitor.begin(10);
+
try
{
try
@@ -545,14 +554,16 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
}
// If revision is in the store, remove old, store new
- PrimitiveRevision revisionAlreadyInStore = QueryUtil.getLastPrimitiveRevision(getObjectContainer(), revision
- .getBranch().getID(), revision.getID());
+ ObjectContainer objectContainer = getObjectContainer();
+ int branchID = revision.getBranch().getID();
+ CDOID id = revision.getID();
+ DB4ORevision revisionAlreadyInStore = DB4OQueryUtil.getRevision(objectContainer, id, branchID);
if (revisionAlreadyInStore != null)
{
- QueryUtil.removeRevisionFromContainer(getObjectContainer(), revision.getBranch().getID(), revision.getID());
+ DB4OQueryUtil.removeRevisionFromContainer(objectContainer, branchID, id);
}
- PrimitiveRevision primitiveRevision = PrimitiveRevision.getPrimitiveRevision(revision);
+ DB4ORevision primitiveRevision = DB4ORevision.getDB4ORevision(revision);
writeObject(primitiveRevision, monitor);
}
finally
@@ -585,16 +596,26 @@ public class DB4OStoreAccessor extends LongIDStoreAccessor
protected void writeRevisionDeltas(InternalCDORevisionDelta[] revisionDeltas, CDOBranch branch, long created,
OMMonitor monitor)
{
- throw new UnsupportedOperationException("not implemented");
+ throw new UnsupportedOperationException();
}
@Override
protected void detachObjects(CDOID[] detachedObjects, CDOBranch branch, long timeStamp, OMMonitor monitor)
{
- // TODO Work on monitor
- for (CDOID id : detachedObjects)
+ monitor.begin(detachedObjects.length);
+
+ try
{
- QueryUtil.removeRevisionFromContainer(getObjectContainer(), branch.getID(), id);
+ int branchID = branch.getID();
+ for (CDOID id : detachedObjects)
+ {
+ DB4OQueryUtil.removeRevisionFromContainer(getObjectContainer(), branchID, id);
+ monitor.worked();
+ }
+ }
+ finally
+ {
+ monitor.done();
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreFactory.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreFactory.java
index 9ef2ef3ed0..932ee6e233 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/DB4OStoreFactory.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OStoreFactory.java
@@ -8,11 +8,12 @@
* Contributors:
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o;
+package org.eclipse.emf.cdo.server.internal.db4o;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreFactory;
import org.eclipse.emf.cdo.server.db4o.IDB4OStore;
+import org.eclipse.emf.cdo.server.internal.db4o.bundle.OM;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -39,9 +40,9 @@ public class DB4OStoreFactory implements IStoreFactory
int port = getPort(storeConfig);
return new DB4OStore(dataFilePath, port);
}
- catch (Exception e)
+ catch (Exception ex)
{
- e.printStackTrace();
+ OM.LOG.error(ex);
}
return null;
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/bundle/OM.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/bundle/OM.java
index 7f7524b82a..a9eb18ecb9 100644
--- a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/internal/server/db4o/bundle/OM.java
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/bundle/OM.java
@@ -9,7 +9,7 @@
* Victor Roldan Betancort - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server.db4o.bundle;
+package org.eclipse.emf.cdo.server.internal.db4o.bundle;
import org.eclipse.net4j.util.om.OMBundle;
import org.eclipse.net4j.util.om.OMPlatform;
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
index e89ade6de7..8ac62ad155 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
@@ -418,18 +418,26 @@ public class Repository extends Container<Object> implements InternalRepository
InternalCDORevision revision = accessor.readRevision(id, branchPoint, referenceChunk, revisionManager);
if (revision == null)
{
- // Case "Pointer"?
- InternalCDORevision target = loadRevisionTarget(id, branchPoint, referenceChunk, accessor);
- if (target != null)
+ if (isSupportingAudits())
{
- CDOBranch branch = branchPoint.getBranch();
- long revised = loadRevisionRevised(id, branch);
- PointerCDORevision pointer = new PointerCDORevision(target.getEClass(), id, branch, revised, target);
-
- info.setSynthetic(pointer);
+ // Case "Pointer"?
+ InternalCDORevision target = loadRevisionTarget(id, branchPoint, referenceChunk, accessor);
+ if (target != null)
+ {
+ CDOBranch branch = branchPoint.getBranch();
+ long revised = loadRevisionRevised(id, branch);
+ PointerCDORevision pointer = new PointerCDORevision(target.getEClass(), id, branch, revised, target);
+ info.setSynthetic(pointer);
+ }
+
+ info.setResult(target);
+ }
+ else
+ {
+ DetachedCDORevision detachedRevision = new DetachedCDORevision(EcorePackage.Literals.ECLASS, id,
+ branchPoint.getBranch(), 0, CDORevision.UNSPECIFIED_DATE);
+ info.setSynthetic(detachedRevision);
}
-
- info.setResult(target);
}
else if (revision instanceof DetachedCDORevision)
{
diff --git a/plugins/org.eclipse.emf.cdo.tests.db4o/CDO AllTests (DB4O).launch b/plugins/org.eclipse.emf.cdo.tests.db4o/CDO AllTests (DB4O).launch
index bfefe8e7cd..2feae1d46f 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db4o/CDO AllTests (DB4O).launch
+++ b/plugins/org.eclipse.emf.cdo.tests.db4o/CDO AllTests (DB4O).launch
@@ -1,17 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
-<!--
- Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) 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:
- Victor Roldan Betancort - initial API and implementation
- Eike Stepper - maintenance
--->
-
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.eclipse.emf.cdo.test.db4o/src/com/eclipse/emf/cdo/test/db4o/DB4OTestConfing.java"/>
@@ -23,6 +10,6 @@
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.eclipse.emf.cdo.test.db4o.DB4OTestConfing"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.eclipse.emf.cdo.test.db4o.AllTestsDB4O"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.eclipse.emf.cdo.test.db4o"/>
</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/DB4OTestConfing.java b/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java
index 7ac732faec..36ca13f1cf 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/DB4OTestConfing.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db4o/src/com/eclipse/emf/cdo/test/db4o/AllTestsDB4O.java
@@ -10,9 +10,9 @@
*/
package com.eclipse.emf.cdo.test.db4o;
-import org.eclipse.emf.cdo.internal.server.db4o.DB4OStore;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.server.internal.db4o.DB4OStore;
import org.eclipse.emf.cdo.tests.AllConfigs;
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
@@ -31,11 +31,11 @@ import junit.framework.TestSuite;
/**
* @author Victor Roldan Betancort
*/
-public class DB4OTestConfing extends AllConfigs
+public class AllTestsDB4O extends AllConfigs
{
public static Test suite()
{
- return new DB4OTestConfing().getTestSuite("CDO Tests (DB4O Repository)");
+ return new AllTestsDB4O().getTestSuite("CDO Tests (DB4O)");
}
@Override
diff --git a/releng/org.eclipse.emf.cdo.releng/buckminster.cspec b/releng/org.eclipse.emf.cdo.releng/buckminster.cspec
index 1da8376208..d5e7e58155 100644
--- a/releng/org.eclipse.emf.cdo.releng/buckminster.cspec
+++ b/releng/org.eclipse.emf.cdo.releng/buckminster.cspec
@@ -25,7 +25,7 @@
<cs:dependency name="org.eclipse.gmf.source" componentType="eclipse.feature"/>
<cs:dependency name="org.eclipse.emf.mwe.core" componentType="eclipse.feature"/>
<cs:dependency name="org.eclipse.emf.mwe2.runtime.sdk" componentType="eclipse.feature"/>
-
+
<cs:dependency name="org.eclipse.swtbot" componentType="eclipse.feature"/>
<cs:dependency name="org.eclipse.swtbot.eclipse" componentType="eclipse.feature"/>
<cs:dependency name="org.eclipse.swtbot.eclipse.gef" componentType="eclipse.feature"/>
@@ -49,6 +49,7 @@
<cs:dependency name="org.hsqldb" componentType="eclipse.feature"/>
<cs:dependency name="org.postgresql.jdbc3" componentType="eclipse.feature"/>
<cs:dependency name="org.hibernate" componentType="eclipse.feature"/>
+ <cs:dependency name="com.db4o" componentType="eclipse.feature"/>
</cs:dependencies>
<cs:actions>
<cs:public name="clear.site" actor="ant" always="true">

Back to the top