diff options
author | Eike Stepper | 2008-09-14 07:21:05 +0000 |
---|---|---|
committer | Eike Stepper | 2008-09-14 07:21:05 +0000 |
commit | 8013685cbaa5434602b88e4db23f2c502758f89b (patch) | |
tree | 6e41ad7729c8484b8fcba88b18c89fb5202b5c44 | |
parent | 865087e948189c3bf1d91595e96f65340a8ad010 (diff) | |
download | cdo-8013685cbaa5434602b88e4db23f2c502758f89b.tar.gz cdo-8013685cbaa5434602b88e4db23f2c502758f89b.tar.xz cdo-8013685cbaa5434602b88e4db23f2c502758f89b.zip |
[246442] ArrayIndexOutOfBoundsException when importing resoruces
https://bugs.eclipse.org/bugs/show_bug.cgi?id=246442
34 files changed, 288 insertions, 148 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDAndVersion.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDAndVersion.java index cd37b73bd4..1e868266af 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDAndVersion.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDAndVersion.java @@ -10,7 +10,6 @@ **************************************************************************/ package org.eclipse.emf.cdo.common.id; - /** * @author Eike Stepper * @noimplement This interface is not intended to be implemented by clients. diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java index f963b1ac0f..b11036b9ec 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java @@ -87,7 +87,7 @@ public final class CDOIDUtil { return new CDOIDTempObjectImpl(value); } - + /** * @since 2.0 */ @@ -103,7 +103,7 @@ public final class CDOIDUtil { return new CDOIDExternalTempImpl(uri); } - + public static CDOID createLong(long value) { if (value == 0L) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDODataInputImpl.java index 0be5e2ccc7..b9cb86ab01 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDODataInputImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDODataInputImpl.java @@ -292,7 +292,7 @@ public abstract class CDODataInputImpl implements CDODataInput case EXTERNAL_TEMP_OBJECT: return new CDOIDExternalTempImpl(readString()); - + case OBJECT: { CDOIDObject id = getIDFactory().createCDOIDObject(this); diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalImpl.java index 5b0387da0f..7d6ac096a3 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalImpl.java @@ -32,12 +32,12 @@ public class CDOIDExternalImpl extends AbstractCDOID implements CDOIDExternal { this.uri = uri; } - + public String getURI() { return uri; } - + public Type getType() { return Type.EXTERNAL_OBJECT; @@ -79,7 +79,7 @@ public class CDOIDExternalImpl extends AbstractCDOID implements CDOIDExternal { return true; } - // Could CDOIDExternalTempImpl and CDOIDExternalImpl have the same uri. We don't want to mixed them. + // Could CDOIDExternalTempImpl and CDOIDExternalImpl have the same uri. We don't want to mixed them. if (obj != null && obj.getClass() == getClass()) { CDOIDExternal that = (CDOIDExternal)obj; @@ -95,5 +95,4 @@ public class CDOIDExternalImpl extends AbstractCDOID implements CDOIDExternal return getClass().hashCode() ^ uri.hashCode(); } - } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalTempImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalTempImpl.java index b1e3601b29..9c0e018abd 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalTempImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalTempImpl.java @@ -24,6 +24,7 @@ public class CDOIDExternalTempImpl extends CDOIDExternalImpl implements CDOIDTem super(uri); } + @Override public Type getType() { return Type.EXTERNAL_TEMP_OBJECT; diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java index 760b293ee7..e83db12d9b 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java @@ -7,6 +7,7 @@ * * Contributors: * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/246442 **************************************************************************/ package org.eclipse.emf.cdo.internal.common.model; @@ -278,8 +279,14 @@ public class CDOPackageImpl extends CDOModelElementImpl implements InternalCDOPa { if (ecore == null && packageManager instanceof CDOPackageManagerImpl && parentURI == null) { - // TODO Can ecore be null? - ecore = ((CDOPackageManagerImpl)packageManager).provideEcore(this); + if (isPersistent() && isDynamic()) + { + resolve(); + } + else + { + ecore = ((CDOPackageManagerImpl)packageManager).provideEcore(this); + } } return ecore; diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java index dcb170782f..3150e34230 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java @@ -438,7 +438,7 @@ public class CDORevisionImpl implements InternalCDORevision } resourceID = (CDOID)remapID(resourceID, idMappings); - containerID = (CDOID)remapID(containerID, idMappings); + containerID = remapID(containerID, idMappings); CDOFeature[] features = cdoClass.getAllFeatures(); for (int i = 0; i < features.length; i++) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java index d5d21ece13..460d6deeda 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java @@ -55,8 +55,8 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements { super(CONTAINER_FEATURE); newContainerFeatureID = in.readInt(); - newContainerID = in.readCDOID(); - newResourceID = in.readCDOID(); + newContainerID = in.readCDOID(); + newResourceID = in.readCDOID(); } public Type getType() @@ -90,7 +90,7 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements public void adjustReferences(Map<CDOIDTemp, CDOID> idMappings) { newResourceID = (CDOID)CDORevisionUtil.remapID(newResourceID, idMappings); - newContainerID = (CDOID)CDORevisionUtil.remapID(newContainerID, idMappings); + newContainerID = CDORevisionUtil.remapID(newContainerID, idMappings); } @Override diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java index e6b97bea0c..3fb0561c15 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java @@ -73,7 +73,7 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta CDORevisionData dirtyData = dirtyRevision.getData(); if (!compare(originData.getContainerID(), dirtyData.getContainerID()) || !compare(originData.getContainingFeatureID(), dirtyData.getContainingFeatureID()) - || !compare(originData.getResourceID(), dirtyData.getResourceID())) + || !compare(originData.getResourceID(), dirtyData.getResourceID())) { addFeatureDelta(new CDOContainerFeatureDeltaImpl(dirtyData.getResourceID(), dirtyData.getContainerID(), dirtyData .getContainingFeatureID())); diff --git a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch index 64a156c758..d4aa4dde07 100644 --- a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch +++ b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch @@ -26,7 +26,7 @@ <stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="product" value="org.eclipse.sdk.ide"/> <stringAttribute key="selectedPlugin" value="org.eclipse.net4j.http.server"/> -<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.http.jetty,org.eclipse.equinox.registry,org.eclipse.core.contenttype,org.eclipse.equinox.http.servlet,org.eclipse.equinox.common,org.eclipse.core.runtime,com.springsource.com.mysql.jdbc,org.apache.commons.logging,org.eclipse.osgi,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.jobs,com.springsource.org.hsqldb,org.eclipse.equinox.app,org.apache.derby,javax.servlet,org.mortbay.jetty,com.springsource.org.apache.commons.logging,org.eclipse.core.runtime.compatibility.auth,org.eclipse.equinox.preferences,com.springsource.javax.xml.stream,org.eclipse.equinox.http.registry,org.eclipse.osgi.services"/> +<stringAttribute key="selected_target_plugins" value="com.springsource.com.mysql.jdbc,javax.servlet,org.mortbay.jetty,org.eclipse.equinox.http.jetty,org.eclipse.equinox.preferences,com.springsource.org.apache.commons.logging,org.eclipse.equinox.common,org.eclipse.equinox.app,org.eclipse.core.contenttype,org.eclipse.core.runtime.compatibility.registry,com.springsource.org.hsqldb,org.eclipse.core.runtime,org.apache.derby,org.eclipse.osgi.services,com.springsource.javax.xml.stream,org.eclipse.core.runtime.compatibility.auth,org.eclipse.equinox.registry,org.apache.commons.logging,org.eclipse.equinox.http.servlet,org.eclipse.core.jobs,org.eclipse.osgi,org.eclipse.equinox.http.registry"/> <stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.server.db,org.eclipse.emf.cdo.common,org.eclipse.net4j.db,org.eclipse.net4j.tcp,org.eclipse.net4j.db.hsqldb,org.eclipse.net4j.util,org.eclipse.emf.cdo.server,org.eclipse.net4j.db.mysql,org.eclipse.net4j.db.derby,org.eclipse.net4j"/> <booleanAttribute key="show_selected_only" value="false"/> <stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/> @@ -43,23 +43,23 @@ <mapEntry key="org.eclipse.ui/trace/contexts" value="false"/> <mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/> <mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/> -<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug" value="true"/> +<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/> <mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/> <mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.repository" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/> <mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/> -<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/> <mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/> +<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/> <mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/> <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/> <mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/> <mapEntry key="org.eclipse.team.core/refreshjob" value="false"/> -<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/> <mapEntry key="org.eclipse.ui/debug" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/> <mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/> <mapEntry key="org.eclipse.pde.core/classpath" value="false"/> <mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/> @@ -69,8 +69,8 @@ <mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/> <mapEntry key="org.eclipse.osgi/trace/activation" value="false"/> <mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/> -<mapEntry key="org.eclipse.team.core/threading" value="false"/> <mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/> +<mapEntry key="org.eclipse.team.core/threading" value="false"/> <mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/> <mapEntry key="org.eclipse.ui/trace/graphics" value="false"/> @@ -83,14 +83,14 @@ <mapEntry key="org.eclipse.debug.ui/debug" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/> <mapEntry key="org.eclipse.help.base/debug/search" value="false"/> -<mapEntry key="org.eclipse.pde.build/debug" value="false"/> <mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/> +<mapEntry key="org.eclipse.pde.build/debug" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/> <mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/> <mapEntry key="org.eclipse.update.core/debug/type" value="false"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/> -<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/> <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/> +<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/> <mapEntry key="org.eclipse.core.resources/refresh" value="false"/> <mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/> @@ -102,8 +102,8 @@ <mapEntry key="org.eclipse.ui/trace/handlers" value="false"/> <mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/> <mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/> -<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/> <mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/> +<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/> <mapEntry key="org.eclipse.osgi/profile/startup" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs" value="false"/> <mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/> @@ -119,11 +119,11 @@ <mapEntry key="org.eclipse.net4j/debug.buffer" value="true"/> <mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/> -<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/> <mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/> <mapEntry key="org.eclipse.emf.cdo.examples/debug" value="true"/> -<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/> <mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/> +<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/> <mapEntry key="org.eclipse.ui.ide/debug" value="false"/> <mapEntry key="org.eclipse.osgi/profile/debug" value="false"/> <mapEntry key="org.eclipse.pde.core/debug" value="true"/> @@ -132,17 +132,17 @@ <mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/> <mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/> <mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/> -<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/> -<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/> <mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/> +<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/> +<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.revision" value="true"/> <mapEntry key="org.eclipse.core.resources/strings" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/> <mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/> <mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/> -<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/> -<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/> <mapEntry key="org.eclipse.core.resources/preferences" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/> +<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/> <mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/> @@ -154,45 +154,45 @@ <mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/> <mapEntry key="org.eclipse.update.core/debug" value="true"/> <mapEntry key="org.eclipse.osgi/debug/security" value="false"/> -<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/> <mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/> +<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/> <mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/> -<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/> -<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/> <mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/> +<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/> <mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/> -<mapEntry key="org.eclipse.emf.cdo.server/debug.store" value="true"/> <mapEntry key="org.eclipse.core.resources/history" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server/debug.store" value="true"/> <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/> -<mapEntry key="org.eclipse.pde.core/validation" value="false"/> <mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/> +<mapEntry key="org.eclipse.pde.core/validation" value="false"/> <mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/> <mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/> <mapEntry key="org.eclipse.core.runtime/debug" value="false"/> <mapEntry key="org.eclipse.equinox.preferences/set" value="false"/> <mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/> <mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/> -<mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/> <mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/> <mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/> <mapEntry key="org.eclipse.emf.cdo.common/perf.revision" value="true"/> <mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/> <mapEntry key="org.eclipse.emf.cdo.common/debug.model" value="true"/> <mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/> -<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.reading" value="true"/> <mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.reading" value="true"/> <mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/> <mapEntry key="org.eclipse.net4j/debug.connector" value="true"/> <mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/> <mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/> <mapEntry key="org.eclipse.core.resources/restore" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/> -<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/> <mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/> +<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/> <mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/> -<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/> <mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/> +<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/> <mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/> @@ -219,8 +219,8 @@ <mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/> <mapEntry key="org.eclipse.help/debug/context" value="false"/> <mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/> -<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/> <mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/> <mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/> <mapEntry key="org.eclipse.net4j.examples/debug" value="true"/> <mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/> @@ -233,12 +233,12 @@ <mapEntry key="org.eclipse.emf.cdo.common/debug.revision" value="true"/> <mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/> <mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/> -<mapEntry key="org.eclipse.core.resources/save" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/> +<mapEntry key="org.eclipse.core.resources/save" value="false"/> <mapEntry key="org.eclipse.core.resources/contenttype" value="false"/> <mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/> -<mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/> <mapEntry key="org.eclipse.osgi/debug/events" value="false"/> <mapEntry key="org.eclipse.ui/trace/commands" value="false"/> <mapEntry key="org.eclipse.equinox.preferences/get" value="false"/> @@ -255,25 +255,25 @@ <mapEntry key="org.eclipse.net4j.jms/debug" value="true"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.resource" value="true"/> -<mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/> <mapEntry key="org.eclipse.net4j.debug/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/> <mapEntry key="org.eclipse.pde.core/cache" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/> <mapEntry key="org.eclipse.emf.cdo.server.db/debug" value="true"/> -<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/> <mapEntry key="org.eclipse.debug.core/debug/events" value="false"/> +<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/> <mapEntry key="org.eclipse.emf.cdo.common/perf" value="true"/> <mapEntry key="org.eclipse.jdt.ui/debug" value="true"/> -<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/> <mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/> +<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/> <mapEntry key="org.eclipse.ui/perf/part.input" value="200"/> <mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/> <mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/> <mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/> <mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/> -<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/> <mapEntry key="org.eclipse.net4j.fileshare.ui/debug" value="true"/> +<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/> <mapEntry key="org.eclipse.core.resources/save/tree" value="false"/> <mapEntry key="org.eclipse.ui/debug/contributions" value="false"/> <mapEntry key="org.eclipse.update.core/debug/warning" value="false"/> @@ -281,20 +281,20 @@ <mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/> <mapEntry key="org.eclipse.emf.cdo.common/perf.revision.writing" value="true"/> <mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/> -<mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/> <mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/> +<mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/> -<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/> <mapEntry key="org.eclipse.help/debug/search" value="false"/> +<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/> <mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/> -<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/> <mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/> +<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/> <mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/> <mapEntry key="org.eclipse.team.core/streams" value="false"/> <mapEntry key="org.eclipse.emf.cdo.common/debug" value="true"/> <mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/> -<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/> <mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/> +<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/> <mapEntry key="org.eclipse.ui/experimental/menus" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/> <mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/> @@ -311,15 +311,15 @@ <mapEntry key="org.eclipse.ui.workbench/debug" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/> <mapEntry key="org.eclipse.osgi/debug/filter" value="false"/> -<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/> <mapEntry key="org.eclipse.debug.core/debug" value="false"/> +<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/> <mapEntry key="org.eclipse.core.resources/debug" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/> -<mapEntry key="org.eclipse.emf.cdo.server/debug.protocol" value="true"/> <mapEntry key="org.eclipse.ui.browser/debug" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.server/debug.protocol" value="true"/> <mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/> -<mapEntry key="org.eclipse.update.core/debug/web" value="false"/> <mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.update.core/debug/web" value="false"/> <mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/> <mapEntry key="org.eclipse.help/debug" value="true"/> <mapEntry key="org.eclipse.core.runtime/perf" value="false"/> @@ -331,10 +331,10 @@ <mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/> <mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/> <mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/> -<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/> <mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/> -<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/> +<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/> <mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/> +<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/> <mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/> <mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/> <mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/> @@ -351,8 +351,8 @@ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/> <mapEntry key="org.eclipse.update.configurator/debug" value="false"/> -<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/> <mapEntry key="org.eclipse.help.ui/debug" value="true"/> +<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/> <mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/> </mapAttribute> diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java index f1d5aa14f6..094aa0ea9c 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java @@ -237,11 +237,11 @@ public class MEMStoreAccessor extends StoreAccessor implements IStoreReader, ISt } }); } - } - + } + for (CDORevision revision : getStore().getCurrentRevisions()) { - + if (sleep != null) { try @@ -253,9 +253,9 @@ public class MEMStoreAccessor extends StoreAccessor implements IStoreReader, ISt throw WrappedException.wrap(ex); } } - + boolean valid = true; - + for (Object filter : filters) { if (!filter.equals(revision)) @@ -273,7 +273,7 @@ public class MEMStoreAccessor extends StoreAccessor implements IStoreReader, ISt } } } - + else { throw new RuntimeException("Unsupported language " + info.getQueryLanguage()); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java index ca6df2ddbf..0cc2b6526e 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java @@ -45,10 +45,10 @@ public class NotificationManager extends Lifecycle implements INotificationManag { CDORevisionDelta[] arrayOfDeltas = commitContext.getDirtyObjectDeltas(); CDOID[] arrayOfDetachedObjects = commitContext.getDetachedObjects(); - + int dirtyIDSize = arrayOfDeltas == null ? 0 : arrayOfDeltas.length; int detachedObjectsSize = arrayOfDetachedObjects == null ? 0 : arrayOfDetachedObjects.length; - + if (dirtyIDSize > 0 || detachedObjectsSize > 0) { List<CDOIDAndVersion> dirtyIDs = new ArrayList<CDOIDAndVersion>(dirtyIDSize); 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 3136eb8f54..cafe56abdc 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 @@ -228,7 +228,7 @@ public class Repository extends Container<IRepositoryElement> implements IReposi { handler = new ResourcesQueryHandler(); } - + if (handler == null) { if (queryHandlerProvider != null) @@ -248,12 +248,12 @@ public class Repository extends Container<IRepositoryElement> implements IReposi } } } - + if (handler == null) { handler = StoreThreadLocal.getStoreReader(); } - + return handler; } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java index dc86e2c3aa..1d2d22812b 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java @@ -184,7 +184,8 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider /** * @since 2.0 */ - public void handleCommitNotification(long timeStamp, List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, List<CDORevisionDelta> deltas) + public void handleCommitNotification(long timeStamp, List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, + List<CDORevisionDelta> deltas) { if (!isPassiveUpdateEnabled()) { diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java index e3c542b2d1..05e4d6a040 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java @@ -109,14 +109,14 @@ public class SessionManager extends Container<ISession> implements ISessionManag /** * @since 2.0 */ - public void handleCommitNotification(long timeStamp, List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, List<CDORevisionDelta> deltas, - Session excludedSession) + public void handleCommitNotification(long timeStamp, List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, + List<CDORevisionDelta> deltas, Session excludedSession) { for (Session session : getSessions()) { if (session != excludedSession) { - session.handleCommitNotification(timeStamp, dirtyIDs,detachedObjects, deltas); + session.handleCommitNotification(timeStamp, dirtyIDs, detachedObjects, deltas); } } } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java index 375e4fa809..945c1ea39d 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java @@ -40,9 +40,9 @@ import java.util.List; public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor { private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, StoreAccessor.class); - + private List<CommitContext> commitContexts = new ArrayList<CommitContext>(); - + private Store store; private Object context; @@ -110,9 +110,9 @@ public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor { TRACER.format("Writing transaction: {0}", getView()); } - + commitContexts.add(context); - + writePackages(context.getNewPackages()); addIDMappings(context); @@ -127,7 +127,7 @@ public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor { writeRevisions(context.getDirtyObjects()); } - + detachObjects(context.getDetachedObjects()); } @@ -136,21 +136,21 @@ public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor */ public void commit() { - + } - + public void rollback(CommitContext commitContext) { - + } - + public void rollback() { if (TRACER.isEnabled()) { TRACER.format("Rolling back transaction: {0}", getView()); } - + for (CommitContext commitContext : commitContexts) { rollback(commitContext); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java index ab894380e8..7fd36cf667 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java @@ -62,7 +62,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, private CDORevision[] dirtyObjects; private CDOID[] detachedObjects; - + private List<InternalCDORevision> detachedRevisions = new ArrayList<InternalCDORevision>();; private CDORevisionDelta[] dirtyObjectDeltas; @@ -420,7 +420,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, } } } - + private void revisedDetachObjects() { for (InternalCDORevision revision : detachedRevisions) @@ -428,13 +428,13 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, revision.setRevised(getTimeStamp() - 1); } } - + private void detachObjects() { detachedRevisions.clear(); - + RevisionManager revisionManager = transaction.getRepository().getRevisionManager(); - + for (CDOID id : getDetachedObjects()) { InternalCDORevision revision = revisionManager.getRevision(id, CDORevision.UNCHUNKED, false); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java index 2005a1371b..51b2a9fc2e 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java @@ -10,7 +10,6 @@ **************************************************************************/ package org.eclipse.emf.cdo.internal.server; - import org.eclipse.emf.cdo.internal.server.bundle.OM; import org.eclipse.net4j.util.WrappedException; diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitNotificationRequest.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitNotificationRequest.java index 828005d497..1bd0e131e4 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitNotificationRequest.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitNotificationRequest.java @@ -38,7 +38,7 @@ public class CommitNotificationRequest extends CDOServerRequest private List<CDOIDAndVersion> dirtyIDs; private List<CDORevisionDelta> deltas; - + private List<CDOID> detachedObjects; public CommitNotificationRequest(IChannel channel, long timeStamp, List<CDOIDAndVersion> dirtyIDs, diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionIndication.java index 38018523f3..4a8768389f 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionIndication.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionIndication.java @@ -54,13 +54,14 @@ public class CommitTransactionIndication extends CDOServerIndication return CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION; } - @Override + @Override protected TransactionPackageManager getPackageManager() { return commitContext.getPackageManager(); } - @Override - protected void indicating(CDODataInput in) throws IOException + + @Override + protected void indicating(CDODataInput in) throws IOException { try { @@ -190,7 +191,7 @@ public class CommitTransactionIndication extends CDOServerIndication List<CDOIDMetaRange> metaRanges = commitContext.getMetaIDRanges(); for (CDOIDMetaRange metaRange : metaRanges) { - out.writeCDOIDMetaRange(metaRange); + out.writeCDOIDMetaRange(metaRange); } } @@ -205,7 +206,7 @@ public class CommitTransactionIndication extends CDOServerIndication { CDOID newID = entry.getValue(); out.writeCDOID(oldID); - out.writeCDOID(newID); + out.writeCDOID(newID); } } out.writeCDOID(CDOID.NULL); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IQueryContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IQueryContext.java index 99694d410b..afc4ee95e7 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IQueryContext.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IQueryContext.java @@ -22,7 +22,8 @@ public interface IQueryContext * Adds the given object to the results of the associated query. * * @param object - * Support many primitives, CDOID and CDORevision. CDORevision are converted in CDOID and only CDOID are transfered to the client. + * Support many primitives, CDOID and CDORevision. CDORevision are converted in CDOID and only CDOID are + * transfered to the client. * @return <code>true</code> to indicate that more results can be passed subsequently, <code>false</code> otherwise * (i.e. maxResults has been reached or an asynchronous query has been canceled). */ diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreWriter.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreWriter.java index 8fe30bea20..8e67b22ef7 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreWriter.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreWriter.java @@ -29,13 +29,16 @@ public interface IStoreWriter extends IStoreReader public IView getView(); /** - * Called before committing. An Instance of a storeWriter represents an instance of back-end Transaction. Could be called multiple times before commit it called. + * Called before committing. An Instance of a storeWriter represents an instance of back-end Transaction. Could be + * called multiple times before commit it called. + * * @since 2.0 */ public void write(CommitContext context); /** * It will flush to the backend and make available the data for others. + * * @since 2.0 */ public void commit(); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java index b5160b138a..9ba8ebd20e 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java @@ -142,8 +142,8 @@ public abstract class AbstractCDOTest extends AbstractTransportTest // assertEquals(null, object.cdoID()); // assertEquals(null, object.cdoRevision()); // assertEquals(null, object.cdoView()); - //assertEquals(bject.eResource(), object.cdoResource()); - //assertEquals(null, object.cdoResource()); + // assertEquals(bject.eResource(), object.cdoResource()); + // assertEquals(null, object.cdoResource()); } protected static void assertNotTransient(CDOObject object, CDOView view) @@ -152,9 +152,9 @@ public abstract class AbstractCDOTest extends AbstractTransportTest assertNotNull(object.cdoID()); assertNotNull(object.cdoRevision()); assertNotNull(object.cdoView()); - //assertNotNull(object.cdoResource()); + // assertNotNull(object.cdoResource()); assertNotNull(object.eResource()); - //assertEquals(object.eResource(), object.cdoResource()); + // assertEquals(object.eResource(), object.cdoResource()); assertEquals(view, object.cdoView()); assertEquals(object, view.getObject(object.cdoID(), false)); } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java index 738628412b..d347185291 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.tests; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_241464_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_243310_Test; +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246442_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246622_Test; import junit.framework.Test; @@ -51,7 +52,8 @@ public class AllTests suite.addTestSuite(NoLegacyTest.class); suite.addTestSuite(Bugzilla_241464_Test.class); suite.addTestSuite(Bugzilla_243310_Test.class); - suite.addTestSuite(Bugzilla_246622_Test.class); + suite.addTestSuite(Bugzilla_246622_Test.class); + suite.addTestSuite(Bugzilla_246442_Test.class); suite.addTestSuite(AutoAttacherTest.class); suite.addTestSuite(SavepointTest.class); suite.addTestSuite(ChangeSubscriptionTest.class); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java index 39f49bb0c8..bf8a2be614 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java @@ -573,9 +573,9 @@ public class ComplexTest extends AbstractCDOTest MultiContainedElement element_work = (MultiContainedElement)o; assertEquals(resource1FromTx2, element_work.cdoResource()); assertEquals(resource1FromTx2, element_work.eResource()); - + container.getElements().add(element_work); - + assertEquals(null, element_work.cdoResource()); assertEquals(resource2, element_work.eResource()); transaction2.commit(); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java index 627e140064..2e83deb548 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java @@ -389,15 +389,13 @@ public class ContainmentTest extends AbstractCDOTest CDOTransaction transaction = session.openTransaction(resourceSet); resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put("test", new XMIResourceFactoryImpl()); - + Resource resource1 = resourceSet.createResource(URI.createURI("test://1")); resource1.load(new ByteArrayInputStream(data), null); Resource resource = transaction.getResource("test"); Order order = (Order)resource.getContents().get(0); - - assertEquals(resource1.getContents().get(0), order.eContainer()); } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DetachTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DetachTest.java index c3e9c21399..78ba5c9f0b 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DetachTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DetachTest.java @@ -77,9 +77,9 @@ public class DetachTest extends AbstractCDOTest assertEquals(c1, transaction.getResourceSet().getEObject(uriC1, false)); resource.getContents().remove(c1); - + assertTransient(c1); - + // We should not be able to access that objects try { @@ -92,9 +92,9 @@ public class DetachTest extends AbstractCDOTest } transaction.commit(); - + assertTransient(c1); - + try { transaction.getResourceSet().getEObject(uriC1, false); @@ -105,7 +105,6 @@ public class DetachTest extends AbstractCDOTest } - } public void testSavePointNewObjectDeletion() throws Exception @@ -215,14 +214,14 @@ public class DetachTest extends AbstractCDOTest assertEquals("Test", c1.getName()); } - + private void detachResource(ResourceSet rset, CDOResource resource) throws Exception { Order order = Model1Factory.eINSTANCE.createOrder(); OrderDetail orderDetail = Model1Factory.eINSTANCE.createOrderDetail(); resource.getContents().add(order); order.getOrderDetails().add(orderDetail); - + assertActive(resource); Assert.assertEquals(1, CDOUtil.getViewSet(rset).getViews().length); Assert.assertEquals(1, rset.getResources().size()); @@ -234,7 +233,7 @@ public class DetachTest extends AbstractCDOTest Assert.assertEquals(1, CDOUtil.getViewSet(rset).getViews().length); Assert.assertEquals(0, rset.getResources().size()); } - + public void testDetachNewResource() throws Exception { msg("Opening session"); @@ -250,7 +249,7 @@ public class DetachTest extends AbstractCDOTest detachResource(rset, resource); } - + public void testDetachPersistedResource() throws Exception { msg("Opening session"); @@ -263,12 +262,12 @@ public class DetachTest extends AbstractCDOTest msg("Creating resource"); CDOResource resource = transaction.createResource("/test1"); - + transaction.commit(); CDOID resourceID = resource.cdoID(); detachResource(rset, resource); - + assertEquals(true, transaction.getDetachedObjects().contains(resourceID)); } - + } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java index 6b21cc5f94..8b948f0d7c 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java @@ -629,8 +629,7 @@ public class InvalidationTest extends AbstractCDOTest assertEquals(false, timeOuterB_2.timedOut()); assertEquals(false, timeOuterC_2.timedOut()); } - - + public void testDetach() throws Exception { msg("Creating category1"); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/XATransactionTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/XATransactionTest.java index 5c19da3a7f..afc1c9219a 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/XATransactionTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/XATransactionTest.java @@ -141,7 +141,7 @@ public class XATransactionTest extends AbstractCDOTest xaTransaction.commit(); } - + public void testCommitFromTransactionDisabled() throws Exception { createRepository(REPOSITORY2_NAME); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246442_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246442_Test.java new file mode 100644 index 0000000000..5e8cb3ae45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246442_Test.java @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Eike Stepper, Germany. + * 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 + **************************************************************************/ +package org.eclipse.emf.cdo.tests.bugzilla; + +import org.eclipse.emf.cdo.CDOObject; +import org.eclipse.emf.cdo.CDOSession; +import org.eclipse.emf.cdo.CDOTransaction; +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.model.CDOPackage; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.tests.AbstractCDOTest; + +import org.eclipse.emf.internal.cdo.CDOSessionPackageManagerImpl; +import org.eclipse.emf.internal.cdo.util.ModelUtil; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.ecore.EcorePackage; + +/** + * ArrayIndexOutOfBoundsException when importing resoruces. + * <p> + * + * @see https://bugs.eclipse.org/246442 + * @author Simon McDuff + */ +public class Bugzilla_246442_Test extends AbstractCDOTest +{ + public void testBugzilla_241464() throws Exception + { + CDOID lookupObject = null; + + { + EPackage topPackage = createDynamicEPackage(); + + EPackage subpackage1 = topPackage.getESubpackages().get(0); + EClass class1Class = (EClass)subpackage1.getEClassifier("class1"); + + class1Class.getEAllStructuralFeatures(); + CDOSession session = openSession(); + + session.getPackageRegistry().putEPackage(topPackage); + CDOPackage packageObject = ModelUtil.getCDOPackage(topPackage, (CDOSessionPackageManagerImpl)session + .getPackageManager()); + assertNotNull(packageObject.getEcore()); + + CDOTransaction transaction = session.openTransaction(); + CDOObject instance = (CDOObject)subpackage1.getEFactoryInstance().create(class1Class); + CDOResource resource = transaction.createResource("/test1"); + resource.getContents().add(instance); + transaction.commit(); + + lookupObject = instance.cdoID(); + session.close(); + } + + CDOSession session = openSession(); + session.getFailOverStrategy().setDefaultTimeout(2000L); + + CDOTransaction transaction = session.openTransaction(); + transaction.getObject(lookupObject); + } + + private EPackage createDynamicEPackage() + { + final EcoreFactory efactory = EcoreFactory.eINSTANCE; + final EcorePackage epackage = EcorePackage.eINSTANCE; + + EClass schoolBookEClass = efactory.createEClass(); + schoolBookEClass.setName("class1"); + // create a new attribute for this EClass + EAttribute level = efactory.createEAttribute(); + level.setName("level"); + level.setEType(epackage.getEInt()); + schoolBookEClass.getEStructuralFeatures().add(level); + + // Create a new EPackage and add the new EClasses + EPackage topPackage = efactory.createEPackage(); + topPackage.setName("toppackage"); + topPackage.setNsPrefix("toppackage"); + topPackage.setNsURI("http:///www.elver.org/toppackage"); + + EPackage subPackage1 = efactory.createEPackage(); + subPackage1.setName("subPackage1"); + subPackage1.setNsPrefix("subPackage1"); + subPackage1.setNsURI("http:///www.elver.org/subPackage1"); + subPackage1.getEClassifiers().add(schoolBookEClass); + + EPackage subPackage2 = efactory.createEPackage(); + subPackage2.setName("subPackage2"); + subPackage2.setNsPrefix("subPackage2"); + subPackage2.setNsURI("http:///www.elver.org/subPackage2"); + + topPackage.getESubpackages().add(subPackage1); + return topPackage; + } +} diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java index 91d0b00b5d..f3a37eeac9 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java @@ -39,10 +39,11 @@ public class Bugzilla_246622_Test extends AbstractCDOTest CDOResource res = transaction1.createResource("/test1"); Order order = Model1Factory.eINSTANCE.createOrder(); OrderDetail orderDetail = Model1Factory.eINSTANCE.createOrderDetail(); - + res.getContents().add(order); order.getOrderDetails().add(orderDetail); - CDOFeature order_OrderDetailFeature = session.getPackageManager().convert(Model1Package.eINSTANCE.getOrder_OrderDetails()); + CDOFeature order_OrderDetailFeature = session.getPackageManager().convert( + Model1Package.eINSTANCE.getOrder_OrderDetails()); assertEquals(orderDetail, order.cdoRevision().getData().get(order_OrderDetailFeature, 0)); assertEquals(order, orderDetail.cdoRevision().getData().getContainerID()); @@ -58,51 +59,52 @@ public class Bugzilla_246622_Test extends AbstractCDOTest msg("Committing"); transaction1.commit(); - + assertEquals(orderDetail.cdoID(), order.cdoRevision().getData().get(order_OrderDetailFeature, 0)); assertEquals(orderDetail2.cdoID(), order2.cdoRevision().getData().get(order_OrderDetailFeature, 0)); - + assertEquals(order.cdoID(), orderDetail.cdoRevision().getData().getContainerID()); assertEquals(order2.cdoID(), orderDetail2.cdoRevision().getData().getContainerID()); - + Order order3 = Model1Factory.eINSTANCE.createOrder(); - + res.getContents().add(order3); order3.getOrderDetails().add(orderDetail2); - + assertEquals(orderDetail2.cdoID(), order3.cdoRevision().getData().get(order_OrderDetailFeature, 0)); assertEquals(order3, orderDetail2.cdoRevision().getData().getContainerID()); - + msg("Committing"); transaction1.commit(); } + public void testSet() throws Exception { CDOSession session = openModel1Session(); CDOTransaction transaction1 = session.openTransaction(); CDOResource res = transaction1.createResource("/test1"); - - + msg("Test set with link before"); PurchaseOrder purchaseOrder = Model1Factory.eINSTANCE.createPurchaseOrder(); - Supplier supplier = Model1Factory.eINSTANCE.createSupplier(); - + Supplier supplier = Model1Factory.eINSTANCE.createSupplier(); + purchaseOrder.setSupplier(supplier); - + res.getContents().add(purchaseOrder); res.getContents().add(supplier); - - CDOFeature supplier_PurchaseOrder = session.getPackageManager().convert(Model1Package.eINSTANCE.getSupplier_PurchaseOrders()); - CDOFeature purchaseOrder_Supplier = session.getPackageManager().convert(Model1Package.eINSTANCE.getPurchaseOrder_Supplier()); - + CDOFeature supplier_PurchaseOrder = session.getPackageManager().convert( + Model1Package.eINSTANCE.getSupplier_PurchaseOrders()); + CDOFeature purchaseOrder_Supplier = session.getPackageManager().convert( + Model1Package.eINSTANCE.getPurchaseOrder_Supplier()); + assertEquals(supplier, purchaseOrder.cdoRevision().getData().get(purchaseOrder_Supplier, 0)); assertEquals(purchaseOrder, supplier.cdoRevision().getData().get(supplier_PurchaseOrder, 0)); msg("Test set with link after"); PurchaseOrder purchaseOrder2 = Model1Factory.eINSTANCE.createPurchaseOrder(); - Supplier supplier2 = Model1Factory.eINSTANCE.createSupplier(); + Supplier supplier2 = Model1Factory.eINSTANCE.createSupplier(); res.getContents().add(purchaseOrder2); res.getContents().add(supplier2); @@ -113,19 +115,18 @@ public class Bugzilla_246622_Test extends AbstractCDOTest msg("Committing"); transaction1.commit(); - - + assertEquals(supplier2.cdoID(), purchaseOrder2.cdoRevision().getData().get(purchaseOrder_Supplier, 0)); assertEquals(purchaseOrder2.cdoID(), supplier2.cdoRevision().getData().get(supplier_PurchaseOrder, 0)); - + assertEquals(supplier.cdoID(), purchaseOrder.cdoRevision().getData().get(purchaseOrder_Supplier, 0)); assertEquals(purchaseOrder.cdoID(), supplier.cdoRevision().getData().get(supplier_PurchaseOrder, 0)); - + msg("Test set with persisted CDOID"); PurchaseOrder purchaseOrder3 = Model1Factory.eINSTANCE.createPurchaseOrder(); purchaseOrder3.setSupplier(supplier2); res.getContents().add(purchaseOrder3); - + assertEquals(supplier2.cdoID(), purchaseOrder3.cdoRevision().getData().get(purchaseOrder_Supplier, 0)); assertEquals(purchaseOrder3, supplier2.cdoRevision().getData().get(supplier_PurchaseOrder, 1)); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionPhase2Request.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionPhase2Request.java index 8961395fc2..aa05c9db57 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionPhase2Request.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionPhase2Request.java @@ -103,7 +103,8 @@ public class CommitTransactionPhase2Request extends CommitTransactionRequest CDOID newID = commitContext.getResult().getIDMappings().get(oldCDOID); if (newID == null) { - throw new IllegalStateException("Missing informations. " + oldCDOID.toURIFragment() + " isn't mapped in the commit."); + throw new IllegalStateException("Missing informations. " + oldCDOID.toURIFragment() + + " isn't mapped in the commit."); } CDOID newIDExternal = CDOURIUtil.convertExternalCDOID(oldURIExternal, newID); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java index 7571c35a0a..f16970f069 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java @@ -7,6 +7,7 @@ * * Contributors: * Eike Stepper - initial API and implementation + * Simon McDuff - http://bugs.eclipse.org/246442 **************************************************************************/ package org.eclipse.emf.internal.cdo.util; @@ -50,9 +51,11 @@ public class CompletePackageClosure extends PackageClosure @Override protected void collectContents(EPackage ePackage, Set<EPackage> visited) { - if (ePackage != null) + + if (ePackage != null && visited.add(ePackage)) { - if (excludeEcore && ePackage == EcorePackage.eINSTANCE) + if (excludeEcore && // Optimize EPackage comparison + (EcorePackage.eINSTANCE == ePackage || EcorePackage.eNS_URI.equals(ePackage.getNsURI()))) { return; } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java index 93717194c6..3f27f36ed7 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java @@ -7,6 +7,7 @@ * * Contributors: * Eike Stepper - initial API and implementation + * Eike Stepper - http://bugs.eclipse.org/246442 **************************************************************************/ package org.eclipse.emf.internal.cdo.util; @@ -35,6 +36,7 @@ import org.eclipse.emf.internal.cdo.CDOSessionPackageManagerImpl; import org.eclipse.emf.internal.cdo.bundle.OM; import org.eclipse.net4j.util.ImplementationError; +import org.eclipse.net4j.util.ObjectUtil; import org.eclipse.net4j.util.om.trace.ContextTracer; import org.eclipse.emf.ecore.EAttribute; @@ -338,12 +340,29 @@ public final class ModelUtil public static EPackageImpl createDynamicEPackage(CDOPackage cdoPackage) { - String ecore = cdoPackage.getEcore(); - EPackageImpl ePackage = (EPackageImpl)EMFUtil.ePackageFromString(ecore); - prepareEPackage(ePackage); + CDOPackage topLevelPackage = cdoPackage.getTopLevelPackage(); + String ecore = topLevelPackage.getEcore(); + EPackageImpl topLevelPackageEPackage = (EPackageImpl)EMFUtil.ePackageFromString(ecore); + EPackageImpl ePackage = prepareEPackage(topLevelPackageEPackage, cdoPackage.getPackageURI()); return ePackage; } + private static EPackageImpl prepareEPackage(EPackageImpl ePackage, String nsURI) + { + prepareEPackage(ePackage); + EPackageImpl result = ObjectUtil.equals(ePackage.getNsURI(), nsURI) ? ePackage : null; + for (EPackage subPackage : ePackage.getESubpackages()) + { + EPackageImpl p = prepareEPackage((EPackageImpl)subPackage, nsURI); + if (p != null && result == null) + { + result = p; + } + } + + return result; + } + public static void prepareEPackage(EPackageImpl ePackage) { ePackage.setEFactoryInstance(new CDOFactoryImpl(ePackage)); |