Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-03-14 11:07:36 +0000
committerEike Stepper2009-03-14 11:07:36 +0000
commited0e1b1e3bd246b5c11ba88b166e1678703bc887 (patch)
tree42780d403e12ef54d670d0634e7b22c2deda473f
parent04ab084a7995a3303dc3b6e84d7d2c356614927b (diff)
downloadcdo-ed0e1b1e3bd246b5c11ba88b166e1678703bc887.tar.gz
cdo-ed0e1b1e3bd246b5c11ba88b166e1678703bc887.tar.xz
cdo-ed0e1b1e3bd246b5c11ba88b166e1678703bc887.zip
[265435] Replace CDOModelElements by EModelElements
https://bugs.eclipse.org/bugs/show_bug.cgi?id=265435
-rw-r--r--plugins/org.eclipse.emf.cdo.common/.classpath2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF9
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonSession.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonView.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOFetchRule.java35
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOID.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDProvider.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataInput.java38
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataOutput.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClass.java66
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java (renamed from plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelElement.java)24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassProxy.java105
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java (renamed from plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassRefImpl.java)36
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOFeature.java41
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelConstants.java (renamed from plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassRef.java)8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java264
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackage.java52
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageInfo.java42
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageManager.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistry.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.java139
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageTypeRegistry.java219
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageURICompressor.java46
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageUnit.java71
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java (renamed from plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/EMFUtil.java)236
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOCorePackage.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOFeatureMapEntryDataType.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOObjectClass.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOContentsFeature.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOFolderFeature.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONameFeature.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONodesFeature.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceClass.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceFolderClass.java27
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceNodeClass.java29
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourcePackage.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevision.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionData.java21
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionResolver.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java17
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/cache/CDORevisionCache.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOContainerFeatureDelta.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDeltaVisitor.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDExternalImpl.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDMetaImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDNullImpl.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempMetaImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempObjectImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java252
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataOutputImpl.java238
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassImpl.java461
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java109
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOFeatureImpl.java360
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOModelElementImpl.java93
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java404
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageInfoImpl.java166
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageManagerImpl.java132
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java650
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java362
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java67
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java (renamed from plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/GenUtil.java)2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/TestTransfer.java148
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOCorePackageImpl.java47
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOFeatureMapEntryDataTypeImpl.java47
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOObjectClassImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOContentsFeatureImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOFolderFeatureImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONameFeatureImpl.java27
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONodesFeatureImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceClassImpl.java69
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceFolderClassImpl.java57
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceNodeClassImpl.java61
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourcePackageImpl.java63
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java34
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionResolverImpl.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/lru/LRURevisionCache.java35
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/mem/MEMRevisionCache.java33
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/two/TwoLevelRevisionCache.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOAddFeatureDeltaImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOClearFeatureDeltaImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java105
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORemoveFeatureDeltaImpl.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java34
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSetFeatureDeltaImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOUnsetFeatureDeltaImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOID.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDInteger.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDLong.java17
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLibraryDescriptorImpl.java27
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLongImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOClass.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOFeature.java42
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackage.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageInfo.java (renamed from plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOModelElement.java)21
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageManager.java33
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java91
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageUnit.java43
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java182
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDORevisionMerger.java (renamed from plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionMerger.java)4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java31
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EDynamicPackageDef.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EGlobalPackageDef.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EPackageDef.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsFactoryImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsPackageImpl.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOEagerPackageRegistryDefImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOLazyPackageRegistryDefImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOPackageRegistryDefImpl.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOSessionDefImpl.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EDynamicPackageDefImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EPackageDefImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsSwitch.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsUtil.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/.settings/.api_filters15
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/plugin.xml2
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceFolderItemProvider.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceEditPlugin.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/plugin.xml4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/CDODBUtil.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStore.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStoreAccessor.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IJDBCDelegate.java131
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IObjectTypeCache.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IReferenceMapping.java49
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IAttributeMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IAttributeMapping.java)16
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IClassMapping.java)36
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IFeatureMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IFeatureMapping.java)6
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IMappingStrategy.java)27
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IReferenceMapping.java99
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java133
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassServerInfo.java91
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java314
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java587
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreFactory.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureServerInfo.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectIDIterator.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectTypeCache.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/PackageServerInfo.java46
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/Precedence.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ServerInfo.java58
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/AbstractJDBCDelegate.java291
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/JDBCPerformanceReporter.java89
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java1128
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/StatementJDBCDelegate.java377
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AttributeMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/AttributeMapping.java)64
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassMapping.java)286
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/FeatureMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureMapping.java)12
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalClassMapping.java)32
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalMappingStrategy.java)148
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/MappingStrategy.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java)180
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/NoClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/NoClassMapping.java)44
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ReferenceMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java)117
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/RootClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/RootClassMapping.java)13
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ToOneReferenceMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ToOneReferenceMapping.java)11
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalClassMapping.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalClassMapping.java)17
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java (renamed from plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalMappingStrategy.java)20
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/internal/teneo/TeneoHibernateMappingProvider.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml6
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/hibernate/IHibernateStoreAccessor.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java210
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java91
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java18
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java17
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java55
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java79
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java27
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.server/.settings/.api_filters118
-rw-r--r--plugins/org.eclipse.emf.cdo.server/.settings/org.eclipse.jdt.core.prefs3
-rw-r--r--plugins/org.eclipse.emf.cdo.server/CDOServer.launch4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF9
-rw-r--r--plugins/org.eclipse.emf.cdo.server/plugin.xml2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LockManager.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java102
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java177
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java54
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java368
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java18
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java277
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStore.java)95
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java)86
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreChunkReader.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreChunkReader.java)8
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreFactory.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreFactory.java)2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerProtocol.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java68
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ChangeSubscriptionIndication.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitNotificationRequest.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionCancelIndication.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionIndication.java135
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase1Indication.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase2Indication.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase3Indication.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/GetRemoteSessionsIndication.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadChunkIndication.java42
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadLibrariesIndication.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackageIndication.java84
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java62
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByTimeIndication.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByVersionIndication.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java51
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java56
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/QueryIndication.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/RepositoryTimeIndication.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ResourceIDIndication.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetAuditIndication.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetPassiveUpdateIndication.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SyncRevisionsIndication.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/UnsubscribeRemoteSessionsIndication.java27
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/VerifyRevisionIndication.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ViewsChangedIndication.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/INotificationManager.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IPackageManager.java21
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRevisionManager.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISession.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java63
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreChunkReader.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IView.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreThreadLocal.java21
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreUtil.java80
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/mem/MEMStoreUtil.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java)23
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStore.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LongIDStore.java)29
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStoreAccessor.java66
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Store.java)82
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessor.java249
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessorPool.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessorPool.java)2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreChunkReader.java (renamed from plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreChunkReader.java)11
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.classpath2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB Hsqldb - nonaudit).launch20
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB HsqldbPrepStmt - nonaudit).launch20
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch1
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/TestClient.java81
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/TestClient2.java73
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/TestServer.java95
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbNonAudit.java53
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbPrepStmtNonAudit.java51
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingTest.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ExternalReferenceTest.java41
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ImportXML.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/IndexReconstructionTest.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java110
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RepositoryTest.java22
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java55
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StoreRepositoryProvider.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/XATransactionTest.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246442_Test.java58
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_251752_Test.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_256141_Test.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_258933_Test.java29
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_260764_Test.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_261218_Test.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/IConstants.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ISessionConfig.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/ConfigTest.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java101
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java58
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java48
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AbstractDBStoreVerifier.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AuditDBStoreIntegrityVerifier.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/NonAuditDBStoreIntegrityVerifier.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/Node.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch102
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageDynamic.gifbin0 -> 364 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageLegacy.gifbin207 -> 207 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageUnknown.gifbin0 -> 207 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/SharedIcons.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ExportResourceAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ImportRootsAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ManagePackagesAction.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterFilesystemPackagesAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterGeneratedPackagesAction.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterPackagesAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterSinglePackageAction.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterWorkspacePackagesAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveAllContainerItemAction.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageRegistryDialog.java (renamed from plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageManagerDialog.java)296
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/SelectPackageDialog.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dnd/CDOObjectDropAdapter.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java123
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOEditorInput.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java45
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/.classpath2
-rw-r--r--plugins/org.eclipse.emf.cdo/.settings/.api_filters83
-rw-r--r--plugins/org.eclipse.emf.cdo/about.ini2
-rw-r--r--plugins/org.eclipse.emf.cdo/model/eresource.ecore2
-rw-r--r--plugins/org.eclipse.emf.cdo/model/eresource.genmodel (renamed from plugins/org.eclipse.emf.cdo/model/resource.genmodel)0
-rw-r--r--plugins/org.eclipse.emf.cdo/plugin.xml2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOObject.java9
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceNode.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourceFactory.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourcePackage.java9
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceNodeImpl.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java13
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java41
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceAdapterFactory.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java17
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOCollectionLoadingPolicy.java11
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageRegistry.java39
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageType.java33
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageTypeRegistry.java33
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDORevisionManager.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java46
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionConfiguration.java15
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionPackageManager.java67
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/ModelUtil.java58
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOFeatureAnalyzer.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOFactoryImpl.java19
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java63
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDONotificationBuilder.java12
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java8
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java292
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java17
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAnalyzerFeatureInfo.java49
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java12
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java11
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerUI.java36
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java26
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFeatureAnalyzer.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFetchRuleManager.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/Activator.java3
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/OM.java8
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/CDONet4jSessionFactory.java9
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientIndication.java56
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientProtocol.java21
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientRequest.java63
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOTimeRequest.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ChangeSubscriptionRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java33
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitTransactionRequest.java112
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/GetRemoteSessionsRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadChunkRequest.java38
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadLibrariesRequest.java14
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackageRequest.java59
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackagesRequest.java61
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByTimeRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByVersionRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionRequest.java26
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LockObjectsRequest.java10
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ObjectLockedRequest.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/OpenSessionRequest.java94
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryCancelRequest.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryRequest.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ResourceIDRequest.java14
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetAuditRequest.java26
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetPassiveUpdateRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java12
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnlockObjectsRequest.java16
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnsubscribeRemoteSessionsRequest.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/VerifyRevisionRequest.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryImpl.java10
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOElementProxyImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOListWithElementProxiesImpl.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOCollectionLoadingPolicyImpl.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageRegistryImpl.java446
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageTypeRegistryImpl.java269
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDORevisionManagerImpl.java16
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionConfigurationImpl.java19
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java591
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionPackageManagerImpl.java171
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/SessionUtil.java57
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java84
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java12
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java438
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/RevisionAdjuster.java11
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java54
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java29
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java8
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOElementProxy.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java52
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java3
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDORemoteSessionManager.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java22
437 files changed, 10094 insertions, 11191 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/.classpath b/plugins/org.eclipse.emf.cdo.common/.classpath
index 64c5e31b7a..722f3e931a 100644
--- a/plugins/org.eclipse.emf.cdo.common/.classpath
+++ b/plugins/org.eclipse.emf.cdo.common/.classpath
@@ -2,6 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry excluding="org/eclipse/emf/cdo/common/model.old/" kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
index c12249c73a..390c8819dc 100644
--- a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
@@ -9,14 +9,15 @@ Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.emf.cdo.internal.common.bundle.OM$Activator
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ClassPath: .
-Require-Bundle: org.eclipse.net4j;bundle-version="[2.0.0,3.0.0)";visibility:=reexport
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)";resolution:=optional,
+ org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
+ org.eclipse.net4j;bundle-version="[2.0.0,3.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="1.3.0";resolution:=optional
Export-Package: org.eclipse.emf.cdo.common;version="2.0.0",
org.eclipse.emf.cdo.common.id;version="2.0.0",
org.eclipse.emf.cdo.common.io;version="2.0.0",
org.eclipse.emf.cdo.common.model;version="2.0.0",
- org.eclipse.emf.cdo.common.model.core;version="2.0.0",
- org.eclipse.emf.cdo.common.model.resource;version="2.0.0",
org.eclipse.emf.cdo.common.protocol;version="2.0.0",
org.eclipse.emf.cdo.common.revision;version="2.0.0",
org.eclipse.emf.cdo.common.revision.cache;version="2.0.0",
@@ -27,8 +28,6 @@ Export-Package: org.eclipse.emf.cdo.common;version="2.0.0",
org.eclipse.emf.cdo.internal.common.id;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
org.eclipse.emf.cdo.internal.common.io;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
org.eclipse.emf.cdo.internal.common.model;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
- org.eclipse.emf.cdo.internal.common.model.core;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
- org.eclipse.emf.cdo.internal.common.model.resource;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
org.eclipse.emf.cdo.internal.common.protocol;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
org.eclipse.emf.cdo.internal.common.revision;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo,org.eclipse.emf.cdo.server",
org.eclipse.emf.cdo.internal.common.revision.cache;version="2.0.0";x-friends:="org.eclipse.emf.cdo,org.eclipse.emf.cdo.server,org.eclipse.emf.cdo.tests",
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonSession.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonSession.java
index ef98c5ba2f..19d0bd9925 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonSession.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonSession.java
@@ -17,7 +17,6 @@ import org.eclipse.net4j.util.security.IUserAware;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
* @since 2.0
*/
public interface CDOCommonSession extends IUserAware, IOptionsContainer, Closeable
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonView.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonView.java
index 74e05992df..02a9028f2f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonView.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonView.java
@@ -16,7 +16,6 @@ import org.eclipse.net4j.util.collection.Closeable;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
* @since 2.0
*/
public interface CDOCommonView extends Closeable
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOFetchRule.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOFetchRule.java
index 1855f26882..720fe262db 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOFetchRule.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOFetchRule.java
@@ -13,9 +13,10 @@ package org.eclipse.emf.cdo.common;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.io.IOException;
import java.util.ArrayList;
@@ -27,53 +28,53 @@ import java.util.List;
*/
public final class CDOFetchRule
{
- private CDOClass cdoClass;
+ private EClass eClass;
- private List<CDOFeature> features = new ArrayList<CDOFeature>(0);
+ private List<EStructuralFeature> features = new ArrayList<EStructuralFeature>(0);
- public CDOFetchRule(CDOClass cdoClass)
+ public CDOFetchRule(EClass eClass)
{
- this.cdoClass = cdoClass;
+ this.eClass = eClass;
}
- public CDOFetchRule(CDODataInput in, CDOPackageManager packageManager) throws IOException
+ public CDOFetchRule(CDODataInput in, CDOPackageRegistry packageManager) throws IOException
{
- cdoClass = in.readCDOClassRefAndResolve();
+ eClass = (EClass)in.readCDOClassifierRefAndResolve();
int size = in.readInt();
for (int i = 0; i < size; i++)
{
int featureID = in.readInt();
- CDOFeature feature = cdoClass.lookupFeature(featureID);
+ EStructuralFeature feature = eClass.getEStructuralFeature(featureID);
features.add(feature);
}
}
public void write(CDODataOutput out) throws IOException
{
- out.writeCDOClassRef(cdoClass);
+ out.writeCDOClassifierRef(eClass);
out.writeInt(features.size());
- for (CDOFeature feature : features)
+ for (EStructuralFeature feature : features)
{
out.writeInt(feature.getFeatureID());
}
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return cdoClass;
+ return eClass;
}
- public List<CDOFeature> getFeatures()
+ public List<EStructuralFeature> getFeatures()
{
return features;
}
- public void addFeature(CDOFeature feature)
+ public void addFeature(EStructuralFeature feature)
{
features.add(feature);
}
- public void removeFeature(CDOFeature feature)
+ public void removeFeature(EStructuralFeature feature)
{
features.remove(feature);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOID.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOID.java
index a29d8647fe..4da0608cf0 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOID.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOID.java
@@ -18,7 +18,7 @@ import java.io.Serializable;
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface CDOID extends Serializable
+public interface CDOID extends Serializable, Comparable<CDOID>
{
public static final CDOID NULL = org.eclipse.emf.cdo.internal.common.id.CDOIDNullImpl.INSTANCE;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDProvider.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDProvider.java
index 9fb3ad164d..ac5ef48d5f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDProvider.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDProvider.java
@@ -12,7 +12,6 @@ package org.eclipse.emf.cdo.common.id;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
*/
public interface CDOIDProvider
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataInput.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataInput.java
index 2ded51250c..b44c15d2ae 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataInput.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataInput.java
@@ -14,10 +14,10 @@ package org.eclipse.emf.cdo.common.io;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -27,6 +27,10 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.net4j.util.concurrent.RWLockManager;
import org.eclipse.net4j.util.io.ExtendedDataInput;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -37,21 +41,21 @@ public interface CDODataInput extends ExtendedDataInput
{
// /////////////////////////////////////////////////////////////////////////////////////////////////
- public String readCDOPackageURI() throws IOException;
+ public CDOPackageUnit readCDOPackageUnit(CDOPackageRegistry packageRegistry) throws IOException;
- public CDOType readCDOType() throws IOException;
+ public CDOPackageUnit[] readCDOPackageUnits(CDOPackageRegistry packageRegistry) throws IOException;
- public CDOClassRef readCDOClassRef() throws IOException;
+ public CDOPackageUnit.Type readCDOPackageUnitType() throws IOException;
- public CDOClass readCDOClassRefAndResolve() throws IOException;
+ public CDOPackageInfo readCDOPackageInfo() throws IOException;
- public void readCDOPackage(CDOPackage cdoPackage) throws IOException;
+ public CDOClassifierRef readCDOClassifierRef() throws IOException;
- public CDOPackage readCDOPackage() throws IOException;
+ public EClassifier readCDOClassifierRefAndResolve() throws IOException;
- public CDOClass readCDOClass(CDOPackage containingPackage) throws IOException;
+ public String readCDOPackageURI() throws IOException;
- public CDOFeature readCDOFeature(CDOClass containingClass) throws IOException;
+ public CDOType readCDOType() throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -65,11 +69,13 @@ public interface CDODataInput extends ExtendedDataInput
public CDORevision readCDORevision() throws IOException;
- public CDOList readCDOList(CDORevision revision, CDOFeature feature) throws IOException;
+ public CDOList readCDOList(CDORevision revision, EStructuralFeature feature) throws IOException;
+
+ public Object readCDOFeatureValue(EStructuralFeature feature) throws IOException;
public CDORevisionDelta readCDORevisionDelta() throws IOException;
- public CDOFeatureDelta readCDOFeatureDelta(CDOClass cdoClass) throws IOException;
+ public CDOFeatureDelta readCDOFeatureDelta(EClass eClass) throws IOException;
/**
* Read either a CDORevision or a primitive value.
@@ -77,9 +83,9 @@ public interface CDODataInput extends ExtendedDataInput
public Object readCDORevisionOrPrimitive() throws IOException;
/**
- * Read either a CDORevision, a primitive value or a CDOClass.
+ * Read either a CDORevision, a primitive value or a EClass.
*/
- public Object readCDORevisionOrPrimitiveOrClass() throws IOException;
+ public Object readCDORevisionOrPrimitiveOrClassifier() throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataOutput.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataOutput.java
index 2deb575a74..a379284f9f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataOutput.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/io/CDODataOutput.java
@@ -15,10 +15,9 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -28,6 +27,10 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.net4j.util.concurrent.RWLockManager;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -40,19 +43,21 @@ public interface CDODataOutput extends ExtendedDataOutput
// /////////////////////////////////////////////////////////////////////////////////////////////////
- public void writeCDOPackageURI(String uri) throws IOException;
+ public void writeCDOPackageUnit(CDOPackageUnit packageUnit, boolean withPackages) throws IOException;
- public void writeCDOType(CDOType cdoType) throws IOException;
+ public void writeCDOPackageUnits(CDOPackageUnit... packageUnit) throws IOException;
- public void writeCDOClassRef(CDOClassRef cdoClassRef) throws IOException;
+ public void writeCDOPackageUnitType(CDOPackageUnit.Type type) throws IOException;
- public void writeCDOClassRef(CDOClass cdoClass) throws IOException;
+ public void writeCDOPackageInfo(CDOPackageInfo packageInfo) throws IOException;
- public void writeCDOPackage(CDOPackage cdoPackage) throws IOException;
+ public void writeCDOClassifierRef(CDOClassifierRef eClassifierRef) throws IOException;
- public void writeCDOClass(CDOClass cdoClass) throws IOException;
+ public void writeCDOClassifierRef(EClassifier eClassifier) throws IOException;
- public void writeCDOFeature(CDOFeature cdoFeature) throws IOException;
+ public void writeCDOPackageURI(String uri) throws IOException;
+
+ public void writeCDOType(CDOType cdoType) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -66,11 +71,13 @@ public interface CDODataOutput extends ExtendedDataOutput
public void writeCDORevision(CDORevision revision, int referenceChunk) throws IOException;
- public void writeCDOList(CDOList list, CDOFeature feature, int referenceChunk) throws IOException;
+ public void writeCDOList(CDOList list, EStructuralFeature feature, int referenceChunk) throws IOException;
+
+ public void writeCDOFeatureValue(Object value, EStructuralFeature feature) throws IOException;
public void writeCDORevisionDelta(CDORevisionDelta revisionDelta) throws IOException;
- public void writeCDOFeatureDelta(CDOFeatureDelta featureDelta, CDOClass cdoClass) throws IOException;
+ public void writeCDOFeatureDelta(CDOFeatureDelta featureDelta, EClass eClass) throws IOException;
/**
* Write either a CDORevision or a primitive value.
@@ -78,9 +85,9 @@ public interface CDODataOutput extends ExtendedDataOutput
public void writeCDORevisionOrPrimitive(Object value) throws IOException;
/**
- * Write either a CDORevision, a primitive value or a CDOClass.
+ * Write either a CDORevision, a primitive value or a EClass.
*/
- public void writeCDORevisionOrPrimitiveOrClass(Object value) throws IOException;
+ public void writeCDORevisionOrPrimitiveOrClassifier(Object value) throws IOException;
// /////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClass.java
deleted file mode 100644
index a2ef610881..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClass.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOClass extends CDOModelElement, Comparable<CDOClass>
-{
- public int getClassifierID();
-
- public boolean isAbstract();
-
- /**
- * @since 2.0
- */
- public boolean isResourceNode();
-
- /**
- * @since 2.0
- */
- public boolean isResourceFolder();
-
- public boolean isResource();
-
- public boolean isRoot();
-
- public int getSuperTypeCount();
-
- public CDOClass getSuperType(int index);
-
- public CDOClass[] getSuperTypes();
-
- /**
- * @return An array of all super types. The array is not a copy and must not be modified!
- */
- public CDOClass[] getAllSuperTypes();
-
- public int getFeatureCount();
-
- public CDOFeature lookupFeature(int featureID);
-
- public CDOFeature lookupFeature(String name);
-
- public CDOFeature[] getFeatures();
-
- public int getFeatureID(CDOFeature feature);
-
- /**
- * @return An array of all features. The array is not a copy and must not be modified!
- */
- public CDOFeature[] getAllFeatures();
-
- public CDOClassRef createClassRef();
-
- public CDOPackage getContainingPackage();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelElement.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java
index 6310b46df1..baa07ca478 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelElement.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java
@@ -10,22 +10,26 @@
*/
package org.eclipse.emf.cdo.common.model;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
*/
-public interface CDOModelElement
+public interface CDOClassInfo extends Adapter
{
- public CDOPackageManager getPackageManager();
+ public EClass getEClass();
+
+ public boolean isResourceNode();
+
+ public boolean isResourceFolder();
- public String getName();
+ public boolean isResource();
- /**
- * @since 2.0
- */
- public String getQualifiedName();
+ public EStructuralFeature[] getAllPersistentFeatures();
- public Object getClientInfo();
+ public int getFeatureIndex(EStructuralFeature feature);
- public Object getServerInfo();
+ public int getFeatureIndex(int featureID);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassProxy.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassProxy.java
deleted file mode 100644
index d874fd69a9..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassProxy.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-/**
- * @author Eike Stepper
- */
-public final class CDOClassProxy
-{
- private CDOPackageManager packageManager;
-
- private CDOClassRef classRef;
-
- private CDOClass cdoClass;
-
- public CDOClassProxy()
- {
- }
-
- public CDOClassProxy(CDOClassRef classRef, CDOPackageManager packageManager)
- {
- this.classRef = classRef;
- this.packageManager = packageManager;
- }
-
- public CDOClassProxy(CDOClass cdoClass)
- {
- this.cdoClass = cdoClass;
- }
-
- public String getPackageURI()
- {
- if (cdoClass == null)
- {
- return classRef.getPackageURI();
- }
-
- return cdoClass.getContainingPackage().getPackageURI();
- }
-
- public int getClassifierID()
- {
- if (cdoClass == null)
- {
- return classRef.getClassifierID();
- }
-
- return cdoClass.getClassifierID();
- }
-
- public void setCDOPackageManager(CDOPackageManager packageManager)
- {
- this.packageManager = packageManager;
- }
-
- // TODO Clarify camel case
- public CDOClass getCdoClass()
- {
- if (cdoClass == null)
- {
- cdoClass = classRef.resolve(packageManager);
- if (cdoClass == null)
- {
- throw new IllegalStateException("Unable to resolve class ref: " + classRef);
- }
- }
-
- return cdoClass;
- }
-
- // TODO Clarify camel case
- public void setCdoClass(CDOClass cdoClass)
- {
- this.cdoClass = cdoClass;
- }
-
- public CDOClassRef getClassRef()
- {
- if (classRef == null)
- {
- classRef = cdoClass.createClassRef();
- }
-
- return classRef;
- }
-
- @Override
- public String toString()
- {
- if (cdoClass != null)
- {
- return cdoClass.toString();
- }
-
- return classRef.toString();
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassRefImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java
index 483d947de9..922eb9e098 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassRefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java
@@ -8,40 +8,44 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.common.model;
+package org.eclipse.emf.cdo.common.model;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
+
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
import java.io.IOException;
import java.text.MessageFormat;
/**
- * TODO Optimize transfer of CDOClassRef instances
+ * TODO Optimize transfer of EClassRef instances
*
* @author Eike Stepper
*/
-public final class CDOClassRefImpl implements CDOClassRef
+public final class CDOClassifierRef
{
private String packageURI;
private int classifierID;
- public CDOClassRefImpl()
+ public CDOClassifierRef()
+ {
+ }
+
+ public CDOClassifierRef(EClassifier classifier)
{
+ this(classifier.getEPackage().getNsURI(), classifier.getClassifierID());
}
- public CDOClassRefImpl(String packageURI, int classifierID)
+ public CDOClassifierRef(String packageURI, int classifierID)
{
this.packageURI = packageURI;
this.classifierID = classifierID;
}
- public CDOClassRefImpl(CDODataInput in) throws IOException
+ public CDOClassifierRef(CDODataInput in) throws IOException
{
packageURI = in.readCDOPackageURI();
classifierID = in.readInt();
@@ -63,20 +67,20 @@ public final class CDOClassRefImpl implements CDOClassRef
return classifierID;
}
- public CDOClass resolve(CDOPackageManager packageManager)
+ public EClassifier resolve(EPackage.Registry packageRegistry)
{
- CDOPackage cdoPackage = packageManager.lookupPackage(packageURI);
- if (cdoPackage != null)
+ EPackage ePackage = packageRegistry.getEPackage(packageURI);
+ if (ePackage == null)
{
- return cdoPackage.lookupClass(classifierID);
+ throw new IllegalStateException("Package not found: " + packageURI);
}
- return null;
+ return EMFUtil.getClassifier(ePackage, classifierID);
}
@Override
public String toString()
{
- return MessageFormat.format("CDOClassRef({0}, {1})", packageURI, classifierID);
+ return MessageFormat.format("EClassRef({0}, {1})", packageURI, classifierID);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOFeature.java
deleted file mode 100644
index adfdd20feb..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOFeature.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOFeature extends CDOModelElement
-{
- public int getFeatureID();
-
- public int getFeatureIndex();
-
- public CDOType getType();
-
- public boolean isMany();
-
- public boolean isReference();
-
- public boolean isContainment();
-
- public CDOClass getReferenceType();
-
- /**
- * @since 2.0
- */
- public Object getDefaultValue();
-
- public CDOClass getContainingClass();
-
- public CDOPackage getContainingPackage();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassRef.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelConstants.java
index c4352de1d1..ced2f65a80 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassRef.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelConstants.java
@@ -13,12 +13,10 @@ package org.eclipse.emf.cdo.common.model;
/**
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
+ * @since 2.0
*/
-public interface CDOClassRef
+public interface CDOModelConstants
{
- public String getPackageURI();
- public int getClassifierID();
-
- public CDOClass resolve(CDOPackageManager packageManager);
+ public static final String RESOURCE_NODE_NAME_ATTRIBUTE = "name";
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
index aa801384f2..870501968b 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java
@@ -10,23 +10,131 @@
*/
package org.eclipse.emf.cdo.common.model;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassRefImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageImpl;
+import org.eclipse.emf.cdo.internal.common.model.CDOClassInfoImpl;
+import org.eclipse.emf.cdo.internal.common.model.CDOPackageInfoImpl;
+import org.eclipse.emf.cdo.internal.common.model.CDOPackageUnitImpl;
import org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl;
+import org.eclipse.net4j.util.io.ExtendedDataInput;
+import org.eclipse.net4j.util.io.ExtendedDataOutput;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
/**
+ * @since 2.0
* @author Eike Stepper
*/
public final class CDOModelUtil
{
+ public static final String CORE_PACKAGE_URI = "http://www.eclipse.org/emf/2002/Ecore";
+
+ public static final String RESOURCE_PACKAGE_URI = "http://www.eclipse.org/emf/CDO/Eresource/2.0.0";
+
+ public static final String RESOURCE_NODE_CLASS_NAME = "CDOResourceNode";
+
+ public static final String RESOURCE_FOLDER_CLASS_NAME = "CDOResourceFolder";
+
+ public static final String RESOURCE_CLASS_NAME = "CDOResource";
+
+ public static final String ROOT_CLASS_NAME = "EObject";
+
+ private static CDOType[] coreTypes;
+
+ static
+ {
+ List<CDOType> types = new ArrayList<CDOType>();
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBigDecimal(), null);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBigInteger(), null);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBooleanObject(), CDOType.BOOLEAN_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEBoolean(), CDOType.BOOLEAN);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEByteArray(), CDOType.BYTE_ARRAY);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEByteObject(), CDOType.BYTE_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEByte(), CDOType.BYTE);
+ registerCoreType(types, EcorePackage.eINSTANCE.getECharacterObject(), CDOType.CHARACTER_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEChar(), CDOType.CHAR);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEDate(), CDOType.DATE);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEDoubleObject(), CDOType.DOUBLE_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEDouble(), CDOType.DOUBLE);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEFloatObject(), CDOType.FLOAT_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEFloat(), CDOType.FLOAT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEIntegerObject(), CDOType.INTEGER_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEInt(), CDOType.INT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEJavaClass(), null);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEJavaObject(), null);
+ registerCoreType(types, EcorePackage.eINSTANCE.getELongObject(), CDOType.LONG_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getELong(), CDOType.LONG);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEShortObject(), CDOType.SHORT_OBJECT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEShort(), CDOType.SHORT);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEString(), CDOType.STRING);
+ registerCoreType(types, EcorePackage.eINSTANCE.getEEnum(), CDOType.ENUM);
+
+ coreTypes = types.toArray(new CDOType[types.size()]);
+ }
+
+ private static void registerCoreType(List<CDOType> types, EClassifier classifier, CDOType type)
+ {
+ int index = classifier.getClassifierID();
+ while (index >= types.size())
+ {
+ types.add(null);
+ }
+
+ types.set(index, type);
+ }
+
private CDOModelUtil()
{
}
- // ///////////////////////////////////////////////
+ public static boolean isCorePackage(EPackage ePackage)
+ {
+ return CORE_PACKAGE_URI.equals(ePackage.getNsURI());
+ }
+
+ public static boolean isResourcePackage(EPackage ePackage)
+ {
+ return RESOURCE_PACKAGE_URI.equals(ePackage.getNsURI());
+ }
+
+ public static boolean isSystemPackage(EPackage ePackage)
+ {
+ return isCorePackage(ePackage) || isResourcePackage(ePackage);
+ }
+
+ public static boolean isResource(EClass eClass)
+ {
+ return isResourcePackage(eClass.getEPackage()) && RESOURCE_CLASS_NAME.equals(eClass.getName());
+ }
+
+ public static boolean isResourceFolder(EClass eClass)
+ {
+ return isResourcePackage(eClass.getEPackage()) && RESOURCE_FOLDER_CLASS_NAME.equals(eClass.getName());
+ }
+
+ public static boolean isResourceNode(EClass eClass)
+ {
+ return isResourcePackage(eClass.getEPackage())
+ && (RESOURCE_NODE_CLASS_NAME.equals(eClass.getName()) || RESOURCE_CLASS_NAME.equals(eClass.getName()) || RESOURCE_FOLDER_CLASS_NAME
+ .equals(eClass.getName()));
+ }
+
+ public static boolean isRoot(EClass eClass)
+ {
+ return isCorePackage(eClass.getEPackage()) && ROOT_CLASS_NAME.equals(eClass.getName());
+ }
public static CDOType getType(int typeID)
{
@@ -39,40 +147,146 @@ public final class CDOModelUtil
return type;
}
- public static CDOPackage createPackage(CDOPackageManager packageManager, String packageURI, String name,
- String ecore, boolean dynamic, CDOIDMetaRange metaIDRange, String parentURI)
+ public static CDOType getType(EClassifier classifier)
+ {
+ if (classifier instanceof EClass)
+ {
+ return CDOType.OBJECT;
+ }
+
+ if (isCorePackage(classifier.getEPackage()))
+ {
+ EDataType eDataType = (EDataType)classifier;
+ return getCoreType(eDataType);
+ }
+
+ return CDOType.CUSTOM;
+ }
+
+ /**
+ * Core types includes also complex data like EAnnotation, and EEnum
+ */
+ public static CDOType getCoreType(EClassifier eDataType)
{
- return new CDOPackageImpl(packageManager, packageURI, name, ecore, dynamic, metaIDRange, parentURI);
+ int index = eDataType.getClassifierID();
+ return coreTypes[index];
}
- public static CDOPackage createProxyPackage(CDOPackageManager packageManager, String packageURI, boolean dynamic,
- CDOIDMetaRange metaIDRange, String parentURI)
+ public static CDOType getPrimitiveType(Class<? extends Object> primitiveType)
{
- return new CDOPackageImpl(packageManager, packageURI, dynamic, metaIDRange, parentURI);
+ if (primitiveType == String.class)
+ {
+ return CDOType.STRING;
+ }
+
+ if (primitiveType == Boolean.class)
+ {
+ return CDOType.BOOLEAN;
+ }
+
+ if (primitiveType == Integer.class)
+ {
+ return CDOType.INT;
+ }
+
+ if (primitiveType == Double.class)
+ {
+ return CDOType.DOUBLE;
+ }
+
+ if (primitiveType == Float.class)
+ {
+ return CDOType.FLOAT;
+ }
+
+ if (primitiveType == Long.class)
+ {
+ return CDOType.LONG;
+ }
+
+ if (primitiveType == Date.class)
+ {
+ return CDOType.DATE;
+ }
+
+ if (primitiveType == Byte.class)
+ {
+ return CDOType.BYTE;
+ }
+
+ if (primitiveType == Character.class)
+ {
+ return CDOType.CHAR;
+ }
+
+ throw new IllegalArgumentException("Not a primitive type nor String nor Date: " + primitiveType);
}
- public static CDOClass createClass(CDOPackage containingPackage, int classifierID, String name, boolean isAbstract)
+ public static CDOPackageInfo getPackageInfo(Object value, CDOPackageRegistry packageRegistry)
{
- return new CDOClassImpl(containingPackage, classifierID, name, isAbstract);
+ if (value instanceof EPackage)
+ {
+ return packageRegistry.getPackageInfo((EPackage)value);
+ }
+
+ if (value instanceof CDOPackageInfo)
+ {
+ CDOPackageInfo packageInfo = (CDOPackageInfo)value;
+ if (packageInfo.getPackageUnit().getPackageRegistry() == packageRegistry)
+ {
+ return packageInfo;
+ }
+ }
+
+ return null;
}
- /**
- * @since 2.0
- */
- public static CDOFeature createAttribute(CDOClass containingClass, int featureID, String name, CDOType type,
- Object defaultValue, boolean many)
+ public static CDOClassInfo getClassInfo(EClass eClass)
+ {
+ synchronized (eClass)
+ {
+ EList<Adapter> adapters = eClass.eAdapters();
+ CDOClassInfo classInfo = (CDOClassInfo)EcoreUtil.getAdapter(adapters, CDOClassInfo.class);
+ if (classInfo == null)
+ {
+ classInfo = new CDOClassInfoImpl();
+ adapters.add(classInfo);
+ }
+
+ return classInfo;
+ }
+ }
+
+ public static EStructuralFeature[] getAllPersistentFeatures(EClass eClass)
+ {
+ CDOClassInfo classInfo = getClassInfo(eClass);
+ return classInfo.getAllPersistentFeatures();
+ }
+
+ public static CDOPackageUnit createPackageUnit()
+ {
+ return new CDOPackageUnitImpl();
+ }
+
+ public static CDOPackageInfo createPackageInfo()
{
- return new CDOFeatureImpl(containingClass, featureID, name, type, defaultValue, many);
+ return new CDOPackageInfoImpl();
}
- public static CDOFeature createReference(CDOClass containingClass, int featureID, String name,
- CDOClassProxy referenceType, boolean many, boolean containment)
+ public static void writePackage(ExtendedDataOutput out, EPackage ePackage, boolean zipped,
+ EPackage.Registry packageRegistry) throws IOException
{
- return new CDOFeatureImpl(containingClass, featureID, name, referenceType, many, containment);
+ byte[] bytes = EMFUtil.getEPackageBytes(ePackage, zipped, packageRegistry);
+ out.writeString(ePackage.getNsURI());
+ out.writeBoolean(zipped);
+ out.writeByteArray(bytes);
}
- public static CDOClassRef createClassRef(String packageURI, int classifierID)
+ public static EPackage readPackage(ExtendedDataInput in, EPackage.Registry packageRegistry) throws IOException
{
- return new CDOClassRefImpl(packageURI, classifierID);
+ String uri = in.readString();
+ boolean zipped = in.readBoolean();
+ byte[] bytes = in.readByteArray();
+ return EMFUtil.createEPackage(uri, bytes, zipped, packageRegistry);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackage.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackage.java
deleted file mode 100644
index 6e6935b239..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackage.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOPackage extends CDOModelElement, Comparable<CDOPackage>
-{
- public CDOPackageManager getPackageManager();
-
- public String getPackageURI();
-
- public int getClassCount();
-
- public CDOClass[] getClasses();
-
- public CDOClass[] getConcreteClasses();
-
- public CDOClass lookupClass(int classifierID);
-
- public String getEcore();
-
- public boolean isSystem();
-
- public boolean isDynamic();
-
- public boolean isProxy();
-
- public boolean isPersistent();
-
- public CDOIDMetaRange getMetaIDRange();
-
- public String getParentURI();
-
- public CDOPackage getParentPackage();
-
- public CDOPackage getTopLevelPackage();
-
- public CDOPackage[] getSubPackages(boolean recursive);
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageInfo.java
index 86b229b34c..6a23482ca1 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageInfo.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageInfo.java
@@ -12,48 +12,28 @@ package org.eclipse.emf.cdo.common.model;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-/*
- * TODO Add read(), write(), ...
- */
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.ecore.EPackage;
/**
* @author Eike Stepper
*/
-public final class CDOPackageInfo
+public interface CDOPackageInfo extends Adapter, EPackage.Descriptor, Comparable<CDOPackageInfo>
{
- private String packageURI;
+ public CDOPackageUnit getPackageUnit();
- private boolean dynamic;
+ public String getPackageURI();
- private CDOIDMetaRange metaIDRange;
+ public String getParentURI();
- private String parentURI;
+ public CDOIDMetaRange getMetaIDRange();
- public CDOPackageInfo(String packageURI, boolean dynamic, CDOIDMetaRange metaIDRange, String parentURI)
- {
- this.packageURI = packageURI;
- this.dynamic = dynamic;
- this.metaIDRange = metaIDRange;
- this.parentURI = parentURI;
- }
+ public EPackage getEPackage(boolean loadOnDemand);
- public String getPackageURI()
- {
- return packageURI;
- }
+ public boolean isCorePackage();
- public boolean isDynamic()
- {
- return dynamic;
- }
+ public boolean isResourcePackage();
- public CDOIDMetaRange getMetaIDRange()
- {
- return metaIDRange;
- }
+ public boolean isSystemPackage();
- public String getParentURI()
- {
- return parentURI;
- }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageManager.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageManager.java
deleted file mode 100644
index 6322be5089..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageManager.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-
-import org.eclipse.net4j.util.container.IContainer;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOPackageManager extends IContainer<CDOPackage>
-{
- public CDOIDObjectFactory getCDOIDObjectFactory();
-
- public int getPackageCount();
-
- public CDOPackage[] getPackages();
-
- public CDOPackage lookupPackage(String packageURI);
-
- public CDOCorePackage getCDOCorePackage();
-
- public CDOResourcePackage getCDOResourcePackage();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistry.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistry.java
new file mode 100644
index 0000000000..e9bee51d3f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistry.java
@@ -0,0 +1,40 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.model;
+
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * @author Eike Stepper
+ */
+public interface CDOPackageRegistry extends EPackage.Registry
+{
+ public boolean isReplacingDescriptors();
+
+ /**
+ * Registers an {@link EPackage} with this package registry.
+ */
+ public Object putEPackage(EPackage ePackage);
+
+ public CDOPackageUnit getPackageUnit(EPackage ePackage);
+
+ /**
+ * Returns all package units that are registered in this package registry.
+ */
+ public CDOPackageUnit[] getPackageUnits();
+
+ public CDOPackageInfo getPackageInfo(EPackage ePackage);
+
+ /**
+ * Returns all package infos that are registered in this package registry.
+ */
+ public CDOPackageInfo[] getPackageInfos();
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.java
new file mode 100644
index 0000000000..5fe885ef30
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageRegistryPopulator.java
@@ -0,0 +1,139 @@
+package org.eclipse.emf.cdo.common.model;
+
+import org.eclipse.net4j.util.concurrent.Worker;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+
+import java.util.Map.Entry;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOPackageRegistryPopulator extends Worker
+{
+ public static final int DEFAULT_SOURCE_POLL_INTERVAL = 5000;
+
+ private long sourcePollInterval = DEFAULT_SOURCE_POLL_INTERVAL;
+
+ private EPackage.Registry source;
+
+ private CDOPackageRegistry target;
+
+ public CDOPackageRegistryPopulator(CDOPackageRegistry target)
+ {
+ this(EPackage.Registry.INSTANCE, target);
+ }
+
+ public CDOPackageRegistryPopulator(EPackage.Registry source, CDOPackageRegistry target)
+ {
+ this.source = source;
+ this.target = target;
+ }
+
+ public EPackage.Registry getSource()
+ {
+ return source;
+ }
+
+ public CDOPackageRegistry getTarget()
+ {
+ return target;
+ }
+
+ public long getSourcePollInterval()
+ {
+ return sourcePollInterval;
+ }
+
+ public void setSourcePollInterval(long sourcePollInterval)
+ {
+ this.sourcePollInterval = sourcePollInterval;
+ }
+
+ @Override
+ protected void work(WorkContext context) throws Exception
+ {
+ doWork();
+ context.nextWork(getSourcePollInterval());
+ }
+
+ protected void doWork()
+ {
+ populate(getSource(), getTarget());
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ doWork();
+ super.doActivate();
+ }
+
+ public static boolean populate(CDOPackageRegistry target)
+ {
+ return populate(EPackage.Registry.INSTANCE, target);
+ }
+
+ public static boolean populate(EPackage.Registry source, CDOPackageRegistry target)
+ {
+ boolean populated = false;
+ while (populateFirstMatch(source, target))
+ {
+ populated = true;
+ }
+
+ return populated;
+ }
+
+ private static boolean populateFirstMatch(EPackage.Registry source, CDOPackageRegistry target)
+ {
+ for (Entry<String, Object> entry : source.entrySet())
+ {
+ String nsURI = entry.getKey();
+ if (!target.containsKey(nsURI))
+ {
+ target.put(nsURI, new Descriptor(source, nsURI));
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Descriptor implements EPackage.Descriptor
+ {
+ private EPackage.Registry source;
+
+ private String nsURI;
+
+ public Descriptor(EPackage.Registry source, String nsURI)
+ {
+ this.source = source;
+ this.nsURI = nsURI;
+ }
+
+ public EPackage.Registry getSource()
+ {
+ return source;
+ }
+
+ public String getNsURI()
+ {
+ return nsURI;
+ }
+
+ public EFactory getEFactory()
+ {
+ return source.getEFactory(nsURI);
+ }
+
+ public EPackage getEPackage()
+ {
+ return source.getEPackage(nsURI);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageTypeRegistry.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageTypeRegistry.java
new file mode 100644
index 0000000000..f333ce7794
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageTypeRegistry.java
@@ -0,0 +1,219 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.model;
+
+import org.eclipse.net4j.util.ObjectUtil;
+import org.eclipse.net4j.util.om.OMPlatform;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public final class CDOPackageTypeRegistry
+{
+ public static final CDOPackageTypeRegistry INSTANCE = new CDOPackageTypeRegistry();
+
+ private static final String ECORE_ID = "org.eclipse.emf.ecore";
+
+ private static final String PPID = EcorePlugin.GENERATED_PACKAGE_PPID;
+
+ private static final String MARKER_FILE = "META-INF/CDO.MF";
+
+ private Map<String, CDOPackageUnit.Type> types = new HashMap<String, CDOPackageUnit.Type>();
+
+ private Map<String, CDOPackageUnit.Type> bundles = new HashMap<String, CDOPackageUnit.Type>();
+
+ private CDOPackageTypeRegistry()
+ {
+ }
+
+ public synchronized CDOPackageUnit.Type register(EPackage ePackage)
+ {
+ CDOPackageUnit.Type type = getPackageType(ePackage);
+ types.put(ePackage.getNsURI(), type);
+ return type;
+ }
+
+ public synchronized void registerNative(String packageURI)
+ {
+ types.put(packageURI, CDOPackageUnit.Type.NATIVE);
+ }
+
+ public synchronized void registerLegacy(String packageURI)
+ {
+ types.put(packageURI, CDOPackageUnit.Type.LEGACY);
+ }
+
+ public synchronized void registerDynamic(String packageURI)
+ {
+ types.put(packageURI, CDOPackageUnit.Type.DYNAMIC);
+ }
+
+ public synchronized CDOPackageUnit.Type deregister(String packageURI)
+ {
+ return types.remove(packageURI);
+ }
+
+ public synchronized CDOPackageUnit.Type lookup(String packageURI)
+ {
+ CDOPackageUnit.Type type = types.get(packageURI);
+ if (type == null)
+ {
+ Object value = EPackage.Registry.INSTANCE.get(packageURI);
+ if (value instanceof EPackage)
+ {
+ EPackage ePackage = (EPackage)value;
+ type = register(ePackage);
+ }
+
+ if (type == null && OMPlatform.INSTANCE.isExtensionRegistryAvailable())
+ {
+ type = getTypeFromBundle(packageURI);
+ types.put(packageURI, type);
+ }
+ }
+
+ return type;
+ }
+
+ public synchronized CDOPackageUnit.Type lookup(EPackage ePackage)
+ {
+ String packageURI = ePackage.getNsURI();
+ CDOPackageUnit.Type type = types.get(packageURI);
+ if (type == null)
+ {
+ type = register(ePackage);
+ types.put(packageURI, type);
+ }
+
+ return type;
+ }
+
+ public synchronized void reset()
+ {
+ types.clear();
+ bundles.clear();
+ }
+
+ private CDOPackageUnit.Type getTypeFromBundle(String packageURI)
+ {
+ String bundleID = getBundleID(packageURI);
+ if (bundleID == null)
+ {
+ return CDOPackageUnit.Type.UNKNOWN;
+ }
+
+ CDOPackageUnit.Type type = bundles.get(bundleID);
+ if (type == null)
+ {
+ org.osgi.framework.Bundle bundle = org.eclipse.core.runtime.Platform.getBundle(bundleID);
+ if (bundle == null)
+ {
+ type = CDOPackageUnit.Type.UNKNOWN;
+ }
+ else if (bundle.getEntry(MARKER_FILE) != null)
+ {
+ type = CDOPackageUnit.Type.NATIVE;
+ }
+ else
+ {
+ type = CDOPackageUnit.Type.LEGACY;
+ }
+
+ bundles.put(bundleID, type);
+ }
+
+ return type;
+ }
+
+ private static String getBundleID(String packageURI)
+ {
+ org.eclipse.core.runtime.IExtensionRegistry registry = org.eclipse.core.runtime.Platform.getExtensionRegistry();
+ for (org.eclipse.core.runtime.IConfigurationElement element : registry.getConfigurationElementsFor(ECORE_ID, PPID))
+ {
+ String uri = element.getAttribute("uri");
+ if (ObjectUtil.equals(uri, packageURI))
+ {
+ return element.getContributor().getName();
+ }
+ }
+
+ return null;
+ }
+
+ private static CDOPackageUnit.Type getPackageType(EPackage ePackage)
+ {
+ if (ePackage.getClass() == EPackageImpl.class)
+ {
+ return CDOPackageUnit.Type.DYNAMIC;
+ }
+
+ EPackage topLevelPackage = EMFUtil.getTopLevelPackage(ePackage);
+ EClass eClass = getAnyConcreteEClass(topLevelPackage);
+ if (eClass != null)
+ {
+ EObject testObject = EcoreUtil.create(eClass);
+ if (testObject instanceof CDOObjectMarker)
+ {
+ return CDOPackageUnit.Type.NATIVE;
+ }
+
+ return CDOPackageUnit.Type.LEGACY;
+ }
+
+ return null;
+ }
+
+ private static EClass getAnyConcreteEClass(EPackage ePackage)
+ {
+ for (EClassifier classifier : ePackage.getEClassifiers())
+ {
+ if (classifier instanceof EClass)
+ {
+ EClass eClass = (EClass)classifier;
+ if (!(eClass.isAbstract() || eClass.isInterface()))
+ {
+ return eClass;
+ }
+ }
+ }
+
+ for (EPackage subpackage : ePackage.getESubpackages())
+ {
+ EClass eClass = getAnyConcreteEClass(subpackage);
+ if (eClass != null)
+ {
+ return eClass;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * TODO Remove me when client and common are unified!
+ *
+ * @author Eike Stepper
+ */
+ public static interface CDOObjectMarker
+ {
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageURICompressor.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageURICompressor.java
deleted file mode 100644
index f1d18c46b4..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageURICompressor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model;
-
-import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataOutput;
-
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- * @since 2.0
- */
-public interface CDOPackageURICompressor
-{
- public static final CDOPackageURICompressor UNCOMPRESSED = new CDOPackageURICompressor()
- {
- public String readPackageURI(ExtendedDataInput in) throws IOException
- {
- return in.readString();
- }
-
- public void writePackageURI(ExtendedDataOutput out, String uri) throws IOException
- {
- out.writeString(uri);
- }
-
- @Override
- public String toString()
- {
- return "UNCOMPRESSED";
- }
- };
-
- public void writePackageURI(ExtendedDataOutput out, String uri) throws IOException;
-
- public String readPackageURI(ExtendedDataInput in) throws IOException;
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageUnit.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageUnit.java
new file mode 100644
index 0000000000..36443d6224
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOPackageUnit.java
@@ -0,0 +1,71 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.model;
+
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * @author Eike Stepper
+ */
+public interface CDOPackageUnit extends Comparable<CDOPackageUnit>
+{
+ public CDOPackageRegistry getPackageRegistry();
+
+ public String getID();
+
+ public State getState();
+
+ public Type getType();
+
+ public Type getOriginalType();
+
+ public long getTimeStamp();
+
+ public CDOPackageInfo getTopLevelPackageInfo();
+
+ public CDOPackageInfo getPackageInfo(String packageURI);
+
+ public CDOPackageInfo[] getPackageInfos();
+
+ public EPackage[] getEPackages(boolean loadOnDemand);
+
+ public boolean isSystem();
+
+ /**
+ * @author Eike Stepper
+ */
+ public enum State
+ {
+ NEW, LOADED, PROXY, DISPOSED
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public enum Type
+ {
+ NATIVE, LEGACY, DYNAMIC, UNKNOWN;
+
+ public boolean isGenerated()
+ {
+ checkNotUnknown();
+ return this == NATIVE || this == LEGACY;
+ }
+
+ public void checkNotUnknown()
+ {
+ if (this == UNKNOWN)
+ {
+ throw new IllegalStateException("Package unit type is unknown");
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java
index 28c668ee30..cb3f5e4be9 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java
@@ -62,13 +62,15 @@ public interface CDOType
public static final CDOType BYTE_ARRAY = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.BYTE_ARRAY;
+ public static final CDOType ENUM = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.ENUM;
+
+ public static final CDOType CUSTOM = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.CUSTOM;
+
/**
* @since 2.0
*/
public static final CDOType FEATURE_MAP_ENTRY = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.FEATURE_MAP_ENTRY;
- public static final CDOType CUSTOM = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.CUSTOM;
-
public String getName();
public int getTypeID();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/EMFUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java
index 4b0c3f82e1..5d68c398fb 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/EMFUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java
@@ -10,12 +10,13 @@
* Victor Roldan Betancort - http://bugs.eclipse.org/244801
* Simon McDuff - maintenance
*/
-package org.eclipse.emf.cdo.util;
-
-import org.eclipse.emf.internal.cdo.CDOFactoryImpl;
+package org.eclipse.emf.cdo.common.model;
+import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.io.IORuntimeException;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
@@ -34,17 +35,21 @@ import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
-import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
/**
* @author Eike Stepper
@@ -52,12 +57,68 @@ import java.util.List;
*/
public final class EMFUtil
{
- private static final String ECORE_ENCODING = "ASCII";
-
private EMFUtil()
{
}
+ public static Map.Entry<String, Object>[] getSortedRegistryEntries(EPackage.Registry packageRegistry)
+ {
+ Set<Map.Entry<String, Object>> entries = packageRegistry.entrySet();
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, Object>[] array = entries.toArray(new Entry[entries.size()]);
+ Arrays.sort(array, new Comparator<Map.Entry<String, Object>>()
+ {
+ public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2)
+ {
+ return o1.getKey().compareTo(o2.getKey());
+ }
+ });
+
+ return array;
+ }
+
+ public static void registerPackage(EPackage ePackage, EPackage.Registry... packageRegistries)
+ {
+ ePackage.getClass(); // Initialize package in standalone mode
+ if (packageRegistries == null || packageRegistries.length == 0)
+ {
+ EPackage.Registry[] globalRegistry = { EPackage.Registry.INSTANCE };
+ packageRegistries = globalRegistry;
+ }
+
+ for (EPackage.Registry packageRegistry : packageRegistries)
+ {
+ packageRegistry.put(ePackage.getNsURI(), ePackage);
+ }
+ }
+
+ public static EClassifier getClassifier(EPackage ePackage, int classifierID)
+ {
+ EList<EClassifier> classifiers = ePackage.getEClassifiers();
+ for (EClassifier classifier : classifiers)
+ {
+ if (classifier.getClassifierID() == classifierID)
+ {
+ return classifier;
+ }
+ }
+
+ return null;
+ }
+
+ public static String getParentURI(EPackage ePackage)
+ {
+ EPackage superPackage = ePackage.getESuperPackage();
+ String parentURI = superPackage == null ? null : superPackage.getNsURI();
+ return parentURI;
+ }
+
+ public static EPackage getTopLevelPackage(EPackage ePackage)
+ {
+ EPackage superPackage = ePackage.getESuperPackage();
+ return superPackage == null ? ePackage : getTopLevelPackage(superPackage);
+ }
+
/**
* @since 2.0
*/
@@ -224,7 +285,25 @@ public final class EMFUtil
return count;
}
- public static List<EClass> getPersistentClasses(EPackage ePackage)
+ public static EClass[] getConcreteClasses(EPackage ePackage)
+ {
+ List<EClass> result = new ArrayList<EClass>(0);
+ for (EClassifier classifier : ePackage.getEClassifiers())
+ {
+ if (classifier instanceof EClass)
+ {
+ EClass eClass = (EClass)classifier;
+ if (!eClass.isAbstract() && !eClass.isInterface())
+ {
+ result.add(eClass);
+ }
+ }
+ }
+
+ return result.toArray(new EClass[result.size()]);
+ }
+
+ public static EClass[] getPersistentClasses(EPackage ePackage)
{
List<EClass> result = new ArrayList<EClass>();
for (EClassifier classifier : ePackage.getEClassifiers())
@@ -235,7 +314,7 @@ public final class EMFUtil
}
}
- return result;
+ return result.toArray(new EClass[result.size()]);
}
public static List<EStructuralFeature> getPersistentFeatures(EList<EStructuralFeature> eFeatures)
@@ -281,20 +360,6 @@ public final class EMFUtil
return value.getClass() == EPackageImpl.class;
}
- /**
- * @since 2.0
- */
- public static boolean prepareDynamicEPackage(EPackage ePackage)
- {
- if (isDynamicEPackage(ePackage))
- {
- ePackage.setEFactoryInstance(new CDOFactoryImpl(ePackage));
- return true;
- }
-
- return false;
- }
-
public static boolean isMany(EStructuralFeature eFeature)
{
return eFeature.isMany();
@@ -316,63 +381,120 @@ public final class EMFUtil
return false;
}
- public static EPackage ePackageFromString(String ecore)
+ public static byte[] getEPackageBytes(EPackage ePackage, boolean zipped, EPackage.Registry packageRegistry)
{
try
{
- ByteArrayInputStream stream = new ByteArrayInputStream(ecore.getBytes(ECORE_ENCODING));
- XMIResource resource = new XMIResourceImpl();
- resource.load(stream, null);
- return (EPackage)resource.getContents().get(0);
- }
- catch (RuntimeException ex)
- {
- throw ex;
+ Resource resource = ePackage.eResource();
+ if (resource == null)
+ {
+ resource = createEcoreResource(ePackage.getNsURI(), packageRegistry);
+ resource.getContents().add(ePackage);
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ resource.save(baos, createResourceOptions(zipped));
+ return baos.toByteArray();
}
- catch (IOException ex)
+ catch (Exception ex)
{
- throw new IORuntimeException(ex);
+ throw WrappedException.wrap(ex);
}
}
- public static String ePackageToString(EPackage ePackage, EPackage.Registry packageRegistry)
+ public static EPackage createEPackage(String uri, byte[] bytes, boolean zipped, EPackage.Registry packageRegistry)
{
- synchronized (EMFUtil.class)
+ try
{
- ePackage = (EPackage)EcoreUtil.copy(ePackage);
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ Resource resource = createEcoreResource(uri, packageRegistry);
+ resource.load(bais, createResourceOptions(zipped));
+
+ EList<EObject> contents = resource.getContents();
+ return (EPackage)contents.get(0);
+ }
+ catch (Exception ex)
+ {
+ throw WrappedException.wrap(ex);
}
+ }
- Resource.Factory resourceFactory = new XMIResourceFactoryImpl();
- ResourceSetImpl resourceSet = new ResourceSetImpl();
+ private static Resource createEcoreResource(String uri, EPackage.Registry packageRegistry)
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.setPackageRegistry(packageRegistry);
- Resource.Factory.Registry registry = resourceSet.getResourceFactoryRegistry();
- registry.getExtensionToFactoryMap().put("*", resourceFactory);
- registry.getProtocolToFactoryMap().put("*", resourceFactory);
+ Resource.Factory resourceFactory = new EcoreResourceFactoryImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", resourceFactory);
+ resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put("*", resourceFactory);
- Resource packageResource = createPackageResource(resourceSet, ePackage);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ return resourceSet.createResource(URI.createURI(uri));
+ }
- try
+ private static Map<String, Object> createResourceOptions(boolean zipped)
+ {
+ Map<String, Object> options = new HashMap<String, Object>();
+ if (zipped)
{
- packageResource.save(stream, null);
- String string = stream.toString(ECORE_ENCODING);
- return string;
+ options.put(Resource.OPTION_ZIP, true);
}
- catch (RuntimeException ex)
+
+ return options;
+ }
+
+ public static void addAdapter(Notifier notifier, Adapter adapter)
+ {
+ synchronized (notifier)
{
- throw ex;
+ EList<Adapter> adapters = notifier.eAdapters();
+ if (!adapters.contains(adapter))
+ {
+ adapters.add(adapter);
+ }
}
- catch (IOException ex)
+ }
+
+ public static EPackage[] getAllPackages(EPackage ePackage)
+ {
+ List<EPackage> result = new ArrayList<EPackage>();
+ getAllPackages(ePackage, result);
+ return result.toArray(new EPackage[result.size()]);
+ }
+
+ private static void getAllPackages(EPackage ePackage, List<EPackage> result)
+ {
+ result.add(ePackage);
+ for (EPackage subPackage : ePackage.getESubpackages())
{
- throw new IORuntimeException(ex);
+ getAllPackages(subPackage, result);
}
}
- private static Resource createPackageResource(ResourceSetImpl resourceSet, EPackage ePackage)
+ public static String getQualifiedName(EPackage ePackage, String separator)
{
- URI uri = URI.createURI(ePackage.getNsURI());
- Resource resource = resourceSet.createResource(uri);
- resource.getContents().add(ePackage);
- return resource;
+ StringBuilder builder = new StringBuilder();
+ EPackage eSuperPackage = ePackage.getESuperPackage();
+ if (eSuperPackage != null)
+ {
+ builder.append(getQualifiedName(eSuperPackage, separator));
+ builder.append(separator);
+ }
+
+ builder.append(ePackage.getName());
+ return builder.toString();
+ }
+
+ public static String getQualifiedName(EClassifier classifier, String separator)
+ {
+ StringBuilder builder = new StringBuilder();
+ EPackage ePackage = classifier.getEPackage();
+ if (ePackage != null)
+ {
+ builder.append(getQualifiedName(ePackage, separator));
+ builder.append(separator);
+ }
+
+ builder.append(classifier.getName());
+ return builder.toString();
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOCorePackage.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOCorePackage.java
deleted file mode 100644
index d80e05a854..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOCorePackage.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.core;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOCorePackage extends CDOPackage
-{
- public static final String PACKAGE_URI = "http://www.eclipse.org/emf/CDO/core/1.0.0";
-
- public static final String NAME = "cdocore";
-
- public CDOObjectClass getCDOObjectClass();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOFeatureMapEntryDataType.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOFeatureMapEntryDataType.java
deleted file mode 100644
index bf172fa84e..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOFeatureMapEntryDataType.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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:
- * Simon McDuff - initial API and implementation
- * Eike Stepper - maintenance
- */
-package org.eclipse.emf.cdo.common.model.core;
-
-/**
- * @author Simon McDuff
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOFeatureMapEntryDataType
-{
- public String getURI();
-
- public Object getObject();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOObjectClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOObjectClass.java
deleted file mode 100644
index a3bfd43b08..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/core/CDOObjectClass.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.core;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOObjectClass extends CDOClass
-{
- public static final int CLASSIFIER_ID = 0;
-
- public static final String NAME = "CDOObject";
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOContentsFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOContentsFeature.java
deleted file mode 100644
index 6839b433d5..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOContentsFeature.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOContentsFeature extends CDOFeature
-{
- public static final int FEATURE_ID = 6;
-
- public static final String NAME = "contents";
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOFolderFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOFolderFeature.java
deleted file mode 100644
index 3b5bdf4dc3..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOFolderFeature.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOFolderFeature extends CDOFeature
-{
- public static final int FEATURE_ID = 0;
-
- public static final String NAME = "folder";
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONameFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONameFeature.java
deleted file mode 100644
index 58703d595d..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONameFeature.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDONameFeature extends CDOFeature
-{
- public static final int FEATURE_ID = 1;
-
- public static final String NAME = "name";
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONodesFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONodesFeature.java
deleted file mode 100644
index a052eb3cba..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDONodesFeature.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDONodesFeature extends CDOFeature
-{
- public static final int FEATURE_ID = 3;
-
- public static final String NAME = "nodes";
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceClass.java
deleted file mode 100644
index fa0ee1f005..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceClass.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOResourceClass extends CDOClass
-{
- public static final int CLASSIFIER_ID = 2;
-
- public static final String NAME = "CDOResource";
-
- public CDOContentsFeature getCDOContentsFeature();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceFolderClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceFolderClass.java
deleted file mode 100644
index 1f338e970a..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceFolderClass.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOResourceFolderClass extends CDOClass
-{
- public static final int CLASSIFIER_ID = 1;
-
- public static final String NAME = "CDOResourceFolder";
-
- public CDONodesFeature getCDONodesFeature();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceNodeClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceNodeClass.java
deleted file mode 100644
index e5190d6b4c..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourceNodeClass.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOResourceNodeClass extends CDOClass
-{
- public static final int CLASSIFIER_ID = 0;
-
- public static final String NAME = "CDOResourceNode";
-
- public CDOFolderFeature getCDOFolderFeature();
-
- public CDONameFeature getCDONameFeature();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourcePackage.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourcePackage.java
deleted file mode 100644
index 07c03350c7..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/resource/CDOResourcePackage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CDOResourcePackage extends CDOPackage
-{
- public static final String PACKAGE_URI = "http://www.eclipse.org/emf/CDO/resource/2.0.0";
-
- public static final String NAME = "cdoresource";
-
- /**
- * @since 2.0
- */
- public CDOResourceNodeClass getCDOResourceNodeClass();
-
- /**
- * @since 2.0
- */
- public CDOResourceFolderClass getCDOResourceFolderClass();
-
- public CDOResourceClass getCDOResourceClass();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
index 1eede47451..7a83b607f0 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java
@@ -33,7 +33,7 @@ public interface CDOProtocolConstants
public static final short SIGNAL_RESOURCE_ID = 4;
- public static final short SIGNAL_LOAD_PACKAGE = 6;
+ public static final short SIGNAL_LOAD_PACKAGES = 6;
public static final short SIGNAL_LOAD_REVISION = 7;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevision.java
index 37cfcfc2c0..21e44f2179 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevision.java
@@ -12,9 +12,10 @@
package org.eclipse.emf.cdo.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.ecore.EClass;
+
/**
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
@@ -30,7 +31,7 @@ public interface CDORevision
public static final int UNCHUNKED = -1;
- public CDOClass getCDOClass();
+ public EClass getEClass();
public CDOID getID();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionData.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionData.java
index eb4dfa518c..c1a7d08c8e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionData.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionData.java
@@ -11,7 +11,8 @@
package org.eclipse.emf.cdo.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Eike Stepper
@@ -33,21 +34,21 @@ public interface CDORevisionData
public int getContainingFeatureID();
- public Object get(CDOFeature feature, int index);
+ public Object get(EStructuralFeature feature, int index);
- public int size(CDOFeature feature);
+ public int size(EStructuralFeature feature);
- public boolean isEmpty(CDOFeature feature);
+ public boolean isEmpty(EStructuralFeature feature);
- public boolean contains(CDOFeature feature, Object value);
+ public boolean contains(EStructuralFeature feature, Object value);
- public int indexOf(CDOFeature feature, Object value);
+ public int indexOf(EStructuralFeature feature, Object value);
- public int lastIndexOf(CDOFeature feature, Object value);
+ public int lastIndexOf(EStructuralFeature feature, Object value);
- public <T> T[] toArray(CDOFeature feature, T[] array);
+ public <T> T[] toArray(EStructuralFeature feature, T[] array);
- public Object[] toArray(CDOFeature feature);
+ public Object[] toArray(EStructuralFeature feature);
- public int hashCode(CDOFeature feature);
+ public int hashCode(EStructuralFeature feature);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
index 440070fd21..b5964e5676 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
@@ -12,7 +12,8 @@ package org.eclipse.emf.cdo.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
+
+import org.eclipse.emf.ecore.EClass;
import java.io.IOException;
@@ -22,7 +23,7 @@ import java.io.IOException;
*/
public interface CDORevisionFactory
{
- public CDORevision createRevision(CDOClass cdoClass, CDOID id);
+ public CDORevision createRevision(EClass eClass, CDOID id);
public CDORevision createRevision(CDODataInput in) throws IOException;
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionResolver.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionResolver.java
index 2820a298bf..f8eb763e34 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionResolver.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionResolver.java
@@ -12,9 +12,10 @@ package org.eclipse.emf.cdo.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.Collection;
import java.util.List;
@@ -29,7 +30,7 @@ public interface CDORevisionResolver
/**
* @return The type of an object if a revision for that object is in the revision cache, <code>null</code> otherwise.
*/
- public CDOClass getObjectType(CDOID id);
+ public EClass getObjectType(CDOID id);
public boolean containsRevision(CDOID id);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
index a47ab5330a..7a8d2d725e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
@@ -13,11 +13,10 @@ package org.eclipse.emf.cdo.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.core.CDOFeatureMapEntryDataType;
-import org.eclipse.emf.cdo.internal.common.model.core.CDOFeatureMapEntryDataTypeImpl;
import org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl;
+import org.eclipse.emf.ecore.EClass;
+
import java.io.IOException;
import java.util.Map;
@@ -35,9 +34,9 @@ public final class CDORevisionUtil
/**
* @since 2.0
*/
- public static CDORevision create(CDOClass cdoClass, CDOID id)
+ public static CDORevision create(EClass eClass, CDOID id)
{
- return new CDORevisionImpl(cdoClass, id);
+ return new CDORevisionImpl(eClass, id);
}
/**
@@ -48,14 +47,6 @@ public final class CDORevisionUtil
return new CDORevisionImpl(in);
}
- /**
- * @since 2.0
- */
- public static CDOFeatureMapEntryDataType createFeatureMapEntry(String uri, Object value)
- {
- return new CDOFeatureMapEntryDataTypeImpl(uri, value);
- }
-
public static Object remapID(Object value, Map<CDOIDTemp, CDOID> idMappings)
{
return CDORevisionImpl.remapID(value, idMappings);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/cache/CDORevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/cache/CDORevisionCache.java
index 0c6a47c1cf..5aafc3499b 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/cache/CDORevisionCache.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/cache/CDORevisionCache.java
@@ -11,14 +11,14 @@
package org.eclipse.emf.cdo.common.revision.cache;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.net4j.util.event.INotifier;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.List;
/**
@@ -28,7 +28,7 @@ import java.util.List;
*/
public interface CDORevisionCache extends INotifier.Introspection
{
- public CDOClass getObjectType(CDOID id);
+ public EClass getObjectType(CDOID id);
public InternalCDORevision getRevision(CDOID id);
@@ -47,10 +47,6 @@ public interface CDORevisionCache extends INotifier.Introspection
public CDOID getResourceID(CDOID folderID, String name, long timeStamp);
- public CDOPackageManager getPackageManager();
-
- public void setPackageManager(CDOPackageManager packageManager);
-
public void clear();
/**
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOContainerFeatureDelta.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOContainerFeatureDelta.java
index e0679b784b..e826308445 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOContainerFeatureDelta.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOContainerFeatureDelta.java
@@ -13,7 +13,8 @@
package org.eclipse.emf.cdo.common.revision.delta;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Simon McDuff
@@ -24,7 +25,7 @@ public interface CDOContainerFeatureDelta extends CDOFeatureDelta
/**
* @since 2.0
*/
- public static final CDOFeature CONTAINER_FEATURE = new org.eclipse.emf.cdo.internal.common.revision.delta.CDOContainerFeatureDeltaImpl.ContainerFeature();
+ public static final EStructuralFeature CONTAINER_FEATURE = new org.eclipse.emf.cdo.internal.common.revision.delta.CDOContainerFeatureDeltaImpl.ContainerFeature();
/**
* @since 2.0
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java
index d40a5ce774..31c2ec95dd 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java
@@ -11,9 +11,10 @@
*/
package org.eclipse.emf.cdo.common.revision.delta;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Simon McDuff
* @noimplement This interface is not intended to be implemented by clients.
@@ -22,7 +23,7 @@ public interface CDOFeatureDelta
{
public Type getType();
- public CDOFeature getFeature();
+ public EStructuralFeature getFeature();
public void apply(CDORevision revision);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDeltaVisitor.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDeltaVisitor.java
index 3c9f138653..aa956755af 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDeltaVisitor.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDeltaVisitor.java
@@ -13,7 +13,6 @@ package org.eclipse.emf.cdo.common.revision.delta;
/**
* @author Simon McDuff
- * @noimplement This interface is not intended to be implemented by clients.
*/
public interface CDOFeatureDeltaVisitor
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
index 8ac6d7d434..27a9e9c5df 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
@@ -50,7 +50,7 @@ public class CDOQueryInfoImpl implements CDOQueryInfo
for (int i = 0; i < size; i++)
{
String key = in.readString();
- Object object = in.readCDORevisionOrPrimitiveOrClass();
+ Object object = in.readCDORevisionOrPrimitiveOrClassifier();
parameters.put(key, object);
}
}
@@ -65,7 +65,7 @@ public class CDOQueryInfoImpl implements CDOQueryInfo
for (Entry<String, Object> entry : parameters.entrySet())
{
out.writeString(entry.getKey());
- out.writeCDORevisionOrPrimitiveOrClass(entry.getValue());
+ out.writeCDORevisionOrPrimitiveOrClassifier(entry.getValue());
}
}
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 57d39a71a8..6af6bfe84a 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
@@ -11,6 +11,7 @@
*/
package org.eclipse.emf.cdo.internal.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDExternal;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOID;
@@ -96,4 +97,9 @@ public class CDOIDExternalImpl extends AbstractCDOID implements CDOIDExternal
return getClass().hashCode() ^ uri.hashCode();
}
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ return getURI().compareTo(((CDOIDExternalImpl)o).getURI());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDMetaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDMetaImpl.java
index 55c55f893e..a100939aad 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDMetaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDMetaImpl.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.internal.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMeta;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOIDLong;
@@ -35,4 +36,10 @@ public class CDOIDMetaImpl extends AbstractCDOIDLong implements CDOIDMeta
{
return "MID" + getLongValue();
}
+
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ return new Long(getLongValue()).compareTo(((CDOIDMetaImpl)o).getLongValue());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDNullImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDNullImpl.java
index f181074d48..7858c98303 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDNullImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDNullImpl.java
@@ -12,6 +12,7 @@
*/
package org.eclipse.emf.cdo.internal.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMeta;
import org.eclipse.emf.cdo.common.id.CDOIDObject;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
@@ -90,4 +91,11 @@ public final class CDOIDNullImpl extends AbstractCDOID implements CDOIDMeta, CDO
{
return "NULL";
}
+
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ ((CDOIDNullImpl)o).getIntValue(); // Possibly throw ClassCastException
+ return 0; // NULL == NULL
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempMetaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempMetaImpl.java
index 49d8030fa6..bf1840095e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempMetaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempMetaImpl.java
@@ -11,6 +11,7 @@
*/
package org.eclipse.emf.cdo.internal.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTempMeta;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOIDInteger;
@@ -36,4 +37,10 @@ public class CDOIDTempMetaImpl extends AbstractCDOIDInteger implements CDOIDTemp
{
return "mid" + getIntValue();
}
+
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ return new Integer(getIntValue()).compareTo(((CDOIDTempMetaImpl)o).getIntValue());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempObjectImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempObjectImpl.java
index 1922036771..e1397f207f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempObjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/id/CDOIDTempObjectImpl.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.internal.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOIDInteger;
@@ -35,4 +36,10 @@ public class CDOIDTempObjectImpl extends AbstractCDOIDInteger implements CDOIDTe
{
return "oid" + getIntValue();
}
+
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ return new Integer(getIntValue()).compareTo(((CDOIDTempObjectImpl)o).getIntValue());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
index 0fa04aac62..63bab7c3db 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
@@ -18,13 +18,11 @@ import org.eclipse.emf.cdo.common.id.CDOIDObject;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOID.Type;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
@@ -41,10 +39,6 @@ import org.eclipse.emf.cdo.internal.common.id.CDOIDMetaImpl;
import org.eclipse.emf.cdo.internal.common.id.CDOIDMetaRangeImpl;
import org.eclipse.emf.cdo.internal.common.id.CDOIDTempMetaImpl;
import org.eclipse.emf.cdo.internal.common.id.CDOIDTempObjectImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassRefImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOAddFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOClearFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOContainerFeatureDeltaImpl;
@@ -55,185 +49,95 @@ import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOUnsetFeatureDeltaImpl;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOID;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+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.InternalCDOList;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.concurrent.RWLockManager;
import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedIOUtil.ClassResolver;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
* @author Eike Stepper
*/
-public abstract class CDODataInputImpl implements CDODataInput
+public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating implements CDODataInput
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDODataInputImpl.class);
- private ExtendedDataInput in;
-
- public CDODataInputImpl(ExtendedDataInput in)
- {
- this.in = in;
- }
-
- public ExtendedDataInput getDelegate()
- {
- return in;
- }
-
- public boolean readBoolean() throws IOException
- {
- return in.readBoolean();
- }
-
- public byte readByte() throws IOException
- {
- return in.readByte();
- }
-
- public byte[] readByteArray() throws IOException
- {
- return in.readByteArray();
- }
-
- public char readChar() throws IOException
- {
- return in.readChar();
- }
-
- public double readDouble() throws IOException
- {
- return in.readDouble();
- }
-
- public float readFloat() throws IOException
- {
- return in.readFloat();
- }
-
- public void readFully(byte[] b, int off, int len) throws IOException
- {
- in.readFully(b, off, len);
- }
-
- public void readFully(byte[] b) throws IOException
- {
- in.readFully(b);
- }
-
- public int readInt() throws IOException
+ public CDODataInputImpl(ExtendedDataInput delegate)
{
- return in.readInt();
+ super(delegate);
}
- public String readLine() throws IOException
+ public CDOPackageUnit readCDOPackageUnit(CDOPackageRegistry packageRegistry) throws IOException
{
- return in.readLine();
+ InternalCDOPackageUnit packageUnit = (InternalCDOPackageUnit)CDOModelUtil.createPackageUnit();
+ packageUnit.read(this, (InternalCDOPackageRegistry)packageRegistry);
+ return packageUnit;
}
- public long readLong() throws IOException
+ public CDOPackageUnit[] readCDOPackageUnits(CDOPackageRegistry packageRegistry) throws IOException
{
- return in.readLong();
- }
-
- public Object readObject() throws IOException
- {
- return in.readObject();
- }
-
- public Object readObject(ClassLoader classLoader) throws IOException
- {
- return in.readObject(classLoader);
- }
+ int size = readInt();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Reading {0} package units", size);
+ }
- public Object readObject(ClassResolver classResolver) throws IOException
- {
- return in.readObject(classResolver);
- }
+ CDOPackageUnit[] packageUnits = new CDOPackageUnit[size];
+ for (int i = 0; i < size; i++)
+ {
+ packageUnits[i] = readCDOPackageUnit(packageRegistry);
+ }
- public short readShort() throws IOException
- {
- return in.readShort();
+ return packageUnits;
}
- public String readString() throws IOException
+ public CDOPackageUnit.Type readCDOPackageUnitType() throws IOException
{
- return in.readString();
+ return CDOPackageUnit.Type.values()[readByte()];
}
- public int readUnsignedByte() throws IOException
+ public CDOPackageInfo readCDOPackageInfo() throws IOException
{
- return in.readUnsignedByte();
+ InternalCDOPackageInfo packageInfo = (InternalCDOPackageInfo)CDOModelUtil.createPackageInfo();
+ packageInfo.read(this);
+ return packageInfo;
}
- public int readUnsignedShort() throws IOException
+ public String readCDOPackageURI() throws IOException
{
- return in.readUnsignedShort();
+ return getPackageURICompressor().read(this);
}
- public String readUTF() throws IOException
+ public CDOClassifierRef readCDOClassifierRef() throws IOException
{
- return in.readUTF();
+ return new CDOClassifierRef(this);
}
- public int skipBytes(int n) throws IOException
+ public EClassifier readCDOClassifierRefAndResolve() throws IOException
{
- return in.skipBytes(n);
+ CDOClassifierRef classRef = readCDOClassifierRef();
+ return classRef.resolve(getPackageRegistry());
}
public CDOType readCDOType() throws IOException
{
+ // TODO Use byte IDs
int typeID = readInt();
return CDOModelUtil.getType(typeID);
}
- public String readCDOPackageURI() throws IOException
- {
- return getPackageURICompressor().readPackageURI(this);
- }
-
- public void readCDOPackage(CDOPackage cdoPackage) throws IOException
- {
- ((InternalCDOPackage)cdoPackage).read(this);
- }
-
- public CDOPackage readCDOPackage() throws IOException
- {
- return new CDOPackageImpl(getPackageManager(), this);
- }
-
- public CDOClassRef readCDOClassRef() throws IOException
- {
- return new CDOClassRefImpl(this);
- }
-
- public CDOClass readCDOClassRefAndResolve() throws IOException
- {
- CDOClassRef classRef = readCDOClassRef();
- CDOPackageManager packageManager = getPackageManager();
- CDOClass cdoClass = classRef.resolve(packageManager);
- if (cdoClass == null)
- {
- throw new IllegalStateException("ClassRef unresolveable: " + classRef);
- }
-
- return cdoClass;
- }
-
- public CDOClass readCDOClass(CDOPackage containingPackage) throws IOException
- {
- return new CDOClassImpl(containingPackage, this);
- }
-
- public CDOFeature readCDOFeature(CDOClass containingClass) throws IOException
- {
- return new CDOFeatureImpl(containingClass, this);
- }
-
public CDOID readCDOID() throws IOException
{
byte ordinal = readByte();
@@ -306,26 +210,23 @@ public abstract class CDODataInputImpl implements CDODataInput
boolean notNull = readBoolean();
if (notNull)
{
- return readCDORevisionData();
+ return CDORevisionUtil.read(this);
}
return null;
}
- public CDOList readCDOList(CDORevision revision, CDOFeature feature) throws IOException
+ public CDOList readCDOList(CDORevision revision, EStructuralFeature feature) throws IOException
{
- // TODO Simon: Could most of this stuff be moved into the list?
- // (only if protected methods of this class don't need to become public)
- CDOType type = feature.getType();
int referenceChunk;
- int size = in.readInt();
+ int size = readInt();
if (size < 0)
{
size = -size;
- referenceChunk = in.readInt();
+ referenceChunk = readInt();
if (TRACER.isEnabled())
{
- TRACER.format("Read feature {0}: size={1}, referenceChunk={2}", feature, size, referenceChunk);
+ TRACER.format("Read feature {0}: size={1}, referenceChunk={2}", feature.getName(), size, referenceChunk);
}
}
else
@@ -333,10 +234,11 @@ public abstract class CDODataInputImpl implements CDODataInput
referenceChunk = size;
if (TRACER.isEnabled())
{
- TRACER.format("Read feature {0}: size={1}", feature, size);
+ TRACER.format("Read feature {0}: size={1}", feature.getName(), size);
}
}
+ CDOType type = CDOModelUtil.getType(feature.getEType());
InternalCDOList list = (InternalCDOList)getListFactory().createList(size, size, referenceChunk);
for (int j = 0; j < referenceChunk; j++)
{
@@ -351,40 +253,54 @@ public abstract class CDODataInputImpl implements CDODataInput
return list;
}
+ public Object readCDOFeatureValue(EStructuralFeature feature) throws IOException
+ {
+ CDOType type = CDOModelUtil.getType(feature.getEType());
+ if (type.canBeNull() && !feature.isMany())
+ {
+ if (readBoolean())
+ {
+ return InternalCDORevision.NIL;
+ }
+ }
+
+ return type.readValue(this);
+ }
+
public CDORevisionDelta readCDORevisionDelta() throws IOException
{
return new CDORevisionDeltaImpl(this);
}
- public CDOFeatureDelta readCDOFeatureDelta(CDOClass cdoClass) throws IOException
+ public CDOFeatureDelta readCDOFeatureDelta(EClass eClass) throws IOException
{
int typeOrdinal = readInt();
CDOFeatureDelta.Type type = CDOFeatureDelta.Type.values()[typeOrdinal];
switch (type)
{
case ADD:
- return new CDOAddFeatureDeltaImpl(this, cdoClass);
+ return new CDOAddFeatureDeltaImpl(this, eClass);
case SET:
- return new CDOSetFeatureDeltaImpl(this, cdoClass);
+ return new CDOSetFeatureDeltaImpl(this, eClass);
case LIST:
- return new CDOListFeatureDeltaImpl(this, cdoClass);
+ return new CDOListFeatureDeltaImpl(this, eClass);
case MOVE:
- return new CDOMoveFeatureDeltaImpl(this, cdoClass);
+ return new CDOMoveFeatureDeltaImpl(this, eClass);
case CLEAR:
- return new CDOClearFeatureDeltaImpl(this, cdoClass);
+ return new CDOClearFeatureDeltaImpl(this, eClass);
case REMOVE:
- return new CDORemoveFeatureDeltaImpl(this, cdoClass);
+ return new CDORemoveFeatureDeltaImpl(this, eClass);
case CONTAINER:
- return new CDOContainerFeatureDeltaImpl(this, cdoClass);
+ return new CDOContainerFeatureDeltaImpl(this, eClass);
case UNSET:
- return new CDOUnsetFeatureDeltaImpl(this, cdoClass);
+ return new CDOUnsetFeatureDeltaImpl(this, eClass);
default:
throw new IOException("Invalid type " + typeOrdinal);
@@ -397,12 +313,12 @@ public abstract class CDODataInputImpl implements CDODataInput
return type.readValue(this);
}
- public Object readCDORevisionOrPrimitiveOrClass() throws IOException
+ public Object readCDORevisionOrPrimitiveOrClassifier() throws IOException
{
- boolean isClass = readBoolean();
- if (isClass)
+ boolean isClassifier = readBoolean();
+ if (isClassifier)
{
- return readCDOClassRefAndResolve();
+ return readCDOClassifierRefAndResolve();
}
return readCDORevisionOrPrimitive();
@@ -413,14 +329,12 @@ public abstract class CDODataInputImpl implements CDODataInput
return readBoolean() ? RWLockManager.LockType.WRITE : RWLockManager.LockType.READ;
}
- protected CDORevision readCDORevisionData() throws IOException
+ protected StringIO getPackageURICompressor()
{
- return CDORevisionUtil.read(this);
+ return StringIO.DIRECT;
}
- protected abstract CDOPackageManager getPackageManager();
-
- protected abstract CDOPackageURICompressor getPackageURICompressor();
+ protected abstract CDOPackageRegistry getPackageRegistry();
protected abstract CDORevisionResolver getRevisionResolver();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataOutputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataOutputImpl.java
index ef41c83add..00da894be8 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataOutputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataOutputImpl.java
@@ -15,11 +15,10 @@ import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOID.Type;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -28,142 +27,81 @@ import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
import org.eclipse.emf.cdo.internal.common.id.CDOIDAndVersionImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassRefImpl;
import org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionDeltaImpl;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOID;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.concurrent.RWLockManager;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
/**
* @author Eike Stepper
*/
-public abstract class CDODataOutputImpl implements CDODataOutput
+public abstract class CDODataOutputImpl extends ExtendedDataOutput.Delegating implements CDODataOutput
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDODataOutputImpl.class);
- private static final Map<Class<?>, CDOType> idTypes = new HashMap<Class<?>, CDOType>();
-
- private ExtendedDataOutput out;
-
- static
- {
- idTypes.put(String.class, CDOType.STRING);
- idTypes.put(Boolean.class, CDOType.BOOLEAN);
- idTypes.put(Date.class, CDOType.DATE);
- idTypes.put(Long.class, CDOType.LONG);
- idTypes.put(Integer.class, CDOType.INT);
- idTypes.put(Double.class, CDOType.DOUBLE);
- idTypes.put(Byte.class, CDOType.BYTE);
- idTypes.put(Character.class, CDOType.CHAR);
- idTypes.put(Float.class, CDOType.FLOAT);
- }
-
- public CDODataOutputImpl(ExtendedDataOutput out)
- {
- this.out = out;
- }
-
- public ExtendedDataOutput getDelegate()
- {
- return out;
- }
-
- public void write(byte[] b, int off, int len) throws IOException
- {
- out.write(b, off, len);
- }
-
- public void write(byte[] b) throws IOException
- {
- out.write(b);
- }
-
- public void write(int b) throws IOException
- {
- out.write(b);
- }
-
- public void writeBoolean(boolean v) throws IOException
+ public CDODataOutputImpl(ExtendedDataOutput delegate)
{
- out.writeBoolean(v);
+ super(delegate);
}
- public void writeByte(int v) throws IOException
+ public void writeCDOPackageUnit(CDOPackageUnit packageUnit, boolean withPackages) throws IOException
{
- out.writeByte(v);
+ ((InternalCDOPackageUnit)packageUnit).write(this, withPackages);
}
- public void writeByteArray(byte[] b) throws IOException
+ public void writeCDOPackageUnits(CDOPackageUnit... packageUnits) throws IOException
{
- out.writeByteArray(b);
- }
-
- public void writeBytes(String s) throws IOException
- {
- out.writeBytes(s);
- }
-
- public void writeChar(int v) throws IOException
- {
- out.writeChar(v);
- }
-
- public void writeChars(String s) throws IOException
- {
- out.writeChars(s);
- }
-
- public void writeDouble(double v) throws IOException
- {
- out.writeDouble(v);
- }
-
- public void writeFloat(float v) throws IOException
- {
- out.writeFloat(v);
- }
+ int size = packageUnits.length;
+ writeInt(size);
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing {0} package units", size);
+ }
- public void writeInt(int v) throws IOException
- {
- out.writeInt(v);
+ for (CDOPackageUnit packageUnit : packageUnits)
+ {
+ writeCDOPackageUnit(packageUnit, false);
+ }
}
- public void writeLong(long v) throws IOException
+ public void writeCDOPackageUnitType(CDOPackageUnit.Type type) throws IOException
{
- out.writeLong(v);
+ writeByte(type.ordinal());
}
- public void writeObject(Object object) throws IOException
+ public void writeCDOPackageInfo(CDOPackageInfo packageInfo) throws IOException
{
- out.writeObject(object);
+ ((InternalCDOPackageInfo)packageInfo).write(this);
}
- public void writeShort(int v) throws IOException
+ public void writeCDOClassifierRef(CDOClassifierRef eClassifierRef) throws IOException
{
- out.writeShort(v);
+ eClassifierRef.write(this);
}
- public void writeString(String str) throws IOException
+ public void writeCDOClassifierRef(EClassifier eClassifier) throws IOException
{
- out.writeString(str);
+ writeCDOClassifierRef(new CDOClassifierRef(eClassifier));
}
- public void writeUTF(String str) throws IOException
+ public void writeCDOPackageURI(String uri) throws IOException
{
- out.writeUTF(str);
+ getPackageURICompressor().write(this, uri);
}
public void writeCDOType(CDOType cdoType) throws IOException
@@ -171,36 +109,6 @@ public abstract class CDODataOutputImpl implements CDODataOutput
((CDOTypeImpl)cdoType).write(this);
}
- public void writeCDOPackageURI(String uri) throws IOException
- {
- getPackageURICompressor().writePackageURI(this, uri);
- }
-
- public void writeCDOClassRef(CDOClassRef cdoClassRef) throws IOException
- {
- ((CDOClassRefImpl)cdoClassRef).write(this);
- }
-
- public void writeCDOClassRef(CDOClass cdoClass) throws IOException
- {
- writeCDOClassRef(cdoClass.createClassRef());
- }
-
- public void writeCDOPackage(CDOPackage cdoPackage) throws IOException
- {
- ((InternalCDOPackage)cdoPackage).write(this);
- }
-
- public void writeCDOClass(CDOClass cdoClass) throws IOException
- {
- ((InternalCDOClass)cdoClass).write(this);
- }
-
- public void writeCDOFeature(CDOFeature cdoFeature) throws IOException
- {
- ((InternalCDOFeature)cdoFeature).write(this);
- }
-
public void writeCDOID(CDOID id) throws IOException
{
if (id == null)
@@ -251,7 +159,7 @@ public abstract class CDODataOutputImpl implements CDODataOutput
}
}
- public void writeCDOList(CDOList list, CDOFeature feature, int referenceChunk) throws IOException
+ public void writeCDOList(CDOList list, EStructuralFeature feature, int referenceChunk) throws IOException
{
// TODO Simon: Could most of this stuff be moved into the list?
// (only if protected methods of this class don't need to become public)
@@ -277,27 +185,27 @@ public abstract class CDODataOutputImpl implements CDODataOutput
// This happens only on server-side
if (TRACER.isEnabled())
{
- TRACER.format("Writing feature {0}: size={1}, referenceChunk={2}", feature, size, referenceChunk);
+ TRACER.format("Writing feature {0}: size={1}, referenceChunk={2}", feature.getName(), size, referenceChunk);
}
- out.writeInt(-size);
- out.writeInt(referenceChunk);
+ writeInt(-size);
+ writeInt(referenceChunk);
size = referenceChunk;
}
else
{
if (TRACER.isEnabled())
{
- TRACER.format("Writing feature {0}: size={1}", feature, size);
+ TRACER.format("Writing feature {0}: size={1}", feature.getName(), size);
}
- out.writeInt(size);
+ writeInt(size);
}
for (int j = 0; j < size; j++)
{
Object value = list.get(j, false);
- if (value != null && feature.isReference())
+ if (value != null && feature instanceof EReference)
{
value = getIDProvider().provideCDOID(value);
}
@@ -307,18 +215,50 @@ public abstract class CDODataOutputImpl implements CDODataOutput
TRACER.trace(" " + value);
}
- feature.getType().writeValue(this, value);
+ writeCDOFeatureValue(value, feature);
}
}
+ public void writeCDOFeatureValue(Object value, EStructuralFeature feature) throws IOException
+ {
+ // TODO We could certainly optimized this: When a feature is a reference, NIL is only possible in the case where
+ // unsettable == true. (TO be verified)
+
+ CDOType type = CDOModelUtil.getType(feature.getEType());
+ if (type.canBeNull())
+ {
+ if (!feature.isMany())
+ {
+ if (value == InternalCDORevision.NIL)
+ {
+ writeBoolean(true);
+ return;
+ }
+ else
+ {
+ writeBoolean(false);
+ }
+ }
+ }
+ else
+ {
+ if (value == null)
+ {
+ value = feature.getDefaultValue();
+ }
+ }
+
+ type.writeValue(this, value);
+ }
+
public void writeCDORevisionDelta(CDORevisionDelta revisionDelta) throws IOException
{
((CDORevisionDeltaImpl)revisionDelta).write(this);
}
- public void writeCDOFeatureDelta(CDOFeatureDelta featureDelta, CDOClass cdoClass) throws IOException
+ public void writeCDOFeatureDelta(CDOFeatureDelta featureDelta, EClass eClass) throws IOException
{
- ((CDOFeatureDeltaImpl)featureDelta).write(this, cdoClass);
+ ((CDOFeatureDeltaImpl)featureDelta).write(this, eClass);
}
public void writeCDORevisionOrPrimitive(Object value) throws IOException
@@ -335,7 +275,8 @@ public abstract class CDODataOutputImpl implements CDODataOutput
CDOType type = null;
if (value instanceof CDOID)
{
- if (((CDOID)value).isTemporary())
+ CDOID id = (CDOID)value;
+ if (id.isTemporary())
{
throw new IllegalArgumentException("Temporary ID not supported: " + value);
}
@@ -344,10 +285,10 @@ public abstract class CDODataOutputImpl implements CDODataOutput
}
else
{
- type = idTypes.get(value.getClass());
+ type = CDOModelUtil.getPrimitiveType(value.getClass());
if (type == null)
{
- throw new IllegalArgumentException("No type for object " + value.getClass());
+ throw new IllegalArgumentException("No type for object of class " + value.getClass());
}
}
@@ -355,12 +296,12 @@ public abstract class CDODataOutputImpl implements CDODataOutput
type.writeValue(this, value);
}
- public void writeCDORevisionOrPrimitiveOrClass(Object value) throws IOException
+ public void writeCDORevisionOrPrimitiveOrClassifier(Object value) throws IOException
{
- if (value instanceof CDOClass)
+ if (value instanceof EClassifier)
{
writeBoolean(true);
- writeCDOClassRef(((CDOClass)value).createClassRef());
+ writeCDOClassifierRef((EClass)value);
}
else
{
@@ -374,5 +315,8 @@ public abstract class CDODataOutputImpl implements CDODataOutput
writeBoolean(lockType == RWLockManager.LockType.WRITE ? true : false);
}
- protected abstract CDOPackageURICompressor getPackageURICompressor();
+ protected StringIO getPackageURICompressor()
+ {
+ return StringIO.DIRECT;
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassImpl.java
deleted file mode 100644
index 6d1ec98866..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassImpl.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-
-import org.eclipse.net4j.util.ObjectUtil;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-public class CDOClassImpl extends CDOModelElementImpl implements InternalCDOClass
-{
- private static final ContextTracer MODEL_TRACER = new ContextTracer(OM.DEBUG_MODEL, CDOClassImpl.class);
-
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOClassImpl.class);
-
- private CDOPackage containingPackage;
-
- private int classifierID;
-
- private boolean isAbstract;
-
- private List<CDOClassProxy> superTypes = new ArrayList<CDOClassProxy>(0);
-
- private List<CDOFeature> features = new ArrayList<CDOFeature>(0);
-
- private transient List<Integer> indices;
-
- private transient CDOClass[] allSuperTypes;
-
- private transient CDOFeature[] allFeatures;
-
- public CDOClassImpl()
- {
- }
-
- public CDOClassImpl(CDOPackage containingPackage, int classifierID, String name, boolean isAbstract)
- {
- super(name);
- this.containingPackage = containingPackage;
- this.classifierID = classifierID;
- this.isAbstract = isAbstract;
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Created {0}", this);
- }
- }
-
- public CDOClassImpl(CDOPackage containingPackage, CDODataInput in) throws IOException
- {
- this.containingPackage = containingPackage;
- read(in);
- }
-
- @Override
- public void read(CDODataInput in) throws IOException
- {
- super.read(in);
- classifierID = in.readInt();
- isAbstract = in.readBoolean();
- readSuperTypes(in);
- readFeatures(in);
-
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read class: ID={0}, name={1}, abstract={2}", classifierID, getName(), isAbstract);
- }
- }
-
- @Override
- public void write(CDODataOutput out) throws IOException
- {
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing class: ID={0}, name={1}, abstract={2}", classifierID, getName(), isAbstract);
- }
-
- super.write(out);
- out.writeInt(classifierID);
- out.writeBoolean(isAbstract);
- writeSuperTypes(out);
- writeFeatures(out);
- }
-
- public int getFeatureID(CDOFeature feature)
- {
- int index = feature.getFeatureIndex();
- if (index != -1)
- {
- CDOFeature[] features = getAllFeatures();
- while (index < features.length)
- {
- if (features[index] == feature)
- {
- return index;
- }
-
- ++index;
- }
- }
-
- return -1;
- }
-
- public CDOPackageManager getPackageManager()
- {
- return containingPackage.getPackageManager();
- }
-
- public CDOPackage getContainingPackage()
- {
- return containingPackage;
- }
-
- public void setContainingPackage(CDOPackage containingPackage)
- {
- this.containingPackage = containingPackage;
- }
-
- public int getClassifierID()
- {
- return classifierID;
- }
-
- public void setClassifierID(int classifierID)
- {
- this.classifierID = classifierID;
- }
-
- public String getQualifiedName()
- {
- return getContainingPackage().getQualifiedName() + "." + getName();
- }
-
- public boolean isAbstract()
- {
- return isAbstract;
- }
-
- public void setAbstract(boolean isAbstract)
- {
- this.isAbstract = isAbstract;
- }
-
- public boolean isResourceNode()
- {
- return false;
- }
-
- public boolean isResourceFolder()
- {
- return false;
- }
-
- public boolean isResource()
- {
- return false;
- }
-
- public boolean isRoot()
- {
- return false;
- }
-
- public int getSuperTypeCount()
- {
- return superTypes.size();
- }
-
- public CDOClass[] getSuperTypes()
- {
- int size = superTypes.size();
- CDOClass[] result = new CDOClass[size];
- for (int i = 0; i < size; i++)
- {
- result[i] = getSuperType(i);
- }
-
- return result;
- }
-
- public void setSuperTypes(List<CDOClass> superTypes)
- {
- this.superTypes = new ArrayList<CDOClassProxy>(superTypes.size());
- for (CDOClass cdoClass : superTypes)
- {
- this.superTypes.add(new CDOClassProxy(cdoClass));
- }
- }
-
- public CDOClass getSuperType(int index)
- {
- return superTypes.get(index).getCdoClass();
- }
-
- public List<CDOClassProxy> getSuperTypeProxies()
- {
- return Collections.unmodifiableList(superTypes);
- }
-
- public int getFeatureCount()
- {
- return features.size();
- }
-
- public CDOFeature[] getFeatures()
- {
- return features.toArray(new CDOFeature[features.size()]);
- }
-
- public void setFeatures(List<CDOFeature> features)
- {
- this.features = features;
- for (CDOFeature feature : features)
- {
- ((InternalCDOFeature)feature).setContainingClass(this);
- }
- }
-
- public CDOFeature lookupFeature(int featureID)
- {
- int i = getFeatureIndex(featureID);
- return getAllFeatures()[i];
- }
-
- public CDOFeature lookupFeature(String name)
- {
- for (CDOFeature feature : getAllFeatures())
- {
- if (ObjectUtil.equals(feature.getName(), name))
- {
- return feature;
- }
- }
-
- return null;
- }
-
- public CDOClassRef createClassRef()
- {
- return CDOModelUtil.createClassRef(containingPackage.getPackageURI(), classifierID);
- }
-
- public CDOClass[] getAllSuperTypes()
- {
- if (allSuperTypes == null)
- {
- List<CDOClass> result = new ArrayList<CDOClass>(0);
- for (CDOClass superType : getSuperTypes())
- {
- CDOClass[] higherSupers = superType.getAllSuperTypes();
- for (CDOClass higherSuper : higherSupers)
- {
- addUnique(higherSuper, result);
- }
-
- addUnique(superType, result);
- }
-
- allSuperTypes = result.toArray(new CDOClass[result.size()]);
- }
-
- return allSuperTypes;
- }
-
- public int getFeatureIndex(int featureID)
- {
- if (indices == null)
- {
- CDOFeature[] features = getAllFeatures();
- indices = new ArrayList<Integer>(features.length);
- int index = 0;
- for (CDOFeature feature : features)
- {
- if (feature.getContainingClass() == this)
- {
- ((InternalCDOFeature)feature).setFeatureIndex(index);
- }
-
- setIndex(feature.getFeatureID(), index);
- index++;
- }
- }
-
- return indices.get(featureID);
- }
-
- public CDOFeature[] getAllFeatures()
- {
- if (allFeatures == null)
- {
- List<CDOFeature> result = new ArrayList<CDOFeature>(0);
- for (CDOClass superType : getSuperTypes())
- {
- CDOFeature[] features = superType.getAllFeatures();
- addAllFeatures(features, result);
- }
-
- addAllFeatures(getFeatures(), result);
- allFeatures = result.toArray(new CDOFeature[result.size()]);
- }
-
- return allFeatures;
- }
-
- public void addSuperType(CDOClassRef classRef)
- {
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Adding super type: {0}", classRef);
- }
-
- superTypes.add(new CDOClassProxy(classRef, containingPackage.getPackageManager()));
- }
-
- public void addFeature(CDOFeature cdoFeature)
- {
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Adding feature: {0}", cdoFeature);
- }
-
- features.add(cdoFeature);
- }
-
- public int compareTo(CDOClass that)
- {
- return getName().compareTo(that.getName());
- }
-
- @Override
- public String toString()
- {
- return MessageFormat.format("CDOClass(ID={0}, name={1})", classifierID, getName());
- }
-
- private void setIndex(int featureID, int index)
- {
- while (indices.size() <= featureID)
- {
- indices.add(null);
- }
-
- indices.set(featureID, index);
- }
-
- private void readSuperTypes(CDODataInput in) throws IOException
- {
- int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Reading {0} super types", size);
- }
-
- for (int i = 0; i < size; i++)
- {
- CDOClassRef classRef = in.readCDOClassRef();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read super type: classRef={0}", classRef, classifierID);
- }
-
- superTypes.add(new CDOClassProxy(classRef, containingPackage.getPackageManager()));
- }
- }
-
- private void readFeatures(CDODataInput in) throws IOException
- {
- int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Reading {0} features", size);
- }
-
- for (int i = 0; i < size; i++)
- {
- CDOFeature cdoFeature = in.readCDOFeature(this);
- addFeature(cdoFeature);
- }
- }
-
- private void writeSuperTypes(CDODataOutput out) throws IOException
- {
- int size = superTypes.size();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing {0} super types", size);
- }
-
- out.writeInt(size);
- for (CDOClassProxy proxy : superTypes)
- {
- CDOClassRef classRef = proxy.getClassRef();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing super type: classRef={0}", classRef);
- }
-
- out.writeCDOClassRef(classRef);
- }
- }
-
- private void writeFeatures(CDODataOutput out) throws IOException
- {
- int size = features.size();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing {0} features", size);
- }
-
- out.writeInt(size);
- for (CDOFeature cdoFeature : features)
- {
- out.writeCDOFeature(cdoFeature);
- }
- }
-
- private static void addAllFeatures(CDOFeature[] features, List<CDOFeature> result)
- {
- for (CDOFeature feature : features)
- {
- addUnique(feature, result);
- }
- }
-
- @SuppressWarnings("unchecked")
- private static void addUnique(Object object, List result)
- {
- if (!result.contains(object))
- {
- result.add(object);
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java
new file mode 100644
index 0000000000..64f94ea7d1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java
@@ -0,0 +1,109 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.common.model;
+
+import org.eclipse.emf.cdo.common.model.CDOClassInfo;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOClassInfoImpl extends AdapterImpl implements CDOClassInfo
+{
+ private EStructuralFeature[] allPersistentFeatures;
+
+ private int[] featureIDMappings;
+
+ public CDOClassInfoImpl()
+ {
+ }
+
+ @Override
+ public boolean isAdapterForType(Object type)
+ {
+ return type == CDOClassInfo.class;
+ }
+
+ @Override
+ public void setTarget(Notifier newTarget)
+ {
+ init((EClass)newTarget);
+ super.setTarget(newTarget);
+ }
+
+ public EClass getEClass()
+ {
+ return (EClass)getTarget();
+ }
+
+ public boolean isResource()
+ {
+ return CDOModelUtil.isResource(getEClass());
+ }
+
+ public boolean isResourceFolder()
+ {
+ return CDOModelUtil.isResourceFolder(getEClass());
+ }
+
+ public boolean isResourceNode()
+ {
+ return CDOModelUtil.isResourceNode(getEClass());
+ }
+
+ public EStructuralFeature[] getAllPersistentFeatures()
+ {
+ return allPersistentFeatures;
+ }
+
+ public int getFeatureIndex(EStructuralFeature feature)
+ {
+ int featureID = getEClass().getFeatureID(feature);
+ return getFeatureIndex(featureID);
+ }
+
+ public int getFeatureIndex(int featureID)
+ {
+ return featureIDMappings[featureID];
+ }
+
+ private void init(EClass eClass)
+ {
+ int maxID = 0;
+ List<EStructuralFeature> features = new ArrayList<EStructuralFeature>();
+ for (EStructuralFeature feature : eClass.getEAllStructuralFeatures())
+ {
+ if (!feature.isTransient())
+ {
+ features.add(feature);
+ int featureID = eClass.getFeatureID(feature);
+ maxID = Math.max(maxID, featureID);
+ }
+ }
+
+ allPersistentFeatures = features.toArray(new EStructuralFeature[features.size()]);
+ featureIDMappings = new int[maxID + 1];
+ for (int i = 0; i < allPersistentFeatures.length; i++)
+ {
+ EStructuralFeature feature = allPersistentFeatures[i];
+ int featureID = eClass.getFeatureID(feature);
+ featureIDMappings[featureID] = i;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOFeatureImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOFeatureImpl.java
deleted file mode 100644
index 8c4ef037e1..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOFeatureImpl.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOType;
-import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
-
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-
-/**
- * @author Eike Stepper
- */
-public class CDOFeatureImpl extends CDOModelElementImpl implements InternalCDOFeature
-{
- private static final int UNKNOWN_FEATURE_INDEX = Integer.MIN_VALUE;
-
- private static final ContextTracer MODEL_TRACER = new ContextTracer(OM.DEBUG_MODEL, CDOFeatureImpl.class);
-
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOFeatureImpl.class);
-
- private CDOClass containingClass;
-
- private int featureID;
-
- private int featureIndex = UNKNOWN_FEATURE_INDEX;
-
- private CDOType type;
-
- private boolean many;
-
- private boolean containment;
-
- private CDOClassProxy referenceTypeProxy;
-
- private Object defaultValue;
-
- /**
- * Creates an uninitialized instance.
- */
- public CDOFeatureImpl()
- {
- }
-
- /**
- * Creates an attribute feature.
- */
- public CDOFeatureImpl(CDOClass containingClass, int featureID, String name, CDOType type, Object defaultValue,
- boolean many)
- {
- super(name);
- if (type == CDOType.OBJECT)
- {
- throw new IllegalArgumentException("type == OBJECT");
- }
-
- this.containingClass = containingClass;
- this.featureID = featureID;
- this.type = type;
- this.defaultValue = defaultValue;
- this.many = many;
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Created {0}", this);
- }
- }
-
- /**
- * Creates a reference feature.
- */
- public CDOFeatureImpl(CDOClass containingClass, int featureID, String name, CDOClassProxy referenceTypeProxy,
- boolean many, boolean containment)
- {
- super(name);
- if (referenceTypeProxy == null)
- {
- throw new IllegalArgumentException("referenceTypeProxy == null");
- }
-
- this.containingClass = containingClass;
- this.featureID = featureID;
- type = CDOType.OBJECT;
- this.many = many;
- this.containment = containment;
- this.referenceTypeProxy = referenceTypeProxy;
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Created {0}", this);
- }
- }
-
- /**
- * Reads a feature from a stream.
- */
- public CDOFeatureImpl(CDOClass containingClass, CDODataInput in) throws IOException
- {
- this.containingClass = containingClass;
- read(in);
- }
-
- @Override
- public void read(CDODataInput in) throws IOException
- {
- super.read(in);
- featureID = in.readInt();
- type = in.readCDOType();
- if (in.readBoolean())
- {
- defaultValue = type.readValue(in);
- }
-
- many = in.readBoolean();
- containment = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read feature: ID={0}, name={1}, type={2}, many={3}, containment={4}", featureID,
- getName(), type, many, containment);
- }
-
- if (isReference())
- {
- CDOClassRef classRef = in.readCDOClassRef();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read reference type: classRef={0}", classRef);
- }
-
- referenceTypeProxy = new CDOClassProxy(classRef, containingClass.getContainingPackage().getPackageManager());
- }
- }
-
- @Override
- public void write(CDODataOutput out) throws IOException
- {
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing feature: ID={0}, name={1}, type={2}, many={3}, containment={4}", featureID,
- getName(), type, many, containment);
- }
-
- super.write(out);
- out.writeInt(featureID);
- out.writeCDOType(type);
- if (defaultValue != null)
- {
- out.writeBoolean(true);
- type.writeValue(out, defaultValue);
- }
- else
- {
- out.writeBoolean(false);
- }
-
- out.writeBoolean(many);
- out.writeBoolean(containment);
-
- if (isReference())
- {
- CDOClassRef classRef = referenceTypeProxy.getClassRef();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing reference type: classRef={0}", classRef);
- }
-
- out.writeCDOClassRef(classRef);
- }
- }
-
- public CDOPackageManager getPackageManager()
- {
- return getContainingPackage().getPackageManager();
- }
-
- public CDOPackage getContainingPackage()
- {
- return containingClass.getContainingPackage();
- }
-
- public CDOClass getContainingClass()
- {
- return containingClass;
- }
-
- public void setContainingClass(CDOClass containingClass)
- {
- this.containingClass = containingClass;
- }
-
- public int getFeatureID()
- {
- return featureID;
- }
-
- public void setFeatureID(int featureID)
- {
- this.featureID = featureID;
- }
-
- public int getFeatureIndex()
- {
- if (featureIndex == UNKNOWN_FEATURE_INDEX)
- {
- featureIndex = ((InternalCDOClass)containingClass).getFeatureIndex(featureID);
- }
-
- return featureIndex;
- }
-
- public void setFeatureIndex(int featureIndex)
- {
- this.featureIndex = featureIndex;
- }
-
- public String getQualifiedName()
- {
- return getContainingClass().getQualifiedName() + "." + getName();
- }
-
- public CDOType getType()
- {
- return type;
- }
-
- public void setType(CDOType type)
- {
- this.type = type;
- }
-
- public boolean isMany()
- {
- return many;
- }
-
- public Object getDefaultValue()
- {
- return defaultValue;
- }
-
- public void setDefaultValue(Object defaultValue)
- {
- this.defaultValue = defaultValue;
- }
-
- public void setMany(boolean many)
- {
- this.many = many;
- }
-
- public boolean isReference()
- {
- return type == CDOType.OBJECT;
- }
-
- public boolean isContainment()
- {
- return containment;
- }
-
- public void setContainment(boolean containment)
- {
- this.containment = containment;
- }
-
- public CDOClass getReferenceType()
- {
- if (referenceTypeProxy == null)
- {
- return null;
- }
-
- return referenceTypeProxy.getCdoClass();
- }
-
- public void setReferenceType(CDOClassRef cdoClassRef)
- {
- referenceTypeProxy = new CDOClassProxy(cdoClassRef, getPackageManager());
- }
-
- public CDOClassProxy getReferenceTypeProxy()
- {
- return referenceTypeProxy;
- }
-
- @Override
- public String toString()
- {
- if (type == CDOType.OBJECT)
- {
- return MessageFormat.format("CDOFeature(ID={0}, name={1}, type={2})", featureID, getName(), referenceTypeProxy);
- }
- else
- {
- return MessageFormat.format("CDOFeature(ID={0}, name={1}, type={2})", featureID, getName(), type);
- }
- }
-
- public Object readValue(CDODataInput in) throws IOException
- {
- CDOType type = getType();
- if (type.canBeNull() && !isMany())
- {
- if (in.readBoolean())
- {
- return InternalCDORevision.NIL;
- }
- }
-
- return type.readValue(in);
- }
-
- public void writeValue(CDODataOutput out, Object value) throws IOException
- {
- // TODO We could certainly optimized this: When a feature is a reference, NIL is only possible in the case where
- // unsettable == true. (TO be verified)
- if (type.canBeNull())
- {
- if (!isMany())
- {
- if (value == InternalCDORevision.NIL)
- {
- out.writeBoolean(true);
- return;
- }
- else
- {
- out.writeBoolean(false);
- }
- }
- }
- else
- {
- if (value == null)
- {
- value = getDefaultValue();
- }
- }
-
- type.writeValue(out, value);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOModelElementImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOModelElementImpl.java
deleted file mode 100644
index d79cf77d27..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOModelElementImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOModelElement;
-
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- */
-public abstract class CDOModelElementImpl implements InternalCDOModelElement
-{
- private static final ContextTracer MODEL_TRACER = new ContextTracer(OM.DEBUG_MODEL, CDOModelElementImpl.class);
-
- private String name;
-
- private Object clientInfo;
-
- private Object serverInfo;
-
- protected CDOModelElementImpl(String name)
- {
- this.name = name;
- }
-
- protected CDOModelElementImpl()
- {
- }
-
- public void read(CDODataInput in) throws IOException
- {
- name = in.readString();
- }
-
- public void write(CDODataOutput out) throws IOException
- {
- out.writeString(name);
- }
-
- public String getName()
- {
- return name;
- }
-
- public void setName(String name)
- {
- this.name = name;
- }
-
- public Object getClientInfo()
- {
- return clientInfo;
- }
-
- public void setClientInfo(Object clientInfo)
- {
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Setting client info: {0} --> {1}", this, clientInfo);
- }
-
- this.clientInfo = clientInfo;
- }
-
- public Object getServerInfo()
- {
- return serverInfo;
- }
-
- public void setServerInfo(Object serverInfo)
- {
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Setting server info: {0} --> {1}", this, serverInfo);
- }
-
- this.serverInfo = serverInfo;
- }
-}
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
deleted file mode 100644
index cb46adfbec..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- * Simon McDuff - http://bugs.eclipse.org/246442
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageManager;
-
-import org.eclipse.net4j.util.ObjectUtil;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-public class CDOPackageImpl extends CDOModelElementImpl implements InternalCDOPackage
-{
- private static final ContextTracer MODEL_TRACER = new ContextTracer(OM.DEBUG_MODEL, CDOPackageImpl.class);
-
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOPackageImpl.class);
-
- private CDOPackageManager packageManager;
-
- private String packageURI;
-
- private List<CDOClass> classes;
-
- private List<CDOClass> index;
-
- private String ecore;
-
- private boolean ecoreLoaded;
-
- private boolean dynamic;
-
- private CDOIDMetaRange metaIDRange;
-
- private String parentURI;
-
- private transient boolean persistent = true;
-
- public CDOPackageImpl()
- {
- }
-
- public CDOPackageImpl(CDOPackageManager packageManager, String packageURI, String name, String ecore,
- boolean dynamic, CDOIDMetaRange metaIDRange, String parentURI)
- {
- super(name);
- this.packageManager = packageManager;
- this.packageURI = packageURI;
- this.dynamic = dynamic;
- this.metaIDRange = metaIDRange;
- this.parentURI = parentURI;
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Created {0}", this);
- }
-
- setEcore(ecore);
- createLists();
- }
-
- public CDOPackageImpl(CDOPackageManager packageManager, CDODataInput in) throws IOException
- {
- this.packageManager = packageManager;
- createLists();
- read(in);
- }
-
- /**
- * Creates a proxy CDO package
- */
- public CDOPackageImpl(CDOPackageManager packageManager, String packageURI, boolean dynamic,
- CDOIDMetaRange metaIDRange, String parentURI)
- {
- this.packageManager = packageManager;
- this.packageURI = packageURI;
- this.dynamic = dynamic;
- this.metaIDRange = metaIDRange;
- this.parentURI = parentURI;
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Created proxy package {0}, dynamic={1}, metaIDRange={2}, parentURI={3}", packageURI,
- dynamic, metaIDRange, packageURI);
- }
- }
-
- @Override
- public void read(CDODataInput in) throws IOException
- {
- super.read(in);
- packageURI = in.readCDOPackageURI();
- dynamic = in.readBoolean();
- metaIDRange = in.readCDOIDMetaRange();
- parentURI = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read package: URI={0}, name={1}, dynamic={2}, metaIDRange={3}, parentURI={4}",
- packageURI, getName(), dynamic, metaIDRange, parentURI);
- }
-
- int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Reading {0} classes", size);
- }
-
- for (int i = 0; i < size; i++)
- {
- CDOClass cdoClass = in.readCDOClass(this);
- addClass(cdoClass);
- }
- }
-
- @Override
- public void write(CDODataOutput out) throws IOException
- {
- load();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing package: URI={0}, name={1}, dynamic={2}, metaIDRange={3}, parentURI={4}",
- packageURI, getName(), dynamic, metaIDRange, parentURI);
- }
-
- super.write(out);
- out.writeCDOPackageURI(packageURI);
- out.writeBoolean(dynamic);
- out.writeCDOIDMetaRange(metaIDRange);
- out.writeString(parentURI);
-
- int size = classes.size();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing {0} classes", size);
- }
-
- out.writeInt(size);
- for (CDOClass cdoClass : classes)
- {
- out.writeCDOClass(cdoClass);
- }
- }
-
- public void setPackageManager(CDOPackageManager packageManager)
- {
- this.packageManager = packageManager;
- }
-
- public CDOPackageManager getPackageManager()
- {
- return packageManager;
- }
-
- public String getParentURI()
- {
- return parentURI;
- }
-
- public void setParentURI(String parentURI)
- {
- this.parentURI = parentURI;
- }
-
- public CDOPackage getTopLevelPackage()
- {
- CDOPackage parentPackage = getParentPackage();
- return parentPackage == null ? this : parentPackage.getTopLevelPackage();
- }
-
- public CDOPackage getParentPackage()
- {
- if (parentURI == null)
- {
- return null;
- }
-
- return packageManager.lookupPackage(parentURI);
- }
-
- public CDOPackage[] getSubPackages(boolean recursive)
- {
- List<CDOPackage> result = new ArrayList<CDOPackage>();
- CDOPackage[] allPackages = packageManager.getPackages();
- getSubPackages(this, allPackages, result, recursive);
- return result.toArray(new CDOPackage[result.size()]);
- }
-
- private void getSubPackages(CDOPackage parentPackage, CDOPackage[] allPackages, List<CDOPackage> result,
- boolean recursive)
- {
- for (CDOPackage cdoPackage : allPackages)
- {
- if (ObjectUtil.equals(cdoPackage.getParentURI(), parentPackage.getPackageURI()))
- {
- result.add(cdoPackage);
- if (recursive)
- {
- getSubPackages(cdoPackage, allPackages, result, true);
- }
- }
- }
- }
-
- public String getPackageURI()
- {
- return packageURI;
- }
-
- public void setPackageURI(String packageURI)
- {
- this.packageURI = packageURI;
- }
-
- public String getQualifiedName()
- {
- CDOPackage parentPackage = getParentPackage();
- if (parentPackage != null)
- {
- return parentPackage.getQualifiedName() + "." + getName();
- }
-
- return getName();
- }
-
- public int getClassCount()
- {
- load();
- return classes.size();
- }
-
- public CDOClass[] getClasses()
- {
- load();
- return classes.toArray(new CDOClass[classes.size()]);
- }
-
- public void setClasses(List<CDOClass> classes)
- {
- this.classes = classes;
- for (CDOClass cdoClass : classes)
- {
- ((InternalCDOClass)cdoClass).setContainingPackage(this);
- setIndex(cdoClass.getClassifierID(), cdoClass);
- }
- }
-
- /**
- * @return All classes with <code>isAbstract() == false</code> and <code>isSystem() == false</code>.
- */
- public CDOClass[] getConcreteClasses()
- {
- load();
- List<CDOClass> result = new ArrayList<CDOClass>(0);
- for (CDOClass cdoClass : classes)
- {
- if (!cdoClass.isAbstract())
- {
- result.add(cdoClass);
- }
- }
-
- return result.toArray(new CDOClass[result.size()]);
- }
-
- public CDOClass lookupClass(int classifierID)
- {
- load();
- return index.get(classifierID);
- }
-
- public synchronized String basicGetEcore()
- {
- return ecore;
- }
-
- public synchronized String getEcore()
- {
- if (!ecoreLoaded)
- {
- if (parentURI == null && !isSystem())
- {
- ((InternalCDOPackageManager)packageManager).loadPackageEcore(this);
- }
- }
-
- return ecore;
- }
-
- public synchronized void setEcore(String ecore)
- {
- this.ecore = ecore;
- ecoreLoaded = true;
- }
-
- public CDOIDMetaRange getMetaIDRange()
- {
- return metaIDRange;
- }
-
- public void setMetaIDRange(CDOIDMetaRange metaIDRange)
- {
- this.metaIDRange = metaIDRange;
- }
-
- public boolean isDynamic()
- {
- return dynamic;
- }
-
- public void setDynamic(boolean dynamic)
- {
- this.dynamic = dynamic;
- }
-
- public boolean isSystem()
- {
- return false;
- }
-
- public boolean isProxy()
- {
- return classes == null;
- }
-
- public boolean isPersistent()
- {
- return persistent;
- }
-
- public void setPersistent(boolean persistent)
- {
- this.persistent = persistent;
- }
-
- public void addClass(CDOClass cdoClass)
- {
- int classifierID = cdoClass.getClassifierID();
- if (MODEL_TRACER.isEnabled())
- {
- MODEL_TRACER.format("Adding class: {0}", cdoClass);
- }
-
- setIndex(classifierID, cdoClass);
- classes.add(cdoClass);
- }
-
- public int compareTo(CDOPackage that)
- {
- return getPackageURI().compareTo(that.getPackageURI());
- }
-
- @Override
- public String toString()
- {
- return MessageFormat.format("CDOPackage(URI={0}, name={1}, dynamic={2}, metaIDRange={3}, parentURI={4})",
- packageURI, getName(), dynamic, metaIDRange, parentURI);
- }
-
- private void setIndex(int classifierID, CDOClass cdoClass)
- {
- while (classifierID >= index.size())
- {
- index.add(null);
- }
-
- index.set(classifierID, cdoClass);
- }
-
- private void createLists()
- {
- classes = new ArrayList<CDOClass>(0);
- index = new ArrayList<CDOClass>(0);
- }
-
- private synchronized void load()
- {
- if (classes == null)
- {
- createLists();
- ((InternalCDOPackageManager)packageManager).loadPackage(this);
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageInfoImpl.java
new file mode 100644
index 0000000000..5f18e61c3f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageInfoImpl.java
@@ -0,0 +1,166 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.common.model;
+
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.internal.common.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOPackageInfoImpl extends AdapterImpl implements InternalCDOPackageInfo
+{
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOPackageInfoImpl.class);
+
+ private InternalCDOPackageUnit packageUnit;
+
+ private String packageURI;
+
+ private String parentURI;
+
+ private CDOIDMetaRange metaIDRange;
+
+ public CDOPackageInfoImpl()
+ {
+ }
+
+ public InternalCDOPackageUnit getPackageUnit()
+ {
+ return packageUnit;
+ }
+
+ public void setPackageUnit(InternalCDOPackageUnit packageUnit)
+ {
+ this.packageUnit = packageUnit;
+ }
+
+ public String getPackageURI()
+ {
+ return packageURI;
+ }
+
+ public void setPackageURI(String packageURI)
+ {
+ this.packageURI = packageURI;
+ }
+
+ public String getParentURI()
+ {
+ return parentURI;
+ }
+
+ public void setParentURI(String parentURI)
+ {
+ this.parentURI = parentURI;
+ }
+
+ public CDOIDMetaRange getMetaIDRange()
+ {
+ return metaIDRange;
+ }
+
+ public void setMetaIDRange(CDOIDMetaRange metaIDRange)
+ {
+ this.metaIDRange = metaIDRange;
+ }
+
+ public void write(CDODataOutput out) throws IOException
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing {0}", this);
+ }
+
+ out.writeCDOPackageURI(packageURI);
+ out.writeCDOPackageURI(parentURI);
+ out.writeCDOIDMetaRange(getMetaIDRange());
+ }
+
+ public void read(CDODataInput in) throws IOException
+ {
+ packageURI = in.readCDOPackageURI();
+ parentURI = in.readCDOPackageURI();
+ metaIDRange = in.readCDOIDMetaRange();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Read {0}", this);
+ }
+ }
+
+ public EFactory getEFactory()
+ {
+ return getEPackage().getEFactoryInstance();
+ }
+
+ public EPackage getEPackage()
+ {
+ return getEPackage(true);
+ }
+
+ public EPackage getEPackage(boolean loadOnDemand)
+ {
+ EPackage ePackage = (EPackage)getTarget();
+ if (ePackage != null)
+ {
+ return ePackage;
+ }
+
+ if (loadOnDemand)
+ {
+ packageUnit.load();
+ return (EPackage)getTarget();
+ }
+
+ return null;
+ }
+
+ public boolean isCorePackage()
+ {
+ return CDOModelUtil.isCorePackage(getEPackage());
+ }
+
+ public boolean isResourcePackage()
+ {
+ return CDOModelUtil.isResourcePackage(getEPackage());
+ }
+
+ public boolean isSystemPackage()
+ {
+ return CDOModelUtil.isSystemPackage(getEPackage());
+ }
+
+ public int compareTo(CDOPackageInfo o)
+ {
+ return getPackageURI().compareTo(o.getPackageURI());
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("CDOPackageInfo[packageURI={0}, parentURI={1}, metaIDRange={2}]", packageURI,
+ parentURI, metaIDRange);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageManagerImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageManagerImpl.java
deleted file mode 100644
index c44638878c..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageManagerImpl.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.internal.common.model.core.CDOCorePackageImpl;
-import org.eclipse.emf.cdo.internal.common.model.resource.CDOResourcePackageImpl;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageManager;
-
-import org.eclipse.net4j.util.container.Container;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * @author Eike Stepper
- */
-public abstract class CDOPackageManagerImpl extends Container<CDOPackage> implements InternalCDOPackageManager
-{
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_MODEL, CDOPackageManagerImpl.class);
-
- private ConcurrentMap<String, CDOPackage> packages = new ConcurrentHashMap<String, CDOPackage>();
-
- private CDOCorePackage cdoCorePackage;
-
- private CDOResourcePackage cdoResourcePackage;
-
- public CDOPackageManagerImpl()
- {
- addPackage(cdoCorePackage = new CDOCorePackageImpl(this));
- addPackage(cdoResourcePackage = new CDOResourcePackageImpl(this));
- }
-
- public CDOPackage lookupPackage(String uri)
- {
- if (uri == null)
- {
- return null;
- }
-
- return packages.get(uri);
- }
-
- public int getPackageCount()
- {
- return packages.size();
- }
-
- public CDOPackage[] getPackages()
- {
- return packages.values().toArray(new CDOPackage[packages.size()]);
- }
-
- public CDOPackage[] getElements()
- {
- return getPackages();
- }
-
- @Override
- public boolean isEmpty()
- {
- return packages.isEmpty();
- }
-
- public CDOCorePackage getCDOCorePackage()
- {
- return cdoCorePackage;
- }
-
- public CDOResourcePackage getCDOResourcePackage()
- {
- return cdoResourcePackage;
- }
-
- public List<CDOPackage> getTransientPackages()
- {
- List<CDOPackage> result = new ArrayList<CDOPackage>();
- for (CDOPackage cdoPackage : packages.values())
- {
- if (!cdoPackage.isPersistent())
- {
- result.add(cdoPackage);
- }
- }
-
- return result;
- }
-
- public void addPackage(CDOPackage cdoPackage)
- {
- String uri = cdoPackage.getPackageURI();
- if (uri == null)
- {
- throw new IllegalArgumentException("uri == null");
- }
-
- CDOPackage existing = packages.putIfAbsent(uri, cdoPackage);
- if (existing == null)
- {
- if (TRACER.isEnabled())
- {
- TRACER.format("Added package: {0}", cdoPackage);
- }
-
- fireElementAddedEvent(cdoPackage);
- }
- else
- {
- throw new IllegalStateException("Duplicate package: " + cdoPackage);
- }
- }
-
- public void removePackage(CDOPackage cdoPackage)
- {
- packages.remove(cdoPackage.getPackageURI());
- fireElementRemovedEvent(cdoPackage);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java
new file mode 100644
index 0000000000..aa1db75528
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java
@@ -0,0 +1,650 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.common.model;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
+import org.eclipse.emf.cdo.common.id.CDOIDTemp;
+import org.eclipse.emf.cdo.common.id.CDOIDTempMeta;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.internal.common.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+
+import org.eclipse.net4j.util.CheckUtil;
+import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
+import org.eclipse.net4j.util.lifecycle.ILifecycleState;
+import org.eclipse.net4j.util.lifecycle.LifecycleException;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOPackageRegistryImpl extends EPackageRegistryImpl implements InternalCDOPackageRegistry
+{
+ private static final long serialVersionUID = 1L;
+
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOPackageRegistryImpl.class);
+
+ private static final boolean eagerInternalCaches = false;
+
+ private MetaInstanceMapperImpl metaInstanceMapper = new MetaInstanceMapperImpl();
+
+ private boolean replacingDescriptors;
+
+ private PackageProcessor packageProcessor;
+
+ private PackageLoader packageLoader;
+
+ private transient boolean active;
+
+ @ExcludeFromDump
+ private transient InternalCDOPackageInfo[] packageInfos;
+
+ @ExcludeFromDump
+ private transient InternalCDOPackageUnit[] packageUnits;
+
+ public CDOPackageRegistryImpl()
+ {
+ }
+
+ public MetaInstanceMapper getMetaInstanceMapper()
+ {
+ return metaInstanceMapper;
+ }
+
+ public boolean isReplacingDescriptors()
+ {
+ return replacingDescriptors;
+ }
+
+ public void setReplacingDescriptors(boolean replacingDescriptors)
+ {
+ this.replacingDescriptors = replacingDescriptors;
+ }
+
+ public PackageProcessor getPackageProcessor()
+ {
+ return packageProcessor;
+ }
+
+ public void setPackageProcessor(PackageProcessor packageProcessor)
+ {
+ this.packageProcessor = packageProcessor;
+ }
+
+ public PackageLoader getPackageLoader()
+ {
+ return packageLoader;
+ }
+
+ public void setPackageLoader(PackageLoader packageLoader)
+ {
+ LifecycleUtil.checkInactive(this);
+ this.packageLoader = packageLoader;
+ }
+
+ @Override
+ public Object get(Object key)
+ {
+ LifecycleUtil.checkActive(this);
+ return super.get(key);
+ }
+
+ public Object basicPut(String nsURI, Object value)
+ {
+ LifecycleUtil.checkActive(this);
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Registering {0} --> {1}", nsURI, value);
+ }
+
+ if (packageProcessor != null)
+ {
+ value = packageProcessor.processPackage(value);
+ }
+
+ Object oldValue = get(nsURI);
+ if (oldValue instanceof InternalCDOPackageInfo && value instanceof EPackage)
+ {
+ InternalCDOPackageInfo oldPackageInfo = (InternalCDOPackageInfo)oldValue;
+ EPackage newValue = (EPackage)value;
+ if (oldPackageInfo.getEPackage(false) == null)
+ {
+ EMFUtil.addAdapter(newValue, oldPackageInfo);
+ oldPackageInfo.getPackageUnit().setState(CDOPackageUnit.State.LOADED);
+ }
+ }
+
+ return super.put(nsURI, value);
+ }
+
+ @Override
+ public synchronized Object put(String nsURI, Object value)
+ {
+ LifecycleUtil.checkActive(this);
+ if (replacingDescriptors && value instanceof EPackage.Descriptor)
+ {
+ EPackage.Descriptor descriptor = (EPackage.Descriptor)value;
+ value = descriptor.getEPackage();
+ }
+
+ if (value instanceof EPackage)
+ {
+ EPackage ePackage = (EPackage)value;
+ InternalCDOPackageInfo packageInfo = getPackageInfo(ePackage);
+ if (packageInfo == null)
+ {
+ initPackageUnit(ePackage);
+ return null;
+ }
+ }
+
+ return basicPut(nsURI, value);
+ }
+
+ public synchronized Object putEPackage(EPackage ePackage)
+ {
+ return put(ePackage.getNsURI(), ePackage);
+ }
+
+ public synchronized void putPackageUnit(InternalCDOPackageUnit packageUnit)
+ {
+ LifecycleUtil.checkActive(this);
+ packageUnit.setPackageRegistry(this);
+ for (InternalCDOPackageInfo packageInfo : packageUnit.getPackageInfos())
+ {
+ EPackage ePackage = packageInfo.getEPackage(false);
+ if (ePackage != null)
+ {
+ EMFUtil.addAdapter(ePackage, packageInfo);
+ basicPut(ePackage.getNsURI(), ePackage);
+ }
+ else
+ {
+ basicPut(packageInfo.getPackageURI(), packageInfo);
+ }
+ }
+
+ resetInternalCaches();
+ }
+
+ public synchronized InternalCDOPackageInfo getPackageInfo(EPackage ePackage)
+ {
+ LifecycleUtil.checkActive(this);
+ // Looks in the registry
+ Object object = get(ePackage.getNsURI());
+ if (object instanceof InternalCDOPackageInfo)
+ {
+ InternalCDOPackageInfo packageInfo = (InternalCDOPackageInfo)object;
+ if (packageInfo.getPackageUnit().getPackageRegistry() == this)
+ {
+ return packageInfo;
+ }
+ }
+
+ // Looks in the adapters
+ synchronized (ePackage)
+ {
+ EList<Adapter> adapters = ePackage.eAdapters();
+ for (int i = 0, size = adapters.size(); i < size; ++i)
+ {
+ Adapter adapter = adapters.get(i);
+ if (adapter instanceof InternalCDOPackageInfo)
+ {
+ InternalCDOPackageInfo packageInfo = (InternalCDOPackageInfo)adapter;
+ if (packageInfo.getPackageUnit().getPackageRegistry() == this)
+ {
+ return packageInfo;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public synchronized InternalCDOPackageInfo[] getPackageInfos()
+ {
+ LifecycleUtil.checkActive(this);
+ if (packageInfos == null)
+ {
+ List<InternalCDOPackageInfo> result = new ArrayList<InternalCDOPackageInfo>();
+ for (Object value : values())
+ {
+ if (value instanceof InternalCDOPackageInfo)
+ {
+ result.add((InternalCDOPackageInfo)value);
+ }
+ else if (value instanceof EPackage)
+ {
+ InternalCDOPackageInfo packageInfo = getPackageInfo((EPackage)value);
+ if (packageInfo != null)
+ {
+ result.add(packageInfo);
+ }
+ }
+ }
+
+ packageInfos = result.toArray(new InternalCDOPackageInfo[result.size()]);
+ Arrays.sort(packageInfos);
+ }
+
+ return packageInfos;
+ }
+
+ public InternalCDOPackageUnit getPackageUnit(EPackage ePackage)
+ {
+ CDOPackageInfo packageInfo = getPackageInfo(ePackage);
+ if (packageInfo != null)
+ {
+ return (InternalCDOPackageUnit)packageInfo.getPackageUnit();
+ }
+
+ return null;
+ }
+
+ public synchronized InternalCDOPackageUnit[] getPackageUnits()
+ {
+ LifecycleUtil.checkActive(this);
+ if (packageUnits == null)
+ {
+ Set<InternalCDOPackageUnit> result = new HashSet<InternalCDOPackageUnit>();
+ for (Object value : values())
+ {
+ if (value instanceof InternalCDOPackageInfo)
+ {
+ result.add(((InternalCDOPackageInfo)value).getPackageUnit());
+ }
+ else if (value instanceof EPackage)
+ {
+ InternalCDOPackageInfo packageInfo = getPackageInfo((EPackage)value);
+ if (packageInfo != null)
+ {
+ InternalCDOPackageUnit packageUnit = packageInfo.getPackageUnit();
+ result.add(packageUnit);
+ }
+ }
+ }
+
+ packageUnits = result.toArray(new InternalCDOPackageUnit[result.size()]);
+ Arrays.sort(packageUnits);
+ }
+
+ return packageUnits;
+ }
+
+ public synchronized EPackage[] getEPackages()
+ {
+ LifecycleUtil.checkActive(this);
+ List<EPackage> result = new ArrayList<EPackage>();
+ for (String packageURI : keySet())
+ {
+ EPackage ePackage = getEPackage(packageURI);
+ if (ePackage != null)
+ {
+ result.add(ePackage);
+ }
+ }
+
+ return result.toArray(new EPackage[result.size()]);
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("{0}[packageLoader={1}]", getClass().getSimpleName(), getPackageLoader());
+ }
+
+ public synchronized boolean isActive()
+ {
+ return active;
+ }
+
+ public synchronized ILifecycleState getLifecycleState()
+ {
+ return active ? ILifecycleState.ACTIVE : ILifecycleState.INACTIVE;
+ }
+
+ public synchronized void activate() throws LifecycleException
+ {
+ if (!active)
+ {
+ CheckUtil.checkState(packageLoader, "packageLoader");
+ active = true;
+ }
+ }
+
+ public synchronized Exception deactivate()
+ {
+ if (active)
+ {
+ try
+ {
+ disposePackageUnits();
+ metaInstanceMapper.clear();
+ metaInstanceMapper = null;
+
+ clear();
+ active = false;
+ }
+ catch (RuntimeException ex)
+ {
+ return ex;
+ }
+ }
+
+ return null;
+ }
+
+ protected void disposePackageUnits()
+ {
+ for (InternalCDOPackageUnit packageUnit : getPackageUnits())
+ {
+ packageUnit.dispose();
+ }
+
+ packageInfos = null;
+ packageUnits = null;
+ }
+
+ protected void initPackageUnit(EPackage ePackage)
+ {
+ InternalCDOPackageUnit packageUnit = createPackageUnit();
+ packageUnit.setPackageRegistry(this);
+ packageUnit.init(ePackage);
+ resetInternalCaches();
+ }
+
+ protected void resetInternalCaches()
+ {
+ packageInfos = null;
+ packageUnits = null;
+ if (eagerInternalCaches)
+ {
+ getPackageInfos();
+ getPackageUnits();
+ }
+ }
+
+ protected InternalCDOPackageUnit createPackageUnit()
+ {
+ return (InternalCDOPackageUnit)CDOModelUtil.createPackageUnit();
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public class MetaInstanceMapperImpl implements MetaInstanceMapper
+ {
+ private Map<CDOID, InternalEObject> idToMetaInstanceMap = new HashMap<CDOID, InternalEObject>();
+
+ private Map<InternalEObject, CDOID> metaInstanceToIDMap = new HashMap<InternalEObject, CDOID>();
+
+ @ExcludeFromDump
+ private transient int lastTempMetaID;
+
+ public MetaInstanceMapperImpl()
+ {
+ }
+
+ public synchronized InternalEObject lookupMetaInstance(CDOID id)
+ {
+ LifecycleUtil.checkActive(CDOPackageRegistryImpl.this);
+ InternalEObject metaInstance = idToMetaInstanceMap.get(id);
+ if (metaInstance != null)
+ {
+ return metaInstance;
+ }
+
+ if (delegateRegistry instanceof InternalCDOPackageRegistry)
+ {
+ try
+ {
+ InternalCDOPackageRegistry delegate = (InternalCDOPackageRegistry)delegateRegistry;
+ return delegate.getMetaInstanceMapper().lookupMetaInstance(id);
+ }
+ catch (RuntimeException ex)
+ {
+ // Fall-through
+ }
+ }
+
+ for (InternalCDOPackageInfo packageInfo : getPackageInfos())
+ {
+ CDOIDMetaRange metaIDRange = packageInfo.getMetaIDRange();
+ if (metaIDRange != null && metaIDRange.contains(id))
+ {
+ EPackage ePackage = packageInfo.getEPackage();
+ mapMetaInstances(ePackage, packageInfo.getMetaIDRange());
+ metaInstance = idToMetaInstanceMap.get(id);
+ if (metaInstance != null)
+ {
+ return metaInstance;
+ }
+
+ break;
+ }
+ }
+
+ throw new IllegalStateException("No meta instance mapped for " + id + "\n" + dump());
+ }
+
+ public synchronized CDOID lookupMetaInstanceID(InternalEObject metaInstance)
+ {
+ LifecycleUtil.checkActive(CDOPackageRegistryImpl.this);
+ CDOID metaID = metaInstanceToIDMap.get(metaInstance);
+ if (metaID != null)
+ {
+ return metaID;
+ }
+
+ if (delegateRegistry instanceof InternalCDOPackageRegistry)
+ {
+ try
+ {
+ InternalCDOPackageRegistry delegate = (InternalCDOPackageRegistry)delegateRegistry;
+ return delegate.getMetaInstanceMapper().lookupMetaInstanceID(metaInstance);
+ }
+ catch (RuntimeException ex)
+ {
+ // Fall-through
+ }
+ }
+
+ EPackage ePackage = getContainingPackage(metaInstance);
+ if (ePackage != null)
+ {
+ InternalCDOPackageInfo packageInfo = getPackageInfo(ePackage);
+ if (packageInfo != null)
+ {
+ mapMetaInstances(ePackage, packageInfo.getMetaIDRange());
+ metaID = metaInstanceToIDMap.get(metaInstance);
+ if (metaID != null)
+ {
+ return metaID;
+ }
+ }
+ }
+
+ throw new IllegalStateException("No meta ID mapped for " + metaInstance + "\nContaining package: " + ePackage
+ + "\n" + dump());
+ }
+
+ private EPackage getContainingPackage(InternalEObject metaInstance)
+ {
+ EObject object = metaInstance;
+ while ((object = object.eContainer()) != null)
+ {
+ if (object instanceof EPackage)
+ {
+ return (EPackage)object;
+ }
+ }
+
+ return null;
+ }
+
+ public synchronized CDOIDMetaRange mapMetaInstances(EPackage ePackage)
+ {
+ LifecycleUtil.checkActive(CDOPackageRegistryImpl.this);
+ CDOIDMetaRange range = map(ePackage, lastTempMetaID + 1);
+ lastTempMetaID = ((CDOIDTempMeta)range.getUpperBound()).getIntValue();
+ return range;
+ }
+
+ public synchronized void mapMetaInstances(EPackage ePackage, CDOIDMetaRange metaIDRange)
+ {
+ LifecycleUtil.checkActive(CDOPackageRegistryImpl.this);
+ CDOIDMetaRange range = CDOIDUtil.createMetaRange(metaIDRange.getLowerBound(), 0);
+ range = map((InternalEObject)ePackage, range);
+ if (range.size() != metaIDRange.size())
+ {
+ throw new IllegalStateException("range.size() != metaIDRange.size()");
+ }
+ }
+
+ public void mapMetaInstances(MetaInstanceMapper source)
+ {
+ for (Map.Entry<CDOID, InternalEObject> entry : source.getEntrySet())
+ {
+ map(entry.getKey(), entry.getValue());
+ }
+ }
+
+ public Set<Map.Entry<CDOID, InternalEObject>> getEntrySet()
+ {
+ return idToMetaInstanceMap.entrySet();
+ }
+
+ public synchronized void remapMetaInstanceID(CDOID oldID, CDOID newID)
+ {
+ LifecycleUtil.checkActive(CDOPackageRegistryImpl.this);
+ InternalEObject metaInstance = idToMetaInstanceMap.remove(oldID);
+ if (metaInstance == null)
+ {
+ throw new IllegalArgumentException("Unknown meta instance ID: " + oldID);
+ }
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Remapping meta instance: {0} --> {1} <-> {2}", oldID, newID, metaInstance);
+ }
+
+ map(newID, metaInstance);
+ }
+
+ public void clear()
+ {
+ idToMetaInstanceMap.clear();
+ metaInstanceToIDMap.clear();
+ lastTempMetaID = 0;
+ }
+
+ private String dump()
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream stream = new PrintStream(baos);
+
+ stream.println();
+ stream.println();
+ stream.println(CDOPackageRegistryImpl.this);
+
+ stream.println();
+ List<Map.Entry<CDOID, InternalEObject>> list = new ArrayList<Map.Entry<CDOID, InternalEObject>>(
+ idToMetaInstanceMap.entrySet());
+ Collections.sort(list, new Comparator<Map.Entry<CDOID, InternalEObject>>()
+ {
+ public int compare(Map.Entry<CDOID, InternalEObject> o1, Map.Entry<CDOID, InternalEObject> o2)
+ {
+ return o1.getKey().compareTo(o2.getKey());
+ }
+ });
+
+ for (Map.Entry<CDOID, InternalEObject> entry : list)
+ {
+ stream.println(" " + entry.getKey() + " --> " + entry.getValue());
+ }
+
+ // ReflectUtil.dump(idToMetaInstanceMap, " ", stream);
+ // stream.println();
+ // ReflectUtil.dump(metaInstanceToIDMap, " ", stream);
+
+ return baos.toString();
+ }
+
+ private CDOIDMetaRange map(EPackage ePackage, int firstMetaID)
+ {
+ CDOIDTemp lowerBound = CDOIDUtil.createTempMeta(firstMetaID);
+ CDOIDMetaRange range = CDOIDUtil.createMetaRange(lowerBound, 0);
+ return map((InternalEObject)ePackage, range);
+ }
+
+ private CDOIDMetaRange map(InternalEObject metaInstance, CDOIDMetaRange range)
+ {
+ range = range.increase();
+ CDOID id = range.getUpperBound();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Registering meta instance: {0} <-> {1}", id, metaInstance);
+ }
+
+ idToMetaInstanceMap.put(id, metaInstance);
+ CDOID oldID = metaInstanceToIDMap.put(metaInstance, id);
+ if (oldID != null)
+ {
+ idToMetaInstanceMap.remove(oldID);
+ }
+
+ for (EObject content : metaInstance.eContents())
+ {
+ if (!(content instanceof EPackage))
+ {
+ range = map((InternalEObject)content, range);
+ }
+ }
+
+ return range;
+ }
+
+ private void map(CDOID metaID, InternalEObject metaInstance)
+ {
+ idToMetaInstanceMap.put(metaID, metaInstance);
+ metaInstanceToIDMap.put(metaInstance, metaID);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java
new file mode 100644
index 0000000000..f782fcc60a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java
@@ -0,0 +1,362 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.common.model;
+
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.internal.common.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOPackageUnitImpl implements InternalCDOPackageUnit
+{
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOPackageUnitImpl.class);
+
+ private InternalCDOPackageRegistry packageRegistry;
+
+ private State state = State.PROXY;
+
+ private Type type;
+
+ private Type originalType;
+
+ private long timeStamp;
+
+ private InternalCDOPackageInfo[] packageInfos;
+
+ public CDOPackageUnitImpl()
+ {
+ }
+
+ public InternalCDOPackageRegistry getPackageRegistry()
+ {
+ return packageRegistry;
+ }
+
+ public void setPackageRegistry(InternalCDOPackageRegistry packageRegistry)
+ {
+ this.packageRegistry = packageRegistry;
+ }
+
+ public String getID()
+ {
+ try
+ {
+ return getTopLevelPackageInfo().getPackageURI();
+ }
+ catch (RuntimeException ex)
+ {
+ return "UNINITIALIZED";
+ }
+ }
+
+ public State getState()
+ {
+ return state;
+ }
+
+ public void setState(State state)
+ {
+ this.state = state;
+ if (state == State.LOADED)
+ {
+ type = null;
+ }
+ }
+
+ public Type getType()
+ {
+ if (getOriginalType() == Type.DYNAMIC)
+ {
+ type = Type.DYNAMIC;
+ }
+ else if (type == null || type == Type.UNKNOWN)
+ {
+ if (state == State.PROXY)
+ {
+ type = CDOPackageTypeRegistry.INSTANCE.lookup(getID());
+ }
+ else
+ {
+ InternalCDOPackageInfo packageInfo = getTopLevelPackageInfo();
+ EPackage ePackage = packageInfo.getEPackage();
+ type = CDOPackageTypeRegistry.INSTANCE.lookup(ePackage);
+ }
+
+ if (type == null)
+ {
+ type = Type.UNKNOWN;
+ }
+ }
+
+ return type;
+ }
+
+ public Type getOriginalType()
+ {
+ return originalType;
+ }
+
+ public void setOriginalType(Type originalType)
+ {
+ this.originalType = originalType;
+ }
+
+ public long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(long timeStamp)
+ {
+ this.timeStamp = timeStamp;
+ }
+
+ public InternalCDOPackageInfo getTopLevelPackageInfo()
+ {
+ if (packageInfos == null || packageInfos.length == 0)
+ {
+ throw new IllegalStateException("Package unit not initialized");
+ }
+
+ return packageInfos[0];
+ }
+
+ public InternalCDOPackageInfo getPackageInfo(String packageURI)
+ {
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ if (packageInfo.getPackageURI().equals(packageURI))
+ {
+ return packageInfo;
+ }
+ }
+
+ return null;
+ }
+
+ public InternalCDOPackageInfo[] getPackageInfos()
+ {
+ return packageInfos;
+ }
+
+ public void setPackageInfos(InternalCDOPackageInfo[] packageInfos)
+ {
+ this.packageInfos = packageInfos;
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ packageInfo.setPackageUnit(this);
+ }
+ }
+
+ public EPackage[] getEPackages(boolean loadOnDemand)
+ {
+ List<EPackage> result = new ArrayList<EPackage>();
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ EPackage ePackage = packageInfo.getEPackage(loadOnDemand);
+ if (ePackage != null)
+ {
+ result.add(ePackage);
+ }
+ }
+
+ return result.toArray(new EPackage[result.size()]);
+ }
+
+ public boolean isSystem()
+ {
+ return getTopLevelPackageInfo().isSystemPackage();
+ }
+
+ public void init(EPackage ePackage)
+ {
+ EPackage topLevelPackage = EMFUtil.getTopLevelPackage(ePackage);
+ List<InternalCDOPackageInfo> result = new ArrayList<InternalCDOPackageInfo>();
+ initPackageInfos(topLevelPackage, result);
+ packageInfos = result.toArray(new InternalCDOPackageInfo[result.size()]);
+
+ setState(State.NEW);
+ originalType = getType();
+ }
+
+ public void dispose()
+ {
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ EPackage ePackage = packageInfo.getEPackage(false);
+ if (ePackage != null)
+ {
+ synchronized (ePackage)
+ {
+ ePackage.eAdapters().remove(packageInfo);
+ }
+ }
+ }
+
+ packageInfos = null;
+ setState(State.DISPOSED);
+ }
+
+ public synchronized void load()
+ {
+ if (state == State.PROXY)
+ {
+ EPackage[] ePackages = null;
+ ePackages = loadPackagesFromGlobalRegistry();
+ if (ePackages == null)
+ {
+ ePackages = packageRegistry.getPackageLoader().loadPackages(this);
+ }
+
+ for (EPackage ePackage : ePackages)
+ {
+ String packageURI = ePackage.getNsURI();
+ InternalCDOPackageInfo packageInfo = getPackageInfo(packageURI);
+ synchronized (ePackage)
+ {
+ EMFUtil.addAdapter(ePackage, packageInfo);
+ EcoreUtil.resolveAll(ePackage);
+ }
+ }
+
+ setState(State.LOADED);
+ }
+ }
+
+ public void write(CDODataOutput out, boolean withPackages) throws IOException
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing {0}", this);
+ }
+
+ out.writeBoolean(withPackages);
+ if (withPackages)
+ {
+ CDOModelUtil.writePackage(out, packageInfos[0].getEPackage(), true, packageRegistry);
+ }
+
+ out.writeCDOPackageUnitType(originalType);
+ out.writeLong(timeStamp);
+ out.writeInt(packageInfos.length);
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ out.writeCDOPackageInfo(packageInfo);
+ }
+ }
+
+ public void read(CDODataInput in, InternalCDOPackageRegistry packageRegistry) throws IOException
+ {
+ EPackage ePackage = null;
+ boolean withPackages = in.readBoolean();
+ if (withPackages)
+ {
+ ePackage = CDOModelUtil.readPackage(in, packageRegistry);
+ setState(State.LOADED);
+ }
+
+ originalType = in.readCDOPackageUnitType();
+ timeStamp = in.readLong();
+ packageInfos = new InternalCDOPackageInfo[in.readInt()];
+ for (int i = 0; i < packageInfos.length; i++)
+ {
+ packageInfos[i] = (InternalCDOPackageInfo)in.readCDOPackageInfo();
+ packageInfos[i].setPackageUnit(this);
+ }
+
+ if (ePackage != null)
+ {
+ attachPackageInfos(ePackage);
+ }
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Read {0}", this);
+ }
+ }
+
+ public int compareTo(CDOPackageUnit o)
+ {
+ return getID().compareTo(o.getID());
+ }
+
+ @Override
+ public String toString()
+ {
+ String fmt = "CDOPackageUnit[id={0}, state={1}, type={2}, originalType={3}, timeStamp={4,date} {4,time}]";
+ return MessageFormat.format(fmt, getID(), getState(), getType(), getOriginalType(), getTimeStamp());
+ }
+
+ private void initPackageInfos(EPackage ePackage, List<InternalCDOPackageInfo> result)
+ {
+ InternalCDOPackageInfo packageInfo = (InternalCDOPackageInfo)CDOModelUtil.createPackageInfo();
+ packageInfo.setPackageUnit(this);
+ packageInfo.setPackageURI(ePackage.getNsURI());
+ packageInfo.setParentURI(ePackage.getESuperPackage() == null ? null : ePackage.getESuperPackage().getNsURI());
+ packageInfo.setMetaIDRange(packageRegistry.getMetaInstanceMapper().mapMetaInstances(ePackage));
+ EMFUtil.addAdapter(ePackage, packageInfo);
+
+ packageRegistry.basicPut(ePackage.getNsURI(), ePackage);
+ result.add(packageInfo);
+ for (EPackage subPackage : ePackage.getESubpackages())
+ {
+ initPackageInfos(subPackage, result);
+ }
+ }
+
+ private void attachPackageInfos(EPackage ePackage)
+ {
+ InternalCDOPackageInfo packageInfo = getPackageInfo(ePackage.getNsURI());
+ if (packageInfo != null)
+ {
+ EMFUtil.addAdapter(ePackage, packageInfo);
+ }
+
+ for (EPackage subPackage : ePackage.getESubpackages())
+ {
+ attachPackageInfos(subPackage);
+ }
+ }
+
+ private EPackage[] loadPackagesFromGlobalRegistry()
+ {
+ EPackage[] ePackages = new EPackage[packageInfos.length];
+ for (int i = 0; i < ePackages.length; i++)
+ {
+ ePackages[i] = EPackage.Registry.INSTANCE.getEPackage(packageInfos[i].getPackageURI());
+ if (ePackages[i] == null)
+ {
+ return null;
+ }
+ }
+
+ return ePackages;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java
index e7309e6686..3b78f096d2 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
-import org.eclipse.emf.cdo.internal.common.model.core.CDOFeatureMapEntryDataTypeImpl;
import java.io.IOException;
import java.util.Date;
@@ -27,6 +26,7 @@ import java.util.Map;
*/
public abstract class CDOTypeImpl implements CDOType
{
+ // TODO Use an array
public static Map<Integer, CDOTypeImpl> ids = new HashMap<Integer, CDOTypeImpl>();
private static final byte BOOLEAN_DEFAULT_PRIMITIVE = 0;
@@ -358,36 +358,26 @@ public abstract class CDOTypeImpl implements CDOType
}
};
- public static final CDOType FEATURE_MAP_ENTRY = new CDOTypeImpl("FEATURE_MAP_ENTRY", 36, false)
+ public static final CDOType ENUM = new ObjectType("ENUM", 998)
{
+ @SuppressWarnings("cast")
@Override
public Object copyValue(Object value)
{
- return value;
- }
-
- public void writeValue(CDODataOutput out, Object value) throws IOException
- {
- CDOFeatureMapEntryDataTypeImpl featureMapEntry = (CDOFeatureMapEntryDataTypeImpl)value;
- out.writeString(featureMapEntry.getURI());
- out.writeCDOID(out.getIDProvider().provideCDOID(featureMapEntry.getObject()));
+ return (Integer)value;
}
- public Object readValue(CDODataInput in) throws IOException
+ @Override
+ public void doWriteValue(CDODataOutput out, Object value) throws IOException
{
- String uri = in.readString();
- Object id = in.readCDOID();
- return new CDOFeatureMapEntryDataTypeImpl(uri, id);
+ out.writeInt((Integer)value);
}
@Override
- public Object doAdjustReferences(CDOReferenceAdjuster adjuster, Object value)
+ public Object doReadValue(CDODataInput in) throws IOException
{
- CDOFeatureMapEntryDataTypeImpl featureMapEntry = (CDOFeatureMapEntryDataTypeImpl)value;
- featureMapEntry.adjustReferences(adjuster);
- return value;
+ return in.readInt();
}
-
};
public static final CDOType CUSTOM = new CDOTypeImpl("CUSTOM", 999, true)
@@ -410,6 +400,44 @@ public abstract class CDOTypeImpl implements CDOType
}
};
+ public static final CDOType FEATURE_MAP_ENTRY = new CDOTypeImpl("FEATURE_MAP_ENTRY", 36, false)
+ {
+ @Override
+ public Object copyValue(Object value)
+ {
+ return value;
+ }
+
+ public void writeValue(CDODataOutput out, Object value) throws IOException
+ {
+ // TODO: implement CDOTypeImpl.enclosing_method(enclosing_method_arguments)
+ throw new UnsupportedOperationException();
+ // CDOFeatureMapEntryDataTypeImpl featureMapEntry = (CDOFeatureMapEntryDataTypeImpl)value;
+ // out.writeString(featureMapEntry.getURI());
+ // out.writeCDOID(out.getIDProvider().provideCDOID(featureMapEntry.getObject()));
+ }
+
+ public Object readValue(CDODataInput in) throws IOException
+ {
+ // TODO: implement CDOTypeImpl.enclosing_method(enclosing_method_arguments)
+ throw new UnsupportedOperationException();
+ // String uri = in.readString();
+ // Object id = in.readCDOID();
+ // return new CDOFeatureMapEntryDataTypeImpl(uri, id);
+ }
+
+ @Override
+ public Object doAdjustReferences(CDOReferenceAdjuster adjuster, Object value)
+ {
+ // TODO: implement CDOTypeImpl.enclosing_method(enclosing_method_arguments)
+ throw new UnsupportedOperationException();
+ // CDOFeatureMapEntryDataTypeImpl featureMapEntry = (CDOFeatureMapEntryDataTypeImpl)value;
+ // featureMapEntry.adjustReferences(adjuster);
+ // return value;
+ }
+
+ };
+
private String name;
private int typeID;
@@ -465,6 +493,7 @@ public abstract class CDOTypeImpl implements CDOType
public void write(CDODataOutput out) throws IOException
{
+ // TODO Use byte IDs
out.writeInt(typeID);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/GenUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java
index e5354912c2..ec293041e9 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/GenUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.internal.cdo.util;
+package org.eclipse.emf.cdo.internal.common.model;
import org.eclipse.net4j.util.StringUtil;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/TestTransfer.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/TestTransfer.java
new file mode 100644
index 0000000000..1acec9e6eb
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/TestTransfer.java
@@ -0,0 +1,148 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.common.model;
+
+import org.eclipse.net4j.util.WrappedException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class TestTransfer
+{
+ public static void main(String[] args) throws IOException
+ {
+ // Create packageA
+ //
+ EAttribute attributeA = EcoreFactory.eINSTANCE.createEAttribute();
+ attributeA.setName("attributeA");
+ attributeA.setEType(EcorePackage.eINSTANCE.getEString());
+
+ EClass classA = EcoreFactory.eINSTANCE.createEClass();
+ classA.setName("classA");
+ classA.getEStructuralFeatures().add(attributeA);
+
+ EPackage packageA = EcoreFactory.eINSTANCE.createEPackage();
+ packageA.setName("packageA");
+ packageA.setNsPrefix("packageA");
+ packageA.setNsURI("http://packageA");
+ packageA.getEClassifiers().add(classA);
+
+ // Create packageB
+ //
+ EAttribute attributeB = EcoreFactory.eINSTANCE.createEAttribute();
+ attributeB.setName("attributeB");
+ attributeB.setEType(EcorePackage.eINSTANCE.getEString());
+
+ EClass classB = EcoreFactory.eINSTANCE.createEClass();
+ classB.setName("classA");
+ classB.getEStructuralFeatures().add(attributeB);
+ classB.getESuperTypes().add(classA);
+
+ EPackage packageB = EcoreFactory.eINSTANCE.createEPackage();
+ packageB.setName("packageB");
+ packageB.setNsPrefix("packageB");
+ packageB.setNsURI("http://packageB");
+ packageB.getEClassifiers().add(classB);
+
+ // Simulate generated global packages
+ //
+ EPackage.Registry.INSTANCE.put(packageA.getNsURI(), packageA);
+ EPackage.Registry.INSTANCE.put(packageB.getNsURI(), packageB);
+
+ // Serialize both packages
+ //
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ serialize(packageA, baos);
+ serialize(packageB, baos);
+ }
+
+ private static void serialize(EPackage ePackage, OutputStream out) throws IOException
+ {
+ Resource resource = ePackage.eResource();
+ if (resource == null)
+ {
+ resource = createPackageResource(ePackage.getNsURI());
+ resource.getContents().add(ePackage);
+ }
+
+ resource.save(out, null);
+ }
+
+ private static Resource createPackageResource(String uri)
+ {
+ Resource.Factory resourceFactory = new EcoreResourceFactoryImpl();
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", resourceFactory);
+ resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put("*", resourceFactory);
+
+ return resourceSet.createResource(URI.createURI(uri));
+ }
+
+ public static class UTIL
+ {
+ public static byte[] getPackageBytes(EPackage ePackage, boolean zipped)
+ {
+ try
+ {
+ Resource resource = ePackage.eResource();
+ if (resource == null)
+ {
+ resource = createPackageResource(ePackage.getNsURI());
+ resource.getContents().add(ePackage);
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ resource.save(baos, null);
+ return baos.toByteArray();
+ }
+ catch (Exception ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ }
+
+ public static EPackage createPackage(String uri, byte[] bytes, boolean zipped)
+ {
+ try
+ {
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ Resource resource = createPackageResource(uri);
+ resource.load(bais, null);
+
+ EList<EObject> contents = resource.getContents();
+ return (EPackage)contents.get(0);
+ }
+ catch (Exception ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOCorePackageImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOCorePackageImpl.java
deleted file mode 100644
index b8da12e803..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOCorePackageImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.core;
-
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageManagerImpl;
-
-/**
- * @author Eike Stepper
- */
-public final class CDOCorePackageImpl extends CDOPackageImpl implements CDOCorePackage
-{
- private CDOObjectClassImpl cdoObjectClass;
-
- public CDOCorePackageImpl(CDOPackageManagerImpl packageManager)
- {
- super(packageManager, PACKAGE_URI, NAME, null, false, null, null);
- addClass(cdoObjectClass = new CDOObjectClassImpl(this));
- }
-
- public CDOObjectClassImpl getCDOObjectClass()
- {
- return cdoObjectClass;
- }
-
- @SuppressWarnings("all")
- @Override
- public String getEcore()
- {
- return null;
- }
-
- @Override
- public boolean isSystem()
- {
- return true;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOFeatureMapEntryDataTypeImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOFeatureMapEntryDataTypeImpl.java
deleted file mode 100644
index 20d3374e3e..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOFeatureMapEntryDataTypeImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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:
- * Simon McDuff - initial API and implementation
- * Eike Stepper - maintenance
- */
-package org.eclipse.emf.cdo.internal.common.model.core;
-
-import org.eclipse.emf.cdo.common.model.core.CDOFeatureMapEntryDataType;
-import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjustable;
-import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
-
-/**
- * @author Simon McDuff
- */
-public class CDOFeatureMapEntryDataTypeImpl implements CDOFeatureMapEntryDataType, CDOReferenceAdjustable
-{
- private String uri;
-
- private Object object;
-
- public CDOFeatureMapEntryDataTypeImpl(String uri, Object object)
- {
- this.uri = uri;
- this.object = object;
- }
-
- public String getURI()
- {
- return uri;
- }
-
- public Object getObject()
- {
- return object;
- }
-
- public void adjustReferences(CDOReferenceAdjuster revisionAdjuster)
- {
- object = revisionAdjuster.adjustReference(object);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOObjectClassImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOObjectClassImpl.java
deleted file mode 100644
index 132bfb1b89..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/core/CDOObjectClassImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.core;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.core.CDOObjectClass;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOObjectClassImpl extends CDOClassImpl implements CDOObjectClass
-{
- public CDOObjectClassImpl(CDOPackage containingPackage)
- {
- super(containingPackage, CLASSIFIER_ID, NAME, false);
- }
-
- @Override
- public boolean isRoot()
- {
- return true;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOContentsFeatureImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOContentsFeatureImpl.java
deleted file mode 100644
index 07f3a4889e..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOContentsFeatureImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.common.model.core.CDOObjectClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOContentsFeature;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOContentsFeatureImpl extends CDOFeatureImpl implements CDOContentsFeature
-{
- public CDOContentsFeatureImpl(CDOClass containingClass, CDOPackageManager packageManager)
- {
- super(containingClass, FEATURE_ID, NAME, new CDOClassProxy(CDOModelUtil.createClassRef(CDOCorePackage.PACKAGE_URI,
- CDOObjectClass.CLASSIFIER_ID), packageManager), true, true);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOFolderFeatureImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOFolderFeatureImpl.java
deleted file mode 100644
index 17ab4a7616..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOFolderFeatureImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDOFolderFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceFolderClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOFolderFeatureImpl extends CDOFeatureImpl implements CDOFolderFeature
-{
- public CDOFolderFeatureImpl(CDOClass containingClass, CDOPackageManager packageManager)
- {
- super(containingClass, FEATURE_ID, NAME, new CDOClassProxy(CDOModelUtil.createClassRef(
- CDOResourcePackage.PACKAGE_URI, CDOResourceFolderClass.CLASSIFIER_ID), packageManager), false, false);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONameFeatureImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONameFeatureImpl.java
deleted file mode 100644
index ee395ad78d..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONameFeatureImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.resource.CDONameFeature;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDONameFeatureImpl extends CDOFeatureImpl implements CDONameFeature
-{
- public CDONameFeatureImpl(CDOClass containingClass)
- {
- super(containingClass, FEATURE_ID, NAME, CDOTypeImpl.STRING, null, false);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONodesFeatureImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONodesFeatureImpl.java
deleted file mode 100644
index a74b9bb31a..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDONodesFeatureImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDONodesFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOFeatureImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDONodesFeatureImpl extends CDOFeatureImpl implements CDONodesFeature
-{
- public CDONodesFeatureImpl(CDOClass containingClass, CDOPackageManager packageManager)
- {
- super(containingClass, FEATURE_ID, NAME, new CDOClassProxy(CDOModelUtil.createClassRef(
- CDOResourcePackage.PACKAGE_URI, CDOResourceNodeClass.CLASSIFIER_ID), packageManager), true, true);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceClassImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceClassImpl.java
deleted file mode 100644
index 4e1a6f2d5d..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceClassImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOResourceClassImpl extends CDOClassImpl implements CDOResourceClass
-{
- private CDOContentsFeatureImpl cdoContentsFeature;
-
- public CDOResourceClassImpl(CDOPackage containingPackage, CDOPackageManager packageManager)
- {
- super(containingPackage, CLASSIFIER_ID, NAME, false);
- addSuperType(CDOModelUtil.createClassRef(CDOResourcePackage.PACKAGE_URI, CDOResourceNodeClass.CLASSIFIER_ID));
- addFeature(cdoContentsFeature = new CDOContentsFeatureImpl(this, packageManager));
- }
-
- @Override
- public boolean isResourceNode()
- {
- return true;
- }
-
- @Override
- public boolean isResourceFolder()
- {
- return false;
- }
-
- @Override
- public boolean isResource()
- {
- return true;
- }
-
- public CDOContentsFeatureImpl getCDOContentsFeature()
- {
- return cdoContentsFeature;
- }
-
- @Override
- public CDOFeature lookupFeature(int featureID)
- {
- if (featureID == 5)
- {
- return cdoContentsFeature;
- }
-
- return super.lookupFeature(featureID);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceFolderClassImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceFolderClassImpl.java
deleted file mode 100644
index e0c3ad9b6d..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceFolderClassImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceFolderClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOResourceFolderClassImpl extends CDOClassImpl implements CDOResourceFolderClass
-{
- private CDONodesFeatureImpl cdoNodesFeature;
-
- public CDOResourceFolderClassImpl(CDOPackage containingPackage, CDOPackageManager packageManager)
- {
- super(containingPackage, CLASSIFIER_ID, NAME, false);
- addSuperType(CDOModelUtil.createClassRef(CDOResourcePackage.PACKAGE_URI, CDOResourceNodeClass.CLASSIFIER_ID));
- addFeature(cdoNodesFeature = new CDONodesFeatureImpl(this, packageManager));
- }
-
- @Override
- public boolean isResourceNode()
- {
- return true;
- }
-
- @Override
- public boolean isResourceFolder()
- {
- return true;
- }
-
- @Override
- public boolean isResource()
- {
- return false;
- }
-
- public CDONodesFeatureImpl getCDONodesFeature()
- {
- return cdoNodesFeature;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceNodeClassImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceNodeClassImpl.java
deleted file mode 100644
index 3256085c4e..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourceNodeClassImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.internal.common.model.CDOClassImpl;
-
-/**
- * @author Eike Stepper
- */
-public class CDOResourceNodeClassImpl extends CDOClassImpl implements CDOResourceNodeClass
-{
- private CDOFolderFeatureImpl cdoFolderFeature;
-
- private CDONameFeatureImpl cdoNameFeature;
-
- public CDOResourceNodeClassImpl(CDOPackage containingPackage, CDOPackageManager packageManager)
- {
- super(containingPackage, CLASSIFIER_ID, NAME, true);
- addFeature(cdoFolderFeature = new CDOFolderFeatureImpl(this, packageManager));
- addFeature(cdoNameFeature = new CDONameFeatureImpl(this));
- }
-
- @Override
- public boolean isResourceNode()
- {
- return true;
- }
-
- @Override
- public boolean isResourceFolder()
- {
- return false;
- }
-
- @Override
- public boolean isResource()
- {
- return false;
- }
-
- public CDOFolderFeatureImpl getCDOFolderFeature()
- {
- return cdoFolderFeature;
- }
-
- public CDONameFeatureImpl getCDONameFeature()
- {
- return cdoNameFeature;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourcePackageImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourcePackageImpl.java
deleted file mode 100644
index 5cfcd616fc..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/resource/CDOResourcePackageImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model.resource;
-
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageImpl;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageManagerImpl;
-
-/**
- * @author Eike Stepper
- */
-public final class CDOResourcePackageImpl extends CDOPackageImpl implements CDOResourcePackage
-{
- private CDOResourceNodeClassImpl cdoResourceNodeClass;
-
- private CDOResourceFolderClassImpl cdoResourceFolderClass;
-
- private CDOResourceClassImpl cdoResourceClass;
-
- public CDOResourcePackageImpl(CDOPackageManagerImpl packageManager)
- {
- super(packageManager, PACKAGE_URI, NAME, null, false, null, null);
- addClass(cdoResourceNodeClass = new CDOResourceNodeClassImpl(this, packageManager));
- addClass(cdoResourceFolderClass = new CDOResourceFolderClassImpl(this, packageManager));
- addClass(cdoResourceClass = new CDOResourceClassImpl(this, packageManager));
- }
-
- public CDOResourceFolderClassImpl getCDOResourceFolderClass()
- {
- return cdoResourceFolderClass;
- }
-
- public CDOResourceNodeClassImpl getCDOResourceNodeClass()
- {
- return cdoResourceNodeClass;
- }
-
- public CDOResourceClassImpl getCDOResourceClass()
- {
- return cdoResourceClass;
- }
-
- @SuppressWarnings("all")
- @Override
- public String getEcore()
- {
- return null;
- }
-
- @Override
- public boolean isSystem()
- {
- return true;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
index aba35324db..f21de27ded 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
@@ -11,6 +11,7 @@
*/
package org.eclipse.emf.cdo.internal.common.revision;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
@@ -20,6 +21,9 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.MoveableArrayList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
/**
* @author Simon McDuff
*/
@@ -44,8 +48,9 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
}
}
- public InternalCDOList clone(CDOType type)
+ public InternalCDOList clone(EClassifier classifier)
{
+ CDOType type = CDOModelUtil.getType(classifier);
int size = size();
InternalCDOList list = new CDOListImpl(size, 0);
for (int j = 0; j < size; j++)
@@ -62,8 +67,9 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
return super.get(index);
}
- public void adjustReferences(CDOReferenceAdjuster revisionAdjuster, CDOType type)
+ public void adjustReferences(CDOReferenceAdjuster revisionAdjuster, EClass classifier)
{
+ CDOType type = CDOModelUtil.getType(classifier);
int size = size();
for (int i = 0; i < size; i++)
{
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 e5bbb23a1a..81002ca0da 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
@@ -15,13 +15,16 @@ package org.eclipse.emf.cdo.internal.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.spi.common.revision.AbstractCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -31,9 +34,9 @@ public class CDORevisionImpl extends AbstractCDORevision
{
private Object[] values;
- public CDORevisionImpl(CDOClass cdoClass, CDOID id)
+ public CDORevisionImpl(EClass eClass, CDOID id)
{
- super(cdoClass, id);
+ super(eClass, id);
}
public CDORevisionImpl(CDODataInput in) throws IOException
@@ -44,22 +47,23 @@ public class CDORevisionImpl extends AbstractCDORevision
public CDORevisionImpl(CDORevisionImpl source)
{
super(source);
- CDOFeature[] features = getCDOClass().getAllFeatures();
- initValues(features.length);
+ EStructuralFeature[] features = CDOModelUtil.getAllPersistentFeatures(getEClass());
+ initValues(features);
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
- CDOType type = feature.getType();
+ EStructuralFeature feature = features[i];
+ EClassifier classifier = feature.getEType();
if (feature.isMany())
{
InternalCDOList sourceList = (InternalCDOList)source.values[i];
if (sourceList != null)
{
- setValue(i, sourceList.clone(type));
+ setValue(i, sourceList.clone(classifier));
}
}
else
{
+ CDOType type = CDOModelUtil.getType(classifier);
setValue(i, type.copyValue(source.values[i]));
}
}
@@ -71,20 +75,20 @@ public class CDORevisionImpl extends AbstractCDORevision
}
@Override
- protected void initValues(int size)
+ protected void initValues(EStructuralFeature[] allPersistentFeatures)
{
- values = new Object[size];
+ values = new Object[allPersistentFeatures.length];
}
@Override
- protected Object getValue(int i)
+ protected Object getValue(int featureIndex)
{
- return values[i];
+ return values[featureIndex];
}
@Override
- protected void setValue(int i, Object value)
+ protected void setValue(int featureIndex, Object value)
{
- values[i] = value;
+ values[featureIndex] = value;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionResolverImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionResolverImpl.java
index d3b2a23d4f..21073a061d 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionResolverImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionResolverImpl.java
@@ -13,8 +13,6 @@
package org.eclipse.emf.cdo.internal.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
@@ -26,6 +24,8 @@ import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -69,7 +69,7 @@ public abstract class CDORevisionResolverImpl extends Lifecycle implements CDORe
return cache.getRevisionByVersion(id, version) != null;
}
- public CDOClass getObjectType(CDOID id)
+ public EClass getObjectType(CDOID id)
{
return cache.getObjectType(id);
}
@@ -268,8 +268,6 @@ public abstract class CDORevisionResolverImpl extends Lifecycle implements CDORe
protected abstract List<InternalCDORevision> loadRevisionsByTime(Collection<CDOID> ids, int referenceChunk,
long timeStamp);
- protected abstract CDOPackageManager getPackageManager();
-
@Override
protected void doBeforeActivate() throws Exception
{
@@ -284,7 +282,6 @@ public abstract class CDORevisionResolverImpl extends Lifecycle implements CDORe
protected void doActivate() throws Exception
{
super.doActivate();
- cache.setPackageManager(getPackageManager());
LifecycleUtil.activate(cache);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/lru/LRURevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/lru/LRURevisionCache.java
index 1550d9c431..c75b431460 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/lru/LRURevisionCache.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/lru/LRURevisionCache.java
@@ -13,10 +13,7 @@ package org.eclipse.emf.cdo.internal.common.revision.cache.lru;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDONameFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
+import org.eclipse.emf.cdo.common.model.CDOModelConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
@@ -27,6 +24,9 @@ import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
@@ -42,8 +42,6 @@ public class LRURevisionCache extends Lifecycle implements CDORevisionCache
private Map<CDOID, RevisionHolder> revisions = new HashMap<CDOID, RevisionHolder>();
- private CDOPackageManager packageManager;
-
private int capacityCurrent;
private int capacityRevised;
@@ -52,27 +50,10 @@ public class LRURevisionCache extends Lifecycle implements CDORevisionCache
private LRU revisedLRU;
- private transient CDONameFeature cdoNameFeature;
-
public LRURevisionCache()
{
}
- public CDOPackageManager getPackageManager()
- {
- return packageManager;
- }
-
- public void setPackageManager(CDOPackageManager packageManager)
- {
- this.packageManager = packageManager;
- if (packageManager != null)
- {
- CDOResourceNodeClass resourceNodeClass = packageManager.getCDOResourcePackage().getCDOResourceNodeClass();
- cdoNameFeature = resourceNodeClass.getCDONameFeature();
- }
- }
-
public int getCapacityCurrent()
{
return capacityCurrent;
@@ -124,7 +105,7 @@ public class LRURevisionCache extends Lifecycle implements CDORevisionCache
return currentRevisions;
}
- public synchronized CDOClass getObjectType(CDOID id)
+ public synchronized EClass getObjectType(CDOID id)
{
RevisionHolder holder = getHolder(id);
if (holder == null)
@@ -133,7 +114,7 @@ public class LRURevisionCache extends Lifecycle implements CDORevisionCache
}
InternalCDORevision revision = holder.getRevision();
- return revision.getCDOClass();
+ return revision.getEClass();
}
public synchronized InternalCDORevision getRevision(CDOID id)
@@ -271,7 +252,9 @@ public class LRURevisionCache extends Lifecycle implements CDORevisionCache
CDOID revisionFolderID = (CDOID)revision.getContainerID();
if (CDOIDUtil.equals(revisionFolderID, folderID))
{
- String revisionName = (String)revision.getValue(cdoNameFeature);
+ EStructuralFeature feature = revision.getEClass().getEStructuralFeature(
+ CDOModelConstants.RESOURCE_NODE_NAME_ATTRIBUTE);
+ String revisionName = (String)revision.getValue(feature);
if (ObjectUtil.equals(revisionName, name))
{
return revision.getID();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/mem/MEMRevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/mem/MEMRevisionCache.java
index 4a947eba1f..f0e23fdf64 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/mem/MEMRevisionCache.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/mem/MEMRevisionCache.java
@@ -15,10 +15,7 @@ package org.eclipse.emf.cdo.internal.common.revision.cache.mem;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.resource.CDONameFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
+import org.eclipse.emf.cdo.common.model.CDOModelConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
@@ -35,6 +32,9 @@ import org.eclipse.net4j.util.ref.KeyedWeakReference;
import org.eclipse.net4j.util.ref.ReferenceQueueWorker;
import org.eclipse.net4j.util.ref.ReferenceType;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.lang.ref.Reference;
import java.util.ArrayList;
import java.util.HashMap;
@@ -52,14 +52,10 @@ public class MEMRevisionCache extends ReferenceQueueWorker<InternalCDORevision>
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_REVISION, MEMRevisionCache.class);
- private CDOPackageManager packageManager;
-
private Map<CDOID, CacheList> cacheLists = new HashMap<CDOID, CacheList>();
private ReferenceType referenceType;
- private transient CDONameFeature cdoNameFeature;
-
public MEMRevisionCache(ReferenceType referenceType)
{
this.referenceType = referenceType;
@@ -70,21 +66,6 @@ public class MEMRevisionCache extends ReferenceQueueWorker<InternalCDORevision>
this(ReferenceType.SOFT);
}
- public CDOPackageManager getPackageManager()
- {
- return packageManager;
- }
-
- public void setPackageManager(CDOPackageManager packageManager)
- {
- this.packageManager = packageManager;
- if (packageManager != null)
- {
- CDOResourceNodeClass resourceNodeClass = packageManager.getCDOResourcePackage().getCDOResourceNodeClass();
- cdoNameFeature = resourceNodeClass.getCDONameFeature();
- }
- }
-
public ReferenceType getReferenceType()
{
return referenceType;
@@ -95,7 +76,7 @@ public class MEMRevisionCache extends ReferenceQueueWorker<InternalCDORevision>
this.referenceType = referenceType;
}
- public CDOClass getObjectType(CDOID id)
+ public EClass getObjectType(CDOID id)
{
return null;
}
@@ -348,7 +329,9 @@ public class MEMRevisionCache extends ReferenceQueueWorker<InternalCDORevision>
CDOID revisionFolderID = (CDOID)revision.getContainerID();
if (CDOIDUtil.equals(revisionFolderID, folderID))
{
- String revisionName = (String)revision.getValue(cdoNameFeature);
+ EStructuralFeature feature = revision.getEClass().getEStructuralFeature(
+ CDOModelConstants.RESOURCE_NODE_NAME_ATTRIBUTE);
+ String revisionName = (String)revision.getValue(feature);
if (ObjectUtil.equals(revisionName, name))
{
return revision.getID();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/two/TwoLevelRevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/two/TwoLevelRevisionCache.java
index 2dbfbc4a6f..152c332fba 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/two/TwoLevelRevisionCache.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/cache/two/TwoLevelRevisionCache.java
@@ -13,8 +13,6 @@
package org.eclipse.emf.cdo.internal.common.revision.cache.two;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
@@ -26,6 +24,8 @@ import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.ArrayList;
import java.util.List;
@@ -36,8 +36,6 @@ public class TwoLevelRevisionCache extends Lifecycle implements CDORevisionCache
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_REVISION, TwoLevelRevisionCache.class);
- private CDOPackageManager packageManager;
-
private CDORevisionCache level1;
private CDORevisionCache level2;
@@ -46,25 +44,6 @@ public class TwoLevelRevisionCache extends Lifecycle implements CDORevisionCache
{
}
- public CDOPackageManager getPackageManager()
- {
- return packageManager;
- }
-
- public void setPackageManager(CDOPackageManager packageManager)
- {
- this.packageManager = packageManager;
- if (level1 != null)
- {
- level1.setPackageManager(packageManager);
- }
-
- if (level2 != null)
- {
- level2.setPackageManager(packageManager);
- }
- }
-
public CDORevisionCache getLevel1()
{
return level1;
@@ -73,7 +52,6 @@ public class TwoLevelRevisionCache extends Lifecycle implements CDORevisionCache
public void setLevel1(CDORevisionCache level1)
{
this.level1 = level1;
- setPackageManager(packageManager);
}
public CDORevisionCache getLevel2()
@@ -84,12 +62,17 @@ public class TwoLevelRevisionCache extends Lifecycle implements CDORevisionCache
public void setLevel2(CDORevisionCache level2)
{
this.level2 = level2;
- setPackageManager(packageManager);
}
- public CDOClass getObjectType(CDOID id)
+ public EClass getObjectType(CDOID id)
{
- return null;
+ EClass objectType = level1.getObjectType(id);
+ if (objectType == null)
+ {
+ objectType = level2.getObjectType(id);
+ }
+
+ return objectType;
}
public InternalCDORevision getRevision(CDOID id)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOAddFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOAddFeatureDeltaImpl.java
index d0b454263c..916af9bd4f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOAddFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOAddFeatureDeltaImpl.java
@@ -12,13 +12,14 @@
package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -27,14 +28,14 @@ import java.io.IOException;
public class CDOAddFeatureDeltaImpl extends CDOSingleValueFeatureDeltaImpl implements CDOAddFeatureDelta,
IListIndexAffecting, IListTargetAdding
{
- public CDOAddFeatureDeltaImpl(CDOFeature feature, int index, Object value)
+ public CDOAddFeatureDeltaImpl(EStructuralFeature feature, int index, Object value)
{
super(feature, index, value);
}
- public CDOAddFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOAddFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
}
public Type getType()
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOClearFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOClearFeatureDeltaImpl.java
index e3f9eaa76e..2f06ec99b1 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOClearFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOClearFeatureDeltaImpl.java
@@ -12,14 +12,15 @@
package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOClearFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -27,14 +28,14 @@ import java.io.IOException;
*/
public class CDOClearFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOClearFeatureDelta
{
- public CDOClearFeatureDeltaImpl(CDOFeature feature)
+ public CDOClearFeatureDeltaImpl(EStructuralFeature feature)
{
super(feature);
}
- public CDOClearFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOClearFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
}
public Type getType()
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 c31542c293..7f1798bb5c 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
@@ -16,18 +16,15 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOContainerFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EStructuralFeatureImpl;
+
import java.io.IOException;
/**
@@ -49,7 +46,7 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements
this.newContainerFeatureID = newContainerFeatureID;
}
- public CDOContainerFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOContainerFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
super(CONTAINER_FEATURE);
newContainerFeatureID = in.readInt();
@@ -92,7 +89,7 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements
}
@Override
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
out.writeInt(getType().ordinal());
out.writeInt(newContainerFeatureID);
@@ -108,92 +105,9 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements
/**
* @author Simon McDuff
*/
- public static final class ContainerFeature implements CDOFeature
+ public static final class ContainerFeature extends EStructuralFeatureImpl
{
- public CDOClass getContainingClass()
- {
- return null;
- }
-
- public void setContainingClass(CDOClass cdoClass)
- {
- }
-
- public CDOPackage getContainingPackage()
- {
- return null;
- }
-
- public int getFeatureID()
- {
- return 0;
- }
-
- public int getFeatureIndex()
- {
- return 0;
- }
-
- public CDOClass getReferenceType()
- {
- return null;
- }
-
- public CDOClassProxy getReferenceTypeProxy()
- {
- return null;
- }
-
- public CDOType getType()
- {
- return null;
- }
-
- public boolean isContainment()
- {
- return false;
- }
-
- public boolean isMany()
- {
- return false;
- }
-
- public boolean isReference()
- {
- return false;
- }
-
- public Object getClientInfo()
- {
- return null;
- }
-
- public String getName()
- {
- return null;
- }
-
- public String getQualifiedName()
- {
- return null;
- }
-
- public CDOPackageManager getPackageManager()
- {
- return null;
- }
-
- public Object getServerInfo()
- {
- return null;
- }
-
- public void setClientInfo(Object clientInfo)
- {
- }
-
- public void setServerInfo(Object serverInfo)
+ public ContainerFeature()
{
}
@@ -202,10 +116,5 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements
{
return "CONTAINER_FEATURE";
}
-
- public Object getDefaultValue()
- {
- return null;
- }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java
index 55f51af19e..900f59d6d5 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java
@@ -13,11 +13,12 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -27,26 +28,26 @@ public abstract class CDOFeatureDeltaImpl implements InternalCDOFeatureDelta
{
public static final int NO_INDEX = -1;
- private CDOFeature feature;
+ private EStructuralFeature feature;
- protected CDOFeatureDeltaImpl(CDOFeature feature)
+ protected CDOFeatureDeltaImpl(EStructuralFeature feature)
{
this.feature = feature;
}
- public CDOFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
int featureID = in.readInt();
- feature = cdoClass.getAllFeatures()[featureID];
+ feature = eClass.getEStructuralFeature(featureID);
}
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
out.writeInt(getType().ordinal());
- out.writeInt(cdoClass.getFeatureID(feature));
+ out.writeInt(eClass.getFeatureID(feature));
}
- public CDOFeature getFeature()
+ public EStructuralFeature getFeature()
{
return feature;
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java
index 73b12a26b4..0b1bac55bf 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java
@@ -13,8 +13,6 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
@@ -24,6 +22,10 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORemoveFeatureDelta;
import org.eclipse.net4j.util.collection.Pair;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
@@ -43,18 +45,18 @@ public class CDOListFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOL
private transient List<CDOFeatureDelta> notProcessedFeatureDelta;
- public CDOListFeatureDeltaImpl(CDOFeature feature)
+ public CDOListFeatureDeltaImpl(EStructuralFeature feature)
{
super(feature);
}
- public CDOListFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOListFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
int size = in.readInt();
for (int i = 0; i < size; i++)
{
- featureDeltas.add(in.readCDOFeatureDelta(cdoClass));
+ featureDeltas.add(in.readCDOFeatureDelta(eClass));
}
}
@@ -71,13 +73,13 @@ public class CDOListFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOL
}
@Override
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
- super.write(out, cdoClass);
+ super.write(out, eClass);
out.writeInt(featureDeltas.size());
for (CDOFeatureDelta featureDelta : featureDeltas)
{
- out.writeCDOFeatureDelta(featureDelta, cdoClass);
+ out.writeCDOFeatureDelta(featureDelta, eClass);
}
}
@@ -155,8 +157,8 @@ public class CDOListFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOL
private void cleanupWithNewDelta(CDOFeatureDelta featureDelta)
{
- CDOFeature feature = getFeature();
- if (feature.isReference() && featureDelta instanceof CDORemoveFeatureDelta)
+ EStructuralFeature feature = getFeature();
+ if (feature instanceof EReference && featureDelta instanceof CDORemoveFeatureDelta)
{
int indexToRemove = ((CDORemoveFeatureDelta)featureDelta).getIndex();
reconstructAddedIndicesWithNoCopy();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java
index 2fb19ae9e6..14326ad496 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java
@@ -13,14 +13,15 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.common.revision.delta.CDOMoveFeatureDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -32,24 +33,24 @@ public class CDOMoveFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOM
private int newPosition;
- public CDOMoveFeatureDeltaImpl(CDOFeature feature, int newPosition, int oldPosition)
+ public CDOMoveFeatureDeltaImpl(EStructuralFeature feature, int newPosition, int oldPosition)
{
super(feature);
this.newPosition = newPosition;
this.oldPosition = oldPosition;
}
- public CDOMoveFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOMoveFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
newPosition = in.readInt();
oldPosition = in.readInt();
}
@Override
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
- super.write(out, cdoClass);
+ super.write(out, eClass);
out.writeInt(newPosition);
out.writeInt(oldPosition);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORemoveFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORemoveFeatureDeltaImpl.java
index 36d7de44fe..ce2cd7bd44 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORemoveFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORemoveFeatureDeltaImpl.java
@@ -13,14 +13,15 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.common.revision.delta.CDORemoveFeatureDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -31,22 +32,22 @@ public class CDORemoveFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CD
{
private int index;
- public CDORemoveFeatureDeltaImpl(CDOFeature feature, int index)
+ public CDORemoveFeatureDeltaImpl(EStructuralFeature feature, int index)
{
super(feature);
this.index = index;
}
- public CDORemoveFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDORemoveFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
index = in.readInt();
}
@Override
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
- super.write(out, cdoClass);
+ super.write(out, eClass);
out.writeInt(index);
}
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 3aeaed35da..11b376a9d6 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
@@ -15,8 +15,7 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
@@ -28,6 +27,9 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -41,18 +43,18 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
{
private CDOID cdoID;
- private CDOClass cdoClass;
+ private EClass eClass;
private int dirtyVersion;
private int originVersion;
- private Map<CDOFeature, CDOFeatureDelta> featureDeltas = new HashMap<CDOFeature, CDOFeatureDelta>();
+ private Map<EStructuralFeature, CDOFeatureDelta> featureDeltas = new HashMap<EStructuralFeature, CDOFeatureDelta>();
public CDORevisionDeltaImpl(CDORevision revision)
{
cdoID = revision.getID();
- cdoClass = revision.getCDOClass();
+ eClass = revision.getEClass();
dirtyVersion = revision.getVersion();
originVersion = dirtyVersion - 1;
}
@@ -60,7 +62,7 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
public CDORevisionDeltaImpl(CDORevisionDelta revisionDelta)
{
cdoID = revisionDelta.getID();
- cdoClass = ((CDORevisionDeltaImpl)revisionDelta).cdoClass;
+ eClass = ((CDORevisionDeltaImpl)revisionDelta).eClass;
dirtyVersion = revisionDelta.getDirtyVersion();
originVersion = revisionDelta.getOriginVersion();
@@ -72,13 +74,13 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
public CDORevisionDeltaImpl(CDORevision originRevision, CDORevision dirtyRevision)
{
- if (originRevision.getCDOClass() != dirtyRevision.getCDOClass())
+ if (originRevision.getEClass() != dirtyRevision.getEClass())
{
throw new IllegalArgumentException();
}
cdoID = originRevision.getID();
- cdoClass = originRevision.getCDOClass();
+ eClass = originRevision.getEClass();
dirtyVersion = dirtyRevision.getVersion();
originVersion = originRevision.getVersion();
@@ -98,28 +100,28 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
public CDORevisionDeltaImpl(CDODataInput in) throws IOException
{
- cdoClass = in.readCDOClassRefAndResolve();
+ eClass = (EClass)in.readCDOClassifierRefAndResolve();
cdoID = in.readCDOID();
originVersion = in.readInt();
dirtyVersion = in.readInt();
int size = in.readInt();
for (int i = 0; i < size; i++)
{
- CDOFeatureDelta featureDelta = in.readCDOFeatureDelta(cdoClass);
+ CDOFeatureDelta featureDelta = in.readCDOFeatureDelta(eClass);
featureDeltas.put(featureDelta.getFeature(), featureDelta);
}
}
public void write(CDODataOutput out) throws IOException
{
- out.writeCDOClassRef(cdoClass);
+ out.writeCDOClassifierRef(eClass);
out.writeCDOID(cdoID);
out.writeInt(originVersion);
out.writeInt(dirtyVersion);
out.writeInt(featureDeltas.size());
for (CDOFeatureDelta featureDelta : featureDeltas.values())
{
- out.writeCDOFeatureDelta(featureDelta, cdoClass);
+ out.writeCDOFeatureDelta(featureDelta, eClass);
}
}
@@ -180,7 +182,7 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
private void addSingleFeatureDelta(CDOFeatureDelta delta)
{
- CDOFeature feature = delta.getFeature();
+ EStructuralFeature feature = delta.getFeature();
if (feature.isMany())
{
@@ -222,11 +224,11 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
private void compare(CDORevision originRevision, CDORevision dirtyRevision)
{
- CDOFeature features[] = cdoClass.getAllFeatures();
- int count = cdoClass.getFeatureCount();
+ EStructuralFeature[] features = CDOModelUtil.getAllPersistentFeatures(eClass);
+ int count = eClass.getFeatureCount();
for (int i = 0; i < count; i++)
{
- CDOFeature feature = features[i];
+ EStructuralFeature feature = features[i];
if (feature.isMany())
{
int originSize = originRevision.data().size(feature);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSetFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSetFeatureDeltaImpl.java
index 64a820f805..c937e8d18a 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSetFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSetFeatureDeltaImpl.java
@@ -12,13 +12,14 @@
package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -27,14 +28,14 @@ import java.io.IOException;
public class CDOSetFeatureDeltaImpl extends CDOSingleValueFeatureDeltaImpl implements CDOSetFeatureDelta,
IListTargetAdding
{
- public CDOSetFeatureDeltaImpl(CDOFeature feature, int index, Object value)
+ public CDOSetFeatureDeltaImpl(EStructuralFeature feature, int index, Object value)
{
super(feature, index, value);
}
- public CDOSetFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOSetFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
}
public Type getType()
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java
index d2ffa8f8a7..a42ea48e20 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java
@@ -14,11 +14,12 @@ package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.io.IOException;
@@ -31,32 +32,33 @@ public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl
private Object newValue;
- public CDOSingleValueFeatureDeltaImpl(CDOFeature feature, int index, Object value)
+ public CDOSingleValueFeatureDeltaImpl(EStructuralFeature feature, int index, Object value)
{
super(feature);
this.index = index;
newValue = value;
}
- public CDOSingleValueFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOSingleValueFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
index = in.readInt();
- newValue = ((InternalCDOFeature)getFeature()).readValue(in);
+ newValue = in.readCDOFeatureValue(getFeature());
}
@Override
- public void write(CDODataOutput out, CDOClass cdoClass) throws IOException
+ public void write(CDODataOutput out, EClass eClass) throws IOException
{
- super.write(out, cdoClass);
+ super.write(out, eClass);
out.writeInt(index);
Object valueToWrite = newValue;
- if (valueToWrite != null && getFeature().isReference())
+ EStructuralFeature feature = getFeature();
+ if (valueToWrite != null && feature instanceof EReference)
{
valueToWrite = out.getIDProvider().provideCDOID(newValue);
}
- ((InternalCDOFeature)getFeature()).writeValue(out, valueToWrite);
+ out.writeCDOFeatureValue(valueToWrite, feature);
}
public int getIndex()
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOUnsetFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOUnsetFeatureDeltaImpl.java
index 0f74985fb5..48ddc59ece 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOUnsetFeatureDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOUnsetFeatureDeltaImpl.java
@@ -12,14 +12,15 @@
package org.eclipse.emf.cdo.internal.common.revision.delta;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
import org.eclipse.emf.cdo.common.revision.delta.CDOUnsetFeatureDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -27,14 +28,14 @@ import java.io.IOException;
*/
public class CDOUnsetFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOUnsetFeatureDelta
{
- public CDOUnsetFeatureDeltaImpl(CDOFeature feature)
+ public CDOUnsetFeatureDeltaImpl(EStructuralFeature feature)
{
super(feature);
}
- public CDOUnsetFeatureDeltaImpl(CDODataInput in, CDOClass cdoClass) throws IOException
+ public CDOUnsetFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
{
- super(in, cdoClass);
+ super(in, eClass);
}
public Type getType()
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOID.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOID.java
index 3930dfd318..4c345eb787 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOID.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOID.java
@@ -95,6 +95,20 @@ public abstract class AbstractCDOID implements CDOID
}
}
+ public final int compareTo(CDOID o)
+ {
+ try
+ {
+ return doCompareTo(o);
+ }
+ catch (ClassCastException ex)
+ {
+ return getType().compareTo(o.getType());
+ }
+ }
+
+ protected abstract int doCompareTo(CDOID o) throws ClassCastException;
+
/**
* <b>Note:</b> {@link CDOID#toURIFragment()} and {@link AbstractCDOID#read(String)} need to match.
*/
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDInteger.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDInteger.java
index 0cf4d109c7..618b8539c4 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDInteger.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDInteger.java
@@ -20,7 +20,7 @@ import java.io.IOException;
* @author Eike Stepper
* @since 2.0
*/
-public abstract class AbstractCDOIDInteger extends AbstractCDOID implements Comparable<AbstractCDOIDInteger>
+public abstract class AbstractCDOIDInteger extends AbstractCDOID
{
private static final long serialVersionUID = 1L;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDLong.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDLong.java
index c2ce5571f4..ebfaba2b33 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDLong.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/AbstractCDOIDLong.java
@@ -21,7 +21,7 @@ import java.io.IOException;
* @author Eike Stepper
* @since 2.0
*/
-public abstract class AbstractCDOIDLong extends AbstractCDOID implements Comparable<AbstractCDOIDLong>
+public abstract class AbstractCDOIDLong extends AbstractCDOID
{
public static final long NULL_VALUE = 0L;
@@ -71,21 +71,6 @@ public abstract class AbstractCDOIDLong extends AbstractCDOID implements Compara
out.writeLong(value);
}
- public int compareTo(AbstractCDOIDLong that)
- {
- if (value < that.value)
- {
- return -1;
- }
-
- if (value > that.value)
- {
- return 1;
- }
-
- return 0;
- }
-
@Override
public boolean equals(Object obj)
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLibraryDescriptorImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLibraryDescriptorImpl.java
index 650f0901d8..3e5a43c436 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLibraryDescriptorImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLibraryDescriptorImpl.java
@@ -25,8 +25,7 @@ import java.io.IOException;
*/
public class CDOIDLibraryDescriptorImpl implements CDOIDLibraryDescriptor
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- CDOIDLibraryDescriptorImpl.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOIDLibraryDescriptorImpl.class);
private String factoryName;
@@ -41,24 +40,24 @@ public class CDOIDLibraryDescriptorImpl implements CDOIDLibraryDescriptor
public CDOIDLibraryDescriptorImpl(ExtendedDataInput in) throws IOException
{
factoryName = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read factory name: {0}", factoryName);
+ TRACER.format("Read factory name: {0}", factoryName);
}
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} library names", size);
+ TRACER.format("Reading {0} library names", size);
}
libraryNames = new String[size];
for (int i = 0; i < size; i++)
{
libraryNames[i] = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read library name: {0}", libraryNames[i]);
+ TRACER.format("Read library name: {0}", libraryNames[i]);
}
}
}
@@ -75,23 +74,23 @@ public class CDOIDLibraryDescriptorImpl implements CDOIDLibraryDescriptor
public void write(ExtendedDataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing factory name: {0}", factoryName);
+ TRACER.format("Writing factory name: {0}", factoryName);
}
out.writeString(factoryName);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} library names", libraryNames.length);
+ TRACER.format("Writing {0} library names", libraryNames.length);
}
out.writeInt(libraryNames.length);
for (String libraryName : libraryNames)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing library name: {0}", libraryName);
+ TRACER.format("Writing library name: {0}", libraryName);
}
out.writeString(libraryName);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLongImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLongImpl.java
index 19e720ef95..358ddd31a6 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLongImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/id/CDOIDLongImpl.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.spi.common.id;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDObject;
/**
@@ -39,4 +40,10 @@ public class CDOIDLongImpl extends AbstractCDOIDLong implements CDOIDObject
{
return "OID" + getLongValue();
}
+
+ @Override
+ protected int doCompareTo(CDOID o) throws ClassCastException
+ {
+ return new Long(getLongValue()).compareTo(((CDOIDLongImpl)o).getLongValue());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOClass.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOClass.java
deleted file mode 100644
index f1809bf463..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOClass.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.spi.common.model;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-
-import java.util.List;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface InternalCDOClass extends CDOClass, InternalCDOModelElement
-{
- public void setContainingPackage(CDOPackage containingPackage);
-
- public void addSuperType(CDOClassRef classRef);
-
- public void addFeature(CDOFeature cdoFeature);
-
- public int getFeatureIndex(int featureID);
-
- public List<CDOClassProxy> getSuperTypeProxies();
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOFeature.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOFeature.java
deleted file mode 100644
index d621fa4948..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOFeature.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.spi.common.model;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface InternalCDOFeature extends CDOFeature, InternalCDOModelElement
-{
- public CDOClassProxy getReferenceTypeProxy();
-
- public void setContainingClass(CDOClass containingClass);
-
- public void setFeatureIndex(int featureIndex);
-
- public void setReferenceType(CDOClassRef cdoClassRef);
-
- public void setDefaultValue(Object defaultValue);
-
- public void writeValue(CDODataOutput out, Object value) throws IOException;
-
- public Object readValue(CDODataInput in) throws IOException;
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackage.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackage.java
deleted file mode 100644
index c2ab930ec8..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackage.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.spi.common.model;
-
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-
-import java.util.List;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface InternalCDOPackage extends CDOPackage, InternalCDOModelElement
-{
- public void setPackageManager(CDOPackageManager packageManager);
-
- public void setPersistent(boolean persistent);
-
- public void setMetaIDRange(CDOIDMetaRange metaIDRange);
-
- public void setEcore(String ecore);
-
- public String basicGetEcore();
-
- public void addClass(CDOClass cdoClass);
-
- public void setClasses(List<CDOClass> classes);
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOModelElement.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageInfo.java
index d04490ec75..3bce96e798 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOModelElement.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageInfo.java
@@ -10,26 +10,31 @@
*/
package org.eclipse.emf.cdo.spi.common.model;
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOModelElement;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+
+import org.eclipse.emf.common.notify.Adapter;
import java.io.IOException;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
*/
-public interface InternalCDOModelElement extends CDOModelElement
+public interface InternalCDOPackageInfo extends CDOPackageInfo, Adapter.Internal
{
- public void setName(String name);
+ public InternalCDOPackageUnit getPackageUnit();
- public void setClientInfo(Object clientInfo);
+ public void setPackageUnit(InternalCDOPackageUnit packageUnit);
- public void setServerInfo(Object serverInfo);
+ public void setPackageURI(String packageURI);
- public void read(CDODataInput in) throws IOException;
+ public void setParentURI(String parentURI);
+
+ public void setMetaIDRange(CDOIDMetaRange metaIDRange);
public void write(CDODataOutput out) throws IOException;
+
+ public void read(CDODataInput in) throws IOException;
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageManager.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageManager.java
deleted file mode 100644
index a203d2eb8b..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageManager.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.spi.common.model;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-
-/**
- * @author Eike Stepper
- * @since 2.0
- */
-public interface InternalCDOPackageManager extends CDOPackageManager
-{
- /**
- * @param cdoPackage
- * A proxy CDO package.
- */
- public void loadPackage(CDOPackage cdoPackage);
-
- /**
- * @param cdoPackage
- * A CDO package with <code>ecore == null</code>.
- */
- public void loadPackageEcore(CDOPackage cdoPackage);
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java
new file mode 100644
index 0000000000..1ef0c8ed07
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java
@@ -0,0 +1,91 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.spi.common.model;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+
+import org.eclipse.net4j.util.lifecycle.ILifecycle;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public interface InternalCDOPackageRegistry extends CDOPackageRegistry, ILifecycle.Introspection
+{
+ public MetaInstanceMapper getMetaInstanceMapper();
+
+ public void setReplacingDescriptors(boolean replacingDescriptors);
+
+ public PackageProcessor getPackageProcessor();
+
+ public void setPackageProcessor(PackageProcessor packageProcessor);
+
+ public PackageLoader getPackageLoader();
+
+ public void setPackageLoader(PackageLoader packageLoader);
+
+ public Object basicPut(String nsURI, Object value);
+
+ public void putPackageUnit(InternalCDOPackageUnit packageUnit);
+
+ public InternalCDOPackageUnit getPackageUnit(EPackage ePackage);
+
+ public InternalCDOPackageUnit[] getPackageUnits();
+
+ public InternalCDOPackageInfo getPackageInfo(EPackage ePackage);
+
+ public InternalCDOPackageInfo[] getPackageInfos();
+
+ public EPackage[] getEPackages();
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface PackageProcessor
+ {
+ public Object processPackage(Object value);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface PackageLoader
+ {
+ public EPackage[] loadPackages(CDOPackageUnit packageUnit);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface MetaInstanceMapper
+ {
+ public Set<Entry<CDOID, InternalEObject>> getEntrySet();
+
+ public InternalEObject lookupMetaInstance(CDOID id);
+
+ public CDOID lookupMetaInstanceID(InternalEObject metaInstance);
+
+ public CDOIDMetaRange mapMetaInstances(EPackage ePackage);
+
+ public void mapMetaInstances(EPackage ePackage, CDOIDMetaRange metaIDRange);
+
+ public void mapMetaInstances(MetaInstanceMapper source);
+
+ public void remapMetaInstanceID(CDOID oldID, CDOID newID);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageUnit.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageUnit.java
new file mode 100644
index 0000000000..a8df264a89
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageUnit.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.cdo.spi.common.model;
+
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public interface InternalCDOPackageUnit extends CDOPackageUnit
+{
+ public InternalCDOPackageRegistry getPackageRegistry();
+
+ public void setPackageRegistry(InternalCDOPackageRegistry packageRegistry);
+
+ public void setState(State state);
+
+ public void setOriginalType(Type originalType);
+
+ public void setTimeStamp(long timeStamp);
+
+ public InternalCDOPackageInfo getTopLevelPackageInfo();
+
+ public InternalCDOPackageInfo getPackageInfo(String packageURI);
+
+ public InternalCDOPackageInfo[] getPackageInfos();
+
+ public void setPackageInfos(InternalCDOPackageInfo[] packageInfos);
+
+ public void load();
+
+ public void write(CDODataOutput out, boolean withPackages) throws IOException;
+
+ public void read(CDODataInput in, InternalCDOPackageRegistry packageRegistry) throws IOException;
+
+ public void init(EPackage ePackage);
+
+ public void dispose();
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
index 37248fbdd7..57603a0828 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
@@ -18,9 +18,10 @@ import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOClassInfo;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
@@ -29,14 +30,16 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDeltaUtil;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
-import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionMerger;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.collection.MoveableList;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.om.trace.PerfTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
import java.util.Map;
@@ -52,7 +55,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
private static final PerfTracer WRITING = new PerfTracer(OM.PERF_REVISION_WRITING, AbstractCDORevision.class);
- private CDOClass cdoClass;
+ private CDOClassInfo classAdapter;
private CDOID id;
@@ -68,19 +71,19 @@ public abstract class AbstractCDORevision implements InternalCDORevision
private int containingFeatureID;
- public AbstractCDORevision(CDOClass cdoClass, CDOID id)
+ public AbstractCDORevision(EClass eClass, CDOID id)
{
- if (cdoClass.isAbstract())
+ if (eClass.isAbstract())
{
- throw new IllegalArgumentException("CDOClass is abstract: " + cdoClass);
+ throw new IllegalArgumentException("EClass is abstract: " + eClass);
}
if (CDOIDUtil.isNull(id))
{
- throw new IllegalArgumentException("CDIID is null");
+ throw new IllegalArgumentException("CDOID is null");
}
- this.cdoClass = cdoClass;
+ classAdapter = CDOModelUtil.getClassInfo(eClass);
this.id = id;
version = 0;
created = UNSPECIFIED_DATE;
@@ -88,12 +91,12 @@ public abstract class AbstractCDORevision implements InternalCDORevision
resourceID = CDOID.NULL;
containerID = CDOID.NULL;
containingFeatureID = 0;
- initValues(cdoClass.getAllFeatures().length);
+ initValues(classAdapter.getAllPersistentFeatures());
}
public AbstractCDORevision(AbstractCDORevision source)
{
- cdoClass = source.cdoClass;
+ classAdapter = source.classAdapter;
id = source.id;
version = source.version;
created = source.created;
@@ -106,7 +109,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
public AbstractCDORevision(CDODataInput in) throws IOException
{
READING.start(this);
- cdoClass = in.readCDOClassRefAndResolve();
+ classAdapter = CDOModelUtil.getClassInfo((EClass)in.readCDOClassifierRefAndResolve());
id = in.readCDOID();
version = in.readInt();
@@ -123,8 +126,8 @@ public abstract class AbstractCDORevision implements InternalCDORevision
{
TRACER
.format(
- "Reading revision: ID={0}, className={1}, version={2}, created={3}, revised={4}, resource={5}, container={6}, feature={7}",
- id, cdoClass.getName(), version, created, revised, resourceID, containerID, containingFeatureID);
+ "Reading revision: ID={0}, className={1}, version={2}, created={3}, revised={4}, resource={5}, container={6}, featureID={7}",
+ id, getEClass().getName(), version, created, revised, resourceID, containerID, containingFeatureID);
}
readValues(in);
@@ -133,18 +136,17 @@ public abstract class AbstractCDORevision implements InternalCDORevision
public void write(CDODataOutput out, int referenceChunk) throws IOException
{
- CDOClassRef classRef = cdoClass.createClassRef();
+ CDOClassifierRef classRef = new CDOClassifierRef(getEClass());
if (TRACER.isEnabled())
{
TRACER
.format(
- "Writing revision: ID={0}, classRef={1}, className={2}, version={3}, created={4}, revised={5}, resource={6}, container={7}, feature={8}",
- id, classRef, cdoClass.getName(), getVersion(), created, revised, resourceID, containerID,
- containingFeatureID);
+ "Writing revision: ID={0}, className={1}, version={2}, created={3}, revised={4}, resource={5}, container={6}, featureID={7}",
+ id, getEClass().getName(), getVersion(), created, revised, resourceID, containerID, containingFeatureID);
}
WRITING.start(this);
- out.writeCDOClassRef(classRef);
+ out.writeCDOClassifierRef(classRef);
out.writeCDOID(id);
out.writeInt(getVersion());
if (!id.isTemporary())
@@ -161,9 +163,9 @@ public abstract class AbstractCDORevision implements InternalCDORevision
WRITING.stop(this);
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return cdoClass;
+ return classAdapter.getEClass();
}
public CDOID getID()
@@ -269,17 +271,17 @@ public abstract class AbstractCDORevision implements InternalCDORevision
public boolean isResourceNode()
{
- return cdoClass.isResourceNode();
+ return classAdapter.isResourceNode();
}
public boolean isResourceFolder()
{
- return cdoClass.isResourceFolder();
+ return classAdapter.isResourceFolder();
}
public boolean isResource()
{
- return cdoClass.isResource();
+ return classAdapter.isResource();
}
public CDORevisionData data()
@@ -348,12 +350,12 @@ public abstract class AbstractCDORevision implements InternalCDORevision
this.containingFeatureID = containingFeatureID;
}
- public int hashCode(CDOFeature feature)
+ public int hashCode(EStructuralFeature feature)
{
return getValue(feature).hashCode();
}
- public Object get(CDOFeature feature, int index)
+ public Object get(EStructuralFeature feature, int index)
{
if (feature.isMany())
{
@@ -363,7 +365,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return getValue(feature);
}
- public Object basicGet(CDOFeature feature, int index)
+ public Object basicGet(EStructuralFeature feature, int index)
{
if (feature.isMany())
{
@@ -373,32 +375,32 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return basicGet(feature);
}
- public boolean contains(CDOFeature feature, Object value)
+ public boolean contains(EStructuralFeature feature, Object value)
{
return getList(feature).contains(value);
}
- public int indexOf(CDOFeature feature, Object value)
+ public int indexOf(EStructuralFeature feature, Object value)
{
return getList(feature).indexOf(value);
}
- public boolean isEmpty(CDOFeature feature)
+ public boolean isEmpty(EStructuralFeature feature)
{
return getList(feature).isEmpty();
}
- public int lastIndexOf(CDOFeature feature, Object value)
+ public int lastIndexOf(EStructuralFeature feature, Object value)
{
return getList(feature).lastIndexOf(value);
}
- public int size(CDOFeature feature)
+ public int size(EStructuralFeature feature)
{
return getList(feature).size();
}
- public Object[] toArray(CDOFeature feature)
+ public Object[] toArray(EStructuralFeature feature)
{
if (!feature.isMany())
{
@@ -408,7 +410,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return getList(feature).toArray();
}
- public <T> T[] toArray(CDOFeature feature, T[] array)
+ public <T> T[] toArray(EStructuralFeature feature, T[] array)
{
if (!feature.isMany())
{
@@ -418,27 +420,27 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return getList(feature).toArray(array);
}
- public void add(CDOFeature feature, int index, Object value)
+ public void add(EStructuralFeature feature, int index, Object value)
{
getList(feature).add(index, value);
}
- public void clear(CDOFeature feature)
+ public void clear(EStructuralFeature feature)
{
setValue(feature, null);
}
- public Object move(CDOFeature feature, int targetIndex, int sourceIndex)
+ public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex)
{
return getList(feature).move(targetIndex, sourceIndex);
}
- public Object remove(CDOFeature feature, int index)
+ public Object remove(EStructuralFeature feature, int index)
{
return getList(feature).remove(index);
}
- public Object set(CDOFeature feature, int index, Object value)
+ public Object set(EStructuralFeature feature, int index, Object value)
{
if (feature.isMany())
{
@@ -448,7 +450,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return setValue(feature, value);
}
- public Object basicSet(CDOFeature feature, int index, Object value)
+ public Object basicSet(EStructuralFeature feature, int index, Object value)
{
if (feature.isMany())
{
@@ -458,7 +460,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return basicSet(feature, value);
}
- public void unset(CDOFeature feature)
+ public void unset(EStructuralFeature feature)
{
setValue(feature, null);
}
@@ -473,21 +475,26 @@ public abstract class AbstractCDORevision implements InternalCDORevision
resourceID = (CDOID)revisionAdjuster.adjustReference(resourceID);
containerID = revisionAdjuster.adjustReference(containerID);
- CDOFeature[] features = cdoClass.getAllFeatures();
+ EStructuralFeature[] features = classAdapter.getAllPersistentFeatures();
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
- if (feature.isMany())
+ EStructuralFeature feature = features[i];
+ if (feature instanceof EReference)
{
- InternalCDOList list = (InternalCDOList)getValueAsList(i);
- if (list != null)
+ EReference reference = (EReference)feature;
+ if (reference.isMany())
{
- list.adjustReferences(revisionAdjuster, feature.getType());
+ InternalCDOList list = (InternalCDOList)getValueAsList(i);
+ if (list != null)
+ {
+ list.adjustReferences(revisionAdjuster, reference.getEReferenceType());
+ }
+ }
+ else
+ {
+ CDOType type = CDOModelUtil.getType(feature.getEType());
+ setValue(i, type.adjustReferences(revisionAdjuster, getValue(i)));
}
- }
- else
- {
- setValue(i, feature.getType().adjustReferences(revisionAdjuster, getValue(i)));
}
}
}
@@ -495,20 +502,20 @@ public abstract class AbstractCDORevision implements InternalCDORevision
@Override
public String toString()
{
- return cdoClass.getName() + "@" + id + "v" + version;
+ return getEClass().getName() + "@" + id + "v" + version;
}
- public Object getValue(CDOFeature feature)
+ public Object getValue(EStructuralFeature feature)
{
return convertValue(feature, basicGet(feature));
}
- public Object setValue(CDOFeature feature, Object value)
+ public Object setValue(EStructuralFeature feature, Object value)
{
return convertValue(feature, basicSet(feature, value));
}
- protected Object convertValue(CDOFeature feature, Object value)
+ protected Object convertValue(EStructuralFeature feature, Object value)
{
if (value == null)
{
@@ -522,52 +529,53 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return value;
}
- protected Object basicGet(CDOFeature feature)
+ protected Object basicGet(EStructuralFeature feature)
{
- int featureID = cdoClass.getFeatureID(feature);
- return getValue(featureID);
+ int featureIndex = classAdapter.getFeatureIndex(feature);
+ return getValue(featureIndex);
}
- protected Object basicSet(CDOFeature feature, Object value)
+ protected Object basicSet(EStructuralFeature feature, Object value)
{
- int featureID = cdoClass.getFeatureID(feature);
+ int featureIndex = classAdapter.getFeatureIndex(feature);
try
{
- Object old = getValue(featureID);
- setValue(featureID, value);
+ Object old = getValue(featureIndex);
+ setValue(featureIndex, value);
return old;
}
catch (ArrayIndexOutOfBoundsException ex)
{
- throw new IllegalArgumentException("Could not find feature " + feature + " in class " + cdoClass, ex);
+ throw new IllegalArgumentException("Could not find feature " + feature + " in class " + classAdapter, ex);
}
}
- public CDOList getList(CDOFeature feature)
+ public CDOList getList(EStructuralFeature feature)
{
return getList(feature, 0);
}
- public CDOList getList(CDOFeature feature, int size)
+ public CDOList getList(EStructuralFeature feature, int size)
{
- int i = cdoClass.getFeatureID(feature);
- CDOList list = (CDOList)getValue(i);
+ int featureIndex = classAdapter.getFeatureIndex(feature);
+ CDOList list = (CDOList)getValue(featureIndex);
if (list == null && size != -1)
{
list = CDOListFactory.DEFAULT.createList(size, 0, 0);
- setValue(i, list);
+ setValue(featureIndex, list);
}
+
return list;
}
- public void setList(CDOFeature feature, InternalCDOList list)
+ public void setList(EStructuralFeature feature, InternalCDOList list)
{
- int i = cdoClass.getFeatureID(feature);
- setValue(i, list);
+ int featureIndex = classAdapter.getFeatureIndex(feature);
+ setValue(featureIndex, list);
}
- public void setListSize(CDOFeature feature, int size)
+ public void setListSize(EStructuralFeature feature, int size)
{
MoveableList<Object> list = getList(feature, size);
for (int j = list.size(); j < size; j++)
@@ -576,11 +584,11 @@ public abstract class AbstractCDORevision implements InternalCDORevision
}
}
- protected abstract void initValues(int size);
+ protected abstract void initValues(EStructuralFeature[] allPersistentFeatures);
- protected abstract Object getValue(int i);
+ protected abstract Object getValue(int featureIndex);
- protected abstract void setValue(int i, Object value);
+ protected abstract void setValue(int featureIndex, Object value);
private CDOList getValueAsList(int i)
{
@@ -589,21 +597,21 @@ public abstract class AbstractCDORevision implements InternalCDORevision
private void readValues(CDODataInput in) throws IOException
{
- CDOFeature[] features = cdoClass.getAllFeatures();
- initValues(features.length);
+ EStructuralFeature[] features = classAdapter.getAllPersistentFeatures();
+ initValues(features);
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
+ EStructuralFeature feature = features[i];
if (feature.isMany())
{
setValue(i, in.readCDOList(this, feature));
}
else
{
- setValue(i, ((InternalCDOFeature)feature).readValue(in));
+ setValue(i, in.readCDOFeatureValue(feature));
if (TRACER.isEnabled())
{
- TRACER.format("Read feature {0}: {1}", feature, getValue(i));
+ TRACER.format("Read feature {0}: {1}", feature.getName(), getValue(i));
}
}
}
@@ -611,10 +619,10 @@ public abstract class AbstractCDORevision implements InternalCDORevision
private void writeValues(CDODataOutput out, int referenceChunk) throws IOException
{
- CDOFeature[] features = cdoClass.getAllFeatures();
+ EStructuralFeature[] features = classAdapter.getAllPersistentFeatures();
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
+ EStructuralFeature feature = features[i];
if (feature.isMany())
{
out.writeCDOList(getValueAsList(i), feature, referenceChunk);
@@ -622,17 +630,17 @@ public abstract class AbstractCDORevision implements InternalCDORevision
else
{
Object value = getValue(i);
- if (value != null && feature.isReference())
+ if (value != null && feature instanceof EReference)
{
value = out.getIDProvider().provideCDOID(value);
}
if (TRACER.isEnabled())
{
- TRACER.format("Writing feature {0}: {1}", feature, value);
+ TRACER.format("Writing feature {0}: {1}", feature.getName(), value);
}
- ((InternalCDOFeature)feature).writeValue(out, value);
+ out.writeCDOFeatureValue(value, feature);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionMerger.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDORevisionMerger.java
index 3e95b6945e..602584c615 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionMerger.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDORevisionMerger.java
@@ -10,7 +10,7 @@
* Eike Stepper - maintenance
* Simon McDuff - http://bugs.eclipse.org/213402
*/
-package org.eclipse.emf.cdo.internal.common.revision.delta;
+package org.eclipse.emf.cdo.spi.common.revision;
import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOClearFeatureDelta;
@@ -20,7 +20,7 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORemoveFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOUnsetFeatureDelta;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.internal.common.revision.delta.CDOFeatureDeltaVisitorImpl;
/**
* @author Simon McDuff
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
index 39ad8b15a9..088a56e383 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
@@ -11,10 +11,12 @@
*/
package org.eclipse.emf.cdo.spi.common.revision;
-import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
/**
* @author Simon McDuff
* @since 2.0
@@ -24,10 +26,10 @@ public interface InternalCDOList extends CDOList
/**
* Adjusts references according to the passed adjuster and resynchronizes indexes.
*/
- public void adjustReferences(CDOReferenceAdjuster adjuster, CDOType type);
+ public void adjustReferences(CDOReferenceAdjuster adjuster, EClass classifier);
/**
* Clones the list.
*/
- public InternalCDOList clone(CDOType type);
+ public InternalCDOList clone(EClassifier classifier);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
index bace76c8cf..c6648f016b 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
@@ -13,13 +13,14 @@ package org.eclipse.emf.cdo.spi.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjustable;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -53,50 +54,50 @@ public interface InternalCDORevision extends CDORevision, CDORevisionData, CDORe
public void setContainingFeatureID(int containingFeatureID);
- public void add(CDOFeature feature, int index, Object value);
+ public void add(EStructuralFeature feature, int index, Object value);
- public void clear(CDOFeature feature);
+ public void clear(EStructuralFeature feature);
- public Object move(CDOFeature feature, int targetIndex, int sourceIndex);
+ public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex);
- public Object remove(CDOFeature feature, int index);
+ public Object remove(EStructuralFeature feature, int index);
- public Object set(CDOFeature feature, int index, Object value);
+ public Object set(EStructuralFeature feature, int index, Object value);
- public void unset(CDOFeature feature);
+ public void unset(EStructuralFeature feature);
/**
* Should never return {@link InternalCDORevision#NIL}
*/
- public Object getValue(CDOFeature feature);
+ public Object getValue(EStructuralFeature feature);
- public Object setValue(CDOFeature feature, Object value);
+ public Object setValue(EStructuralFeature feature, Object value);
/**
* Use this method to retrieved {@link InternalCDORevision#NIL} object in some cases.
*
* @since 2.0
*/
- public Object basicGet(CDOFeature feature, int index);
+ public Object basicGet(EStructuralFeature feature, int index);
/**
* Use this method to retrieved {@link InternalCDORevision#NIL} object in some cases.
*/
- public Object basicSet(CDOFeature feature, int index, Object value);
+ public Object basicSet(EStructuralFeature feature, int index, Object value);
- public void setList(CDOFeature feature, InternalCDOList list);
+ public void setList(EStructuralFeature feature, InternalCDOList list);
- public CDOList getList(CDOFeature feature);
+ public CDOList getList(EStructuralFeature feature);
/**
* @param size
* the size of a new list to be created if this revision has no list so far, or -1 to skip list creation and
* return <code>null</code> in this case.
*/
- public CDOList getList(CDOFeature feature, int size);
+ public CDOList getList(EStructuralFeature feature, int size);
@Deprecated
- public void setListSize(CDOFeature feature, int size);
+ public void setListSize(EStructuralFeature feature, int size);
public void write(CDODataOutput out, int referenceChunk) throws IOException;
}
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EDynamicPackageDef.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EDynamicPackageDef.java
index 1d56b2e810..cc791d2aa0 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EDynamicPackageDef.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EDynamicPackageDef.java
@@ -54,4 +54,4 @@ public interface EDynamicPackageDef extends EPackageDef
*/
void setResourceURI(String value);
-} // DynamicCDOPackageDef
+} // DynamicEPackageDef
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EGlobalPackageDef.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EGlobalPackageDef.java
index 58fad1091b..e9fa656f57 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EGlobalPackageDef.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EGlobalPackageDef.java
@@ -21,4 +21,4 @@ package org.eclipse.emf.cdo.defs;
*/
public interface EGlobalPackageDef extends EPackageDef
{
-} // NativeCDOPackageDef
+} // NativeEPackageDef
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EPackageDef.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EPackageDef.java
index 38000f0dce..5b60a91682 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EPackageDef.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/EPackageDef.java
@@ -54,4 +54,4 @@ public interface EPackageDef extends Def
*/
void setNsURI(String value);
-} // CDOPackageDef
+} // EPackageDef
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsFactoryImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsFactoryImpl.java
index 701d71f122..cca78b3fde 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsFactoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsFactoryImpl.java
@@ -209,8 +209,8 @@ public class CDODefsFactoryImpl extends EFactoryImpl implements CDODefsFactory
*/
public CDOPackageRegistryDef createCDOPackageRegistryDef()
{
- CDOPackageRegistryDefImpl cdoPackageRegistryDef = new CDOPackageRegistryDefImpl();
- return cdoPackageRegistryDef;
+ CDOPackageRegistryDefImpl ePackageRegistryDef = new CDOPackageRegistryDefImpl();
+ return ePackageRegistryDef;
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsPackageImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsPackageImpl.java
index e10a53be43..78a2d34af2 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsPackageImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDODefsPackageImpl.java
@@ -93,7 +93,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
*
* @generated
*/
- private EClass cdoPackageRegistryDefEClass = null;
+ private EClass ePackageRegistryDefEClass = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -378,7 +378,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
*/
public EClass getCDOPackageRegistryDef()
{
- return cdoPackageRegistryDefEClass;
+ return ePackageRegistryDefEClass;
}
/**
@@ -388,7 +388,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
*/
public EReference getCDOPackageRegistryDef_Packages()
{
- return (EReference)cdoPackageRegistryDefEClass.getEStructuralFeatures().get(0);
+ return (EReference)ePackageRegistryDefEClass.getEStructuralFeatures().get(0);
}
/**
@@ -572,8 +572,8 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
retryFailOverStrategyDefEClass = createEClass(RETRY_FAIL_OVER_STRATEGY_DEF);
createEAttribute(retryFailOverStrategyDefEClass, RETRY_FAIL_OVER_STRATEGY_DEF__RETRIES);
- cdoPackageRegistryDefEClass = createEClass(CDO_PACKAGE_REGISTRY_DEF);
- createEReference(cdoPackageRegistryDefEClass, CDO_PACKAGE_REGISTRY_DEF__PACKAGES);
+ ePackageRegistryDefEClass = createEClass(CDO_PACKAGE_REGISTRY_DEF);
+ createEReference(ePackageRegistryDefEClass, CDO_PACKAGE_REGISTRY_DEF__PACKAGES);
cdoEagerPackageRegistryDefEClass = createEClass(CDO_EAGER_PACKAGE_REGISTRY_DEF);
@@ -639,7 +639,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
cdoSessionDefEClass.getESuperTypes().add(theNet4jUtilDefsPackage.getDef());
failOverStrategyDefEClass.getESuperTypes().add(theNet4jUtilDefsPackage.getDef());
retryFailOverStrategyDefEClass.getESuperTypes().add(this.getFailOverStrategyDef());
- cdoPackageRegistryDefEClass.getESuperTypes().add(theNet4jUtilDefsPackage.getDef());
+ ePackageRegistryDefEClass.getESuperTypes().add(theNet4jUtilDefsPackage.getDef());
cdoEagerPackageRegistryDefEClass.getESuperTypes().add(this.getCDOPackageRegistryDef());
cdoLazyPackageRegistryDefEClass.getESuperTypes().add(this.getCDOPackageRegistryDef());
ePackageDefEClass.getESuperTypes().add(theNet4jUtilDefsPackage.getDef());
@@ -672,7 +672,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
CDOSessionDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE,
!IS_DERIVED, !IS_ORDERED);
initEReference(getCDOSessionDef_CdoPackageRegistryDef(), this.getCDOPackageRegistryDef(), null,
- "cdoPackageRegistryDef", null, 1, 1, CDOSessionDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ "ePackageRegistryDef", null, 1, 1, CDOSessionDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCDOSessionDef_LegacySupportEnabled(), ecorePackage.getEBoolean(), "legacySupportEnabled",
"false", 1, 1, CDOSessionDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
@@ -693,7 +693,7 @@ public class CDODefsPackageImpl extends EPackageImpl implements CDODefsPackage
RetryFailOverStrategyDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
!IS_DERIVED, IS_ORDERED);
- initEClass(cdoPackageRegistryDefEClass, CDOPackageRegistryDef.class, "CDOPackageRegistryDef", !IS_ABSTRACT,
+ initEClass(ePackageRegistryDefEClass, CDOPackageRegistryDef.class, "CDOPackageRegistryDef", !IS_ABSTRACT,
!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getCDOPackageRegistryDef_Packages(), this.getEPackageDef(), null, "packages", null, 0, -1,
CDOPackageRegistryDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOEagerPackageRegistryDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOEagerPackageRegistryDefImpl.java
index 6eee5dc0ca..0a2bff1189 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOEagerPackageRegistryDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOEagerPackageRegistryDefImpl.java
@@ -13,9 +13,6 @@ package org.eclipse.emf.cdo.defs.impl;
import org.eclipse.emf.cdo.defs.CDODefsPackage;
import org.eclipse.emf.cdo.defs.CDOEagerPackageRegistryDef;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-import org.eclipse.emf.internal.cdo.session.CDOPackageRegistryImpl.Eager;
import org.eclipse.emf.ecore.EClass;
@@ -57,7 +54,9 @@ public class CDOEagerPackageRegistryDefImpl extends CDOPackageRegistryDefImpl im
*/
protected Object createInstance()
{
- return addPackages(CDOUtil.createEagerPackageRegistry());
+ // TODO: implement CDOEagerPackageRegistryDefImpl.createInstance()
+ throw new UnsupportedOperationException();
+ // return addPackages(CDOUtil.createEagerPackageRegistry());
}
} // EagerPackageRegistryDefImpl
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOLazyPackageRegistryDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOLazyPackageRegistryDefImpl.java
index f78c5f9f19..304ad6d856 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOLazyPackageRegistryDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOLazyPackageRegistryDefImpl.java
@@ -13,9 +13,6 @@ package org.eclipse.emf.cdo.defs.impl;
import org.eclipse.emf.cdo.defs.CDODefsPackage;
import org.eclipse.emf.cdo.defs.CDOLazyPackageRegistryDef;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-import org.eclipse.emf.internal.cdo.session.CDOPackageRegistryImpl.Lazy;
import org.eclipse.emf.ecore.EClass;
@@ -57,6 +54,8 @@ public class CDOLazyPackageRegistryDefImpl extends CDOPackageRegistryDefImpl imp
*/
protected Object createInstance()
{
- return addPackages(CDOUtil.createLazyPackageRegistry());
+ // TODO: implement CDOLazyPackageRegistryDefImpl.createInstance()
+ throw new UnsupportedOperationException();
+ // return addPackages(CDOUtil.createLazyPackageRegistry());
}
} // LazyPackageRegistryDefImpl
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOPackageRegistryDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOPackageRegistryDefImpl.java
index 98b6e26aa5..0c2ef6d2e4 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOPackageRegistryDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOPackageRegistryDefImpl.java
@@ -22,7 +22,6 @@ import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
import org.eclipse.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.InternalEList;
@@ -202,7 +201,9 @@ public class CDOPackageRegistryDefImpl extends DefImpl implements CDOPackageRegi
*/
protected Object createInstance()
{
- return addPackages(new EPackageRegistryImpl());
+ // TODO: implement CDOPackageRegistryDefImpl.createInstance()
+ throw new UnsupportedOperationException();
+ // return addPackages(new CDOPackageRegistryImpl());
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOSessionDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOSessionDefImpl.java
index 614a97da5c..51b5c717cd 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOSessionDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/CDOSessionDefImpl.java
@@ -11,13 +11,13 @@
*/
package org.eclipse.emf.cdo.defs.impl;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.defs.CDODefsPackage;
import org.eclipse.emf.cdo.defs.CDOPackageRegistryDef;
import org.eclipse.emf.cdo.defs.CDOSessionDef;
import org.eclipse.emf.cdo.defs.FailOverStrategyDef;
import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.internal.cdo.session.CDOSessionConfigurationImpl;
@@ -98,7 +98,7 @@ public class CDOSessionDefImpl extends DefImpl implements CDOSessionDef
* @generated
* @ordered
*/
- protected CDOPackageRegistryDef cdoPackageRegistryDef;
+ protected CDOPackageRegistryDef ePackageRegistryDef;
/**
* The default value of the '{@link #isLegacySupportEnabled() <em>Legacy Support Enabled</em>}' attribute. <!--
@@ -285,18 +285,18 @@ public class CDOSessionDefImpl extends DefImpl implements CDOSessionDef
*/
public CDOPackageRegistryDef getCdoPackageRegistryDef()
{
- if (cdoPackageRegistryDef != null && cdoPackageRegistryDef.eIsProxy())
+ if (ePackageRegistryDef != null && ePackageRegistryDef.eIsProxy())
{
- InternalEObject oldCdoPackageRegistryDef = (InternalEObject)cdoPackageRegistryDef;
- cdoPackageRegistryDef = (CDOPackageRegistryDef)eResolveProxy(oldCdoPackageRegistryDef);
- if (cdoPackageRegistryDef != oldCdoPackageRegistryDef)
+ InternalEObject oldCdoPackageRegistryDef = (InternalEObject)ePackageRegistryDef;
+ ePackageRegistryDef = (CDOPackageRegistryDef)eResolveProxy(oldCdoPackageRegistryDef);
+ if (ePackageRegistryDef != oldCdoPackageRegistryDef)
{
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
- CDODefsPackage.CDO_SESSION_DEF__CDO_PACKAGE_REGISTRY_DEF, oldCdoPackageRegistryDef, cdoPackageRegistryDef));
+ CDODefsPackage.CDO_SESSION_DEF__CDO_PACKAGE_REGISTRY_DEF, oldCdoPackageRegistryDef, ePackageRegistryDef));
}
}
- return cdoPackageRegistryDef;
+ return ePackageRegistryDef;
}
/**
@@ -306,7 +306,7 @@ public class CDOSessionDefImpl extends DefImpl implements CDOSessionDef
*/
public CDOPackageRegistryDef basicGetCdoPackageRegistryDef()
{
- return cdoPackageRegistryDef;
+ return ePackageRegistryDef;
}
/**
@@ -316,11 +316,11 @@ public class CDOSessionDefImpl extends DefImpl implements CDOSessionDef
*/
public void setCdoPackageRegistryDef(CDOPackageRegistryDef newCdoPackageRegistryDef)
{
- CDOPackageRegistryDef oldCdoPackageRegistryDef = cdoPackageRegistryDef;
- cdoPackageRegistryDef = newCdoPackageRegistryDef;
+ CDOPackageRegistryDef oldCdoPackageRegistryDef = ePackageRegistryDef;
+ ePackageRegistryDef = newCdoPackageRegistryDef;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, CDODefsPackage.CDO_SESSION_DEF__CDO_PACKAGE_REGISTRY_DEF,
- oldCdoPackageRegistryDef, cdoPackageRegistryDef));
+ oldCdoPackageRegistryDef, ePackageRegistryDef));
}
/**
@@ -545,7 +545,7 @@ public class CDOSessionDefImpl extends DefImpl implements CDOSessionDef
return REPOSITORY_NAME_EDEFAULT == null ? repositoryName != null : !REPOSITORY_NAME_EDEFAULT
.equals(repositoryName);
case CDODefsPackage.CDO_SESSION_DEF__CDO_PACKAGE_REGISTRY_DEF:
- return cdoPackageRegistryDef != null;
+ return ePackageRegistryDef != null;
case CDODefsPackage.CDO_SESSION_DEF__LEGACY_SUPPORT_ENABLED:
return legacySupportEnabled != LEGACY_SUPPORT_ENABLED_EDEFAULT;
case CDODefsPackage.CDO_SESSION_DEF__FAIL_OVER_STRATEGY_DEF:
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EDynamicPackageDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EDynamicPackageDefImpl.java
index f01c12f92c..b550865ad6 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EDynamicPackageDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EDynamicPackageDefImpl.java
@@ -201,4 +201,4 @@ public class EDynamicPackageDefImpl extends EPackageDefImpl implements EDynamicP
CheckUtil.checkState(eIsSet(CDODefsPackage.EDYNAMIC_PACKAGE_DEF__RESOURCE_URI), "resource uri not set!");
}
-} // DynamicCDOPackageDefImpl
+} // DynamicEPackageDefImpl
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EPackageDefImpl.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EPackageDefImpl.java
index 15d960cdc9..4e897a8b76 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EPackageDefImpl.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/impl/EPackageDefImpl.java
@@ -195,4 +195,4 @@ public abstract class EPackageDefImpl extends DefImpl implements EPackageDef
&& URI.create(getNsURI()) != null, "nsURI not set or not valid!");
}
-} // CDOPackageDefImpl
+} // EPackageDefImpl
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsSwitch.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsSwitch.java
index 7dc1d8f1f2..b3979db997 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsSwitch.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsSwitch.java
@@ -178,10 +178,10 @@ public class CDODefsSwitch<T>
}
case CDODefsPackage.CDO_PACKAGE_REGISTRY_DEF:
{
- CDOPackageRegistryDef cdoPackageRegistryDef = (CDOPackageRegistryDef)theEObject;
- T result = caseCDOPackageRegistryDef(cdoPackageRegistryDef);
+ CDOPackageRegistryDef ePackageRegistryDef = (CDOPackageRegistryDef)theEObject;
+ T result = caseCDOPackageRegistryDef(ePackageRegistryDef);
if (result == null)
- result = caseDef(cdoPackageRegistryDef);
+ result = caseDef(ePackageRegistryDef);
if (result == null)
result = defaultCase(theEObject);
return result;
diff --git a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsUtil.java b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsUtil.java
index e118794065..b707837881 100644
--- a/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsUtil.java
+++ b/plugins/org.eclipse.emf.cdo.defs/src/org/eclipse/emf/cdo/defs/util/CDODefsUtil.java
@@ -28,36 +28,36 @@ import java.util.Date;
*/
public class CDODefsUtil
{
- public static CDOSessionDef createSessionDef(String repositoryName, CDOPackageRegistryDef cdoPackageRegistryDef,
+ public static CDOSessionDef createSessionDef(String repositoryName, CDOPackageRegistryDef ePackageRegistryDef,
TCPConnectorDef tcpConnectorDef)
{
CDOSessionDef cdoSessionDef = CDODefsFactory.eINSTANCE.createCDOSessionDef();
cdoSessionDef.setConnectorDef(tcpConnectorDef);
cdoSessionDef.setRepositoryName(repositoryName);
- cdoSessionDef.setCdoPackageRegistryDef(cdoPackageRegistryDef);
+ cdoSessionDef.setCdoPackageRegistryDef(ePackageRegistryDef);
return cdoSessionDef;
}
- public static CDOSessionDef createSessionDef(String repositoryName, CDOPackageRegistryDef cdoPackageRegistryDef,
+ public static CDOSessionDef createSessionDef(String repositoryName, CDOPackageRegistryDef ePackageRegistryDef,
FailOverStrategyDef failOverStrategyDef)
{
CDOSessionDef cdoSessionDef = CDODefsFactory.eINSTANCE.createCDOSessionDef();
cdoSessionDef.setFailOverStrategyDef(failOverStrategyDef);
cdoSessionDef.setRepositoryName(repositoryName);
- cdoSessionDef.setCdoPackageRegistryDef(cdoPackageRegistryDef);
+ cdoSessionDef.setCdoPackageRegistryDef(ePackageRegistryDef);
return cdoSessionDef;
}
public static CDOPackageRegistryDef createEagerPackageRegistryDef()
{
- CDOPackageRegistryDef cdoPackageRegistryDef = CDODefsFactory.eINSTANCE.createCDOEagerPackageRegistryDef();
- return cdoPackageRegistryDef;
+ CDOPackageRegistryDef ePackageRegistryDef = CDODefsFactory.eINSTANCE.createCDOEagerPackageRegistryDef();
+ return ePackageRegistryDef;
}
public static CDOPackageRegistryDef createLazyPackageRegistryDef()
{
- CDOPackageRegistryDef cdoPackageRegistryDef = CDODefsFactory.eINSTANCE.createCDOLazyPackageRegistryDef();
- return cdoPackageRegistryDef;
+ CDOPackageRegistryDef ePackageRegistryDef = CDODefsFactory.eINSTANCE.createCDOLazyPackageRegistryDef();
+ return ePackageRegistryDef;
}
public static CDOAuditDef createCDOAuditDef(CDOSessionDef cdoSessionDef)
diff --git a/plugins/org.eclipse.emf.cdo.edit/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.edit/.settings/.api_filters
deleted file mode 100644
index bdcdcb9fb8..0000000000
--- a/plugins/org.eclipse.emf.cdo.edit/.settings/.api_filters
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.emf.cdo.edit" version="2">
- <resource path="src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java" type="org.eclipse.emf.cdo.eresource.provider.EresourceItemProviderAdapterFactory">
- <filter id="1143996420">
- <message_arguments>
- <message_argument value="cdoResourceFolderItemProvider"/>
- </message_arguments>
- </filter>
- <filter id="1143996420">
- <message_arguments>
- <message_argument value="createCDOResourceFolderAdapter()"/>
- </message_arguments>
- </filter>
- </resource>
-</component>
diff --git a/plugins/org.eclipse.emf.cdo.edit/plugin.xml b/plugins/org.eclipse.emf.cdo.edit/plugin.xml
index fb1f2020c5..b22cb8e734 100644
--- a/plugins/org.eclipse.emf.cdo.edit/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.edit/plugin.xml
@@ -15,7 +15,7 @@
<extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
<factory
- uri = "http://www.eclipse.org/emf/CDO/resource/2.0.0"
+ uri = "http://www.eclipse.org/emf/CDO/Eresource/2.0.0"
class = "org.eclipse.emf.cdo.eresource.provider.EresourceItemProviderAdapterFactory"
supportedTypes =
"org.eclipse.emf.edit.provider.IEditingDomainItemProvider
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceFolderItemProvider.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceFolderItemProvider.java
index 4839688268..8f725bf448 100644
--- a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceFolderItemProvider.java
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceFolderItemProvider.java
@@ -39,6 +39,13 @@ public class CDOResourceFolderItemProvider extends CDOResourceNodeItemProvider i
IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java
index af75c146f1..ae65bec250 100644
--- a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java
@@ -40,6 +40,13 @@ public class CDOResourceItemProvider extends CDOResourceNodeItemProvider impleme
IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java
index 5f98e609ac..b0caaaceb5 100644
--- a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java
@@ -42,6 +42,13 @@ public class CDOResourceNodeItemProvider extends ItemProviderAdapter implements
IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceEditPlugin.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceEditPlugin.java
index 0cb8abbc7b..f314588f45 100644
--- a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceEditPlugin.java
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceEditPlugin.java
@@ -22,6 +22,13 @@ import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
public final class EresourceEditPlugin extends EMFPlugin
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java
index 663d6b4e79..16616287b6 100644
--- a/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java
@@ -48,6 +48,13 @@ public class EresourceItemProviderAdapterFactory extends EresourceAdapterFactory
IChangeNotifier, IDisposable, IChildCreationExtender
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* This keeps track of the root adapter factory that delegates to this adapter factory. <!-- begin-user-doc --> <!--
* end-user-doc -->
*
@@ -197,7 +204,7 @@ public class EresourceItemProviderAdapterFactory extends EresourceAdapterFactory
if (isFactoryForType(type))
{
Object adapter = super.adapt(object, type);
- if (!(type instanceof Class<?>) || ((Class<?>)type).isInstance(adapter))
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
{
return adapter;
}
@@ -280,13 +287,9 @@ public class EresourceItemProviderAdapterFactory extends EresourceAdapterFactory
public void dispose()
{
if (cdoResourceFolderItemProvider != null)
- {
cdoResourceFolderItemProvider.dispose();
- }
if (cdoResourceItemProvider != null)
- {
cdoResourceItemProvider.dispose();
- }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.db/META-INF/MANIFEST.MF
index 99511812bf..51ca5023cf 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server.db/META-INF/MANIFEST.MF
@@ -13,6 +13,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
org.eclipse.net4j.db;bundle-version="[2.0.0,3.0.0)";visibility:=reexport,
org.eclipse.emf.cdo.server;bundle-version="[2.0.0,3.0.0)";visibility:=reexport
Export-Package: org.eclipse.emf.cdo.server.db;version="2.0.0",
+ org.eclipse.emf.cdo.server.db.mapping;version="2.0.0",
org.eclipse.emf.cdo.server.internal.db;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests",
org.eclipse.emf.cdo.server.internal.db.bundle;version="2.0.0";x-internal:=true,
- org.eclipse.emf.cdo.server.internal.db.jdbc;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests"
+ org.eclipse.emf.cdo.server.internal.db.jdbc;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.server.internal.db.mapping;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests"
diff --git a/plugins/org.eclipse.emf.cdo.server.db/plugin.xml b/plugins/org.eclipse.emf.cdo.server.db/plugin.xml
index 64e6d0d1bd..acd168a01a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.server.db/plugin.xml
@@ -27,11 +27,11 @@
<extension
point="org.eclipse.emf.cdo.server.db.mappingStrategies">
<mappingStrategy
- class="org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy"
+ class="org.eclipse.emf.cdo.server.internal.db.mapping.HorizontalMappingStrategy"
type="horizontal">
</mappingStrategy>
<mappingStrategy
- class="org.eclipse.emf.cdo.server.internal.db.VerticalMappingStrategy"
+ class="org.eclipse.emf.cdo.server.internal.db.mapping.VerticalMappingStrategy"
type="vertical">
</mappingStrategy>
</extension>
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/CDODBUtil.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/CDODBUtil.java
index 173320bd1a..b589142628 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/CDODBUtil.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/CDODBUtil.java
@@ -10,11 +10,12 @@
*/
package org.eclipse.emf.cdo.server.db;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.DBStore;
-import org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.server.internal.db.jdbc.PreparedStatementJDBCDelegateProvider;
import org.eclipse.emf.cdo.server.internal.db.jdbc.StatementJDBCDelegateProvider;
+import org.eclipse.emf.cdo.server.internal.db.mapping.HorizontalMappingStrategy;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.IDBConnectionProvider;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStore.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStore.java
index 53a21b436e..3533af0b99 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStore.java
@@ -10,12 +10,17 @@
*/
package org.eclipse.emf.cdo.server.db;
+import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.server.ITransaction;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.IDBConnectionProvider;
import org.eclipse.net4j.db.ddl.IDBSchema;
+import org.eclipse.emf.ecore.EModelElement;
+
/**
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
@@ -29,4 +34,12 @@ public interface IDBStore extends IStore
public IDBAdapter getDBAdapter();
public IDBConnectionProvider getDBConnectionProvider();
+
+ public long getMetaID(EModelElement modelElement);
+
+ public EModelElement getMetaInstance(long id);
+
+ public IDBStoreAccessor getReader(ISession session);
+
+ public IDBStoreAccessor getWriter(ITransaction transaction);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStoreAccessor.java
index 5f4ec2d368..53eeb07cfd 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IDBStoreAccessor.java
@@ -10,7 +10,6 @@
*/
package org.eclipse.emf.cdo.server.db;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
import org.eclipse.emf.cdo.server.IStoreAccessor;
/**
@@ -24,10 +23,5 @@ public interface IDBStoreAccessor extends IStoreAccessor
/**
* @since 2.0
*/
- public CDOClassRef readClassRef(int classID);
-
- /**
- * @since 2.0
- */
public IJDBCDelegate getJDBCDelegate();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IJDBCDelegate.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IJDBCDelegate.java
index a7327db0f8..e456e1fc40 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IJDBCDelegate.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IJDBCDelegate.java
@@ -8,19 +8,23 @@
* Contributors:
* Stefan Winkler - initial API and implementation
* Eike Stepper - maintenance
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.db;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
import org.eclipse.emf.cdo.server.internal.db.jdbc.AbstractJDBCDelegate;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.IDBConnectionProvider;
+import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
-import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.List;
@@ -33,37 +37,73 @@ import java.util.List;
* @noimplement This interface is not intended to be implemented by clients. Please extend the abstract class
* {@link AbstractJDBCDelegate} instead.
*/
-public interface IJDBCDelegate
+public interface IJDBCDelegate extends IDBConnectionProvider
{
+ // --------------------------------------------------------------
+ // General methods
+ // --------------------------------------------------------------
+
/**
- * Insert a reference row.
+ * Get the one omnipresent statement object of this JDBC delegate
*/
- public void insertReference(CDORevision sourceRevision, int index, CDOID targetId, IReferenceMapping referenceMapping);
+ public Statement getStatement();
/**
- * Delete all reference rows of a cdoid.
+ * Get a prepared statement. The caller is responsible of closing it.
*/
- public void deleteReferences(CDOID id, IReferenceMapping referenceMapping);
+ public PreparedStatement getPreparedStatement(String sql);
+
+ public void setStoreAccessor(IDBStoreAccessor storeAccessor);
+
+ /**
+ * Do any outstanding writes (e.g. execute batches). Called any number of times - but at least once immediately before
+ * commit().
+ *
+ * @see IStoreAccessor#write(org.eclipse.emf.cdo.server.IStoreAccessor.CommitContext, OMMonitor)
+ */
+ public void flush(OMMonitor monitor);
+
+ /**
+ * Do a commit on the JDBC connection.
+ */
+ public void commit(OMMonitor monitor);
+
+ /**
+ * Do a rollback on the JDBC connection.
+ */
+ public void rollback();
+
+ // --------------------------------------------------------------
+ // Writing Revisions / Attributes
+ // --------------------------------------------------------------
/**
* Insert an attribute row.
*/
- public void insertAttributes(CDORevision revision, IClassMapping classMapping);
+ public void insertAttributes(InternalCDORevision revision, IClassMapping classMapping);
/**
* Update an attribute row.
*/
- public void updateAttributes(CDORevision revision, IClassMapping classMapping);
+ public void updateAttributes(InternalCDORevision revision, IClassMapping classMapping);
/**
- * Remove an attribute row.
+ * Update an attribute row.
*/
- public void deleteAttributes(CDOID id, IClassMapping classMapping);
+ public void updateAttributes(CDOID id, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, IClassMapping classMapping);
+
+ /**
+ * Update an attribute row (including containment and resource attributes).
+ */
+ public void updateAttributes(CDOID id, int newVersion, long created, CDOID newContainerId,
+ int newContainingFeatureId, CDOID newResourceId, List<Pair<IAttributeMapping, Object>> attributeChanges,
+ IClassMapping classMapping);
/**
* Set the revised date of a specific revision's previous version.
*/
- public void updateRevisedForReplace(CDORevision revision, IClassMapping classMapping);
+ public void updateRevisedForReplace(InternalCDORevision revision, IClassMapping classMapping);
/**
* Set the revised date of all unrevised rows of cdoid
@@ -71,66 +111,71 @@ public interface IJDBCDelegate
public void updateRevisedForDetach(CDOID id, long revised, IClassMapping classMapping);
/**
- * Select a revision's attributes
- *
- * @return <code>true</code> if the revision attributes have been successfully loaded.<br>
- * <code>false</code> if the revision does not exist in the database.
+ * Remove an attribute row.
*/
- public boolean selectRevisionAttributes(CDORevision revision, IClassMapping classMapping, String where);
+ public void deleteAttributes(CDOID id, IClassMapping classMapping);
+
+ // --------------------------------------------------------------
+ // Writing References
+ // --------------------------------------------------------------
/**
- * Select a revision's references (or a part thereof)
+ * Insert a reference row.
*/
- public void selectRevisionReferences(CDORevision revision, IReferenceMapping referenceMapping, int referenceChunk);
+ public void insertReference(CDOID id, int version, int index, CDOID targetId, IReferenceMapping referenceMapping);
/**
- * Select a revision's reference's chunks
+ * Insert a reference row shifting all subsequent indices one position up.
*/
- public void selectRevisionReferenceChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks,
- IReferenceMapping referenceMapping, String where);
+ public void insertReferenceRow(CDOID id, int newVersion, int index, CDOID value, IReferenceMapping referenceMapping);
/**
- * Get the connection object of this JDBC delegate
+ * Move one reference row shifting all subsequent indices in between accordingly.
*/
- public Connection getConnection();
+ public void moveReferenceRow(CDOID id, int newVersion, int oldPosition, int newPosition,
+ IReferenceMapping referenceMapping);
/**
- * Get the one omnipresent statement object of this JDBC delegate
+ * Remove a reference row shifting all subsequent indices one position down.
*/
- public Statement getStatement();
+ public void removeReferenceRow(CDOID id, int index, int newVersion, IReferenceMapping referenceMapping);
/**
- * Do any outstanding writes (e.g. execute batches). Called any number of times - but at least once immediately before
- * commit().
- *
- * @see IStoreAccessor#write(org.eclipse.emf.cdo.server.IStoreAccessor.CommitContext, OMMonitor)
+ * Update the value of a reference row.
*/
- public void flush(OMMonitor monitor);
+ public void updateReference(CDOID id, int newVersion, int index, CDOID value, IReferenceMapping referenceMapping);
/**
- * Do a commit on the JDBC connection.
+ * Delete all reference rows of a cdoid.
*/
- public void commit(OMMonitor monitor);
+ public void deleteReferences(CDOID id, IReferenceMapping referenceMapping);
/**
- * Do a rollback on the JDBC connection.
+ * Update the version number of all references of a CDOID to newVersion.
*/
- public void rollback();
+ public void updateReferenceVersion(CDOID id, int newVersion, IReferenceMapping referenceMapping);
+
+ // --------------------------------------------------------------
+ // Reading
+ // --------------------------------------------------------------
/**
- * Get a prepared statement. The caller is responsible of closing it.
+ * Select a revision's attributes
+ *
+ * @return <code>true</code> if the revision attributes have been successfully loaded.<br>
+ * <code>false</code> if the revision does not exist in the database.
*/
- public PreparedStatement getPreparedStatement(String sql);
+ public boolean selectRevisionAttributes(InternalCDORevision revision, IClassMapping classMapping, String where);
/**
- * Set a connection provider to provide the delegate with the DB connection. This may only be called before
- * activation.
+ * Select a revision's references (or a part thereof)
*/
- public void setConnectionProvider(IDBConnectionProvider connectionProvider);
+ public void selectRevisionReferences(InternalCDORevision revision, IReferenceMapping referenceMapping,
+ int referenceChunk);
/**
- * Set a flag indicating that this delegate maintains a read-only DB connection. This may only be called before
- * activation.
+ * Select a revision's reference's chunks
*/
- public void setReadOnly(boolean reader);
+ public void selectRevisionReferenceChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks,
+ IReferenceMapping referenceMapping, String where);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IObjectTypeCache.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IObjectTypeCache.java
index 77eb3fbf5b..152eb82ca8 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IObjectTypeCache.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IObjectTypeCache.java
@@ -11,8 +11,9 @@
package org.eclipse.emf.cdo.server.db;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+
+import org.eclipse.emf.ecore.EClass;
/**
* @author Eike Stepper
@@ -22,12 +23,12 @@ public interface IObjectTypeCache
/**
* @since 2.0
*/
- public CDOClassRef getObjectType(IDBStoreAccessor accessor, CDOID id);
+ public CDOClassifierRef getObjectType(IDBStoreAccessor accessor, CDOID id);
/**
* @since 2.0
*/
- public void putObjectType(IDBStoreAccessor accessor, CDOID id, CDOClass type);
+ public void putObjectType(IDBStoreAccessor accessor, CDOID id, EClass type);
/**
* @since 2.0
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IReferenceMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IReferenceMapping.java
deleted file mode 100644
index d20f18fba7..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IReferenceMapping.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.db;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
-
-import org.eclipse.net4j.db.ddl.IDBTable;
-
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-public interface IReferenceMapping extends IFeatureMapping
-{
- public IDBTable getTable();
-
- /**
- * @since 2.0
- */
- public boolean isWithFeature();
-
- /**
- * @since 2.0
- */
- public void writeReference(IDBStoreAccessor accessor, CDORevision revision);
-
- /**
- * @since 2.0
- */
- public void readReference(IDBStoreAccessor accessor, CDORevision revision, int referenceChunk);
-
- public void readChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks, String string);
-
- /**
- * @since 2.0
- */
- public void deleteReference(IDBStoreAccessor accessor, CDOID id);
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IAttributeMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IAttributeMapping.java
index 7e4e659c04..cf3c424313 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IAttributeMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IAttributeMapping.java
@@ -7,10 +7,11 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.db;
+package org.eclipse.emf.cdo.server.db.mapping;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.ddl.IDBField;
@@ -26,15 +27,20 @@ public interface IAttributeMapping extends IFeatureMapping
/**
* @since 2.0
*/
- public void appendValue(StringBuilder builder, CDORevision revision);
+ public void appendValue(StringBuilder builder, InternalCDORevision revision);
/**
* @since 2.0
*/
- public void extractValue(ResultSet resultSet, int column, CDORevision revision);
+ public void appendValue(StringBuilder builder, Object value);
/**
* @since 2.0
*/
- public Object getRevisionValue(CDORevision revision);
+ public void extractValue(ResultSet resultSet, int column, InternalCDORevision revision);
+
+ /**
+ * @since 2.0
+ */
+ public Object getRevisionValue(InternalCDORevision revision);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IClassMapping.java
index 9c54482560..dc671ccd6a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IClassMapping.java
@@ -7,17 +7,21 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.db;
+package org.eclipse.emf.cdo.server.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.List;
import java.util.Set;
@@ -28,7 +32,7 @@ public interface IClassMapping
{
public IMappingStrategy getMappingStrategy();
- public CDOClass getCDOClass();
+ public EClass getEClass();
public IDBTable getTable();
@@ -42,20 +46,26 @@ public interface IClassMapping
/**
* @since 2.0
*/
- public IFeatureMapping getFeatureMapping(CDOFeature feature);
+ public IFeatureMapping getFeatureMapping(EStructuralFeature feature);
public List<IAttributeMapping> getAttributeMappings();
public List<IReferenceMapping> getReferenceMappings();
- public IAttributeMapping getAttributeMapping(CDOFeature feature);
+ public IAttributeMapping getAttributeMapping(EStructuralFeature feature);
+
+ public IReferenceMapping getReferenceMapping(EStructuralFeature feature);
- public IReferenceMapping getReferenceMapping(CDOFeature feature);
+ /**
+ * @since 2.0
+ */
+ public void writeRevision(IDBStoreAccessor accessor, InternalCDORevision revision, OMMonitor monitor);
/**
* @since 2.0
*/
- public void writeRevision(IDBStoreAccessor accessor, CDORevision revision, OMMonitor monitor);
+ public void writeRevisionDelta(IDBStoreAccessor accessor, InternalCDORevisionDelta delta, long created,
+ OMMonitor monitor);
/**
* @since 2.0
@@ -67,19 +77,21 @@ public interface IClassMapping
* @return <code>true</code> if the revision has been loaded sucessfully.<br>
* <code>false</code> if the revision does not exist in the DB.
*/
- public boolean readRevision(IDBStoreAccessor accessor, CDORevision revision, int referenceChunk);
+ public boolean readRevision(IDBStoreAccessor accessor, InternalCDORevision revision, int referenceChunk);
/**
* @since 2.0
* @return <code>true</code> if the revision has been loaded sucessfully.<br>
* <code>false</code> if the revision does not exist in the DB.
*/
- public boolean readRevisionByTime(IDBStoreAccessor accessor, CDORevision revision, long timeStamp, int referenceChunk);
+ public boolean readRevisionByTime(IDBStoreAccessor accessor, InternalCDORevision revision, long timeStamp,
+ int referenceChunk);
/**
* @since 2.0
* @return <code>true</code> if the revision has been loaded sucessfully.<br>
* <code>false</code> if the revision does not exist in the DB.
*/
- public boolean readRevisionByVersion(IDBStoreAccessor accessor, CDORevision revision, int version, int referenceChunk);
+ public boolean readRevisionByVersion(IDBStoreAccessor accessor, InternalCDORevision revision, int version,
+ int referenceChunk);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IFeatureMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IFeatureMapping.java
index 5199cb8cb3..66f44d9f2a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IFeatureMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IFeatureMapping.java
@@ -8,9 +8,9 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.db;
+package org.eclipse.emf.cdo.server.db.mapping;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Eike Stepper
@@ -19,5 +19,5 @@ public interface IFeatureMapping
{
public IClassMapping getClassMapping();
- public CDOFeature getFeature();
+ public EStructuralFeature getFeature();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java
index 9990a6b798..c00831bcd8 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/IMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IMappingStrategy.java
@@ -8,17 +8,19 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.db;
+package org.eclipse.emf.cdo.server.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.server.IStoreAccessor;
-import org.eclipse.emf.cdo.server.internal.db.ServerInfo;
+import org.eclipse.emf.cdo.server.db.IDBStore;
+import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.util.collection.CloseableIterator;
+import org.eclipse.emf.ecore.EClass;
+
import java.sql.Connection;
import java.util.Map;
@@ -86,12 +88,7 @@ public interface IMappingStrategy
public void setProperties(Map<String, String> properties);
- public IClassMapping getClassMapping(CDOClass cdoClass);
-
- /**
- * @since 2.0
- */
- public CDOClassRef getClassRef(IDBStoreAccessor accessor, int classID);
+ public IClassMapping getClassMapping(EClass eClass);
/**
* @since 2.0
@@ -101,7 +98,7 @@ public interface IMappingStrategy
/**
* @since 2.0
*/
- public CDOClassRef readObjectType(IDBStoreAccessor accessor, CDOID id);
+ public CDOClassifierRef readObjectType(IDBStoreAccessor accessor, CDOID id);
/**
* @since 2.0
@@ -109,14 +106,6 @@ public interface IMappingStrategy
public void queryResources(IDBStoreAccessor accessor, IStoreAccessor.QueryResourcesContext context);
/**
- * Responsible for creation of the resource tables (if dbAdapter and connection are not <code>null</code>) and for the
- * association with the static DBIDs (see {@link ServerInfo} with the respective model elements.
- *
- * @since 2.0
- */
- public void mapResourceTables(IDBAdapter dbAdapter, Connection connection);
-
- /**
* Returns the maximum CDOID value.
*
* @since 2.0
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IReferenceMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IReferenceMapping.java
new file mode 100644
index 0000000000..35c63315f1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/db/mapping/IReferenceMapping.java
@@ -0,0 +1,99 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
+ */
+package org.eclipse.emf.cdo.server.db.mapping;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
+import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.server.db.IDBStoreChunkReader;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+
+import org.eclipse.net4j.db.ddl.IDBTable;
+
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IReferenceMapping extends IFeatureMapping
+{
+ public IDBTable getTable();
+
+ /**
+ * @since 2.0
+ */
+ public boolean isWithFeature();
+
+ /**
+ * Write a list of references completely
+ *
+ * @since 2.0
+ */
+ public void writeReference(IDBStoreAccessor accessor, InternalCDORevision revision);
+
+ /**
+ * Write one element of the list of references
+ *
+ * @since 2.0
+ */
+ public void writeReferenceEntry(IDBStoreAccessor accessor, CDOID id, int version, int idx, CDOID targetId);
+
+ /**
+ * Insert a single reference (entry) and move all subsequent entries of the list upwards
+ *
+ * @since 2.0
+ */
+ public void insertReferenceEntry(IDBStoreAccessor accessor, CDOID id, int newVersion, int index, CDOID value);
+
+ /**
+ * Moves a single reference (entry) from <code>oldPosition</code> to <code>newPosition</code> and update the list
+ * indexes of the entries in between.
+ *
+ * @since 2.0
+ */
+ public void moveReferenceEntry(IDBStoreAccessor accessor, CDOID id, int newVersion, int oldPosition, int newPosition);
+
+ /**
+ * Remove a single reference (entry) and move all subsequent entries of the list downwards to fill the gap.
+ *
+ * @since 2.0
+ */
+ public void removeReferenceEntry(IDBStoreAccessor accessor, CDOID id, int index, int newVersion);
+
+ /**
+ * Updates the value and version of a single reference (entry).
+ *
+ * @since 2.0
+ */
+ public void updateReference(IDBStoreAccessor accessor, CDOID id, int newVersion, int index, CDOID value);
+
+ /**
+ * Updates the version of all entries of a reference (list) to <code>newVersion</code>.
+ *
+ * @since 2.0
+ */
+ public void updateReferenceVersion(IDBStoreAccessor accessor, CDOID id, int newVersion);
+
+ /**
+ * Clears the list of references for the revision with ID <code>id</code>.
+ *
+ * @since 2.0
+ */
+ public void deleteReference(IDBStoreAccessor accessor, CDOID id);
+
+ /**
+ * @since 2.0
+ */
+ public void readReference(IDBStoreAccessor accessor, InternalCDORevision revision, int referenceChunk);
+
+ public void readChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks, String string);
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
index d357e9a003..5d72877b26 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/CDODBSchema.java
@@ -47,126 +47,53 @@ public class CDODBSchema extends DBSchema
REPOSITORY.addField("next_metaid", DBType.BIGINT);
/**
- * DBTable cdo_packages
+ * DBTable cdo_package_units
*/
- public static final IDBTable PACKAGES = INSTANCE.addTable("cdo_packages");
-
- public static final IDBField PACKAGES_ID = //
- PACKAGES.addField("id", DBType.INTEGER);
-
- public static final IDBField PACKAGES_URI = //
- PACKAGES.addField("uri", DBType.VARCHAR, 255);
-
- public static final IDBField PACKAGES_NAME = //
- PACKAGES.addField("name", DBType.VARCHAR, 255);
+ public static final IDBTable PACKAGE_UNITS = INSTANCE.addTable("cdo_package_units");
- public static final IDBField PACKAGES_ECORE = //
- PACKAGES.addField("ecore", DBType.CLOB);
+ public static final IDBField PACKAGE_UNITS_ID = //
+ PACKAGE_UNITS.addField("id", DBType.VARCHAR, 255);
- public static final IDBField PACKAGES_DYNAMIC = //
- PACKAGES.addField("dynamic", DBType.BOOLEAN);
+ public static final IDBField PACKAGE_UNITS_ORIGINAL_TYPE = //
+ PACKAGE_UNITS.addField("original_type", DBType.INTEGER);
- public static final IDBField PACKAGES_RANGE_LB = //
- PACKAGES.addField("range_lb", DBType.BIGINT);
+ public static final IDBField PACKAGE_UNITS_TIME_STAMP = //
+ PACKAGE_UNITS.addField("time_stamp", DBType.BIGINT);
- public static final IDBField PACKAGES_RANGE_UB = //
- PACKAGES.addField("range_ub", DBType.BIGINT);
+ public static final IDBField PACKAGE_UNITS_PACKAGE_DATA = //
+ PACKAGE_UNITS.addField("package_data", DBType.BLOB);
- public static final IDBField PACKAGES_PARENT = //
- PACKAGES.addField("parent", DBType.VARCHAR, 255);
-
- public static final IDBIndex INDEX_PACKAGES_PK = //
- PACKAGES.addIndex(IDBIndex.Type.PRIMARY_KEY, PACKAGES_ID);
-
- public static final IDBIndex INDEX_PACKAGES_URI = //
- PACKAGES.addIndex(IDBIndex.Type.UNIQUE, PACKAGES_URI);
-
- public static final IDBIndex INDEX_PACKAGES_PARENT = //
- PACKAGES.addIndex(IDBIndex.Type.NON_UNIQUE, PACKAGES_PARENT);
+ public static final IDBIndex INDEX_PACKAGE_UNITS_PK = //
+ PACKAGE_UNITS.addIndex(IDBIndex.Type.PRIMARY_KEY, PACKAGE_UNITS_ID);
/**
- * DBTable cdo_classes
- */
- public static final IDBTable CLASSES = INSTANCE.addTable("cdo_classes");
-
- public static final IDBField CLASSES_ID = //
- CLASSES.addField("id", DBType.INTEGER);
-
- public static final IDBField CLASSES_PACKAGE = //
- CLASSES.addField("package", DBType.INTEGER);
-
- public static final IDBField CLASSES_CLASSIFIER = //
- CLASSES.addField("classifier", DBType.INTEGER);
-
- public static final IDBField CLASSES_NAME = //
- CLASSES.addField("name", DBType.VARCHAR, 255);
-
- public static final IDBField CLASSES_ABSTRACT = //
- CLASSES.addField("abstract", DBType.BOOLEAN);
-
- public static final IDBIndex INDEX_CLASSES_PK = //
- CLASSES.addIndex(IDBIndex.Type.PRIMARY_KEY, CLASSES_ID);
-
- public static final IDBIndex INDEX_CLASSES_PACKAGE = //
- CLASSES.addIndex(IDBIndex.Type.NON_UNIQUE, CLASSES_PACKAGE);
-
- /**
- * DBTable cdo_supertypes
- */
- public static final IDBTable SUPERTYPES = INSTANCE.addTable("cdo_supertypes");
-
- public static final IDBField SUPERTYPES_TYPE = //
- SUPERTYPES.addField("type_id", DBType.INTEGER);
-
- public static final IDBField SUPERTYPES_SUPERTYPE_PACKAGE = //
- SUPERTYPES.addField("supertype_package", DBType.VARCHAR, 255);
-
- public static final IDBField SUPERTYPES_SUPERTYPE_CLASSIFIER = //
- SUPERTYPES.addField("supertype_classifier", DBType.INTEGER);
-
- public static final IDBIndex INDEX_SUPERTYPES_PK = //
- SUPERTYPES.addIndex(IDBIndex.Type.PRIMARY_KEY, SUPERTYPES_TYPE);
-
- /**
- * DBTable cdo_features
+ * DBTable cdo_packages
*/
- public static final IDBTable FEATURES = INSTANCE.addTable("cdo_features");
-
- public static final IDBField FEATURES_ID = //
- FEATURES.addField("id", DBType.INTEGER);
-
- public static final IDBField FEATURES_CLASS = //
- FEATURES.addField("class", DBType.INTEGER);
-
- public static final IDBField FEATURES_FEATURE = //
- FEATURES.addField("feature", DBType.INTEGER);
-
- public static final IDBField FEATURES_NAME = //
- FEATURES.addField("name", DBType.VARCHAR, 255);
+ public static final IDBTable PACKAGE_INFOS = INSTANCE.addTable("cdo_package_infos");
- public static final IDBField FEATURES_TYPE = //
- FEATURES.addField("type", DBType.INTEGER);
+ public static final IDBField PACKAGE_INFOS_URI = //
+ PACKAGE_INFOS.addField("uri", DBType.VARCHAR, 255);
- public static final IDBField FEATURES_REFERENCE_PACKAGE = //
- FEATURES.addField("reference_package", DBType.VARCHAR, 255);
+ public static final IDBField PACKAGE_INFOS_PARENT = //
+ PACKAGE_INFOS.addField("parent", DBType.VARCHAR, 255);
- public static final IDBField FEATURES_REFERENCE_CLASSIFIER = //
- FEATURES.addField("reference_classifier", DBType.INTEGER);
+ public static final IDBField PACKAGE_INFOS_UNIT = //
+ PACKAGE_INFOS.addField("unit", DBType.VARCHAR, 255);
- public static final IDBField FEATURES_MANY = //
- FEATURES.addField("many", DBType.BOOLEAN);
+ public static final IDBField PACKAGE_INFOS_META_LB = //
+ PACKAGE_INFOS.addField("meta_lb", DBType.BIGINT);
- public static final IDBField FEATURES_CONTAINMENT = //
- FEATURES.addField("containment", DBType.BOOLEAN);
+ public static final IDBField PACKAGE_INFOS_META_UB = //
+ PACKAGE_INFOS.addField("meta_ub", DBType.BIGINT);
- public static final IDBField FEATURES_INDEX = //
- FEATURES.addField("idx", DBType.INTEGER);
+ public static final IDBIndex INDEX_PACKAGE_INFOS_PK = //
+ PACKAGE_INFOS.addIndex(IDBIndex.Type.PRIMARY_KEY, PACKAGE_INFOS_URI);
- public static final IDBIndex INDEX_FEATURES_PK = //
- FEATURES.addIndex(IDBIndex.Type.PRIMARY_KEY, FEATURES_ID);
+ public static final IDBIndex INDEX_PACKAGE_INFOS_PARENT = //
+ PACKAGE_INFOS.addIndex(IDBIndex.Type.NON_UNIQUE, PACKAGE_INFOS_PARENT);
- public static final IDBIndex INDEX_FEATURES_CLASS = //
- FEATURES.addIndex(IDBIndex.Type.NON_UNIQUE, FEATURES_CLASS);
+ public static final IDBIndex INDEX_PACKAGE_INFOS_UNIT = //
+ PACKAGE_INFOS.addIndex(IDBIndex.Type.NON_UNIQUE, PACKAGE_INFOS_UNIT);
/**
* Name of object table
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassServerInfo.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassServerInfo.java
deleted file mode 100644
index 7ac62099f9..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassServerInfo.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.db;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-
-import org.eclipse.net4j.util.ImplementationError;
-
-/**
- * @author Eike Stepper
- */
-public final class ClassServerInfo extends ServerInfo
-{
- private IClassMapping classMapping;
-
- private ClassServerInfo(int id)
- {
- super(id);
- }
-
- public static ClassServerInfo setDBID(CDOClass cdoClass, int id)
- {
- ClassServerInfo serverInfo = new ClassServerInfo(id);
- ((InternalCDOClass)cdoClass).setServerInfo(serverInfo);
- return serverInfo;
- }
-
- /*
- * Should only be called from MappingStrategy#getClassMapping(CDOClass).
- */
- public static IClassMapping getClassMapping(CDOClass cdoClass)
- {
- ClassServerInfo serverInfo = getServerInfo(cdoClass);
- return serverInfo == null ? null : serverInfo.classMapping;
- }
-
- public static void setClassMapping(CDOClass cdoClass, IClassMapping classMapping)
- {
- ClassServerInfo serverInfo = getServerInfo(cdoClass);
- if (serverInfo == null)
- {
- throw new ImplementationError("No serverInfo for class " + cdoClass);
- }
-
- serverInfo.classMapping = classMapping;
- }
-
- private static ClassServerInfo getServerInfo(CDOClass cdoClass)
- {
- ClassServerInfo serverInfo = (ClassServerInfo)cdoClass.getServerInfo();
- if (serverInfo == null)
- {
- if (cdoClass.isRoot())
- {
- serverInfo = setDBID(cdoClass, CDO_OBJECT_CLASS_DBID);
- }
- // else if (cdoClass.isResource())
- // {
- // CDOResourceClass c = (CDOResourceClass)cdoClass;
- // FeatureServerInfo.setDBID(c.getCDOContentsFeature(), CDO_CONTENTS_FEATURE_DBID);
- // serverInfo = setDBID(c, CDO_RESOURCE_CLASS_DBID);
- // }
- // else if (cdoClass.isResourceFolder())
- // {
- // CDOResourceFolderClass c = (CDOResourceFolderClass)cdoClass;
- // FeatureServerInfo.setDBID(c.getCDONodesFeature(), CDO_NODES_FEATURE_DBID);
- // serverInfo = setDBID(c, CDO_RESOURCE_FOLDER_CLASS_DBID);
- // }
- // else if (cdoClass.isResourceNode())
- // {
- // // Important to check the abstract class *after* the concrete ones!
- // CDOResourceNodeClass c = (CDOResourceNodeClass)cdoClass;
- // FeatureServerInfo.setDBID(c.getCDOFolderFeature(), CDO_FOLDER_FEATURE_DBID);
- // FeatureServerInfo.setDBID(c.getCDONameFeature(), CDO_NAME_FEATURE_DBID);
- // serverInfo = setDBID(cdoClass, CDO_RESOURCE_NODE_CLASS_DBID);
- // }
- }
-
- return serverInfo;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
index 514a24a12d..58de38e265 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStore.java
@@ -7,20 +7,23 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db;
-import org.eclipse.emf.cdo.common.model.CDOType;
-import org.eclipse.emf.cdo.internal.server.LongIDStore;
-import org.eclipse.emf.cdo.internal.server.StoreAccessorPool;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDMeta;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.IView;
-import org.eclipse.emf.cdo.server.StoreThreadLocal;
import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IJDBCDelegateProvider;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.server.LongIDStore;
+import org.eclipse.emf.cdo.spi.server.StoreAccessorPool;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -30,15 +33,22 @@ import org.eclipse.net4j.db.IDBConnectionProvider;
import org.eclipse.net4j.db.ddl.IDBSchema;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.spi.db.DBSchema;
-import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.monitor.ProgressDistributor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
import javax.sql.DataSource;
import java.sql.Connection;
import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
/**
@@ -50,6 +60,8 @@ public class DBStore extends LongIDStore implements IDBStore
private long creationTime;
+ private boolean firstTime;
+
private IMappingStrategy mappingStrategy;
private IDBSchema dbSchema;
@@ -82,22 +94,52 @@ public class DBStore extends LongIDStore implements IDBStore
@ExcludeFromDump
private transient StoreAccessorPool writerPool = new StoreAccessorPool(this, null);
- @ExcludeFromDump
- private transient int nextPackageID;
-
- @ExcludeFromDump
- private transient int nextClassID;
+ private static Map<EClassifier, DBType> typeMap = new HashMap<EClassifier, DBType>();
- @ExcludeFromDump
- private transient int nextFeatureID;
+ static
+ {
+ typeMap.put(EcorePackage.eINSTANCE.getEDate(), DBType.TIMESTAMP);
+ typeMap.put(EcorePackage.eINSTANCE.getEString(), DBType.VARCHAR);
+
+ typeMap.put(EcorePackage.eINSTANCE.getEBoolean(), DBType.BOOLEAN);
+ typeMap.put(EcorePackage.eINSTANCE.getEByte(), DBType.SMALLINT);
+ typeMap.put(EcorePackage.eINSTANCE.getEChar(), DBType.CHAR);
+ typeMap.put(EcorePackage.eINSTANCE.getEDouble(), DBType.DOUBLE);
+ typeMap.put(EcorePackage.eINSTANCE.getEFloat(), DBType.FLOAT);
+ typeMap.put(EcorePackage.eINSTANCE.getEInt(), DBType.INTEGER);
+ typeMap.put(EcorePackage.eINSTANCE.getELong(), DBType.BIGINT);
+ typeMap.put(EcorePackage.eINSTANCE.getEShort(), DBType.SMALLINT);
+
+ typeMap.put(EcorePackage.eINSTANCE.getEBooleanObject(), DBType.BOOLEAN);
+ typeMap.put(EcorePackage.eINSTANCE.getEByteObject(), DBType.SMALLINT);
+ typeMap.put(EcorePackage.eINSTANCE.getECharacterObject(), DBType.CHAR);
+ typeMap.put(EcorePackage.eINSTANCE.getEDoubleObject(), DBType.DOUBLE);
+ typeMap.put(EcorePackage.eINSTANCE.getEFloatObject(), DBType.FLOAT);
+ typeMap.put(EcorePackage.eINSTANCE.getEIntegerObject(), DBType.INTEGER);
+ typeMap.put(EcorePackage.eINSTANCE.getELongObject(), DBType.BIGINT);
+ typeMap.put(EcorePackage.eINSTANCE.getEShortObject(), DBType.SMALLINT);
+ }
public DBStore()
{
- super(TYPE, set(ChangeFormat.REVISION), set(RevisionTemporality.AUDITING, RevisionTemporality.NONE),
- set(RevisionParallelism.NONE));
+ super(TYPE, set(ChangeFormat.REVISION, ChangeFormat.DELTA), set(RevisionTemporality.AUDITING,
+ RevisionTemporality.NONE), set(RevisionParallelism.NONE));
setRevisionTemporality(RevisionTemporality.AUDITING);
}
+ @Override
+ public Set<ChangeFormat> getSupportedChangeFormats()
+ {
+ if (getRevisionTemporality() == RevisionTemporality.AUDITING)
+ {
+ return set(ChangeFormat.REVISION);
+ }
+ else
+ {
+ return set(ChangeFormat.REVISION, ChangeFormat.DELTA);
+ }
+ }
+
public IMappingStrategy getMappingStrategy()
{
return mappingStrategy;
@@ -126,7 +168,7 @@ public class DBStore extends LongIDStore implements IDBStore
public void setDbConnectionProvider(IDBConnectionProvider dbConnectionProvider)
{
- // FIXME: need to update provider in JDBCWrapper, too?
+ // TODO Need to update provider in JDBCWrapper, too?
this.dbConnectionProvider = dbConnectionProvider;
}
@@ -150,18 +192,24 @@ public class DBStore extends LongIDStore implements IDBStore
return accessorWriteDistributor;
}
- public synchronized IDBSchema getDBSchema()
+ public IDBSchema getDBSchema()
{
- // TODO Better synchronization or eager init
- if (dbSchema == null)
- {
- dbSchema = createSchema();
- }
-
return dbSchema;
}
@Override
+ public DBStoreAccessor getReader(ISession session)
+ {
+ return (DBStoreAccessor)super.getReader(session);
+ }
+
+ @Override
+ public DBStoreAccessor getWriter(ITransaction transaction)
+ {
+ return (DBStoreAccessor)super.getWriter(transaction);
+ }
+
+ @Override
protected StoreAccessorPool getReaderPool(ISession session, boolean forReleasing)
{
return readerPool;
@@ -185,22 +233,27 @@ public class DBStore extends LongIDStore implements IDBStore
return new DBStoreAccessor(this, transaction);
}
- public synchronized int getNextPackageID()
+ public long getMetaID(EModelElement modelElement)
{
- // TODO Better synchronization
- return nextPackageID++;
- }
-
- public synchronized int getNextClassID()
- {
- // TODO Better synchronization
- return nextClassID++;
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)getRepository().getPackageRegistry();
+ try
+ {
+ CDOID cdoid = packageRegistry.getMetaInstanceMapper().lookupMetaInstanceID((InternalEObject)modelElement);
+ return ((CDOIDMeta)cdoid).getLongValue();
+ }
+ catch (RuntimeException ex)
+ {
+ packageRegistry.getMetaInstanceMapper().lookupMetaInstanceID((InternalEObject)modelElement);
+ throw ex;
+ }
}
- public synchronized int getNextFeatureID()
+ public EModelElement getMetaInstance(long id)
{
- // TODO Better synchronization
- return nextFeatureID++;
+ CDOIDMeta cdoid = CDOIDUtil.createMeta(id);
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)getRepository().getPackageRegistry();
+ InternalEObject metaInstance = packageRegistry.getMetaInstanceMapper().lookupMetaInstance(cdoid);
+ return (EModelElement)metaInstance;
}
public Connection getConnection()
@@ -210,33 +263,18 @@ public class DBStore extends LongIDStore implements IDBStore
{
throw new DBException("No connection from connection provider: " + dbConnectionProvider);
}
+
return connection;
}
- public void repairAfterCrash()
+ public long getCreationTime()
{
- try
- {
- DBStoreAccessor accessor = (DBStoreAccessor)getWriter(null);
- StoreThreadLocal.setAccessor(accessor);
-
- Connection connection = accessor.getJDBCDelegate().getConnection();
- long maxObjectID = mappingStrategy.repairAfterCrash(dbAdapter, connection);
- long maxMetaID = DBUtil.selectMaximumLong(connection, CDODBSchema.PACKAGES_RANGE_UB);
-
- OM.LOG.info(MessageFormat.format("Repaired after crash: maxObjectID={0}, maxMetaID={1}", maxObjectID, maxMetaID));
- setLastObjectID(maxObjectID);
- setLastMetaID(maxMetaID);
- }
- finally
- {
- StoreThreadLocal.release();
- }
+ return creationTime;
}
- public long getCreationTime()
+ public boolean isFirstTime()
{
- return creationTime;
+ return firstTime;
}
@Override
@@ -252,71 +290,22 @@ public class DBStore extends LongIDStore implements IDBStore
protected void doActivate() throws Exception
{
super.doActivate();
- long startupTime = getStartupTime();
- Connection connection = null;
+ Connection connection = getConnection();
try
{
- connection = getConnection();
- Set<IDBTable> createdTables = CDODBSchema.INSTANCE.create(dbAdapter, dbConnectionProvider);
+ Set<IDBTable> createdTables = CDODBSchema.INSTANCE.create(dbAdapter, connection);
if (createdTables.contains(CDODBSchema.REPOSITORY))
{
- // First start
- creationTime = startupTime;
- DBUtil.insertRow(connection, dbAdapter, CDODBSchema.REPOSITORY, creationTime, 1, startupTime, 0, CRASHED,
- CRASHED);
-
- mappingStrategy.mapResourceTables(dbAdapter, connection);
+ firstStart(connection);
}
else
{
- // Restart
- creationTime = DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_CREATED);
- long lastObjectID = DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_NEXT_CDOID);
- setLastMetaID(DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_NEXT_METAID));
- if (lastObjectID == CRASHED || getLastMetaID() == CRASHED)
- {
- OM.LOG.warn("Detected restart after crash");
- }
-
- setLastObjectID(lastObjectID);
-
- StringBuilder builder = new StringBuilder();
- builder.append("UPDATE ");
- builder.append(CDODBSchema.REPOSITORY);
- builder.append(" SET ");
- builder.append(CDODBSchema.REPOSITORY_STARTS);
- builder.append("=");
- builder.append(CDODBSchema.REPOSITORY_STARTS);
- builder.append("+1, ");
- builder.append(CDODBSchema.REPOSITORY_STARTED);
- builder.append("=");
- builder.append(startupTime);
- builder.append(", ");
- builder.append(CDODBSchema.REPOSITORY_STOPPED);
- builder.append("=0, ");
- builder.append(CDODBSchema.REPOSITORY_NEXT_CDOID);
- builder.append("=");
- builder.append(CRASHED);
- builder.append(", ");
- builder.append(CDODBSchema.REPOSITORY_NEXT_METAID);
- builder.append("=");
- builder.append(CRASHED);
-
- String sql = builder.toString();
- int count = DBUtil.update(connection, sql);
- if (count == 0)
- {
- throw new DBException("No row updated in table " + CDODBSchema.REPOSITORY);
- }
-
- getMappingStrategy().mapResourceTables(null, null);
+ reStart(connection);
}
- nextPackageID = DBUtil.selectMaximumInt(connection, CDODBSchema.PACKAGES_ID) + 1;
- nextClassID = DBUtil.selectMaximumInt(connection, CDODBSchema.CLASSES_ID) + 1;
- nextFeatureID = DBUtil.selectMaximumInt(connection, CDODBSchema.FEATURES_ID) + 1;
LifecycleUtil.activate(mappingStrategy);
+ dbSchema = createSchema();
}
finally
{
@@ -324,6 +313,63 @@ public class DBStore extends LongIDStore implements IDBStore
}
}
+ protected void firstStart(Connection connection)
+ {
+ creationTime = getStartupTime();
+ firstTime = true;
+
+ DBUtil.insertRow(connection, dbAdapter, CDODBSchema.REPOSITORY, creationTime, 1, creationTime, 0, CRASHED, CRASHED);
+ OM.LOG.info(MessageFormat.format("First start: {0,date} {0,time}", creationTime));
+ }
+
+ protected void reStart(Connection connection)
+ {
+ creationTime = DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_CREATED);
+ long lastMetaId = DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_NEXT_METAID);
+ long lastObjectID = DBUtil.selectMaximumLong(connection, CDODBSchema.REPOSITORY_NEXT_CDOID);
+
+ if (lastObjectID == CRASHED || getLastMetaID() == CRASHED)
+ {
+ OM.LOG.info("Detected crash");
+ lastObjectID = mappingStrategy.repairAfterCrash(dbAdapter, connection);
+ lastMetaId = DBUtil.selectMaximumLong(connection, CDODBSchema.PACKAGE_INFOS_META_UB);
+ OM.LOG.info(MessageFormat
+ .format("Repaired after crash: maxObjectID={0}, maxMetaID={1}", lastObjectID, lastMetaId));
+ }
+
+ setLastMetaID(lastMetaId);
+ setLastObjectID(lastObjectID);
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(CDODBSchema.REPOSITORY);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REPOSITORY_STARTS);
+ builder.append("=");
+ builder.append(CDODBSchema.REPOSITORY_STARTS);
+ builder.append("+1, ");
+ builder.append(CDODBSchema.REPOSITORY_STARTED);
+ builder.append("=");
+ builder.append(getStartupTime());
+ builder.append(", ");
+ builder.append(CDODBSchema.REPOSITORY_STOPPED);
+ builder.append("=0, ");
+ builder.append(CDODBSchema.REPOSITORY_NEXT_CDOID);
+ builder.append("=");
+ builder.append(CRASHED);
+ builder.append(", ");
+ builder.append(CDODBSchema.REPOSITORY_NEXT_METAID);
+ builder.append("=");
+ builder.append(CRASHED);
+
+ String sql = builder.toString();
+ int count = DBUtil.update(connection, sql);
+ if (count == 0)
+ {
+ throw new DBException("No row updated in table " + CDODBSchema.REPOSITORY);
+ }
+ }
+
@Override
protected void doDeactivate() throws Exception
{
@@ -349,7 +395,7 @@ public class DBStore extends LongIDStore implements IDBStore
builder.append(", ");
builder.append(CDODBSchema.REPOSITORY_NEXT_METAID);
builder.append("=");
- builder.append(getRepository().getLastMetaID());
+ builder.append(getLastMetaID());
String sql = builder.toString();
int count = DBUtil.update(connection, sql);
@@ -384,53 +430,19 @@ public class DBStore extends LongIDStore implements IDBStore
return System.currentTimeMillis();
}
- public static DBType getDBType(CDOType type)
+ public static DBType getDBType(EClassifier type)
{
- if (type == CDOType.BOOLEAN || type == CDOType.BOOLEAN_OBJECT)
- {
- return DBType.BOOLEAN;
- }
- else if (type == CDOType.BYTE || type == CDOType.BYTE_OBJECT)
- {
- return DBType.SMALLINT;
- }
- else if (type == CDOType.CHAR || type == CDOType.CHARACTER_OBJECT)
- {
- return DBType.CHAR;
- }
- else if (type == CDOType.DATE)
- {
- return DBType.TIMESTAMP;
- }
- else if (type == CDOType.DOUBLE || type == CDOType.DOUBLE_OBJECT)
- {
- return DBType.DOUBLE;
- }
- else if (type == CDOType.FLOAT || type == CDOType.FLOAT_OBJECT)
- {
- return DBType.FLOAT;
- }
- else if (type == CDOType.INT || type == CDOType.INTEGER_OBJECT)
- {
- return DBType.INTEGER;
- }
- else if (type == CDOType.LONG || type == CDOType.LONG_OBJECT)
- {
- return DBType.BIGINT;
- }
- else if (type == CDOType.OBJECT)
+ if (type instanceof EClass)
{
return DBType.BIGINT;
}
- else if (type == CDOType.SHORT || type == CDOType.SHORT_OBJECT)
- {
- return DBType.SMALLINT;
- }
- else if (type == CDOType.STRING || type == CDOType.CUSTOM)
+
+ DBType dbType = typeMap.get(type);
+ if (dbType != null)
{
- return DBType.VARCHAR;
+ return dbType;
}
- throw new ImplementationError("Unrecognized CDOType: " + type);
+ return DBType.VARCHAR;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index 013f3a4eec..fd541442d9 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -7,6 +7,7 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db;
@@ -15,37 +16,33 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMeta;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.common.model.CDOType;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.internal.server.StoreAccessor;
-import org.eclipse.emf.cdo.server.IPackageManager;
import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ITransaction;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
+import org.eclipse.emf.cdo.server.IStore.RevisionTemporality;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IJDBCDelegate;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+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.LongIDStoreAccessor;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBRowHandler;
import org.eclipse.net4j.db.ddl.IDBTable;
+import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.collection.CloseableIterator;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
@@ -54,22 +51,33 @@ import org.eclipse.net4j.util.om.monitor.ProgressDistributor;
import org.eclipse.net4j.util.om.monitor.OMMonitor.Async;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.Map.Entry;
/**
* @author Eike Stepper
*/
-public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
+public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAccessor
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, DBStoreAccessor.class);
+ private static final boolean ZIP_PACKAGE_BYTES = true;
+
private IJDBCDelegate jdbcDelegate;
+ @ExcludeFromDump
@SuppressWarnings("unchecked")
private final ProgressDistributable<CommitContext>[] ops = ProgressDistributor.array( //
new ProgressDistributable.Default<CommitContext>()
@@ -90,20 +98,19 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
public DBStoreAccessor(DBStore store, ISession session) throws DBException
{
super(store, session);
- initJDBCDelegate(store);
+ initJDBCDelegate();
}
public DBStoreAccessor(DBStore store, ITransaction transaction) throws DBException
{
super(store, transaction);
- initJDBCDelegate(store);
+ initJDBCDelegate();
}
- private void initJDBCDelegate(DBStore store)
+ private void initJDBCDelegate()
{
- jdbcDelegate = store.getJDBCDelegateProvider().getJDBCDelegate();
- jdbcDelegate.setConnectionProvider(store.getDBConnectionProvider());
- jdbcDelegate.setReadOnly(isReader());
+ jdbcDelegate = getStore().getJDBCDelegateProvider().getJDBCDelegate();
+ jdbcDelegate.setStoreAccessor(this);
}
public IJDBCDelegate getJDBCDelegate()
@@ -117,140 +124,81 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return (DBStore)super.getStore();
}
- public DBStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature)
+ public DBStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
{
return new DBStoreChunkReader(this, revision, feature);
}
- public final Collection<CDOPackageInfo> readPackageInfos()
+ public final Collection<InternalCDOPackageUnit> readPackageUnits()
{
- final Collection<CDOPackageInfo> result = new ArrayList<CDOPackageInfo>(0);
- IDBRowHandler rowHandler = new IDBRowHandler()
+ final Map<String, InternalCDOPackageUnit> packageUnits = new HashMap<String, InternalCDOPackageUnit>();
+ IDBRowHandler unitRowHandler = new IDBRowHandler()
{
public boolean handle(int row, final Object... values)
{
- String packageURI = (String)values[0];
- boolean dynamic = getBoolean(values[1]);
- long lowerBound = (Long)values[2];
- long upperBound = (Long)values[3];
- CDOIDMetaRange metaIDRange = lowerBound == 0 ? null : CDOIDUtil.createMetaRange(CDOIDUtil
- .createMeta(lowerBound), (int)(upperBound - lowerBound) + 1);
- String parentURI = (String)values[4];
-
- result.add(new CDOPackageInfo(packageURI, dynamic, metaIDRange, parentURI));
+ InternalCDOPackageUnit packageUnit = createPackageUnit();
+ packageUnit.setOriginalType(CDOPackageUnit.Type.values()[(Integer)values[1]]);
+ packageUnit.setTimeStamp((Long)values[2]);
+ packageUnits.put((String)values[0], packageUnit);
return true;
}
};
- DBUtil.select(jdbcDelegate.getConnection(), rowHandler, CDODBSchema.PACKAGES_URI, CDODBSchema.PACKAGES_DYNAMIC,
- CDODBSchema.PACKAGES_RANGE_LB, CDODBSchema.PACKAGES_RANGE_UB, CDODBSchema.PACKAGES_PARENT);
- return result;
- }
+ DBUtil.select(jdbcDelegate.getConnection(), unitRowHandler, CDODBSchema.PACKAGE_UNITS_ID,
+ CDODBSchema.PACKAGE_UNITS_ORIGINAL_TYPE, CDODBSchema.PACKAGE_UNITS_TIME_STAMP);
- public final void readPackage(CDOPackage cdoPackage)
- {
- String where = CDODBSchema.PACKAGES_URI.getName() + " = '" + cdoPackage.getPackageURI() + "'";
- Object[] values = DBUtil.select(jdbcDelegate.getConnection(), where, CDODBSchema.PACKAGES_ID,
- CDODBSchema.PACKAGES_NAME);
- PackageServerInfo.setDBID(cdoPackage, (Integer)values[0]);
- ((InternalCDOPackage)cdoPackage).setName((String)values[1]);
- readClasses(cdoPackage);
- mapPackages(cdoPackage);
- }
-
- protected final void readClasses(final CDOPackage cdoPackage)
- {
- IDBRowHandler rowHandler = new IDBRowHandler()
+ final Map<String, List<InternalCDOPackageInfo>> packageInfos = new HashMap<String, List<InternalCDOPackageInfo>>();
+ IDBRowHandler infoRowHandler = new IDBRowHandler()
{
- public boolean handle(int row, Object... values)
+ public boolean handle(int row, final Object... values)
{
- int classID = (Integer)values[0];
- int classifierID = (Integer)values[1];
- String name = (String)values[2];
- boolean isAbstract = getBoolean(values[3]);
- CDOClass cdoClass = CDOModelUtil.createClass(cdoPackage, classifierID, name, isAbstract);
- ClassServerInfo.setDBID(cdoClass, classID);
- ((InternalCDOPackage)cdoPackage).addClass(cdoClass);
- readSuperTypes(cdoClass, classID);
- readFeatures(cdoClass, classID);
- return true;
- }
- };
-
- String where = CDODBSchema.CLASSES_PACKAGE.getName() + "=" + ServerInfo.getDBID(cdoPackage);
- DBUtil.select(jdbcDelegate.getConnection(), rowHandler, where, CDODBSchema.CLASSES_ID,
- CDODBSchema.CLASSES_CLASSIFIER, CDODBSchema.CLASSES_NAME, CDODBSchema.CLASSES_ABSTRACT);
- }
+ long metaLB = (Long)values[3];
+ long metaUB = (Long)values[4];
+ CDOIDMetaRange metaIDRange = metaLB == 0 ? null : CDOIDUtil.createMetaRange(CDOIDUtil.createMeta(metaLB),
+ (int)(metaUB - metaLB) + 1);
+
+ InternalCDOPackageInfo packageInfo = createPackageInfo();
+ packageInfo.setPackageURI((String)values[1]);
+ packageInfo.setParentURI((String)values[2]);
+ packageInfo.setMetaIDRange(metaIDRange);
+
+ String unit = (String)values[0];
+ List<InternalCDOPackageInfo> list = packageInfos.get(unit);
+ if (list == null)
+ {
+ list = new ArrayList<InternalCDOPackageInfo>();
+ packageInfos.put(unit, list);
+ }
- protected final void readSuperTypes(final CDOClass cdoClass, int classID)
- {
- IDBRowHandler rowHandler = new IDBRowHandler()
- {
- public boolean handle(int row, Object... values)
- {
- String packageURI = (String)values[0];
- int classifierID = (Integer)values[1];
- ((InternalCDOClass)cdoClass).addSuperType(CDOModelUtil.createClassRef(packageURI, classifierID));
+ list.add(packageInfo);
return true;
}
};
- String where = CDODBSchema.SUPERTYPES_TYPE.getName() + "=" + classID;
- DBUtil.select(jdbcDelegate.getConnection(), rowHandler, where, CDODBSchema.SUPERTYPES_SUPERTYPE_PACKAGE,
- CDODBSchema.SUPERTYPES_SUPERTYPE_CLASSIFIER);
- }
+ DBUtil.select(jdbcDelegate.getConnection(), infoRowHandler, CDODBSchema.PACKAGE_INFOS_UNIT,
+ CDODBSchema.PACKAGE_INFOS_URI, CDODBSchema.PACKAGE_INFOS_PARENT, CDODBSchema.PACKAGE_INFOS_META_LB,
+ CDODBSchema.PACKAGE_INFOS_META_UB);
- protected final void readFeatures(final CDOClass cdoClass, int classID)
- {
- IDBRowHandler rowHandler = new IDBRowHandler()
+ for (Entry<String, InternalCDOPackageUnit> entry : packageUnits.entrySet())
{
- public boolean handle(int row, Object... values)
- {
- int featureID = (Integer)values[1];
- String name = (String)values[2];
- CDOType type = CDOModelUtil.getType((Integer)values[3]);
- boolean many = getBoolean(values[6]);
-
- CDOFeature feature;
- if (type == CDOType.OBJECT)
- {
- String packageURI = (String)values[4];
- int classifierID = (Integer)values[5];
- boolean containment = getBoolean(values[7]);
- CDOClassRef classRef = CDOModelUtil.createClassRef(packageURI, classifierID);
- CDOClassProxy referenceType = new CDOClassProxy(classRef, cdoClass.getPackageManager());
- feature = CDOModelUtil.createReference(cdoClass, featureID, name, referenceType, many, containment);
- }
- else
- {
- feature = CDOModelUtil.createAttribute(cdoClass, featureID, name, type, null, many);
- }
-
- FeatureServerInfo.setDBID(feature, (Integer)values[0]);
- ((InternalCDOClass)cdoClass).addFeature(feature);
- return true;
- }
- };
+ String id = entry.getKey();
+ InternalCDOPackageUnit packageUnit = entry.getValue();
- String where = CDODBSchema.FEATURES_CLASS.getName() + "=" + classID;
- DBUtil.select(jdbcDelegate.getConnection(), rowHandler, where, CDODBSchema.FEATURES_ID,
- CDODBSchema.FEATURES_FEATURE, CDODBSchema.FEATURES_NAME, CDODBSchema.FEATURES_TYPE,
- CDODBSchema.FEATURES_REFERENCE_PACKAGE, CDODBSchema.FEATURES_REFERENCE_CLASSIFIER, CDODBSchema.FEATURES_MANY,
- CDODBSchema.FEATURES_CONTAINMENT);
- }
+ List<InternalCDOPackageInfo> list = packageInfos.get(id);
+ InternalCDOPackageInfo[] array = list.toArray(new InternalCDOPackageInfo[list.size()]);
+ packageUnit.setPackageInfos(array);
+ }
- public final void readPackageEcore(CDOPackage cdoPackage)
- {
- String where = CDODBSchema.PACKAGES_URI.getName() + " = '" + cdoPackage.getPackageURI() + "'";
- Object[] values = DBUtil.select(jdbcDelegate.getConnection(), where, CDODBSchema.PACKAGES_ECORE);
- ((InternalCDOPackage)cdoPackage).setEcore((String)values[0]);
+ return packageUnits.values();
}
- public final String readPackageURI(int packageID)
+ public final EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
- String where = CDODBSchema.PACKAGES_ID.getName() + "=" + packageID;
- Object[] uri = DBUtil.select(jdbcDelegate.getConnection(), where, CDODBSchema.PACKAGES_URI);
- return (String)uri[0];
+ String where = CDODBSchema.PACKAGE_UNITS_ID.getName() + "='" + packageUnit.getID() + "'";
+ Object[] values = DBUtil.select(jdbcDelegate.getConnection(), where, CDODBSchema.PACKAGE_UNITS_PACKAGE_DATA);
+ byte[] bytes = (byte[])values[0];
+ EPackage ePackage = createEPackage(packageUnit, bytes);
+ return EMFUtil.getAllPackages(ePackage);
}
public CloseableIterator<CDOID> readObjectIDs()
@@ -263,7 +211,7 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return getStore().getMappingStrategy().readObjectIDs(this);
}
- public CDOClassRef readObjectType(CDOID id)
+ public CDOClassifierRef readObjectType(CDOID id)
{
if (TRACER.isEnabled())
{
@@ -273,28 +221,23 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return getStore().getMappingStrategy().readObjectType(this, id);
}
- public final CDOClassRef readClassRef(int classID)
- {
- String where = CDODBSchema.CLASSES_ID.getName() + "=" + classID;
- Object[] res = DBUtil.select(jdbcDelegate.getConnection(), where, CDODBSchema.CLASSES_CLASSIFIER,
- CDODBSchema.CLASSES_PACKAGE);
- int classifierID = (Integer)res[0];
- String packageURI = readPackageURI((Integer)res[1]);
- return CDOModelUtil.createClassRef(packageURI, classifierID);
- }
-
- public CDORevision readRevision(CDOID id, int referenceChunk)
+ public InternalCDORevision readRevision(CDOID id, int referenceChunk)
{
if (TRACER.isEnabled())
{
TRACER.format("Selecting revision: {0}", id);
}
- CDOClass cdoClass = getObjectType(id);
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(cdoClass, id);
+ EClass eClass = getObjectType(id);
+ if (eClass == null)
+ {
+ return null;
+ }
+
+ InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(eClass, id);
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- IClassMapping mapping = mappingStrategy.getClassMapping(cdoClass);
+ IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
if (mapping.readRevision(this, revision, referenceChunk))
{
return revision;
@@ -304,18 +247,18 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return null;
}
- public CDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
+ public InternalCDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
{
if (TRACER.isEnabled())
{
TRACER.format("Selecting revision: {0}, timestamp={1,date} {1,time}", id, timeStamp);
}
- CDOClass cdoClass = getObjectType(id);
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(cdoClass, id);
+ EClass eClass = getObjectType(id);
+ InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(eClass, id);
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- IClassMapping mapping = mappingStrategy.getClassMapping(cdoClass);
+ IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
if (mapping.readRevisionByTime(this, revision, timeStamp, referenceChunk))
{
return revision;
@@ -325,18 +268,18 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return null;
}
- public CDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
+ public InternalCDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
{
if (TRACER.isEnabled())
{
TRACER.format("Selecting revision: {0}, version={1}", id, version);
}
- CDOClass cdoClass = getObjectType(id);
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(cdoClass, id);
+ EClass eClass = getObjectType(id);
+ InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.create(eClass, id);
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- IClassMapping mapping = mappingStrategy.getClassMapping(cdoClass);
+ IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
if (mapping.readRevisionByVersion(this, revision, version, referenceChunk))
{
return revision;
@@ -364,13 +307,18 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
throw new UnsupportedOperationException();
}
- protected CDOClass getObjectType(CDOID id)
+ protected EClass getObjectType(CDOID id)
{
// TODO Replace calls to getObjectType by optimized calls to RevisionManager.getObjectType (cache!)
+ CDOClassifierRef type = readObjectType(id);
+ if (type == null)
+ {
+ return null;
+ }
+
IRepository repository = getStore().getRepository();
- IPackageManager packageManager = repository.getPackageManager();
- CDOClassRef type = readObjectType(id);
- return type.resolve(packageManager);
+ CDOPackageRegistry packageRegistry = repository.getPackageRegistry();
+ return (EClass)type.resolve(packageRegistry);
}
public CloseableIterator<Object> createQueryIterator(CDOQueryInfo queryInfo)
@@ -389,14 +337,13 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
distributor.run(ops, context, monitor);
}
- @Override
- protected final void writePackages(CDOPackage[] cdoPackages, OMMonitor monitor)
+ public final void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
try
{
monitor.begin(2);
- fillSystemTables(cdoPackages, monitor.fork());
- createModelTables(cdoPackages, monitor.fork());
+ fillSystemTables(packageUnits, monitor.fork());
+ createModelTables(packageUnits, monitor.fork());
}
finally
{
@@ -404,158 +351,148 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
}
}
- private void fillSystemTables(CDOPackage[] cdoPackages, OMMonitor monitor)
+ private void fillSystemTables(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
- new PackageWriter(cdoPackages, monitor)
+ try
{
- @Override
- protected void writePackage(InternalCDOPackage cdoPackage, OMMonitor monitor)
+ monitor.begin(packageUnits.length);
+ for (InternalCDOPackageUnit packageUnit : packageUnits)
{
- int id = getStore().getNextPackageID();
- PackageServerInfo.setDBID(cdoPackage, id);
- if (TRACER.isEnabled())
- {
- TRACER.format("Writing package: {0} --> {1}", cdoPackage, id);
- }
-
- String packageURI = cdoPackage.getPackageURI();
- String name = cdoPackage.getName();
- String ecore = cdoPackage.getEcore();
- boolean dynamic = cdoPackage.isDynamic();
- CDOIDMetaRange metaIDRange = cdoPackage.getMetaIDRange();
- long lowerBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getLowerBound()).getLongValue();
- long upperBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getUpperBound()).getLongValue();
- String parentURI = cdoPackage.getParentURI();
-
- String sql = "INSERT INTO " + CDODBSchema.PACKAGES + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
- DBUtil.trace(sql);
- PreparedStatement pstmt = null;
+ fillSystemTables(packageUnit, monitor.fork());
+ }
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
- monitor.begin();
- Async async = monitor.forkAsync();
+ private void fillSystemTables(InternalCDOPackageUnit packageUnit, OMMonitor monitor)
+ {
+ try
+ {
+ InternalCDOPackageInfo[] packageInfos = packageUnit.getPackageInfos();
+ monitor.begin(1 + packageInfos.length);
- try
- {
- pstmt = jdbcDelegate.getPreparedStatement(sql);
- pstmt.setInt(1, id);
- pstmt.setString(2, packageURI);
- pstmt.setString(3, name);
- pstmt.setString(4, ecore);
- pstmt.setBoolean(5, dynamic);
- pstmt.setLong(6, lowerBound);
- pstmt.setLong(7, upperBound);
- pstmt.setString(8, parentURI);
-
- if (pstmt.execute())
- {
- throw new DBException("No result set expected");
- }
-
- if (pstmt.getUpdateCount() == 0)
- {
- throw new DBException("No row inserted into table " + CDODBSchema.PACKAGES);
- }
- }
- catch (SQLException ex)
- {
- throw new DBException(ex);
- }
- finally
- {
- DBUtil.close(pstmt);
- async.stop();
- monitor.done();
- }
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing package unit: {0}", packageUnit);
}
- @Override
- protected final void writeClass(InternalCDOClass cdoClass, OMMonitor monitor)
+ String sql = "INSERT INTO " + CDODBSchema.PACKAGE_UNITS + " VALUES (?, ?, ?, ?)";
+ DBUtil.trace(sql);
+ PreparedStatement pstmt = null;
+ Async async = monitor.forkAsync();
+
+ try
{
- monitor.begin();
- Async async = monitor.forkAsync();
+ pstmt = jdbcDelegate.getPreparedStatement(sql);
+ pstmt.setString(1, packageUnit.getID());
+ pstmt.setInt(2, packageUnit.getOriginalType().ordinal());
+ pstmt.setLong(3, packageUnit.getTimeStamp());
+ pstmt.setBytes(4, getEPackageBytes(packageUnit));
- try
+ if (pstmt.execute())
{
- int id = getStore().getNextClassID();
- ClassServerInfo.setDBID(cdoClass, id);
-
- CDOPackage cdoPackage = cdoClass.getContainingPackage();
- int packageID = ServerInfo.getDBID(cdoPackage);
- int classifierID = cdoClass.getClassifierID();
- String name = cdoClass.getName();
- boolean isAbstract = cdoClass.isAbstract();
- DBUtil.insertRow(jdbcDelegate.getConnection(), getStore().getDBAdapter(), CDODBSchema.CLASSES, id, packageID,
- classifierID, name, isAbstract);
+ throw new DBException("No result set expected");
}
- finally
+
+ if (pstmt.getUpdateCount() == 0)
{
- async.stop();
- monitor.done();
+ throw new DBException("No row inserted into table " + CDODBSchema.PACKAGE_UNITS);
}
}
-
- @Override
- protected final void writeSuperType(InternalCDOClass type, CDOClassProxy superType, OMMonitor monitor)
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ finally
{
- monitor.begin();
- Async async = monitor.forkAsync();
+ DBUtil.close(pstmt);
+ async.stop();
+ }
- try
- {
- int id = ClassServerInfo.getDBID(type);
- String packageURI = superType.getPackageURI();
- int classifierID = superType.getClassifierID();
- DBUtil.insertRow(jdbcDelegate.getConnection(), getStore().getDBAdapter(), CDODBSchema.SUPERTYPES, id,
- packageURI, classifierID);
- }
- finally
- {
- async.stop();
- monitor.done();
- }
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ fillSystemTables(packageInfo, monitor); // Don't fork monitor
}
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
+
+ private byte[] getEPackageBytes(InternalCDOPackageUnit packageUnit)
+ {
+ EPackage ePackage = packageUnit.getTopLevelPackageInfo().getEPackage();
+ CDOPackageRegistry packageRegistry = getStore().getRepository().getPackageRegistry();
+ return EMFUtil.getEPackageBytes(ePackage, ZIP_PACKAGE_BYTES, packageRegistry);
+ }
+
+ private EPackage createEPackage(InternalCDOPackageUnit packageUnit, byte[] bytes)
+ {
+ CDOPackageRegistry packageRegistry = getStore().getRepository().getPackageRegistry();
+ return EMFUtil.createEPackage(packageUnit.getID(), bytes, ZIP_PACKAGE_BYTES, packageRegistry);
+ }
- @Override
- protected void writeFeature(InternalCDOFeature feature, OMMonitor monitor)
+ private void fillSystemTables(InternalCDOPackageInfo packageInfo, OMMonitor monitor)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing package info: {0}", packageInfo);
+ }
+
+ String packageURI = packageInfo.getPackageURI();
+ String parentURI = packageInfo.getParentURI();
+ String unitID = packageInfo.getPackageUnit().getID();
+ CDOIDMetaRange metaIDRange = packageInfo.getMetaIDRange();
+ long metaLB = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getLowerBound()).getLongValue();
+ long metaUB = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getUpperBound()).getLongValue();
+
+ String sql = "INSERT INTO " + CDODBSchema.PACKAGE_INFOS + " VALUES (?, ?, ?, ?, ?)";
+ DBUtil.trace(sql);
+ PreparedStatement pstmt = null;
+ Async async = monitor.forkAsync();
+
+ try
+ {
+ pstmt = jdbcDelegate.getPreparedStatement(sql);
+ pstmt.setString(1, packageURI);
+ pstmt.setString(2, parentURI);
+ pstmt.setString(3, unitID);
+ pstmt.setLong(4, metaLB);
+ pstmt.setLong(5, metaUB);
+
+ if (pstmt.execute())
{
- monitor.begin();
- Async async = monitor.forkAsync();
+ throw new DBException("No result set expected");
+ }
- try
- {
- int id = getStore().getNextFeatureID();
- FeatureServerInfo.setDBID(feature, id);
-
- int classID = ServerInfo.getDBID(feature.getContainingClass());
- String name = feature.getName();
- int featureID = feature.getFeatureID();
- int type = feature.getType().getTypeID();
- CDOClassProxy reference = feature.getReferenceTypeProxy();
- String packageURI = reference == null ? null : reference.getPackageURI();
- int classifierID = reference == null ? 0 : reference.getClassifierID();
- boolean many = feature.isMany();
- boolean containment = feature.isContainment();
- int idx = feature.getFeatureIndex();
- DBUtil.insertRow(jdbcDelegate.getConnection(), getStore().getDBAdapter(), CDODBSchema.FEATURES, id, classID,
- featureID, name, type, packageURI, classifierID, many, containment, idx);
- }
- finally
- {
- async.stop();
- monitor.done();
- }
+ if (pstmt.getUpdateCount() == 0)
+ {
+ throw new DBException("No row inserted into table " + CDODBSchema.PACKAGE_INFOS);
}
- }.run();
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ finally
+ {
+ DBUtil.close(pstmt);
+ async.stop();
+ }
}
- private void createModelTables(CDOPackage[] cdoPackages, OMMonitor monitor)
+ private void createModelTables(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
monitor.begin();
Async async = monitor.forkAsync();
try
{
- Set<IDBTable> affectedTables = mapPackages(cdoPackages);
+ Set<IDBTable> affectedTables = mapPackageUnits(packageUnits);
getStore().getDBAdapter().createTables(affectedTables, jdbcDelegate.getConnection());
}
finally
@@ -566,18 +503,41 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
}
@Override
- protected void writeRevisionDeltas(CDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
+ protected void writeRevisionDeltas(InternalCDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
{
- throw new UnsupportedOperationException();
+ if (!(getStore().getRevisionTemporality() == RevisionTemporality.NONE))
+ {
+ throw new UnsupportedOperationException("Revision Deltas are only supported in non-auditing mode!");
+ }
+
+ monitor.begin(revisionDeltas.length);
+ try
+ {
+ for (InternalCDORevisionDelta delta : revisionDeltas)
+ {
+ writeRevisionDelta(delta, created, monitor.fork());
+ }
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
+
+ protected void writeRevisionDelta(InternalCDORevisionDelta delta, long created, OMMonitor monitor)
+ {
+ EClass eClass = getObjectType(delta.getID());
+ IClassMapping mapping = getStore().getMappingStrategy().getClassMapping(eClass);
+ mapping.writeRevisionDelta(this, delta, created, monitor);
}
@Override
- protected void writeRevisions(CDORevision[] revisions, OMMonitor monitor)
+ protected void writeRevisions(InternalCDORevision[] revisions, OMMonitor monitor)
{
try
{
monitor.begin(revisions.length);
- for (CDORevision revision : revisions)
+ for (InternalCDORevision revision : revisions)
{
writeRevision(revision, monitor.fork());
}
@@ -588,15 +548,15 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
}
}
- protected void writeRevision(CDORevision revision, OMMonitor monitor)
+ protected void writeRevision(InternalCDORevision revision, OMMonitor monitor)
{
if (TRACER.isEnabled())
{
TRACER.format("Writing revision: {0}", revision);
}
- CDOClass cdoClass = revision.getCDOClass();
- IClassMapping mapping = getStore().getMappingStrategy().getClassMapping(cdoClass);
+ EClass eClass = revision.getEClass();
+ IClassMapping mapping = getStore().getMappingStrategy().getClassMapping(eClass);
mapping.writeRevision(this, revision, monitor);
}
@@ -627,8 +587,8 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
TRACER.format("Detaching object: {0}", id);
}
- CDOClass cdoClass = getObjectType(id);
- IClassMapping mapping = getStore().getMappingStrategy().getClassMapping(cdoClass);
+ EClass eClass = getObjectType(id);
+ IClassMapping mapping = getStore().getMappingStrategy().getClassMapping(eClass);
mapping.detachObject(this, id, revised, monitor);
}
@@ -655,30 +615,43 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
throw new IllegalArgumentException("Not a boolean value: " + value);
}
- protected Set<IDBTable> mapPackages(CDOPackage... cdoPackages)
+ protected Set<IDBTable> mapPackageUnits(InternalCDOPackageUnit[] packageUnits)
{
Set<IDBTable> affectedTables = new HashSet<IDBTable>();
- if (cdoPackages != null && cdoPackages.length != 0)
+ if (packageUnits != null && packageUnits.length != 0)
{
- for (CDOPackage cdoPackage : cdoPackages)
+ for (InternalCDOPackageUnit packageUnit : packageUnits)
{
- Set<IDBTable> tables = mapClasses(cdoPackage.getClasses());
- affectedTables.addAll(tables);
+ mapPackageInfos(packageUnit.getPackageInfos(), affectedTables);
}
}
return affectedTables;
}
- protected Set<IDBTable> mapClasses(CDOClass... cdoClasses)
+ protected void mapPackageInfos(InternalCDOPackageInfo[] packageInfos, Set<IDBTable> affectedTables)
+ {
+ for (InternalCDOPackageInfo packageInfo : packageInfos)
+ {
+ EPackage ePackage = packageInfo.getEPackage();
+ if (!CDOModelUtil.isCorePackage(ePackage))
+ {
+ EClass[] persistentClasses = EMFUtil.getPersistentClasses(ePackage);
+ Set<IDBTable> tables = mapClasses(persistentClasses);
+ affectedTables.addAll(tables);
+ }
+ }
+ }
+
+ protected Set<IDBTable> mapClasses(EClass... eClasses)
{
Set<IDBTable> affectedTables = new HashSet<IDBTable>();
- if (cdoClasses != null && cdoClasses.length != 0)
+ if (eClasses != null && eClasses.length != 0)
{
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- for (CDOClass cdoClass : cdoClasses)
+ for (EClass eClass : eClasses)
{
- IClassMapping mapping = mappingStrategy.getClassMapping(cdoClass);
+ IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
if (mapping != null)
{
affectedTables.addAll(mapping.getAffectedTables());
@@ -689,6 +662,16 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
return affectedTables;
}
+ protected InternalCDOPackageUnit createPackageUnit()
+ {
+ return (InternalCDOPackageUnit)CDOModelUtil.createPackageUnit();
+ }
+
+ protected InternalCDOPackageInfo createPackageInfo()
+ {
+ return (InternalCDOPackageInfo)CDOModelUtil.createPackageInfo();
+ }
+
public final void commit(OMMonitor monitor)
{
jdbcDelegate.commit(monitor);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
index ab6dbb5205..3fde4ce6ba 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreChunkReader.java
@@ -10,13 +10,14 @@
*/
package org.eclipse.emf.cdo.server.internal.db;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.internal.server.StoreChunkReader;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStoreChunkReader;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
+import org.eclipse.emf.cdo.spi.server.StoreChunkReader;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.List;
@@ -29,11 +30,11 @@ public class DBStoreChunkReader extends StoreChunkReader implements IDBStoreChun
private StringBuilder builder = new StringBuilder();
- public DBStoreChunkReader(DBStoreAccessor accessor, CDORevision revision, CDOFeature feature)
+ public DBStoreChunkReader(DBStoreAccessor accessor, CDORevision revision, EStructuralFeature feature)
{
super(accessor, revision, feature);
IMappingStrategy mappingStrategy = accessor.getStore().getMappingStrategy();
- IClassMapping mapping = mappingStrategy.getClassMapping(revision.getCDOClass());
+ IClassMapping mapping = mappingStrategy.getClassMapping(revision.getEClass());
referenceMapping = mapping.getReferenceMapping(feature);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreFactory.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreFactory.java
index c5b425cd15..1f238772a8 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreFactory.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreFactory.java
@@ -15,7 +15,7 @@ import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreFactory;
import org.eclipse.emf.cdo.server.db.CDODBUtil;
import org.eclipse.emf.cdo.server.db.IJDBCDelegateProvider;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBAdapter;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureServerInfo.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureServerInfo.java
deleted file mode 100644
index 6289703f7b..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureServerInfo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.db;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-
-/**
- * @author Eike Stepper
- */
-public final class FeatureServerInfo extends ServerInfo
-{
- private FeatureServerInfo(int id)
- {
- super(id);
- }
-
- public static FeatureServerInfo setDBID(CDOFeature cdoFeature, int id)
- {
- FeatureServerInfo serverInfo = new FeatureServerInfo(id);
- ((InternalCDOFeature)cdoFeature).setServerInfo(serverInfo);
- return serverInfo;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectIDIterator.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectIDIterator.java
index d87cac6999..70611f9453 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectIDIterator.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectIDIterator.java
@@ -14,7 +14,7 @@ package org.eclipse.emf.cdo.server.internal.db;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectTypeCache.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectTypeCache.java
index 93b88099de..e5f3823218 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectTypeCache.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ObjectTypeCache.java
@@ -7,16 +7,16 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
import org.eclipse.emf.cdo.server.db.IObjectTypeCache;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -28,6 +28,8 @@ import org.eclipse.net4j.db.ddl.IDBSchema;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
+import org.eclipse.emf.ecore.EClass;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@@ -61,7 +63,7 @@ public class ObjectTypeCache extends Lifecycle implements IObjectTypeCache
this.mappingStrategy = mappingStrategy;
}
- public final CDOClassRef getObjectType(IDBStoreAccessor accessor, CDOID id)
+ public final CDOClassifierRef getObjectType(IDBStoreAccessor accessor, CDOID id)
{
Statement statement = accessor.getJDBCDelegate().getStatement();
initialize(statement);
@@ -85,11 +87,13 @@ public class ObjectTypeCache extends Lifecycle implements IObjectTypeCache
resultSet = statement.executeQuery(sql);
if (!resultSet.next())
{
- throw new DBException("ClassID for CDOID " + id + " not found");
+ DBUtil.trace("ClassID for CDOID " + id + " not found");
+ return null;
}
- int classID = resultSet.getInt(1);
- return mappingStrategy.getClassRef(accessor, classID);
+ long classID = resultSet.getLong(1);
+ EClass eClass = (EClass)mappingStrategy.getStore().getMetaInstance(classID);
+ return new CDOClassifierRef(eClass);
}
catch (SQLException ex)
{
@@ -101,7 +105,7 @@ public class ObjectTypeCache extends Lifecycle implements IObjectTypeCache
}
}
- public final void putObjectType(IDBStoreAccessor accessor, CDOID id, CDOClass type)
+ public final void putObjectType(IDBStoreAccessor accessor, CDOID id, EClass type)
{
Statement statement = accessor.getJDBCDelegate().getStatement();
initialize(statement);
@@ -112,7 +116,7 @@ public class ObjectTypeCache extends Lifecycle implements IObjectTypeCache
builder.append(" VALUES (");
builder.append(CDOIDUtil.getLong(id));
builder.append(", ");
- builder.append(ClassServerInfo.getDBID(type));
+ builder.append(accessor.getStore().getMetaID(type));
builder.append(")");
String sql = builder.toString();
DBUtil.trace(sql);
@@ -169,7 +173,7 @@ public class ObjectTypeCache extends Lifecycle implements IObjectTypeCache
IDBSchema schema = mappingStrategy.getStore().getDBSchema();
table = schema.addTable(CDODBSchema.CDO_OBJECTS);
idField = table.addField(CDODBSchema.ATTRIBUTES_ID, DBType.BIGINT);
- typeField = table.addField(CDODBSchema.ATTRIBUTES_CLASS, DBType.INTEGER);
+ typeField = table.addField(CDODBSchema.ATTRIBUTES_CLASS, DBType.BIGINT);
table.addIndex(IDBIndex.Type.PRIMARY_KEY, idField);
IDBAdapter dbAdapter = mappingStrategy.getStore().getDBAdapter();
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/PackageServerInfo.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/PackageServerInfo.java
deleted file mode 100644
index b2fb878a46..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/PackageServerInfo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.db;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-
-import org.eclipse.net4j.db.ddl.IDBSchema;
-
-/**
- * @author Eike Stepper
- */
-public final class PackageServerInfo extends ServerInfo
-{
- private IDBSchema schema;
-
- private PackageServerInfo(int id)
- {
- super(id);
- }
-
- public static PackageServerInfo setDBID(CDOPackage cdoPackage, int id)
- {
- PackageServerInfo serverInfo = new PackageServerInfo(id);
- ((InternalCDOPackage)cdoPackage).setServerInfo(serverInfo);
- return serverInfo;
- }
-
- public static IDBSchema getSchema(CDOPackage cdoPackage)
- {
- return ((PackageServerInfo)cdoPackage.getServerInfo()).schema;
- }
-
- public static void setSchema(CDOPackage cdoPackage, IDBSchema schema)
- {
- ((PackageServerInfo)cdoPackage.getServerInfo()).schema = schema;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/Precedence.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/Precedence.java
deleted file mode 100644
index fcf735de92..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/Precedence.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.db;
-
-/**
- * @author Eike Stepper
- */
-public enum Precedence
-{
- MODEL, STRATEGY
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ServerInfo.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ServerInfo.java
deleted file mode 100644
index 4fc4a3a521..0000000000
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ServerInfo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.db;
-
-import org.eclipse.emf.cdo.common.model.CDOModelElement;
-
-/**
- * @author Eike Stepper
- */
-public abstract class ServerInfo
-{
- private int dbID;
-
- public static final int CDO_CORE_PACKAGE_DBID = -1;
-
- public static final int CDO_RESOURCE_PACKAGE_DBID = -2;
-
- public static final int CDO_OBJECT_CLASS_DBID = -1;
-
- public static final int CDO_RESOURCE_CLASS_DBID = -2;
-
- public static final int CDO_RESOURCE_NODE_CLASS_DBID = -3;
-
- public static final int CDO_RESOURCE_FOLDER_CLASS_DBID = -4;
-
- public static final int CDO_FOLDER_FEATURE_DBID = -1;
-
- public static final int CDO_NAME_FEATURE_DBID = -2;
-
- public static final int CDO_NODES_FEATURE_DBID = -3;
-
- public static final int CDO_CONTENTS_FEATURE_DBID = -4;
-
- protected ServerInfo(int dbID)
- {
- this.dbID = dbID;
- }
-
- @Override
- public String toString()
- {
- return String.valueOf(dbID);
- }
-
- public static synchronized int getDBID(CDOModelElement modelElement)
- {
- ServerInfo serverInfo = (ServerInfo)modelElement.getServerInfo();
- return serverInfo.dbID;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/AbstractJDBCDelegate.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/AbstractJDBCDelegate.java
index 8dd12c9985..57b414d99a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/AbstractJDBCDelegate.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/AbstractJDBCDelegate.java
@@ -8,6 +8,7 @@
* Contributors:
* Stefan Winkler - initial API and implementation
* Eike Stepper - maintenance
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db.jdbc;
@@ -15,18 +16,19 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
+import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IDBStoreChunkReader;
import org.eclipse.emf.cdo.server.db.IJDBCDelegate;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
-import org.eclipse.emf.cdo.server.internal.db.FeatureServerInfo;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBConnectionProvider;
import org.eclipse.net4j.util.collection.MoveableList;
+import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.monitor.OMMonitor.Async;
@@ -36,6 +38,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -52,9 +55,7 @@ import java.util.List;
*/
public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDelegate
{
- private IDBConnectionProvider connectionProvider;
-
- private boolean readOnly;
+ private IDBStoreAccessor storeAccessor;
private Connection connection;
@@ -64,26 +65,45 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
{
}
- public IDBConnectionProvider getConnectionProvider()
+ @Override
+ protected void doActivate() throws Exception
{
- return connectionProvider;
+ super.doActivate();
+ connection = getConnectionProvider().getConnection();
+ connection.setAutoCommit(isReadOnly());
}
- public void setConnectionProvider(IDBConnectionProvider connectionProvider)
+ @Override
+ protected void doDeactivate() throws Exception
{
- checkInactive();
- this.connectionProvider = connectionProvider;
+ DBUtil.close(statement);
+ statement = null;
+
+ DBUtil.close(connection);
+ connection = null;
+
+ super.doDeactivate();
}
- public boolean isReadOnly()
+ public IDBStoreAccessor getStoreAccessor()
{
- return readOnly;
+ return storeAccessor;
}
- public void setReadOnly(boolean readOnly)
+ public void setStoreAccessor(IDBStoreAccessor storeAccessor)
{
checkInactive();
- this.readOnly = readOnly;
+ this.storeAccessor = storeAccessor;
+ }
+
+ public IDBConnectionProvider getConnectionProvider()
+ {
+ return storeAccessor.getStore().getDBConnectionProvider();
+ }
+
+ public boolean isReadOnly()
+ {
+ return storeAccessor.isReader();
}
public final Connection getConnection()
@@ -152,38 +172,51 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
}
}
- public final void insertAttributes(CDORevision revision, IClassMapping classMapping)
+ public final void insertAttributes(InternalCDORevision revision, IClassMapping classMapping)
{
doInsertAttributes(classMapping.getTable().getName(), revision, classMapping.getAttributeMappings(), classMapping
.hasFullRevisionInfo());
}
- public final void updateAttributes(CDORevision revision, IClassMapping classMapping)
+ public final void updateAttributes(InternalCDORevision cdoRevision, IClassMapping classMapping)
{
- doUpdateAttributes(classMapping.getTable().getName(), revision, classMapping.getAttributeMappings(), classMapping
- .hasFullRevisionInfo());
- }
+ InternalCDORevision revision = cdoRevision;
- public void deleteAttributes(CDOID id, IClassMapping classMapping)
- {
- doDeleteAttributes(classMapping.getTable().getName(), CDOIDUtil.getLong(id));
+ List<IAttributeMapping> attributeMappings = classMapping.getAttributeMappings();
+ if (attributeMappings == null)
+ {
+ attributeMappings = Collections.emptyList();
+ }
+
+ List<Pair<IAttributeMapping, Object>> attributeChanges = new ArrayList<Pair<IAttributeMapping, Object>>(
+ attributeMappings.size());
+
+ for (IAttributeMapping am : classMapping.getAttributeMappings())
+ {
+ attributeChanges.add(new Pair<IAttributeMapping, Object>(am, am.getRevisionValue(revision)));
+ }
+
+ updateAttributes(revision.getID(), revision.getVersion(), revision.getCreated(), (CDOID)revision.getContainerID(),
+ revision.getContainingFeatureID(), revision.getResourceID(), attributeChanges, classMapping);
}
- public final void insertReference(CDORevision sourceRevision, int index, CDOID targetId,
- IReferenceMapping referenceMapping)
+ public void updateAttributes(CDOID id, int newVersion, long created, CDOID newContainerId,
+ int newContainingFeatureId, CDOID newResourceId, List<Pair<IAttributeMapping, Object>> attributeChanges,
+ IClassMapping classMapping)
{
- doInsertReference(referenceMapping.getTable().getName(), referenceMapping.isWithFeature() ? FeatureServerInfo
- .getDBID(referenceMapping.getFeature()) : 0, CDOIDUtil.getLong(sourceRevision.getID()), sourceRevision
- .getVersion(), index, CDOIDUtil.getLong(targetId));
+ doUpdateAttributes(classMapping.getTable().getName(), CDOIDUtil.getLong(id), newVersion, created, CDOIDUtil
+ .getLong(newContainerId), newContainingFeatureId, CDOIDUtil.getLong(newResourceId), attributeChanges,
+ classMapping.hasFullRevisionInfo());
}
- public void deleteReferences(CDOID id, IReferenceMapping referenceMapping)
+ public final void updateAttributes(CDOID id, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, IClassMapping classMapping)
{
- doDeleteReferences(referenceMapping.getTable().getName(), referenceMapping.isWithFeature() ? FeatureServerInfo
- .getDBID(referenceMapping.getFeature()) : 0, CDOIDUtil.getLong(id));
+ doUpdateAttributes(classMapping.getTable().getName(), CDOIDUtil.getLong(id), newVersion, created, attributeChanges,
+ classMapping.hasFullRevisionInfo());
}
- public final void updateRevisedForReplace(CDORevision revision, IClassMapping classMapping)
+ public final void updateRevisedForReplace(InternalCDORevision revision, IClassMapping classMapping)
{
doUpdateRevisedForReplace(classMapping.getTable().getName(), revision.getCreated() - 1, CDOIDUtil.getLong(revision
.getID()), revision.getVersion() - 1);
@@ -194,7 +227,53 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
doUpdateRevisedForDetach(classMapping.getTable().getName(), revised, CDOIDUtil.getLong(id));
}
- public final boolean selectRevisionAttributes(CDORevision revision, IClassMapping classMapping, String where)
+ public final void deleteAttributes(CDOID id, IClassMapping classMapping)
+ {
+ doDeleteAttributes(classMapping.getTable().getName(), CDOIDUtil.getLong(id));
+ }
+
+ public final void insertReference(CDOID id, int version, int index, CDOID targetId, IReferenceMapping referenceMapping)
+ {
+ doInsertReference(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id), version,
+ index, CDOIDUtil.getLong(targetId));
+ }
+
+ public void insertReferenceRow(CDOID id, int newVersion, int index, CDOID value, IReferenceMapping referenceMapping)
+ {
+ doInsertReferenceRow(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id),
+ newVersion, CDOIDUtil.getLong(value), index);
+ }
+
+ public void moveReferenceRow(CDOID id, int newVersion, int oldPosition, int newPosition,
+ IReferenceMapping referenceMapping)
+ {
+ doMoveReferenceRow(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id),
+ newVersion, oldPosition, newPosition);
+ }
+
+ public void removeReferenceRow(CDOID id, int index, int newVersion, IReferenceMapping referenceMapping)
+ {
+ doRemoveReferenceRow(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id),
+ index, newVersion);
+ }
+
+ public final void deleteReferences(CDOID id, IReferenceMapping referenceMapping)
+ {
+ doDeleteReferences(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id));
+ }
+
+ public void updateReference(CDOID id, int version, int index, CDOID targetId, IReferenceMapping referenceMapping)
+ {
+ doUpdateReference(referenceMapping.getTable().getName(), getDBID(referenceMapping), CDOIDUtil.getLong(id), version,
+ index, CDOIDUtil.getLong(targetId));
+ }
+
+ public final void updateReferenceVersion(CDOID id, int newVersion, IReferenceMapping referenceMapping)
+ {
+ doUpdateReferenceVersion(referenceMapping.getTable().getName(), CDOIDUtil.getLong(id), newVersion);
+ }
+
+ public final boolean selectRevisionAttributes(InternalCDORevision revision, IClassMapping classMapping, String where)
{
List<IAttributeMapping> attributeMappings = classMapping.getAttributeMappings();
if (attributeMappings == null)
@@ -217,7 +296,7 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
int i = 0;
if (withFullRevisionInfo)
{
- InternalCDORevision rev = (InternalCDORevision)revision;
+ InternalCDORevision rev = revision;
rev.setVersion(resultSet.getInt(++i));
rev.setCreated(resultSet.getLong(++i));
rev.setRevised(resultSet.getLong(++i));
@@ -246,9 +325,10 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
}
}
- public void selectRevisionReferences(CDORevision revision, IReferenceMapping referenceMapping, int referenceChunk)
+ public void selectRevisionReferences(InternalCDORevision revision, IReferenceMapping referenceMapping,
+ int referenceChunk)
{
- MoveableList<Object> list = ((InternalCDORevision)revision).getList(referenceMapping.getFeature());
+ MoveableList<Object> list = (revision).getList(referenceMapping.getFeature());
CDOID source = revision.getID();
long sourceId = CDOIDUtil.getLong(source);
@@ -257,8 +337,8 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
ResultSet resultSet = null;
try
{
- resultSet = doSelectRevisionReferences(referenceMapping.getTable().getName(), sourceId, version, referenceMapping
- .isWithFeature() ? FeatureServerInfo.getDBID(referenceMapping.getFeature()) : 0, "");
+ resultSet = doSelectRevisionReferences(referenceMapping.getTable().getName(), sourceId, version,
+ getDBID(referenceMapping), "");
while (resultSet.next() && (referenceChunk == CDORevision.UNCHUNKED || --referenceChunk >= 0))
{
@@ -293,8 +373,8 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
try
{
- resultSet = doSelectRevisionReferences(referenceMapping.getTable().getName(), sourceId, version, referenceMapping
- .isWithFeature() ? FeatureServerInfo.getDBID(referenceMapping.getFeature()) : 0, where);
+ resultSet = doSelectRevisionReferences(referenceMapping.getTable().getName(), sourceId, version,
+ getDBID(referenceMapping), where);
Chunk chunk = null;
int chunkSize = 0;
@@ -328,24 +408,43 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
}
}
- @Override
- protected void doActivate() throws Exception
+ private long getDBID(IReferenceMapping referenceMapping)
{
- super.doActivate();
- connection = connectionProvider.getConnection();
- connection.setAutoCommit(readOnly);
+ if (referenceMapping.isWithFeature())
+ {
+ return storeAccessor.getStore().getMetaID(referenceMapping.getFeature());
+ }
+
+ return 0;
}
- @Override
- protected void doDeactivate() throws Exception
+ /**
+ * Close the given result set and the statement, if this is needed (which is the case, iff the resultSet's statement
+ * is not the one which is kept open by this instance).
+ */
+ private void close(ResultSet resultSet)
{
- DBUtil.close(statement);
- statement = null;
+ Statement stmt = null;
- DBUtil.close(connection);
- connection = null;
+ try
+ {
+ stmt = resultSet.getStatement();
+ }
+ catch (Exception ex)
+ {
+ // Ignore
+ }
+ finally
+ {
+ DBUtil.close(resultSet);
+ }
- super.doDeactivate();
+ // if the statement is one that has been created for the operation only
+ // release it.
+ if (stmt != statement)
+ {
+ releaseStatement(stmt);
+ }
}
/**
@@ -370,8 +469,25 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
/**
* Update an attribute row.
*/
- protected abstract void doUpdateAttributes(String name, CDORevision revision,
- List<IAttributeMapping> attributeMappings, boolean hasFullRevisionInfo);
+ protected abstract void doUpdateAttributes(String name, long long1, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, boolean hasFullRevisionInfo);
+
+ /**
+ * Update an attribute row including containment and resource attributes.
+ */
+ protected abstract void doUpdateAttributes(String name, long long1, int newVersion, long created,
+ long newContainerId, int newContainingFeatureId, long newResourceId,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, boolean hasFullRevisionInfo);
+
+ /**
+ * Set the revised date of a cdoid (the cdoid is to be detached)
+ */
+ protected abstract void doUpdateRevisedForDetach(String tableName, long revised, long cdoid);
+
+ /**
+ * Set the revised date of a specific revision's previous version (the previous version is to be replaced).
+ */
+ protected abstract void doUpdateRevisedForReplace(String tableName, long revisedStamp, long cdoid, int version);
/**
* Delete an attribute row.
@@ -379,25 +495,45 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
protected abstract void doDeleteAttributes(String name, long cdoid1);
/**
+ * Insert one reference of a particular CDOID and adjusts indexes.
+ */
+ protected abstract void doInsertReferenceRow(String tableName, long metaID, long cdoid, int newVersion, long l,
+ int index);
+
+ /**
* Insert a reference row. Note: this is likely to be replaced by an implementation that supports storing multiple
* references in one batch.
*/
- protected abstract void doInsertReference(String tableName, int dbId, long source, int version, int i, long target);
+ protected abstract void doInsertReference(String tableName, long metaID, long source, int version, int i, long target);
+
+ /**
+ * Update the target ID of one reference of a particular CDOID.
+ */
+ protected abstract void doUpdateReference(String name, long metaID, long sourceId, int newVersion, int index,
+ long targetId);
+
+ /**
+ * Moves one reference of a particular CDOID and adjusts indexes.
+ */
+ protected abstract void doMoveReferenceRow(String tableName, long metaID, long cdoid, int newVersion,
+ int oldPosition, int newPosition);
/**
* Delete all references of a particular CDOID.
*/
- protected abstract void doDeleteReferences(String name, int dbId, long cdoid);
+ protected abstract void doDeleteReferences(String tableName, long metaID, long cdoid);
/**
- * Set the revised date of a cdoid (the cdoid is to be detached)
+ * Deletes one reference of a particular CDOID and adjusts indexes.
+ *
+ * @param newVersion
*/
- protected abstract void doUpdateRevisedForDetach(String tableName, long revised, long cdoid);
+ protected abstract void doRemoveReferenceRow(String tableName, long metaID, long cdoid, int index, int newVersion);
/**
- * Set the revised date of a specific revision's previous version (the previous version is to be replaced).
+ * Update all references of cdoid to newVersion
*/
- protected abstract void doUpdateRevisedForReplace(String tableName, long revisedStamp, long cdoid, int version);
+ protected abstract void doUpdateReferenceVersion(String tableName, long cdoid, int newVersion);
/**
* Select a revision's attributes. The caller is resposible for closing resultSet and associated statement, if
@@ -410,35 +546,6 @@ public abstract class AbstractJDBCDelegate extends Lifecycle implements IJDBCDel
* Select a revision's references (or a part thereof) The caller is resposible for closing resultSet and associated
* statement, if appropriate.
*/
- protected abstract ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version,
- int dbFeatureID, String where) throws SQLException;
-
- /**
- * Close the given result set and the statement, if this is needed (which is the case, iff the resultSet's statement
- * is not the one which is kept open by this instance).
- */
- private void close(ResultSet resultSet)
- {
- Statement stmt = null;
-
- try
- {
- stmt = resultSet.getStatement();
- }
- catch (Exception ex)
- {
- // Ignore
- }
- finally
- {
- DBUtil.close(resultSet);
- }
-
- // if the statement is one that has been created for the operation only
- // release it.
- if (stmt != statement)
- {
- releaseStatement(stmt);
- }
- }
+ protected abstract ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version, long metaID,
+ String where) throws SQLException;
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/JDBCPerformanceReporter.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/JDBCPerformanceReporter.java
index 2e68fda5c8..f45a982705 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/JDBCPerformanceReporter.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/JDBCPerformanceReporter.java
@@ -11,15 +11,17 @@
package org.eclipse.emf.cdo.server.internal.db.jdbc;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
+import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IDBStoreChunkReader;
import org.eclipse.emf.cdo.server.db.IJDBCDelegate;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
-import org.eclipse.net4j.db.IDBConnectionProvider;
+import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
@@ -77,7 +79,7 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
return delegate.getStatement();
}
- public void insertAttributes(CDORevision revision, IClassMapping classMapping)
+ public void insertAttributes(InternalCDORevision revision, IClassMapping classMapping)
{
long time = System.currentTimeMillis();
delegate.insertAttributes(revision, classMapping);
@@ -86,10 +88,10 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
registerCall("insertAttributes", time);
}
- public void insertReference(CDORevision sourceRevision, int index, CDOID targetId, IReferenceMapping referenceMapping)
+ public void insertReference(CDOID id, int version, int index, CDOID targetId, IReferenceMapping referenceMapping)
{
long time = System.currentTimeMillis();
- delegate.insertReference(sourceRevision, index, targetId, referenceMapping);
+ delegate.insertReference(id, version, index, targetId, referenceMapping);
time = System.currentTimeMillis() - time;
registerCall("insertReferenceDbId", time);
}
@@ -112,7 +114,7 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
delegate.rollback();
}
- public boolean selectRevisionAttributes(CDORevision revision, IClassMapping classMapping, String where)
+ public boolean selectRevisionAttributes(InternalCDORevision revision, IClassMapping classMapping, String where)
{
long time = System.currentTimeMillis();
boolean result = delegate.selectRevisionAttributes(revision, null, where);
@@ -130,7 +132,8 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
registerCall("selectReferencesChunks", time);
}
- public void selectRevisionReferences(CDORevision revision, IReferenceMapping referenceMapping, int referenceChunk)
+ public void selectRevisionReferences(InternalCDORevision revision, IReferenceMapping referenceMapping,
+ int referenceChunk)
{
long time = System.currentTimeMillis();
delegate.selectRevisionReferences(revision, referenceMapping, referenceChunk);
@@ -138,7 +141,7 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
registerCall("selectReferences", time);
}
- public final void updateRevisedForReplace(CDORevision revision, IClassMapping classMapping)
+ public final void updateRevisedForReplace(InternalCDORevision revision, IClassMapping classMapping)
{
long time = System.currentTimeMillis();
delegate.updateRevisedForReplace(revision, classMapping);
@@ -170,22 +173,78 @@ public class JDBCPerformanceReporter extends Lifecycle implements IJDBCDelegate
registerCall("deleteReferences", time);
}
- public void updateAttributes(CDORevision revision, IClassMapping classMapping)
+ public void updateAttributes(InternalCDORevision revision, IClassMapping classMapping)
{
long time = System.currentTimeMillis();
delegate.updateAttributes(revision, classMapping);
time = System.currentTimeMillis() - time;
+ registerCall("updateAllAttributes", time);
+ }
+
+ public void updateAttributes(CDOID id, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, IClassMapping classMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.updateAttributes(id, newVersion, created, attributeChanges, classMapping);
+ time = System.currentTimeMillis() - time;
registerCall("updateAttributes", time);
}
- public void setConnectionProvider(IDBConnectionProvider connectionProvider)
+ public void updateReferenceVersion(CDOID id, int newVersion, IReferenceMapping referenceMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.updateReferenceVersion(id, newVersion, referenceMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("updateReferenceVersion", time);
+ }
+
+ public void insertReferenceRow(CDOID id, int newVersion, int index, CDOID value, IReferenceMapping referenceMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.insertReferenceRow(id, newVersion, index, value, referenceMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("insertReferenceRow", time);
+ }
+
+ public void updateReference(CDOID id, int newVersion, int index, CDOID value, IReferenceMapping referenceMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.updateReference(id, newVersion, index, value, referenceMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("updateReference", time);
+ }
+
+ public void moveReferenceRow(CDOID id, int newVersion, int oldPosition, int newPosition,
+ IReferenceMapping referenceMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.moveReferenceRow(id, newVersion, oldPosition, newPosition, referenceMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("moveReferenceRow", time);
+ }
+
+ public void removeReferenceRow(CDOID id, int index, int newVersion, IReferenceMapping referenceMapping)
+ {
+ long time = System.currentTimeMillis();
+ delegate.removeReferenceRow(id, index, newVersion, referenceMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("removeReferenceRow", time);
+ }
+
+ public void updateAttributes(CDOID id, int newVersion, long created, CDOID newContainerId,
+ int newContainingFeatureId, CDOID newResourceId, List<Pair<IAttributeMapping, Object>> attributeChanges,
+ IClassMapping classMapping)
{
- delegate.setConnectionProvider(connectionProvider);
+ long time = System.currentTimeMillis();
+ delegate.updateAttributes(id, newVersion, created, newContainerId, newContainingFeatureId, newResourceId,
+ attributeChanges, classMapping);
+ time = System.currentTimeMillis() - time;
+ registerCall("updateAttributes_with_containment", time);
}
- public void setReadOnly(boolean reader)
+ public void setStoreAccessor(IDBStoreAccessor storeAccessor)
{
- delegate.setReadOnly(reader);
+ delegate.setStoreAccessor(storeAccessor);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java
index f43475b49a..a97854c3cc 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java
@@ -7,15 +7,15 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db.jdbc;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
-import org.eclipse.emf.cdo.server.internal.db.ServerInfo;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -90,10 +90,78 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
private CachingEnablement cachingEnablement;
+ /**
+ * This statement is used for unprepared batched statements like in
+ * {@link #doUpdateAttributes(String, long, int, long, List, boolean)}
+ */
+ private Statement miscStatement = null;
+
public PreparedStatementJDBCDelegate()
{
}
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ dirtyStatements = new ReferenceValueMap.Strong<CacheKey, PreparedStatement>();
+
+ switch (cachingEnablement)
+ {
+ case ENABLED:
+ cacheStatements = true;
+ break;
+
+ case DISABLED:
+ cacheStatements = false;
+ break;
+
+ case GUESS:
+ try
+ {
+ cacheStatements = !getConnection().getMetaData().supportsStatementPooling();
+ }
+ catch (SQLException ex)
+ {
+ OM.LOG.warn("Failed to guess JDBC statement pooling. Activating cache, just to be sure ...", ex);
+ cacheStatements = true;
+ }
+ }
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace("JDBC PreparedStatement caching is " + (cacheStatements ? "enabled." : "NOT enabled."));
+ }
+
+ if (cacheStatements)
+ {
+ // initialize cache ...
+ statementCache = new ReferenceValueMap.Soft<CacheKey, WrappedPreparedStatement>();
+ }
+ }
+
+ @Override
+ protected void doBeforeDeactivate() throws Exception
+ {
+ for (PreparedStatement ps : dirtyStatements.values())
+ {
+ DBUtil.close(ps);
+ }
+
+ dirtyStatements.clear();
+ if (cacheStatements)
+ {
+ for (WrappedPreparedStatement ps : statementCache.values())
+ {
+ DBUtil.close(ps.getWrappedStatement());
+ }
+
+ statementCache.clear();
+ }
+
+ super.doBeforeDeactivate();
+ }
+
public CachingEnablement getCachingEnablement()
{
return cachingEnablement;
@@ -109,7 +177,38 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
{
try
{
- monitor.begin(dirtyStatements.size());
+ monitor.begin(dirtyStatements.size() + 1);
+
+ if (miscStatement != null)
+ {
+ Async async = monitor.forkAsync();
+ try
+ {
+ int[] results = miscStatement.executeBatch();
+ for (int result : results)
+ {
+ checkState(result == 1, "Batch of misc statements did not return '1'");
+ }
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException("Batch execution failed for misc statement.", ex);
+ }
+ finally
+ {
+ try
+ {
+ miscStatement.close();
+ }
+ catch (SQLException ex)
+ {
+ // eat up ...
+ }
+ miscStatement = null;
+ async.stop();
+ }
+ }
+
for (Entry<CacheKey, PreparedStatement> entry : dirtyStatements.entrySet())
{
try
@@ -133,8 +232,11 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
for (int result : results)
{
- checkState(entry.getKey().getElement1() != StmtType.DELETE_REFERENCES && result == 1,
- "Batch execution did not return '1' for " + entry.getKey().toString());
+ if (entry.getKey().getElement1() != StmtType.DELETE_REFERENCES
+ && entry.getKey().getElement1() != StmtType.UPDATE_REFERENCE_VERSION)
+ {
+ checkState(result == 1, "Batch execution did not return '1' for " + entry.getKey().toString());
+ }
}
}
catch (SQLException ex)
@@ -172,93 +274,9 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
dirtyStatements.clear();
- monitor.done();
- }
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- dirtyStatements = new ReferenceValueMap.Strong<CacheKey, PreparedStatement>();
-
- switch (cachingEnablement)
- {
- case ENABLED:
- cacheStatements = true;
- break;
-
- case DISABLED:
- cacheStatements = false;
- break;
- case GUESS:
- try
- {
- cacheStatements = !getConnection().getMetaData().supportsStatementPooling();
- }
- catch (SQLException ex)
- {
- OM.LOG.warn("Failed to guess JDBC statement pooling. Activating cache, just to be sure ...", ex);
- cacheStatements = true;
- }
- }
-
- if (TRACER.isEnabled())
- {
- TRACER.trace("JDBC PreparedStatement caching is " + (cacheStatements ? "enabled." : "NOT enabled."));
- }
-
- if (cacheStatements)
- {
- // initialize cache ...
- statementCache = new ReferenceValueMap.Soft<CacheKey, WrappedPreparedStatement>();
- }
- }
-
- @Override
- protected void doBeforeDeactivate() throws Exception
- {
- for (PreparedStatement ps : dirtyStatements.values())
- {
- DBUtil.close(ps);
- }
-
- dirtyStatements.clear();
- if (cacheStatements)
- {
- for (WrappedPreparedStatement ps : statementCache.values())
- {
- DBUtil.close(ps.getWrappedStatement());
- }
-
- statementCache.clear();
- }
-
- super.doBeforeDeactivate();
- }
-
- /**
- * Implementation of the hook which is called after selects.
- */
- @Override
- protected void releaseStatement(Statement stmt)
- {
- // leave open cached statements
- if (!cacheStatements || !(stmt instanceof PreparedStatement))
- {
- super.releaseStatement(stmt);
+ monitor.done();
}
-
- // /* This code would guarantee that releaseStatement is only called
- // for cached statements. However this looks through the whole hashmap
- // and is thus too expensive to do in non-debugging mode. */
- //
- // else {
- // if(!selectStatementsCache.containsValue(stmt)) {
- // super.releaseStatement(stmt);
- // }
- // }
}
@Override
@@ -314,7 +332,7 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
stmt.setInt(col++, revision.getVersion());
if (withFullRevisionInfo)
{
- stmt.setInt(col++, ServerInfo.getDBID(revision.getCDOClass()));
+ stmt.setLong(col++, getStoreAccessor().getStore().getMetaID(revision.getEClass()));
stmt.setLong(col++, revision.getCreated());
stmt.setLong(col++, revision.getRevised());
stmt.setLong(col++, CDOIDUtil.getLong(revision.getResourceID()));
@@ -355,102 +373,240 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doUpdateAttributes(String tableName, CDORevision rev, List<IAttributeMapping> attributeMappings,
- boolean withFullRevisionInfo)
+ protected void doUpdateAttributes(String tableName, long cdoid, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, boolean hasFullRevisionInfo)
{
- boolean firstBatch = false;
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(" = ");
+ builder.append(created);
- InternalCDORevision revision = (InternalCDORevision)rev;
- if (attributeMappings == null)
+ for (Pair<IAttributeMapping, Object> attributeChange : attributeChanges)
{
- attributeMappings = Collections.emptyList();
+ IAttributeMapping attributeMapping = attributeChange.getElement1();
+ builder.append(", ");
+ builder.append(attributeMapping.getField());
+ builder.append(" = ");
+ attributeMapping.appendValue(builder, attributeChange.getElement2());
}
- PreparedStatement stmt = getDirtyStatement(StmtType.UPDATE_ATTRIBUTES, tableName);
- if (stmt == null && cacheStatements)
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(" = ");
+ builder.append(cdoid);
+
+ String sql = builder.toString();
+
+ if (TRACER.isEnabled())
{
- firstBatch = true;
- stmt = getAndRemoveCachedStatement(StmtType.UPDATE_ATTRIBUTES, tableName);
+ TRACER.trace("Batching misc statement:" + sql);
}
try
{
- firstBatch = true;
- if (stmt == null)
+ if (miscStatement == null)
{
- StringBuilder sql = new StringBuilder();
+ miscStatement = getConnection().createStatement();
+ }
+ miscStatement.addBatch(sql);
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ }
- sql.append("UPDATE ");
- sql.append(tableName);
- sql.append(" SET ");
- sql.append(CDODBSchema.ATTRIBUTES_VERSION);
- sql.append(" = ? ");
- if (withFullRevisionInfo)
- {
- sql.append(", ");
- sql.append(CDODBSchema.ATTRIBUTES_RESOURCE);
- sql.append(" = ?,");
- sql.append(CDODBSchema.ATTRIBUTES_CONTAINER);
- sql.append(" = ?,");
- sql.append(CDODBSchema.ATTRIBUTES_FEATURE);
- sql.append(" = ?");
- }
+ @Override
+ protected void doUpdateAttributes(String tableName, long cdoid, int newVersion, long created, long newContainerId,
+ int newContainingFeatureId, long newResourceId, List<Pair<IAttributeMapping, Object>> attributeChanges,
+ boolean hasFullRevisionInfo)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(" = ");
+ builder.append(created);
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(" = ");
+ builder.append(newContainerId);
- for (IAttributeMapping attributeMapping : attributeMappings)
- {
- sql.append(", ");
- sql.append(attributeMapping.getField());
- sql.append(" = ?");
- }
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(" = ");
+ builder.append(newContainingFeatureId);
- sql.append(" WHERE ");
- sql.append(CDODBSchema.ATTRIBUTES_ID);
- sql.append(" = ? ");
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(" = ");
+ builder.append(newResourceId);
+
+ for (Pair<IAttributeMapping, Object> attributeChange : attributeChanges)
+ {
+ IAttributeMapping attributeMapping = attributeChange.getElement1();
+ builder.append(", ");
+ builder.append(attributeMapping.getField());
+ builder.append(" = ");
+ attributeMapping.appendValue(builder, attributeChange.getElement2());
+ }
+
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append(" = ");
+ builder.append(cdoid);
+
+ String sql = builder.toString();
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace(sql);
+ }
+
+ try
+ {
+ if (miscStatement == null)
+ {
+ miscStatement = getConnection().createStatement();
+ }
+ miscStatement.addBatch(sql);
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ }
+
+ @Override
+ protected void doUpdateRevisedForReplace(String tableName, long revisedStamp, long cdoid, int version)
+ {
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.REVISE_VERSION, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder sql = new StringBuilder("UPDATE ");
+ sql.append(tableName);
+ sql.append(SQL_UPDATE_REVISE_VERSION);
stmt = getConnection().prepareStatement(sql.toString());
+
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.REVISE_VERSION, tableName, stmt);
+ }
}
- int col = 1;
+ stmt.setLong(1, revisedStamp);
+ stmt.setLong(2, cdoid);
+ stmt.setInt(3, version);
if (TRACER.isEnabled())
{
TRACER.trace(stmt.toString());
}
- stmt.setInt(col++, revision.getVersion());
- if (withFullRevisionInfo)
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
{
- stmt.setLong(col++, CDOIDUtil.getLong(revision.getResourceID()));
- stmt.setLong(col++, CDOIDUtil.getLong((CDOID)revision.getContainerID()));
- stmt.setInt(col++, revision.getContainingFeatureID());
+ DBUtil.close(stmt);
}
+ }
+ }
- for (IAttributeMapping attributeMapping : attributeMappings)
+ @Override
+ protected void doUpdateRevisedForDetach(String tableName, long revisedStamp, long cdoid)
+ {
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.REVISE_UNREVISED, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
{
- Object value = attributeMapping.getRevisionValue(revision);
- if (value == null)
- {
- stmt.setNull(col++, attributeMapping.getField().getType().getCode());
- }
- else
+ StringBuilder sql = new StringBuilder("UPDATE ");
+ sql.append(tableName);
+ sql.append(SQL_UPDATE_REVISE_UNREVISED);
+ stmt = getConnection().prepareStatement(sql.toString());
+
+ if (cacheStatements)
{
- stmt.setObject(col++, value);
+ cacheStatement(StmtType.REVISE_UNREVISED, tableName, stmt);
}
}
- stmt.setLong(col++, CDOIDUtil.getLong(revision.getID()));
- if (firstBatch)
+ stmt.setLong(1, revisedStamp);
+ stmt.setLong(2, cdoid);
+ if (TRACER.isEnabled())
{
- addDirtyStatement(StmtType.UPDATE_ATTRIBUTES, tableName, stmt);
+ TRACER.trace(stmt.toString());
}
- stmt.addBatch();
+ stmt.execute();
}
catch (SQLException e)
{
throw new DBException(e);
}
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+ }
}
+ /*
+ * This has been the preparedStatement version of updateAttributes. Does not make sense now, as amount of attributes
+ * is variable. Preparing for any number of attributes is not very intelligent ...
+ * @Override protected void doUpdateAllAttributes(String tableName, long cdoid, int version, long created,
+ * List<Pair<IAttributeMapping, Object>> attributeChanges, boolean withFullRevisionInfo) { boolean firstBatch = false;
+ * PreparedStatement stmt = getDirtyStatement(StmtType.UPDATE_ATTRIBUTES, tableName); if (stmt == null &&
+ * cacheStatements) { firstBatch = true; stmt = getAndRemoveCachedStatement(StmtType.UPDATE_ATTRIBUTES, tableName); }
+ * try { firstBatch = true; if (stmt == null) { StringBuilder sql = new StringBuilder(); sql.append("UPDATE ");
+ * sql.append(tableName); sql.append(" SET "); sql.append(CDODBSchema.ATTRIBUTES_VERSION); sql.append(" = ? "); if
+ * (withFullRevisionInfo) { sql.append(", "); sql.append(CDODBSchema.ATTRIBUTES_RESOURCE); sql.append(" = ?,");
+ * sql.append(CDODBSchema.ATTRIBUTES_CONTAINER); sql.append(" = ?,"); sql.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ * sql.append(" = ?"); } for (IAttributeMapping attributeMapping : attributeMappings) { sql.append(", ");
+ * sql.append(attributeMapping.getField()); sql.append(" = ?"); } sql.append(" WHERE ");
+ * sql.append(CDODBSchema.ATTRIBUTES_ID); sql.append(" = ? "); stmt =
+ * getConnection().prepareStatement(sql.toString()); } int col = 1; if (TRACER.isEnabled()) {
+ * TRACER.trace(stmt.toString()); } stmt.setInt(col++, revision.getVersion()); if (withFullRevisionInfo) {
+ * stmt.setLong(col++, CDOIDUtil.getLong(revision.getResourceID())); stmt.setLong(col++,
+ * CDOIDUtil.getLong((CDOID)revision.getContainerID())); stmt.setInt(col++, revision.getContainingFeatureID()); } for
+ * (IAttributeMapping attributeMapping : attributeMappings) { Object value =
+ * attributeMapping.getRevisionValue(revision); if (value == null) { stmt.setNull(col++,
+ * attributeMapping.getField().getType().getCode()); } else { stmt.setObject(col++, value); } } stmt.setLong(col++,
+ * CDOIDUtil.getLong(revision.getID())); if (firstBatch) { addDirtyStatement(StmtType.UPDATE_ATTRIBUTES, tableName,
+ * stmt); } stmt.addBatch(); } catch (SQLException e) { throw new DBException(e); } }
+ */
+
@Override
protected void doDeleteAttributes(String tableName, long cdoid)
{
@@ -499,32 +655,32 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doInsertReference(String tableName, int dbID, long source, int version, int index, long target)
+ protected void doInsertReference(String tableName, long dbID, long source, int version, int index, long target)
{
- boolean firstBatch = false;
-
- PreparedStatement stmt = getDirtyStatement(StmtType.INSERT_REFERENCES, tableName);
- if (stmt == null && cacheStatements)
+ PreparedStatement stmt = null;
+ if (cacheStatements)
{
- firstBatch = true;
- stmt = getAndRemoveCachedStatement(StmtType.INSERT_REFERENCES, tableName);
+ stmt = getCachedStatement(StmtType.INSERT_REFERENCES, tableName);
}
try
{
if (stmt == null)
{
- firstBatch = true;
StringBuilder sql = new StringBuilder("INSERT INTO ");
sql.append(tableName);
sql.append(dbID != 0 ? SQL_INSERT_REFERENCE_WITH_DBID : SQL_INSERT_REFERENCE);
stmt = getConnection().prepareStatement(sql.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.INSERT_REFERENCES, tableName, stmt);
+ }
}
int idx = 1;
if (dbID != 0)
{
- stmt.setInt(idx++, dbID);
+ stmt.setLong(idx++, dbID);
}
stmt.setLong(idx++, source);
@@ -536,58 +692,114 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
TRACER.trace(stmt.toString());
}
- if (firstBatch)
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
{
- addDirtyStatement(StmtType.INSERT_REFERENCES, tableName, stmt);
+ DBUtil.close(stmt);
}
+ }
+ }
- stmt.addBatch();
+ @Override
+ protected void doInsertReferenceRow(String tableName, long metaID, long cdoid, int newVersion, long target, int index)
+ {
+ move1up(tableName, metaID, cdoid, newVersion, index);
+ doInsertReference(tableName, metaID, cdoid, newVersion, index, target);
+ }
+
+ @Override
+ protected void doMoveReferenceRow(String tableName, long metaID, long cdoid, int newVersion, int oldPosition,
+ int newPosition)
+ {
+ if (oldPosition == newPosition)
+ {
+ return;
}
- catch (SQLException e)
+
+ // move element away temporarily
+ updateOneIndex(tableName, metaID, cdoid, newVersion, oldPosition, -1);
+
+ // move elements in between
+ if (oldPosition < newPosition)
{
- throw new DBException(e);
+ move1down(tableName, metaID, cdoid, newVersion, oldPosition, newPosition);
+ }
+ else
+ {
+ // oldPosition > newPosition -- equal case is handled above
+ move1up(tableName, metaID, cdoid, newVersion, newPosition, oldPosition);
}
+
+ // move temporary element to new position
+ updateOneIndex(tableName, metaID, cdoid, newVersion, -1, newPosition);
+
+ }
+
+ @Override
+ protected void doRemoveReferenceRow(String tableName, long metaID, long cdoid, int index, int newVersion)
+ {
+ deleteReferenceRow(tableName, metaID, cdoid, index);
+ move1down(tableName, metaID, cdoid, newVersion, index);
}
@Override
- protected void doDeleteReferences(String tableName, int dbId, long cdoid)
+ protected void doUpdateReference(String tableName, long metaID, long sourceId, int newVersion, int index,
+ long targetId)
{
PreparedStatement stmt = null;
if (cacheStatements)
{
- stmt = getCachedStatement(StmtType.DELETE_REFERENCES, tableName);
+ stmt = getCachedStatement(StmtType.UPDATE_REFERENCE, tableName);
}
try
{
if (stmt == null)
{
- StringBuilder sql = new StringBuilder("DELETE FROM ");
- sql.append(tableName);
- sql.append(" WHERE ");
- sql.append(CDODBSchema.REFERENCES_SOURCE);
- sql.append(" = ? ");
-
- if (dbId != 0)
+ StringBuilder builder = new StringBuilder("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_TARGET);
+ builder.append(" = ?, ");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
{
- sql.append("AND");
- sql.append(CDODBSchema.REFERENCES_FEATURE);
- sql.append(" = ? ");
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
}
- stmt = getConnection().prepareStatement(sql.toString());
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
if (cacheStatements)
{
- cacheStatement(StmtType.DELETE_REFERENCES, tableName, stmt);
+ cacheStatement(StmtType.UPDATE_REFERENCE, tableName, stmt);
}
}
- stmt.setLong(1, cdoid);
- if (dbId != 0)
+ int idx = 1;
+ stmt.setLong(idx++, targetId);
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
{
- stmt.setInt(2, dbId);
+ stmt.setLong(idx++, metaID);
}
+ stmt.setLong(idx++, sourceId);
+ stmt.setLong(idx++, index);
+
if (TRACER.isEnabled())
{
TRACER.trace(stmt.toString());
@@ -609,78 +821,96 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doUpdateRevisedForReplace(String tableName, long revisedStamp, long cdoid, int version)
+ protected void doUpdateReferenceVersion(String tableName, long cdoid, int newVersion)
{
- PreparedStatement stmt = null;
- if (cacheStatements)
+ boolean firstBatch = false;
+
+ PreparedStatement stmt = getDirtyStatement(StmtType.UPDATE_REFERENCE_VERSION, tableName);
+ if (stmt == null && cacheStatements)
{
- stmt = getCachedStatement(StmtType.REVISE_VERSION, tableName);
+ firstBatch = true;
+ stmt = getAndRemoveCachedStatement(StmtType.UPDATE_REFERENCE_VERSION, tableName);
}
try
{
if (stmt == null)
{
- StringBuilder sql = new StringBuilder("UPDATE ");
+ firstBatch = true;
+
+ StringBuilder sql = new StringBuilder();
+ sql.append("UPDATE ");
sql.append(tableName);
- sql.append(SQL_UPDATE_REVISE_VERSION);
- stmt = getConnection().prepareStatement(sql.toString());
+ sql.append(" SET ");
+ sql.append(CDODBSchema.REFERENCES_VERSION);
+ sql.append(" = ? ");
+ sql.append(" WHERE ");
+ sql.append(CDODBSchema.REFERENCES_SOURCE);
+ sql.append(" = ?");
- if (cacheStatements)
- {
- cacheStatement(StmtType.REVISE_VERSION, tableName, stmt);
- }
+ stmt = getConnection().prepareStatement(sql.toString());
}
- stmt.setLong(1, revisedStamp);
+ stmt.setInt(1, newVersion);
stmt.setLong(2, cdoid);
- stmt.setInt(3, version);
+
if (TRACER.isEnabled())
{
TRACER.trace(stmt.toString());
}
- stmt.execute();
+ if (firstBatch)
+ {
+ addDirtyStatement(StmtType.UPDATE_REFERENCE_VERSION, tableName, stmt);
+ }
+
+ stmt.addBatch();
}
catch (SQLException e)
{
throw new DBException(e);
}
- finally
- {
- if (!cacheStatements)
- {
- DBUtil.close(stmt);
- }
- }
}
@Override
- protected void doUpdateRevisedForDetach(String tableName, long revisedStamp, long cdoid)
+ protected void doDeleteReferences(String tableName, long metaID, long cdoid)
{
PreparedStatement stmt = null;
if (cacheStatements)
{
- stmt = getCachedStatement(StmtType.REVISE_UNREVISED, tableName);
+ stmt = getCachedStatement(StmtType.DELETE_REFERENCES, tableName);
}
try
{
if (stmt == null)
{
- StringBuilder sql = new StringBuilder("UPDATE ");
+ StringBuilder sql = new StringBuilder("DELETE FROM ");
sql.append(tableName);
- sql.append(SQL_UPDATE_REVISE_UNREVISED);
- stmt = getConnection().prepareStatement(sql.toString());
+ sql.append(" WHERE ");
+ sql.append(CDODBSchema.REFERENCES_SOURCE);
+ sql.append(" = ? ");
+
+ if (metaID != 0)
+ {
+ sql.append("AND");
+ sql.append(CDODBSchema.REFERENCES_FEATURE);
+ sql.append(" = ? ");
+ }
+ stmt = getConnection().prepareStatement(sql.toString());
if (cacheStatements)
{
- cacheStatement(StmtType.REVISE_UNREVISED, tableName, stmt);
+ cacheStatement(StmtType.DELETE_REFERENCES, tableName, stmt);
}
}
- stmt.setLong(1, revisedStamp);
- stmt.setLong(2, cdoid);
+ stmt.setLong(1, cdoid);
+ if (metaID != 0)
+ {
+ stmt.setLong(2, metaID);
+ }
+
if (TRACER.isEnabled())
{
TRACER.trace(stmt.toString());
@@ -767,8 +997,8 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version, int dbFeatureID,
- String where) throws SQLException
+ protected ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version, long metaID, String where)
+ throws SQLException
{
StringBuilder builder = new StringBuilder();
builder.append("SELECT ");
@@ -776,7 +1006,7 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
builder.append(" FROM ");
builder.append(tableName);
builder.append(" WHERE ");
- if (dbFeatureID != 0)
+ if (metaID != 0)
{
builder.append(CDODBSchema.REFERENCES_FEATURE);
builder.append("= ? AND ");
@@ -817,9 +1047,9 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
int idx = 1;
- if (dbFeatureID != 0)
+ if (metaID != 0)
{
- pstmt.setInt(idx++, dbFeatureID);
+ pstmt.setLong(idx++, metaID);
}
pstmt.setLong(idx++, sourceId);
@@ -828,6 +1058,480 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
}
/**
+ * Implementation of the hook which is called after selects.
+ */
+ @Override
+ protected void releaseStatement(Statement stmt)
+ {
+ // leave open cached statements
+ if (!cacheStatements || !(stmt instanceof PreparedStatement))
+ {
+ super.releaseStatement(stmt);
+ }
+
+ // /* This code would guarantee that releaseStatement is only called
+ // for cached statements. However this looks through the whole hashmap
+ // and is thus too expensive to do in non-debugging mode. */
+ //
+ // else {
+ // if(!selectStatementsCache.containsValue(stmt)) {
+ // super.releaseStatement(stmt);
+ // }
+ // }
+ }
+
+ // ----------------------------------------------------------
+ // List management helpers
+ // ----------------------------------------------------------
+
+ private void updateOneIndex(String tableName, long metaID, long cdoid, int newVersion, int oldIndex, int newIndex)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("updateOneIndex ({0},{1},{2},{3},{4})", tableName, cdoid, newVersion, oldIndex, newIndex);
+ }
+
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.MOVE_ONE_INDEX, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder builder = new StringBuilder("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ?, ");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.MOVE_ONE_INDEX, tableName, stmt);
+ }
+ }
+
+ int idx = 1;
+ stmt.setInt(idx++, newIndex);
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
+ {
+ stmt.setLong(idx++, metaID);
+ }
+
+ stmt.setLong(idx++, cdoid);
+ stmt.setLong(idx++, oldIndex);
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace(stmt.toString());
+ }
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+ }
+ }
+
+ /**
+ * Move references downwards to close a gap at position <code>index</code>. Only indexes starting with
+ * <code>index + 1</code> and ending with <code>upperIndex</code> are moved down.
+ */
+ private void move1down(String tableName, long metaID, long cdoid, int newVersion, int index, int upperIndex)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("move1down({0},{1},{2},{3},{4})", tableName, cdoid, newVersion, index, upperIndex);
+ }
+
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.MOVE_RANGE_1_DOWN, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("-1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" > ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" <= ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.MOVE_RANGE_1_DOWN, tableName, stmt);
+ }
+ }
+
+ int idx = 1;
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
+ {
+ stmt.setLong(idx++, metaID);
+ }
+
+ stmt.setLong(idx++, cdoid);
+ stmt.setInt(idx++, index);
+ stmt.setInt(idx++, upperIndex);
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+ }
+ }
+
+ /**
+ * Move references downwards to close a gap at position <code>index</code>. All indexes starting with
+ * <code>index + 1</code> are moved down.
+ */
+ private void move1down(String tableName, long metaID, long cdoid, int newVersion, int index)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("move1down({0},{1},{2},{3})", tableName, cdoid, newVersion, index);
+ }
+
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.MOVE_1_DOWN, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("-1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" > ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.MOVE_1_DOWN, tableName, stmt);
+ }
+ }
+
+ int idx = 1;
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
+ {
+ stmt.setLong(idx++, metaID);
+ }
+
+ stmt.setLong(idx++, cdoid);
+ stmt.setInt(idx++, index);
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+
+ }
+ }
+
+ /**
+ * Move references upwards to make room at position <code>index</code>. Only indexes starting with <code>index</code>
+ * and ending with <code>upperIndex - 1</code> are moved up.
+ */
+ private void move1up(String tableName, long metaID, long cdoid, int newVersion, int index, int upperIndex)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("move1up({0},{1},{2},{3},{4})", tableName, cdoid, newVersion, index, upperIndex);
+ }
+
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.MOVE_RANGE_1_UP, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("+1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" => ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" < ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.MOVE_RANGE_1_UP, tableName, stmt);
+ }
+ }
+
+ int idx = 1;
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
+ {
+ stmt.setLong(idx++, metaID);
+ }
+
+ stmt.setLong(idx++, cdoid);
+ stmt.setInt(idx++, index);
+ stmt.setInt(idx++, upperIndex);
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+
+ }
+ }
+
+ /**
+ * Move references upwards to make room at position <code>index</code>. Only indexes starting with <code>index</code>.
+ */
+ private void move1up(String tableName, long metaID, long cdoid, int newVersion, int index)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("move1up({0},{1},{2},{3})", tableName, cdoid, newVersion, index);
+ }
+
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.MOVE_1_UP, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("+1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ? WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("= ? AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("= ? AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" >= ?");
+
+ stmt = getConnection().prepareStatement(builder.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.MOVE_1_UP, tableName, stmt);
+ }
+ }
+
+ int idx = 1;
+ stmt.setInt(idx++, newVersion);
+
+ if (metaID != 0)
+ {
+ stmt.setLong(idx++, metaID);
+ }
+
+ stmt.setLong(idx++, cdoid);
+ stmt.setInt(idx++, index);
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+
+ }
+ }
+
+ private void deleteReferenceRow(String tableName, long metaID, long cdoid, int index)
+ {
+ PreparedStatement stmt = null;
+ if (cacheStatements)
+ {
+ stmt = getCachedStatement(StmtType.DELETE_ONE_REFERENCE, tableName);
+ }
+
+ try
+ {
+ if (stmt == null)
+ {
+ StringBuilder sql = new StringBuilder("DELETE FROM ");
+ sql.append(tableName);
+ sql.append(" WHERE ");
+ sql.append(CDODBSchema.REFERENCES_SOURCE);
+ sql.append(" = ? AND ");
+ sql.append(CDODBSchema.REFERENCES_IDX);
+ sql.append(" = ? ");
+
+ if (metaID != 0)
+ {
+ sql.append("AND");
+ sql.append(CDODBSchema.REFERENCES_FEATURE);
+ sql.append(" = ? ");
+ }
+
+ stmt = getConnection().prepareStatement(sql.toString());
+ if (cacheStatements)
+ {
+ cacheStatement(StmtType.DELETE_ONE_REFERENCE, tableName, stmt);
+ }
+ }
+
+ stmt.setLong(1, cdoid);
+ stmt.setInt(2, index);
+ if (metaID != 0)
+ {
+ stmt.setLong(3, metaID);
+ }
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace(stmt.toString());
+ }
+
+ stmt.execute();
+ }
+ catch (SQLException e)
+ {
+ throw new DBException(e);
+ }
+ finally
+ {
+ if (!cacheStatements)
+ {
+ DBUtil.close(stmt);
+ }
+ }
+ }
+
+ // ----------------------------------------------------------
+ // Statement caching
+ // ----------------------------------------------------------
+
+ /**
* Add a dirty statement to the dirty statements container.
*/
private void addDirtyStatement(StmtType type, String subKey, PreparedStatement stmt)
@@ -923,7 +1627,7 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate
*/
private static enum StmtType
{
- INSERT_ATTRIBUTES, UPDATE_ATTRIBUTES, DELETE_ATTRIBUTES, INSERT_REFERENCES, DELETE_REFERENCES, REVISE_VERSION, REVISE_UNREVISED, GENERAL
+ INSERT_ATTRIBUTES, DELETE_ATTRIBUTES, INSERT_REFERENCES, DELETE_REFERENCES, DELETE_ONE_REFERENCE, REVISE_VERSION, REVISE_UNREVISED, GENERAL, UPDATE_REFERENCE_VERSION, MOVE_1_UP, MOVE_RANGE_1_UP, MOVE_1_DOWN, MOVE_RANGE_1_DOWN, MOVE_ONE_INDEX, UPDATE_REFERENCE
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/StatementJDBCDelegate.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/StatementJDBCDelegate.java
index 2944046c39..6f586c1373 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/StatementJDBCDelegate.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/StatementJDBCDelegate.java
@@ -7,6 +7,7 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.server.internal.db.jdbc;
@@ -14,12 +15,12 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
-import org.eclipse.emf.cdo.server.internal.db.ServerInfo;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.net4j.db.DBException;
+import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.ContextTracer;
@@ -62,7 +63,7 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
{
CDORevisionData data = revision.data();
builder.append(", ");
- builder.append(ServerInfo.getDBID(revision.getCDOClass()));
+ builder.append(getStoreAccessor().getStore().getMetaID(revision.getEClass()));
builder.append(", ");
builder.append(revision.getCreated());
builder.append(", ");
@@ -89,8 +90,8 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doUpdateAttributes(String tableName, CDORevision revision, List<IAttributeMapping> attributeMappings,
- boolean withFullRevisionInfo)
+ protected void doUpdateAttributes(String tableName, long cdoid, int newVersion, long created,
+ List<Pair<IAttributeMapping, Object>> attributeChanges, boolean hasFullRevisionInfo)
{
StringBuilder builder = new StringBuilder();
builder.append("UPDATE ");
@@ -98,62 +99,75 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
builder.append(" SET ");
builder.append(CDODBSchema.ATTRIBUTES_VERSION);
builder.append(" = ");
- builder.append(revision.getVersion());
+ builder.append(newVersion);
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(" = ");
+ builder.append(created);
- if (withFullRevisionInfo)
+ for (Pair<IAttributeMapping, Object> attributeChange : attributeChanges)
{
- CDORevisionData data = revision.data();
- builder.append(", ");
- builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
- builder.append(" = ");
- builder.append(CDOIDUtil.getLong(data.getResourceID()));
- builder.append(", ");
- builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
- builder.append(" = ");
- builder.append(CDOIDUtil.getLong((CDOID)data.getContainerID()));
+ IAttributeMapping attributeMapping = attributeChange.getElement1();
builder.append(", ");
- builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(attributeMapping.getField());
builder.append(" = ");
- builder.append(data.getContainingFeatureID());
- }
-
- if (attributeMappings != null)
- {
- for (IAttributeMapping attributeMapping : attributeMappings)
- {
- builder.append(", ");
- builder.append(attributeMapping.getField());
- builder.append(" = ");
- attributeMapping.appendValue(builder, revision);
- }
+ attributeMapping.appendValue(builder, attributeChange.getElement2());
}
builder.append(" WHERE ");
builder.append(CDODBSchema.ATTRIBUTES_ID);
builder.append(" = ");
- builder.append(CDOIDUtil.getLong(revision.getID()));
+ builder.append(cdoid);
sqlUpdate(builder.toString());
}
@Override
- protected void doUpdateRevisedForReplace(String table, long revisedStamp, long cdoid, int version)
+ protected void doUpdateAttributes(String tableName, long cdoid, int newVersion, long created, long newContainerId,
+ int newContainingFeatureId, long newResourceId, List<Pair<IAttributeMapping, Object>> attributeChanges,
+ boolean hasFullRevisionInfo)
{
StringBuilder builder = new StringBuilder();
builder.append("UPDATE ");
- builder.append(table);
+ builder.append(tableName);
builder.append(" SET ");
- builder.append(CDODBSchema.ATTRIBUTES_REVISED);
- builder.append("=");
- builder.append(revisedStamp);
+ builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CREATED);
+ builder.append(" = ");
+ builder.append(created);
+
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
+ builder.append(" = ");
+ builder.append(newContainerId);
+
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_FEATURE);
+ builder.append(" = ");
+ builder.append(newContainingFeatureId);
+
+ builder.append(", ");
+ builder.append(CDODBSchema.ATTRIBUTES_RESOURCE);
+ builder.append(" = ");
+ builder.append(newResourceId);
+
+ for (Pair<IAttributeMapping, Object> attributeChange : attributeChanges)
+ {
+ IAttributeMapping attributeMapping = attributeChange.getElement1();
+ builder.append(", ");
+ builder.append(attributeMapping.getField());
+ builder.append(" = ");
+ attributeMapping.appendValue(builder, attributeChange.getElement2());
+ }
+
builder.append(" WHERE ");
builder.append(CDODBSchema.ATTRIBUTES_ID);
- builder.append("=");
+ builder.append(" = ");
builder.append(cdoid);
- builder.append(" AND ");
- builder.append(CDODBSchema.ATTRIBUTES_VERSION);
- builder.append("=");
- builder.append(version);
+
sqlUpdate(builder.toString());
}
@@ -171,6 +185,27 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
+ protected void doUpdateRevisedForReplace(String table, long revisedStamp, long cdoid, int version)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(table);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.ATTRIBUTES_REVISED);
+ builder.append("=");
+ builder.append(revisedStamp);
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.ATTRIBUTES_ID);
+ builder.append("=");
+ builder.append(cdoid);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.ATTRIBUTES_VERSION);
+ builder.append("=");
+ builder.append(version);
+ sqlUpdate(builder.toString());
+ }
+
+ @Override
protected void doUpdateRevisedForDetach(String table, long revisedStamp, long cdoid)
{
StringBuilder builder = new StringBuilder();
@@ -191,15 +226,22 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doInsertReference(String table, int dbId, long source, int version, int i, long target)
+ protected void doInsertReferenceRow(String tableName, long metaID, long cdoid, int newVersion, long target, int index)
+ {
+ move1up(tableName, metaID, cdoid, newVersion, index, -1);
+ doInsertReference(tableName, metaID, cdoid, newVersion, index, target);
+ }
+
+ @Override
+ protected void doInsertReference(String table, long metaID, long source, int version, int i, long target)
{
StringBuilder builder = new StringBuilder();
builder.append("INSERT INTO ");
builder.append(table);
builder.append(" VALUES (");
- if (dbId != 0)
+ if (metaID != 0)
{
- builder.append(dbId);
+ builder.append(metaID);
builder.append(", ");
}
builder.append(source);
@@ -214,7 +256,34 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected void doDeleteReferences(String name, int dbId, long cdoid)
+ protected void doMoveReferenceRow(String tableName, long metaID, long cdoid, int newVersion, int oldPosition,
+ int newPosition)
+ {
+ if (oldPosition == newPosition)
+ {
+ return;
+ }
+
+ // move element away temporarily
+ updateOneIndex(tableName, metaID, cdoid, newVersion, oldPosition, -1);
+
+ // move elements in between
+ if (oldPosition < newPosition)
+ {
+ move1down(tableName, metaID, cdoid, newVersion, oldPosition, newPosition);
+ }
+ else
+ {
+ // oldPosition > newPosition -- equal case is handled above
+ move1up(tableName, metaID, cdoid, newVersion, newPosition, oldPosition);
+ }
+
+ // move temporary element to new position
+ updateOneIndex(tableName, metaID, cdoid, newVersion, -1, newPosition);
+ }
+
+ @Override
+ protected void doDeleteReferences(String name, long metaID, long cdoid)
{
StringBuilder builder = new StringBuilder();
builder.append("DELETE FROM ");
@@ -223,17 +292,76 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
builder.append(CDODBSchema.REFERENCES_SOURCE);
builder.append(" = ");
builder.append(cdoid);
- if (dbId != 0)
+ if (metaID != 0)
{
builder.append(" AND ");
builder.append(CDODBSchema.REFERENCES_FEATURE);
builder.append(" = ");
- builder.append(dbId);
+ builder.append(metaID);
}
sqlUpdate(builder.toString());
}
@Override
+ protected void doRemoveReferenceRow(String tableName, long metaID, long cdoid, int index, int newVersion)
+ {
+ deleteReferenceRow(tableName, metaID, cdoid, index);
+ move1down(tableName, metaID, cdoid, newVersion, index, -1);
+ }
+
+ @Override
+ protected void doUpdateReferenceVersion(String tableName, long cdoid, int newVersion)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append(" = ");
+ builder.append(cdoid);
+ sqlUpdate(builder.toString());
+ }
+
+ @Override
+ protected void doUpdateReference(String tableName, long metaID, long sourceId, int newVersion, int index,
+ long targetId)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_TARGET);
+ builder.append(" = ");
+ builder.append(targetId);
+ builder.append(", ");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append(" = ");
+ builder.append(sourceId);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(index);
+
+ if (metaID != 0)
+ {
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append(" = ");
+ builder.append(metaID);
+ }
+
+ sqlUpdate(builder.toString());
+ }
+
+ @Override
protected ResultSet doSelectRevisionAttributes(String tableName, long revisionId,
List<IAttributeMapping> attributeMappings, boolean hasFullRevisionInfo, String where) throws SQLException
{
@@ -290,8 +418,8 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
@Override
- protected ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version, int dbFeatureID,
- String where) throws SQLException
+ protected ResultSet doSelectRevisionReferences(String tableName, long sourceId, int version, long metaID, String where)
+ throws SQLException
{
StringBuilder builder = new StringBuilder();
@@ -300,11 +428,11 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
builder.append(" FROM ");
builder.append(tableName);
builder.append(" WHERE ");
- if (dbFeatureID != 0)
+ if (metaID != 0)
{
builder.append(CDODBSchema.REFERENCES_FEATURE);
builder.append("=");
- builder.append(dbFeatureID);
+ builder.append(metaID);
builder.append(" AND ");
}
@@ -366,4 +494,153 @@ public class StatementJDBCDelegate extends AbstractJDBCDelegate
}
}
}
+
+ private void deleteReferenceRow(String name, long metaID, long cdoid, int index)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("DELETE FROM ");
+ builder.append(name);
+ builder.append(" WHERE ");
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append(" = ");
+ builder.append(cdoid);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(index);
+ if (metaID != 0)
+ {
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append(" = ");
+ builder.append(metaID);
+ }
+ sqlUpdate(builder.toString());
+ }
+
+ /**
+ * Move references upwards to make room at position <code>index</code>. If <code>upperIndex</code> is <code>-1</code>,
+ * then all indices beginning with <code>index</code> are moved. Else, only indexes starting with <code>index</code>
+ * and ending with <code>upperIndex - 1</code> are moved up.
+ */
+ private void move1up(String tableName, long metaID, long cdoid, int newVersion, int index, int upperIndex)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("+1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(" WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("=");
+ builder.append(metaID);
+ builder.append(" AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("=");
+ builder.append(cdoid);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" >= ");
+ builder.append(index);
+
+ if (upperIndex != -1)
+ {
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" < ");
+ builder.append(upperIndex);
+ }
+
+ sqlUpdate(builder.toString());
+ }
+
+ /**
+ * Move references downwards to close a gap at position <code>index</code>. If <code>upperIndex</code> is
+ * <code>-1</code>, then all indices beginning with <code>index + 1</code> are moved. Else, only indexes starting with
+ * <code>index + 1</code> and ending with <code>upperIndex</code> are moved down.
+ */
+ private void move1down(String tableName, long metaID, long cdoid, int newVersion, int index, int upperIndex)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append("-1 ,");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(" WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("=");
+ builder.append(metaID);
+ builder.append(" AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("=");
+ builder.append(cdoid);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" > ");
+ builder.append(index);
+
+ if (upperIndex != -1)
+ {
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" <= ");
+ builder.append(upperIndex);
+ }
+
+ sqlUpdate(builder.toString());
+ }
+
+ private void updateOneIndex(String tableName, long metaID, long cdoid, int newVersion, int oldIndex, int newIndex)
+ {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("UPDATE ");
+ builder.append(tableName);
+ builder.append(" SET ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(newIndex);
+ builder.append(", ");
+ builder.append(CDODBSchema.REFERENCES_VERSION);
+ builder.append(" = ");
+ builder.append(newVersion);
+ builder.append(" WHERE ");
+ if (metaID != 0)
+ {
+ builder.append(CDODBSchema.REFERENCES_FEATURE);
+ builder.append("=");
+ builder.append(metaID);
+ builder.append(" AND ");
+ }
+
+ builder.append(CDODBSchema.REFERENCES_SOURCE);
+ builder.append("=");
+ builder.append(cdoid);
+ builder.append(" AND ");
+ builder.append(CDODBSchema.REFERENCES_IDX);
+ builder.append(" = ");
+ builder.append(oldIndex);
+
+ sqlUpdate(builder.toString());
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/AttributeMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AttributeMapping.java
index 048b87c182..a84fcae872 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/AttributeMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/AttributeMapping.java
@@ -7,19 +7,21 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
+import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.ddl.IDBField;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -30,7 +32,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
{
private IDBField field;
- public AttributeMapping(ClassMapping classMapping, CDOFeature feature)
+ public AttributeMapping(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
field = classMapping.addField(feature, classMapping.getTable());
@@ -41,20 +43,27 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
return field;
}
- public void appendValue(StringBuilder builder, CDORevision revision)
+ public void appendValue(StringBuilder builder, InternalCDORevision revision)
{
IDBAdapter dbAdapter = getDBAdapter();
Object value = getRevisionValue(revision);
dbAdapter.appendValue(builder, field, value);
}
- public Object getRevisionValue(CDORevision revision)
+ public void appendValue(StringBuilder builder, Object value)
{
- CDOFeature feature = getFeature();
+ IDBAdapter dbAdapter = getDBAdapter();
+ Object dbValue = convertToDBType(value);
+ dbAdapter.appendValue(builder, field, dbValue);
+ }
+
+ public Object getRevisionValue(InternalCDORevision revision)
+ {
+ EStructuralFeature feature = getFeature();
return ((InternalCDORevision)revision).getValue(feature);
}
- public void extractValue(ResultSet resultSet, int column, CDORevision revision)
+ public void extractValue(ResultSet resultSet, int column, InternalCDORevision revision)
{
try
{
@@ -75,11 +84,20 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
protected abstract Object getResultSetValue(ResultSet resultSet, int column) throws SQLException;
/**
+ * Convert a value to a DB compatible format. Needs to be overridden by those AttributeMappings for which
+ * <code>value.toString()</code> is not sufficient (e.g. for CDOID).
+ */
+ protected Object convertToDBType(Object value)
+ {
+ return value;
+ }
+
+ /**
* @author Eike Stepper
*/
public static class AMString extends AttributeMapping
{
- public AMString(ClassMapping classMapping, CDOFeature feature)
+ public AMString(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -96,7 +114,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMShort extends AttributeMapping
{
- public AMShort(ClassMapping classMapping, CDOFeature feature)
+ public AMShort(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -113,7 +131,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMObject extends AttributeMapping
{
- public AMObject(ClassMapping classMapping, CDOFeature feature)
+ public AMObject(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -129,6 +147,12 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
return CDOIDUtil.createLong(id);
}
+
+ @Override
+ protected Object convertToDBType(Object value)
+ {
+ return CDOIDUtil.getLong((CDOID)value);
+ }
}
/**
@@ -136,7 +160,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMLong extends AttributeMapping
{
- public AMLong(ClassMapping classMapping, CDOFeature feature)
+ public AMLong(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -153,7 +177,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMInteger extends AttributeMapping
{
- public AMInteger(ClassMapping classMapping, CDOFeature feature)
+ public AMInteger(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -170,7 +194,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMFloat extends AttributeMapping
{
- public AMFloat(ClassMapping classMapping, CDOFeature feature)
+ public AMFloat(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -187,7 +211,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMDouble extends AttributeMapping
{
- public AMDouble(ClassMapping classMapping, CDOFeature feature)
+ public AMDouble(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -204,7 +228,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMDate extends AttributeMapping
{
- public AMDate(ClassMapping classMapping, CDOFeature feature)
+ public AMDate(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -221,7 +245,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMCharacter extends AttributeMapping
{
- public AMCharacter(ClassMapping classMapping, CDOFeature feature)
+ public AMCharacter(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -244,7 +268,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMByte extends AttributeMapping
{
- public AMByte(ClassMapping classMapping, CDOFeature feature)
+ public AMByte(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@@ -261,7 +285,7 @@ public abstract class AttributeMapping extends FeatureMapping implements IAttrib
*/
public static class AMBoolean extends AttributeMapping
{
- public AMBoolean(ClassMapping classMapping, CDOFeature feature)
+ public AMBoolean(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ClassMapping.java
index f1e816607a..f60fc9019d 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ClassMapping.java
@@ -7,22 +7,37 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOClearFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOContainerFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDeltaVisitor;
+import org.eclipse.emf.cdo.common.revision.delta.CDOListFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOMoveFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDORemoveFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta;
+import org.eclipse.emf.cdo.common.revision.delta.CDOUnsetFeatureDelta;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
-import org.eclipse.emf.cdo.server.db.IFeatureMapping;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IFeatureMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
+import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.DBStore;
+import org.eclipse.emf.cdo.server.internal.db.ToMany;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.net4j.db.DBException;
import org.eclipse.net4j.db.DBType;
@@ -31,7 +46,13 @@ import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBIndex;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.ImplementationError;
+import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.net4j.util.om.monitor.OMMonitor.Async;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.ArrayList;
import java.util.HashSet;
@@ -45,7 +66,7 @@ public abstract class ClassMapping implements IClassMapping
{
private MappingStrategy mappingStrategy;
- private CDOClass cdoClass;
+ private EClass eClass;
private IDBTable table;
@@ -55,12 +76,21 @@ public abstract class ClassMapping implements IClassMapping
private List<IReferenceMapping> referenceMappings;
- public ClassMapping(MappingStrategy mappingStrategy, CDOClass cdoClass, CDOFeature[] features)
+ private ThreadLocal<FeatureDeltaWriter> deltaWriter = new ThreadLocal<FeatureDeltaWriter>()
+ {
+ @Override
+ protected FeatureDeltaWriter initialValue()
+ {
+ return new FeatureDeltaWriter();
+ };
+ };
+
+ public ClassMapping(MappingStrategy mappingStrategy, EClass eClass, EStructuralFeature[] features)
{
this.mappingStrategy = mappingStrategy;
- this.cdoClass = cdoClass;
+ this.eClass = eClass;
- String tableName = mappingStrategy.getTableName(cdoClass);
+ String tableName = mappingStrategy.getTableName(eClass);
table = addTable(tableName);
initTable(table, hasFullRevisionInfo());
@@ -71,7 +101,7 @@ public abstract class ClassMapping implements IClassMapping
// // Special handling of CDOResource table
// CDOResourceClass resourceClass = getResourceClass();
- // if (cdoClass == resourceClass)
+ // if (eClass == resourceClass)
// {
// // Create a unique ids to prevent duplicate resource paths
// for (IAttributeMapping attributeMapping : attributeMappings)
@@ -83,7 +113,6 @@ public abstract class ClassMapping implements IClassMapping
// pathField.setPrecision(760);// MYSQL key limitation 767
// pathField.setNotNull(true);
//
- // // TODO Provide better design for store capabilities and repository support
// // Example: Currently a store can not specify that it does not support non-auditing mode!
// if (false && !mappingStrategy.getStore().getRepository().isSupportingAudits())
// {
@@ -103,9 +132,9 @@ public abstract class ClassMapping implements IClassMapping
return mappingStrategy;
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return cdoClass;
+ return eClass;
}
public IDBTable getTable()
@@ -124,7 +153,7 @@ public abstract class ClassMapping implements IClassMapping
table.addField(CDODBSchema.ATTRIBUTES_VERSION, DBType.INTEGER, true);
if (full)
{
- table.addField(CDODBSchema.ATTRIBUTES_CLASS, DBType.INTEGER, true);
+ table.addField(CDODBSchema.ATTRIBUTES_CLASS, DBType.BIGINT, true);
table.addField(CDODBSchema.ATTRIBUTES_CREATED, DBType.BIGINT, true);
IDBField revisedField = table.addField(CDODBSchema.ATTRIBUTES_REVISED, DBType.BIGINT, true);
table.addField(CDODBSchema.ATTRIBUTES_RESOURCE, DBType.BIGINT, true);
@@ -142,26 +171,26 @@ public abstract class ClassMapping implements IClassMapping
return table;
}
- protected IDBField addField(CDOFeature cdoFeature, IDBTable table) throws DBException
+ protected IDBField addField(EStructuralFeature feature, IDBTable table) throws DBException
{
- String fieldName = mappingStrategy.getFieldName(cdoFeature);
- DBType fieldType = getDBType(cdoFeature);
- int fieldLength = getDBLength(cdoFeature);
+ String fieldName = mappingStrategy.getFieldName(feature);
+ DBType fieldType = getDBType(feature);
+ int fieldLength = getDBLength(feature);
IDBField field = table.addField(fieldName, fieldType, fieldLength);
affectedTables.add(table);
return field;
}
- protected DBType getDBType(CDOFeature cdoFeature)
+ protected DBType getDBType(EStructuralFeature feature)
{
- return DBStore.getDBType(cdoFeature.getType());
+ return DBStore.getDBType(feature.getEType());
}
- protected int getDBLength(CDOFeature cdoFeature)
+ protected int getDBLength(EStructuralFeature feature)
{
// Derby: The maximum length for a VARCHAR string is 32,672 characters.
- CDOType type = cdoFeature.getType();
+ CDOType type = CDOModelUtil.getType(feature.getEType());
return type == CDOType.STRING || type == CDOType.CUSTOM ? 32672 : IDBField.DEFAULT;
}
@@ -171,9 +200,9 @@ public abstract class ClassMapping implements IClassMapping
return store.getDBAdapter();
}
- public IFeatureMapping getFeatureMapping(CDOFeature feature)
+ public IFeatureMapping getFeatureMapping(EStructuralFeature feature)
{
- if (feature.isReference() && mappingStrategy.getToMany() != ToMany.LIKE_ATTRIBUTES)
+ if (feature instanceof EReference && mappingStrategy.getToMany() != ToMany.LIKE_ATTRIBUTES)
{
return getReferenceMapping(feature);
}
@@ -191,7 +220,7 @@ public abstract class ClassMapping implements IClassMapping
return referenceMappings;
}
- public IReferenceMapping getReferenceMapping(CDOFeature feature)
+ public IReferenceMapping getReferenceMapping(EStructuralFeature feature)
{
// TODO Optimize this?
for (IReferenceMapping referenceMapping : referenceMappings)
@@ -205,7 +234,7 @@ public abstract class ClassMapping implements IClassMapping
return null;
}
- public IAttributeMapping getAttributeMapping(CDOFeature feature)
+ public IAttributeMapping getAttributeMapping(EStructuralFeature feature)
{
// TODO Optimize this?
for (IAttributeMapping attributeMapping : attributeMappings)
@@ -219,12 +248,12 @@ public abstract class ClassMapping implements IClassMapping
return null;
}
- protected List<IAttributeMapping> createAttributeMappings(CDOFeature[] features)
+ protected List<IAttributeMapping> createAttributeMappings(EStructuralFeature[] features)
{
List<IAttributeMapping> attributeMappings = new ArrayList<IAttributeMapping>();
- for (CDOFeature feature : features)
+ for (EStructuralFeature feature : features)
{
- if (feature.isReference())
+ if (feature instanceof EReference)
{
if (!feature.isMany())
{
@@ -240,12 +269,12 @@ public abstract class ClassMapping implements IClassMapping
return attributeMappings.isEmpty() ? null : attributeMappings;
}
- protected List<IReferenceMapping> createReferenceMappings(CDOFeature[] features)
+ protected List<IReferenceMapping> createReferenceMappings(EStructuralFeature[] features)
{
List<IReferenceMapping> referenceMappings = new ArrayList<IReferenceMapping>();
- for (CDOFeature feature : features)
+ for (EStructuralFeature feature : features)
{
- if (feature.isReference() && feature.isMany())
+ if (feature instanceof EReference && feature.isMany())
{
referenceMappings.add(createReferenceMapping(feature));
}
@@ -254,9 +283,9 @@ public abstract class ClassMapping implements IClassMapping
return referenceMappings.isEmpty() ? null : referenceMappings;
}
- protected AttributeMapping createAttributeMapping(CDOFeature feature)
+ protected AttributeMapping createAttributeMapping(EStructuralFeature feature)
{
- CDOType type = feature.getType();
+ CDOType type = CDOModelUtil.getType(feature.getEType());
if (type == CDOType.BOOLEAN || type == CDOType.BOOLEAN_OBJECT)
{
return new AttributeMapping.AMBoolean(this, feature);
@@ -305,22 +334,22 @@ public abstract class ClassMapping implements IClassMapping
throw new ImplementationError("Unrecognized CDOType: " + type);
}
- protected ToOneReferenceMapping createToOneReferenceMapping(CDOFeature feature)
+ protected ToOneReferenceMapping createToOneReferenceMapping(EStructuralFeature feature)
{
return new ToOneReferenceMapping(this, feature);
}
- protected ReferenceMapping createReferenceMapping(CDOFeature feature)
+ protected ReferenceMapping createReferenceMapping(EStructuralFeature feature)
{
return new ReferenceMapping(this, feature, ToMany.PER_REFERENCE);
}
- public Object createReferenceMappingKey(CDOFeature cdoFeature)
+ public Object createReferenceMappingKey(EStructuralFeature feature)
{
- return cdoFeature;
+ return feature;
}
- public void writeRevision(IDBStoreAccessor accessor, CDORevision revision, OMMonitor monitor)
+ public void writeRevision(IDBStoreAccessor accessor, InternalCDORevision revision, OMMonitor monitor)
{
try
{
@@ -329,7 +358,7 @@ public abstract class ClassMapping implements IClassMapping
if (revision.getVersion() > 1 && hasFullRevisionInfo() && isAuditing())
{
- writeRevisedRow(accessor, (InternalCDORevision)revision);
+ writeRevisedRow(accessor, revision);
}
monitor.worked();
@@ -342,14 +371,14 @@ public abstract class ClassMapping implements IClassMapping
monitor.worked();
// Write attribute table always (even without modeled attributes!)
- writeAttributes(accessor, (InternalCDORevision)revision);
+ writeAttributes(accessor, revision);
monitor.worked();
// Write reference tables only if they exist
if (referenceMappings != null)
{
- writeReferences(accessor, (InternalCDORevision)revision);
+ writeReferences(accessor, revision);
}
monitor.worked(7);
@@ -385,7 +414,8 @@ public abstract class ClassMapping implements IClassMapping
deleteRevision(accessor, id, monitor.fork(1));
}
}
- // TODO handle !hasFullRevisionInfo() case
+
+ // TODO Handle !hasFullRevisionInfo() case
}
finally
{
@@ -460,22 +490,42 @@ public abstract class ClassMapping implements IClassMapping
}
}
- public boolean readRevision(IDBStoreAccessor accessor, CDORevision revision, int referenceChunk)
+ public void writeRevisionDelta(IDBStoreAccessor accessor, InternalCDORevisionDelta delta, long created,
+ OMMonitor monitor)
+ {
+ monitor.begin();
+ Async async = monitor.forkAsync();
+
+ try
+ {
+ FeatureDeltaWriter writer = deltaWriter.get();
+ writer.process(accessor, delta, created);
+ }
+ finally
+ {
+ async.stop();
+ monitor.done();
+ }
+ }
+
+ public boolean readRevision(IDBStoreAccessor accessor, InternalCDORevision revision, int referenceChunk)
{
String where = mappingStrategy.createWhereClause(CDORevision.UNSPECIFIED_DATE);
- return readRevision(accessor, (InternalCDORevision)revision, where, referenceChunk);
+ return readRevision(accessor, revision, where, referenceChunk);
}
- public boolean readRevisionByTime(IDBStoreAccessor accessor, CDORevision revision, long timeStamp, int referenceChunk)
+ public boolean readRevisionByTime(IDBStoreAccessor accessor, InternalCDORevision revision, long timeStamp,
+ int referenceChunk)
{
String where = mappingStrategy.createWhereClause(timeStamp);
- return readRevision(accessor, (InternalCDORevision)revision, where, referenceChunk);
+ return readRevision(accessor, revision, where, referenceChunk);
}
- public boolean readRevisionByVersion(IDBStoreAccessor accessor, CDORevision revision, int version, int referenceChunk)
+ public boolean readRevisionByVersion(IDBStoreAccessor accessor, InternalCDORevision revision, int version,
+ int referenceChunk)
{
String where = CDODBSchema.ATTRIBUTES_VERSION + "=" + version;
- return readRevision(accessor, (InternalCDORevision)revision, where, referenceChunk);
+ return readRevision(accessor, revision, where, referenceChunk);
}
/**
@@ -517,4 +567,138 @@ public abstract class ClassMapping implements IClassMapping
referenceMapping.readReference(accessor, revision, referenceChunk);
}
}
+
+ private class FeatureDeltaWriter implements CDOFeatureDeltaVisitor
+ {
+ private CDOID id;
+
+ private int newVersion;
+
+ private long created;
+
+ private IDBStoreAccessor accessor;
+
+ private boolean updateContainer = false;
+
+ private List<Pair<IAttributeMapping, Object>> attributeChanges;
+
+ private int newContainingFeatureID;
+
+ private CDOID newContainerID;
+
+ private CDOID newResourceID;
+
+ public FeatureDeltaWriter()
+ {
+ attributeChanges = new ArrayList<Pair<IAttributeMapping, Object>>();
+ }
+
+ protected void reset()
+ {
+ attributeChanges.clear();
+ updateContainer = false;
+ }
+
+ public void process(IDBStoreAccessor a, CDORevisionDelta d, long c)
+ {
+ // set context
+
+ reset();
+ id = d.getID();
+ newVersion = d.getDirtyVersion();
+ created = c;
+ accessor = a;
+
+ // process revision delta tree
+ d.accept(this);
+
+ // update attributes
+ if (updateContainer)
+ {
+ accessor.getJDBCDelegate().updateAttributes(id, newVersion, created, newContainerID, newContainingFeatureID,
+ newResourceID, attributeChanges, ClassMapping.this);
+ }
+ else
+ {
+ accessor.getJDBCDelegate().updateAttributes(id, newVersion, created, attributeChanges, ClassMapping.this);
+ }
+
+ // update version number of all references to current version
+ if (referenceMappings != null)
+ {
+ for (IReferenceMapping referenceMapping : getReferenceMappings())
+ {
+ referenceMapping.updateReferenceVersion(accessor, id, newVersion);
+ }
+ }
+ }
+
+ public void visit(CDOMoveFeatureDelta delta)
+ {
+ getReferenceMapping(delta.getFeature()).moveReferenceEntry(accessor, id, newVersion, delta.getOldPosition(),
+ delta.getNewPosition());
+ }
+
+ public void visit(CDOSetFeatureDelta delta)
+ {
+ if (delta.getFeature().isMany())
+ {
+ IReferenceMapping rm = getReferenceMapping(delta.getFeature());
+ if (rm == null)
+ {
+ throw new IllegalArgumentException("ReferenceMapping for " + delta.getFeature() + " is null!");
+ }
+ rm.updateReference(accessor, id, newVersion, delta.getIndex(), (CDOID)delta.getValue());
+ }
+ else
+ {
+ IAttributeMapping am = getAttributeMapping(delta.getFeature());
+ if (am == null)
+ {
+ throw new IllegalArgumentException("AttributeMapping for " + delta.getFeature() + " is null!");
+ }
+ attributeChanges.add(new Pair<IAttributeMapping, Object>(am, delta.getValue()));
+ }
+ }
+
+ public void visit(CDOUnsetFeatureDelta delta)
+ {
+ // TODO Correct this when DBStore implements unsettable features
+ // see Bugs 259868 and 263010
+ IAttributeMapping am = getAttributeMapping(delta.getFeature());
+ attributeChanges.add(new Pair<IAttributeMapping, Object>(am, null));
+ }
+
+ public void visit(CDOListFeatureDelta delta)
+ {
+ for (CDOFeatureDelta listChange : delta.getListChanges())
+ {
+ listChange.accept(this);
+ }
+ }
+
+ public void visit(CDOClearFeatureDelta delta)
+ {
+ getReferenceMapping(delta.getFeature()).deleteReference(accessor, id);
+ }
+
+ public void visit(CDOAddFeatureDelta delta)
+ {
+ getReferenceMapping(delta.getFeature()).insertReferenceEntry(accessor, id, newVersion, delta.getIndex(),
+ (CDOID)delta.getValue());
+ }
+
+ public void visit(CDORemoveFeatureDelta delta)
+ {
+ getReferenceMapping(delta.getFeature()).removeReferenceEntry(accessor, id, newVersion, delta.getIndex());
+ }
+
+ public void visit(CDOContainerFeatureDelta delta)
+ {
+ newContainingFeatureID = delta.getContainerFeatureID();
+ newContainerID = (CDOID)delta.getContainerID();
+ newResourceID = delta.getResourceID();
+ updateContainer = true;
+ }
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/FeatureMapping.java
index cbfc62b38e..58bfd68d77 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/FeatureMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/FeatureMapping.java
@@ -8,12 +8,12 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
-
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
*/
@@ -21,9 +21,9 @@ public class FeatureMapping
{
private ClassMapping classMapping;
- private CDOFeature feature;
+ private EStructuralFeature feature;
- public FeatureMapping(ClassMapping classMapping, CDOFeature feature)
+ public FeatureMapping(ClassMapping classMapping, EStructuralFeature feature)
{
this.classMapping = classMapping;
this.feature = feature;
@@ -34,7 +34,7 @@ public class FeatureMapping
return classMapping;
}
- public CDOFeature getFeature()
+ public EStructuralFeature getFeature()
{
return feature;
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalClassMapping.java
index 89ac0a21a2..5fe2d48312 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalClassMapping.java
@@ -8,28 +8,29 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.IPackageManager;
-import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
*/
public class HorizontalClassMapping extends ClassMapping
{
- public HorizontalClassMapping(HorizontalMappingStrategy mappingStrategy, CDOClass cdoClass)
+ public HorizontalClassMapping(HorizontalMappingStrategy mappingStrategy, EClass eClass)
{
- super(mappingStrategy, cdoClass, cdoClass.getAllFeatures());
+ super(mappingStrategy, eClass, CDOModelUtil.getAllPersistentFeatures(eClass));
}
@Override
@@ -39,7 +40,7 @@ public class HorizontalClassMapping extends ClassMapping
}
@Override
- public void writeRevision(IDBStoreAccessor accessor, CDORevision revision, OMMonitor monitor)
+ public void writeRevision(IDBStoreAccessor accessor, InternalCDORevision revision, OMMonitor monitor)
{
try
{
@@ -48,7 +49,7 @@ public class HorizontalClassMapping extends ClassMapping
if (revision.getVersion() == 1)
{
CDOID id = revision.getID();
- CDOClass type = revision.getCDOClass();
+ EClass type = revision.getEClass();
getMappingStrategy().getObjectTypeCache().putObjectType(accessor, id, type);
}
@@ -64,13 +65,8 @@ public class HorizontalClassMapping extends ClassMapping
@Override
protected void checkDuplicateResources(IDBStoreAccessor accessor, CDORevision revision) throws IllegalStateException
{
- IRepository repository = getMappingStrategy().getStore().getRepository();
- IPackageManager packageManager = repository.getPackageManager();
- CDOResourceNodeClass resourceNodeClass = packageManager.getCDOResourcePackage().getCDOResourceNodeClass();
- CDOFeature resourceNameFeature = resourceNodeClass.getCDONameFeature();
-
CDOID folderID = (CDOID)revision.data().getContainerID();
- String name = (String)revision.data().get(resourceNameFeature, 0);
+ String name = (String)revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0);
CDOID existingID = accessor.readResourceID(folderID, name, revision.getCreated());
if (existingID != null && !existingID.equals(revision.getID()))
@@ -80,9 +76,9 @@ public class HorizontalClassMapping extends ClassMapping
}
@Override
- public Object createReferenceMappingKey(CDOFeature cdoFeature)
+ public Object createReferenceMappingKey(EStructuralFeature feature)
{
- return new Pair<CDOClass, CDOFeature>(getCDOClass(), cdoFeature);
+ return new Pair<EClass, EStructuralFeature>(getEClass(), feature);
}
public boolean hasFullRevisionInfo()
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java
index a3135671b7..8b9da80ff1 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/HorizontalMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java
@@ -8,31 +8,27 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.server.IPackageManager;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IObjectTypeCache;
-import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.ObjectTypeCache;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.net4j.db.DBException;
-import org.eclipse.net4j.db.DBUtil;
-import org.eclipse.net4j.db.ddl.IDBField;
-import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
import java.util.ArrayList;
import java.util.List;
@@ -41,8 +37,6 @@ import java.util.List;
*/
public class HorizontalMappingStrategy extends MappingStrategy
{
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HorizontalMappingStrategy.class);
-
private IObjectTypeCache objectTypeCache;
public HorizontalMappingStrategy()
@@ -64,78 +58,83 @@ public class HorizontalMappingStrategy extends MappingStrategy
this.objectTypeCache = objectTypeCache;
}
- public CDOClassRef readObjectType(IDBStoreAccessor accessor, CDOID id)
+ public CDOClassifierRef readObjectType(IDBStoreAccessor accessor, CDOID id)
{
return objectTypeCache.getObjectType(accessor, id);
}
- protected final CDOClassRef readObjectTypeFromClassesWithObjectInfo(IDBStoreAccessor accessor, CDOID id)
+ /**
+ * TODO Stefan: Is this method still needed?
+ */
+ @Deprecated
+ protected final CDOClassifierRef readObjectTypeFromClassesWithObjectInfo(IDBStoreAccessor accessor, CDOID id)
{
- String prefix = "SELECT DISTINCT " + CDODBSchema.ATTRIBUTES_CLASS + " FROM ";
- String suffix = " WHERE " + CDODBSchema.ATTRIBUTES_ID + "=" + id;
- for (CDOClass cdoClass : getClassesWithObjectInfo())
- {
- IClassMapping mapping = getClassMapping(cdoClass);
- if (mapping != null)
- {
- IDBTable table = mapping.getTable();
- if (table != null)
- {
- String sql = prefix + table + suffix;
- if (TRACER.isEnabled())
- {
- TRACER.trace(sql);
- }
-
- ResultSet resultSet = null;
-
- try
- {
- resultSet = accessor.getJDBCDelegate().getStatement().executeQuery(sql);
- if (resultSet.next())
- {
- int classID = resultSet.getInt(1);
- return getClassRef(accessor, classID);
- }
- }
- catch (SQLException ex)
- {
- throw new DBException(ex);
- }
- finally
- {
- DBUtil.close(resultSet);
- }
- }
- }
- }
+ // String prefix = "SELECT DISTINCT " + CDODBSchema.ATTRIBUTES_CLASS + " FROM ";
+ // String suffix = " WHERE " + CDODBSchema.ATTRIBUTES_ID + "=" + id;
+ // for (EClass eClass : getClassesWithObjectInfo())
+ // {
+ // IClassMapping mapping = getClassMapping(eClass);
+ // if (mapping != null)
+ // {
+ // IDBTable table = mapping.getTable();
+ // if (table != null)
+ // {
+ // String sql = prefix + table + suffix;
+ // if (TRACER.isEnabled())
+ // {
+ // TRACER.trace(sql);
+ // }
+ //
+ // ResultSet resultSet = null;
+ //
+ // try
+ // {
+ // resultSet = accessor.getJDBCDelegate().getStatement().executeQuery(sql);
+ // if (resultSet.next())
+ // {
+ // int classID = resultSet.getInt(1);
+ // return getClassifierRef(accessor, classID);
+ // }
+ // }
+ // catch (SQLException ex)
+ // {
+ // throw new DBException(ex);
+ // }
+ // finally
+ // {
+ // DBUtil.close(resultSet);
+ // }
+ // }
+ // }
+ // }
throw new DBException("No object with id " + id);
}
@Override
- protected IClassMapping createClassMapping(CDOClass cdoClass)
+ protected IClassMapping createClassMapping(EClass eClass)
{
- if (cdoClass.isAbstract())
+ if (eClass.isAbstract() || eClass.isInterface())
{
return null;
}
- return new HorizontalClassMapping(this, cdoClass);
+ return new HorizontalClassMapping(this, eClass);
}
@Override
- protected List<CDOClass> getClassesWithObjectInfo()
+ protected List<EClass> getClassesWithObjectInfo()
{
- List<CDOClass> result = new ArrayList<CDOClass>();
- IPackageManager packageManager = getStore().getRepository().getPackageManager();
- for (CDOPackage cdoPackage : packageManager.getPackages())
+ List<EClass> result = new ArrayList<EClass>();
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)getStore().getRepository()
+ .getPackageRegistry();
+ for (EPackage ePackage : packageRegistry.getEPackages())
{
- for (CDOClass cdoClass : cdoPackage.getConcreteClasses())
+ for (EClass eClass : EMFUtil.getConcreteClasses(ePackage))
{
- if (!cdoClass.isRoot())
+ // if (!CDOModelUtil.isRoot(eClass))
{
- result.add(cdoClass);
+ result.add(eClass);
}
}
}
@@ -157,13 +156,12 @@ public class HorizontalMappingStrategy extends MappingStrategy
@Override
protected String[] getResourceQueries(CDOID folderID, String name, boolean exactMatch)
{
- CDOResourcePackage resourcePackage = getStore().getRepository().getPackageManager().getCDOResourcePackage();
String[] queries = new String[2];
- IClassMapping resourceFolderMapping = getClassMapping(resourcePackage.getCDOResourceFolderClass());
+ IClassMapping resourceFolderMapping = getClassMapping(EresourcePackage.eINSTANCE.getCDOResourceFolder());
queries[0] = getResourceQuery(folderID, name, exactMatch, resourceFolderMapping);
- IClassMapping resourceMapping = getClassMapping(resourcePackage.getCDOResourceClass());
+ IClassMapping resourceMapping = getClassMapping(EresourcePackage.eINSTANCE.getCDOResource());
queries[1] = getResourceQuery(folderID, name, exactMatch, resourceMapping);
return queries;
@@ -171,17 +169,11 @@ public class HorizontalMappingStrategy extends MappingStrategy
protected String getResourceQuery(CDOID folderID, String name, boolean exactMatch, IClassMapping classMapping)
{
- CDOResourcePackage resourcePackage = getStore().getRepository().getPackageManager().getCDOResourcePackage();
- CDOResourceNodeClass resourceNodeClass = resourcePackage.getCDOResourceNodeClass();
-
- IDBTable table = classMapping.getTable();
- IDBField nameField = classMapping.getAttributeMapping(resourceNodeClass.getCDONameFeature()).getField();
-
StringBuilder builder = new StringBuilder();
builder.append("SELECT ");
builder.append(CDODBSchema.ATTRIBUTES_ID);
builder.append(" FROM ");
- builder.append(table);
+ builder.append(classMapping.getTable());
builder.append(" WHERE ");
builder.append(CDODBSchema.ATTRIBUTES_CONTAINER);
builder.append("=");
@@ -189,7 +181,7 @@ public class HorizontalMappingStrategy extends MappingStrategy
if (exactMatch || name != null)
{
builder.append(" AND ");
- builder.append(nameField);
+ builder.append(classMapping.getAttributeMapping(EresourcePackage.eINSTANCE.getCDOResourceNode_Name()).getField());
if (exactMatch)
{
if (name == null)
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/MappingStrategy.java
index e404614a81..fe5e0d6585 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/MappingStrategy.java
@@ -9,24 +9,21 @@
* Eike Stepper - initial API and implementation
* Victor Roldan Betancort - http://bugs.eclipse.org/208689
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceFolderClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreAccessor.QueryResourcesContext;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.ObjectIDIterator;
+import org.eclipse.emf.cdo.server.internal.db.ToMany;
+import org.eclipse.emf.cdo.server.internal.db.ToOne;
import org.eclipse.emf.cdo.server.internal.db.bundle.OM;
import org.eclipse.net4j.db.DBException;
@@ -39,21 +36,25 @@ import org.eclipse.net4j.util.collection.CloseableIterator;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* @author Eike Stepper
*/
public abstract class MappingStrategy extends Lifecycle implements IMappingStrategy
{
+ public static final String NAME_SEPARATOR = "_";
+
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, MappingStrategy.class);
private IDBStore store;
@@ -62,7 +63,7 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
private Map<Object, IDBTable> referenceTables = new HashMap<Object, IDBTable>();
- private Map<Integer, CDOClassRef> classRefs = new HashMap<Integer, CDOClassRef>();
+ private Map<EClass, IClassMapping> classMappings = new HashMap<EClass, IClassMapping>();
public MappingStrategy()
{
@@ -140,107 +141,72 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
return referenceTables;
}
- public CDOClassRef getClassRef(IDBStoreAccessor accessor, int classID)
+ public IClassMapping getClassMapping(EClass eClass)
{
- CDOClassRef classRef = classRefs.get(classID);
- if (classRef == null)
+ synchronized (classMappings)
{
- switch (classID)
- {
- case ServerInfo.CDO_RESOURCE_NODE_CLASS_DBID:
- {
- CDOResourcePackage resourcePackage = store.getRepository().getPackageManager().getCDOResourcePackage();
- classRef = resourcePackage.getCDOResourceNodeClass().createClassRef();
- break;
- }
-
- case ServerInfo.CDO_RESOURCE_FOLDER_CLASS_DBID:
+ IClassMapping mapping = classMappings.get(eClass);
+ if (mapping == null)
{
- CDOResourcePackage resourcePackage = store.getRepository().getPackageManager().getCDOResourcePackage();
- classRef = resourcePackage.getCDOResourceFolderClass().createClassRef();
- break;
+ mapping = createClassMapping(eClass);
+ classMappings.put(eClass, mapping);
}
- case ServerInfo.CDO_RESOURCE_CLASS_DBID:
+ if (mapping == NoClassMapping.INSTANCE)
{
- CDOResourcePackage resourcePackage = store.getRepository().getPackageManager().getCDOResourcePackage();
- classRef = resourcePackage.getCDOResourceClass().createClassRef();
- break;
- }
-
- default:
- classRef = accessor.readClassRef(classID);
+ return null;
}
- classRefs.put(classID, classRef);
- }
-
- return classRef;
- }
-
- public IClassMapping getClassMapping(CDOClass cdoClass)
- {
- IClassMapping mapping = ClassServerInfo.getClassMapping(cdoClass);
- if (mapping == NoClassMapping.INSTANCE)
- {
- return null;
- }
-
- if (mapping == null)
- {
- mapping = createClassMapping(cdoClass);
- ClassServerInfo.setClassMapping(cdoClass, mapping == null ? NoClassMapping.INSTANCE : mapping);
+ return mapping;
}
-
- return mapping;
}
- public String getTableName(CDOPackage cdoPackage)
+ public String getTableName(EPackage ePackage)
{
- String name = isQualifiedNames() ? cdoPackage.getQualifiedName().replace('.', '_') : cdoPackage.getName();
- return getTableName(name, "P" + PackageServerInfo.getDBID(cdoPackage));
+ String name = isQualifiedNames() ? EMFUtil.getQualifiedName(ePackage, NAME_SEPARATOR) : ePackage.getName();
+ return getTableName(name, "P" + getStore().getMetaID(ePackage));
}
- public String getTableName(CDOClass cdoClass)
+ public String getTableName(EClass eClass)
{
- String name = isQualifiedNames() ? cdoClass.getQualifiedName().replace('.', '_') : cdoClass.getName();
- return getTableName(name, "C" + ClassServerInfo.getDBID(cdoClass));
+ String name = isQualifiedNames() ? EMFUtil.getQualifiedName(eClass, NAME_SEPARATOR) : eClass.getName();
+ return getTableName(name, "C" + getStore().getMetaID(eClass));
}
- public String getReferenceTableName(CDOClass cdoClass, CDOFeature cdoFeature)
+ public String getReferenceTableName(EClass eClass, EStructuralFeature feature)
{
- String name = isQualifiedNames() ? cdoClass.getQualifiedName().replace('.', '_') : cdoClass.getName();
- name += "_";
- name += cdoFeature.getName();
+ String name = isQualifiedNames() ? EMFUtil.getQualifiedName(eClass, NAME_SEPARATOR) : eClass.getName();
+ name += NAME_SEPARATOR;
+ name += feature.getName();
name += "_refs";
- return getTableName(name, "F" + FeatureServerInfo.getDBID(cdoFeature));
+ return getTableName(name, "F" + getStore().getMetaID(feature));
}
- public String getReferenceTableName(CDOClass cdoClass)
+ public String getReferenceTableName(EClass eClass)
{
- String name = isQualifiedNames() ? cdoClass.getQualifiedName().replace('.', '_') : cdoClass.getName();
+ String name = isQualifiedNames() ? EMFUtil.getQualifiedName(eClass, NAME_SEPARATOR) : eClass.getName();
name += "_refs";
- return getTableName(name, "F" + ClassServerInfo.getDBID(cdoClass));
+ return getTableName(name, "F" + getStore().getMetaID(eClass));
}
- public String getReferenceTableName(CDOPackage cdoPackage)
+ public String getReferenceTableName(EPackage ePackage)
{
- String name = isQualifiedNames() ? cdoPackage.getQualifiedName().replace('.', '_') : cdoPackage.getName();
+ String name = isQualifiedNames() ? EMFUtil.getQualifiedName(ePackage, NAME_SEPARATOR) : ePackage.getName();
name += "_refs";
- return getTableName(name, "F" + PackageServerInfo.getDBID(cdoPackage));
+ return getTableName(name, "F" + getStore().getMetaID(ePackage));
}
- public String getFieldName(CDOFeature cdoFeature)
+ public String getFieldName(EStructuralFeature feature)
{
- return getName(cdoFeature.getName(), "F" + FeatureServerInfo.getDBID(cdoFeature), getMaxFieldNameLength());
+ return getName(feature.getName(), "F" + getStore().getMetaID(feature), getMaxFieldNameLength());
}
private String getTableName(String name, String suffix)
{
String prefix = getTableNamePrefix();
- if (prefix.length() != 0 && !prefix.endsWith("_"))
+ if (prefix.length() != 0 && !prefix.endsWith(NAME_SEPARATOR))
{
- prefix += "_";
+ prefix += NAME_SEPARATOR;
}
return getName(prefix + name, suffix, getMaxTableNameLength());
@@ -256,7 +222,7 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
if (name.length() > maxLength || forceNamesWithID)
{
- suffix = "_" + suffix.replace('-', 'S');
+ suffix = NAME_SEPARATOR + suffix.replace('-', 'S');
int length = Math.min(name.length(), maxLength - suffix.length());
name = name.substring(0, length) + suffix;
}
@@ -291,8 +257,8 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
public final CloseableIterator<CDOID> readObjectIDs(final IDBStoreAccessor accessor)
{
- List<CDOClass> classes = getClassesWithObjectInfo();
- final Iterator<CDOClass> classIt = classes.iterator();
+ List<EClass> classes = getClassesWithObjectInfo();
+ final Iterator<EClass> classIt = classes.iterator();
return new ObjectIDIterator(this, accessor)
{
@Override
@@ -300,8 +266,8 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
{
while (classIt.hasNext())
{
- CDOClass cdoClass = classIt.next();
- IClassMapping mapping = getClassMapping(cdoClass);
+ EClass eClass = classIt.next();
+ IClassMapping mapping = getClassMapping(eClass);
if (mapping != null)
{
IDBTable table = mapping.getTable();
@@ -382,50 +348,10 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
protected abstract String[] getResourceQueries(CDOID folderID, String name, boolean exactMatch);
- public void mapResourceTables(IDBAdapter dbAdapter, Connection connection)
- {
- CDOResourcePackage resourcePackage = store.getRepository().getPackageManager().getCDOResourcePackage();
- CDOResourceNodeClass resourceNodeClass = resourcePackage.getCDOResourceNodeClass();
- CDOResourceFolderClass resourceFolderClass = resourcePackage.getCDOResourceFolderClass();
- CDOResourceClass resourceClass = resourcePackage.getCDOResourceClass();
-
- PackageServerInfo.setDBID(resourcePackage, ServerInfo.CDO_RESOURCE_PACKAGE_DBID);
- ClassServerInfo.setDBID(resourceNodeClass, ServerInfo.CDO_RESOURCE_NODE_CLASS_DBID);
- FeatureServerInfo.setDBID(resourceNodeClass.getCDOFolderFeature(), ServerInfo.CDO_FOLDER_FEATURE_DBID);
- FeatureServerInfo.setDBID(resourceNodeClass.getCDONameFeature(), ServerInfo.CDO_NAME_FEATURE_DBID);
- ClassServerInfo.setDBID(resourceFolderClass, ServerInfo.CDO_RESOURCE_FOLDER_CLASS_DBID);
- FeatureServerInfo.setDBID(resourceFolderClass.getCDONodesFeature(), ServerInfo.CDO_NODES_FEATURE_DBID);
- ClassServerInfo.setDBID(resourceClass, ServerInfo.CDO_RESOURCE_CLASS_DBID);
- FeatureServerInfo.setDBID(resourceClass.getCDOContentsFeature(), ServerInfo.CDO_CONTENTS_FEATURE_DBID);
-
- if (dbAdapter != null && connection != null)
- {
- Set<IDBTable> tables = new HashSet<IDBTable>();
- addResourceTables(resourceNodeClass, tables);
- addResourceTables(resourceFolderClass, tables);
- addResourceTables(resourceClass, tables);
-
- if (dbAdapter.createTables(tables, connection).size() != tables.size())
- {
- throw new DBException("Resource tables not completely created");
- }
- }
- }
-
- private void addResourceTables(CDOClass cdoClass, Set<IDBTable> tables)
- {
- IClassMapping mapping = getClassMapping(cdoClass);
- if (mapping != null)
- {
- Set<IDBTable> affectedTables = mapping.getAffectedTables();
- tables.addAll(affectedTables);
- }
- }
-
public long repairAfterCrash(IDBAdapter dbAdapter, Connection connection)
{
long maxCDOID = 0L;
- for (CDOClass idClass : getClassesWithObjectInfo())
+ for (EClass idClass : getClassesWithObjectInfo())
{
IClassMapping classMapping = getClassMapping(idClass);
IDBTable table = classMapping.getTable();
@@ -451,9 +377,9 @@ public abstract class MappingStrategy extends Lifecycle implements IMappingStrat
/**
* The implementation of this method must take care of creating a unique ids to prevent duplicate resource paths.
*/
- protected abstract IClassMapping createClassMapping(CDOClass cdoClass);
+ protected abstract IClassMapping createClassMapping(EClass eClass);
- protected abstract List<CDOClass> getClassesWithObjectInfo();
+ protected abstract List<EClass> getClassesWithObjectInfo();
@Override
protected void doBeforeActivate() throws Exception
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/NoClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/NoClassMapping.java
index 8bb97d4386..d6f286f2e7 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/NoClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/NoClassMapping.java
@@ -7,23 +7,26 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.db.IAttributeMapping;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
-import org.eclipse.emf.cdo.server.db.IFeatureMapping;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IAttributeMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IFeatureMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -44,7 +47,7 @@ public class NoClassMapping implements IClassMapping
return null;
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
return null;
}
@@ -64,7 +67,7 @@ public class NoClassMapping implements IClassMapping
return false;
}
- public IFeatureMapping getFeatureMapping(CDOFeature feature)
+ public IFeatureMapping getFeatureMapping(EStructuralFeature feature)
{
return null;
}
@@ -79,17 +82,17 @@ public class NoClassMapping implements IClassMapping
return null;
}
- public IAttributeMapping getAttributeMapping(CDOFeature feature)
+ public IAttributeMapping getAttributeMapping(EStructuralFeature feature)
{
return null;
}
- public IReferenceMapping getReferenceMapping(CDOFeature feature)
+ public IReferenceMapping getReferenceMapping(EStructuralFeature feature)
{
return null;
}
- public void writeRevision(IDBStoreAccessor accessor, CDORevision revision, OMMonitor monitor)
+ public void writeRevision(IDBStoreAccessor accessor, InternalCDORevision revision, OMMonitor monitor)
{
}
@@ -97,18 +100,25 @@ public class NoClassMapping implements IClassMapping
{
}
- public boolean readRevision(IDBStoreAccessor accessor, CDORevision revision, int referenceChunk)
+ public boolean readRevision(IDBStoreAccessor accessor, InternalCDORevision revision, int referenceChunk)
{
return false;
}
- public boolean readRevisionByTime(IDBStoreAccessor accessor, CDORevision revision, long timeStamp, int referenceChunk)
+ public boolean readRevisionByTime(IDBStoreAccessor accessor, InternalCDORevision revision, long timeStamp,
+ int referenceChunk)
{
return false;
}
- public boolean readRevisionByVersion(IDBStoreAccessor accessor, CDORevision revision, int version, int referenceChunk)
+ public boolean readRevisionByVersion(IDBStoreAccessor accessor, InternalCDORevision revision, int version,
+ int referenceChunk)
{
return false;
}
+
+ public void writeRevisionDelta(IDBStoreAccessor accessor, InternalCDORevisionDelta delta, long created,
+ OMMonitor monitor)
+ {
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ReferenceMapping.java
index 9e3b2b3fe2..f3bc8f4cd7 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ReferenceMapping.java
@@ -7,20 +7,19 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
import org.eclipse.emf.cdo.server.db.IDBStoreChunkReader;
import org.eclipse.emf.cdo.server.db.IJDBCDelegate;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
+import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
+import org.eclipse.emf.cdo.server.internal.db.ToMany;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.db.DBType;
@@ -28,6 +27,10 @@ import org.eclipse.net4j.db.ddl.IDBField;
import org.eclipse.net4j.db.ddl.IDBTable;
import org.eclipse.net4j.db.ddl.IDBIndex.Type;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.List;
import java.util.Map;
@@ -42,11 +45,11 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
private boolean withFeature;
- public ReferenceMapping(ClassMapping classMapping, CDOFeature feature, ToMany toMany)
+ public ReferenceMapping(ClassMapping classMapping, EStructuralFeature feature, ToMany toMany)
{
super(classMapping, feature);
this.toMany = toMany;
- mapReference(classMapping.getCDOClass(), feature);
+ mapReference(classMapping.getEClass(), feature);
}
public IDBTable getTable()
@@ -54,33 +57,12 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
return table;
}
- public final void writeReference(IDBStoreAccessor accessor, CDORevision revision)
- {
- IJDBCDelegate jdbcDelegate = accessor.getJDBCDelegate();
-
- int idx = 0;
- for (Object element : ((InternalCDORevision)revision).getList(getFeature()))
- {
- jdbcDelegate.insertReference(revision, idx++, (CDOID)element, this);
- }
- }
-
- public void deleteReference(IDBStoreAccessor accessor, CDOID id)
- {
- accessor.getJDBCDelegate().deleteReferences(id, this);
- }
-
- public final void readReference(IDBStoreAccessor accessor, CDORevision revision, int referenceChunk)
- {
- accessor.getJDBCDelegate().selectRevisionReferences(revision, this, referenceChunk);
- }
-
- public final void readChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks, String where)
+ public boolean isWithFeature()
{
- chunkReader.getAccessor().getJDBCDelegate().selectRevisionReferenceChunks(chunkReader, chunks, this, where);
+ return withFeature;
}
- protected void mapReference(CDOClass cdoClass, CDOFeature cdoFeature)
+ protected void mapReference(EClass eClass, EStructuralFeature feature)
{
MappingStrategy mappingStrategy = getClassMapping().getMappingStrategy();
switch (toMany)
@@ -88,21 +70,21 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
case PER_REFERENCE:
{
withFeature = false;
- String tableName = mappingStrategy.getReferenceTableName(cdoClass, cdoFeature);
- Object referenceMappingKey = getReferenceMappingKey(cdoFeature);
+ String tableName = mappingStrategy.getReferenceTableName(eClass, feature);
+ Object referenceMappingKey = getReferenceMappingKey(feature);
table = mapReferenceTable(referenceMappingKey, tableName);
break;
}
case PER_CLASS:
withFeature = true;
- table = mapReferenceTable(cdoClass, mappingStrategy.getReferenceTableName(cdoClass));
+ table = mapReferenceTable(eClass, mappingStrategy.getReferenceTableName(eClass));
break;
case PER_PACKAGE:
withFeature = true;
- CDOPackage cdoPackage = cdoClass.getContainingPackage();
- table = mapReferenceTable(cdoPackage, mappingStrategy.getReferenceTableName(cdoPackage));
+ EPackage ePackage = eClass.getEPackage();
+ table = mapReferenceTable(ePackage, mappingStrategy.getReferenceTableName(ePackage));
break;
case PER_REPOSITORY:
@@ -116,9 +98,9 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
}
}
- protected Object getReferenceMappingKey(CDOFeature cdoFeature)
+ protected Object getReferenceMappingKey(EStructuralFeature feature)
{
- return getClassMapping().createReferenceMappingKey(cdoFeature);
+ return getClassMapping().createReferenceMappingKey(feature);
}
protected IDBTable mapReferenceTable(Object key, String tableName)
@@ -139,7 +121,7 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
IDBTable table = getClassMapping().addTable(tableName);
if (withFeature)
{
- table.addField(CDODBSchema.REFERENCES_FEATURE, DBType.INTEGER);
+ table.addField(CDODBSchema.REFERENCES_FEATURE, DBType.BIGINT);
}
IDBField sourceField = table.addField(CDODBSchema.REFERENCES_SOURCE, DBType.BIGINT);
@@ -152,8 +134,59 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin
return table;
}
- public boolean isWithFeature()
+ public final void writeReference(IDBStoreAccessor accessor, InternalCDORevision revision)
{
- return withFeature;
+ int idx = 0;
+ for (Object element : (revision).getList(getFeature()))
+ {
+ writeReferenceEntry(accessor, revision.getID(), revision.getVersion(), idx++, (CDOID)element);
+ }
+ }
+
+ public final void writeReferenceEntry(IDBStoreAccessor accessor, CDOID id, int version, int idx, CDOID targetId)
+ {
+ IJDBCDelegate jdbcDelegate = accessor.getJDBCDelegate();
+ jdbcDelegate.insertReference(id, version, idx++, targetId, this);
}
+
+ public void insertReferenceEntry(IDBStoreAccessor accessor, CDOID id, int newVersion, int index, CDOID value)
+ {
+ accessor.getJDBCDelegate().insertReferenceRow(id, newVersion, index, value, this);
+ }
+
+ public void moveReferenceEntry(IDBStoreAccessor accessor, CDOID id, int newVersion, int oldPosition, int newPosition)
+ {
+ accessor.getJDBCDelegate().moveReferenceRow(id, newVersion, oldPosition, newPosition, this);
+ }
+
+ public void removeReferenceEntry(IDBStoreAccessor accessor, CDOID id, int index, int newVersion)
+ {
+ accessor.getJDBCDelegate().removeReferenceRow(id, index, newVersion, this);
+ }
+
+ public void updateReference(IDBStoreAccessor accessor, CDOID id, int newVersion, int index, CDOID value)
+ {
+ accessor.getJDBCDelegate().updateReference(id, newVersion, index, value, this);
+ }
+
+ public void updateReferenceVersion(IDBStoreAccessor accessor, CDOID id, int newVersion)
+ {
+ accessor.getJDBCDelegate().updateReferenceVersion(id, newVersion, this);
+ }
+
+ public void deleteReference(IDBStoreAccessor accessor, CDOID id)
+ {
+ accessor.getJDBCDelegate().deleteReferences(id, this);
+ }
+
+ public final void readReference(IDBStoreAccessor accessor, InternalCDORevision revision, int referenceChunk)
+ {
+ accessor.getJDBCDelegate().selectRevisionReferences(revision, this, referenceChunk);
+ }
+
+ public final void readChunks(IDBStoreChunkReader chunkReader, List<Chunk> chunks, String where)
+ {
+ chunkReader.getAccessor().getJDBCDelegate().selectRevisionReferenceChunks(chunkReader, chunks, this, where);
+ }
+
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/RootClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/RootClassMapping.java
index 9e3db1bd6c..ac16396199 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/RootClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/RootClassMapping.java
@@ -8,12 +8,13 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
-import org.eclipse.emf.cdo.common.model.core.CDOObjectClass;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.ecore.EcorePackage;
+
/**
* @author Eike Stepper
*/
@@ -21,7 +22,7 @@ public class RootClassMapping extends ClassMapping
{
public RootClassMapping(VerticalMappingStrategy mappingStrategy)
{
- super(mappingStrategy, getRootClass(mappingStrategy), null);
+ super(mappingStrategy, EcorePackage.eINSTANCE.getEObject(), null);
initTable(getTable(), true);
}
@@ -39,12 +40,6 @@ public class RootClassMapping extends ClassMapping
@Override
protected void checkDuplicateResources(IDBStoreAccessor accessor, CDORevision revision) throws IllegalStateException
{
- // TODO: implement RootClassMapping.checkDuplicateResources(accessor, revision)
throw new UnsupportedOperationException();
}
-
- private static CDOObjectClass getRootClass(VerticalMappingStrategy mappingStrategy)
- {
- return mappingStrategy.getStore().getRepository().getPackageManager().getCDOCorePackage().getCDOObjectClass();
- }
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ToOneReferenceMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ToOneReferenceMapping.java
index c64f13ac07..958509e91b 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ToOneReferenceMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/ToOneReferenceMapping.java
@@ -8,25 +8,26 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Eike Stepper
*/
public class ToOneReferenceMapping extends AttributeMapping.AMObject
{
- public ToOneReferenceMapping(ClassMapping classMapping, CDOFeature feature)
+ public ToOneReferenceMapping(ClassMapping classMapping, EStructuralFeature feature)
{
super(classMapping, feature);
}
@Override
- public Long getRevisionValue(CDORevision revision)
+ public Long getRevisionValue(InternalCDORevision revision)
{
CDOID id = (CDOID)super.getRevisionValue(revision);
return CDOIDUtil.getLong(id);
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalClassMapping.java
index 1ac98ab0c1..7fdd2d4995 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalClassMapping.java
@@ -8,15 +8,17 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.ArrayList;
import java.util.List;
@@ -27,10 +29,10 @@ public class VerticalClassMapping extends ClassMapping
{
private List<IClassMapping> superMappings;
- public VerticalClassMapping(VerticalMappingStrategy mappingStrategy, CDOClass cdoClass)
+ public VerticalClassMapping(VerticalMappingStrategy mappingStrategy, EClass eClass)
{
- super(mappingStrategy, cdoClass, cdoClass.getFeatures());
- for (CDOClass superType : cdoClass.getSuperTypes())
+ super(mappingStrategy, eClass, null);
+ for (EClass superType : eClass.getESuperTypes())
{
IClassMapping superMapping = mappingStrategy.getClassMapping(superType);
if (superMapping != null)
@@ -62,7 +64,7 @@ public class VerticalClassMapping extends ClassMapping
}
@Override
- public void writeRevision(IDBStoreAccessor accessor, CDORevision revision, OMMonitor monitor)
+ public void writeRevision(IDBStoreAccessor accessor, InternalCDORevision revision, OMMonitor monitor)
{
if (superMappings != null)
{
@@ -89,7 +91,6 @@ public class VerticalClassMapping extends ClassMapping
@Override
protected void checkDuplicateResources(IDBStoreAccessor accessor, CDORevision revision) throws IllegalStateException
{
- // TODO: implement VerticalClassMapping.checkDuplicateResources(accessor, revision)
throw new UnsupportedOperationException();
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java
index 4583a007e4..34dd89aed3 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/VerticalMappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java
@@ -8,13 +8,14 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server.internal.db;
+package org.eclipse.emf.cdo.server.internal.db.mapping;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+
+import org.eclipse.emf.ecore.EClass;
import java.util.Collections;
import java.util.List;
@@ -46,27 +47,26 @@ public class VerticalMappingStrategy extends MappingStrategy
return rootClassMapping;
}
- public CDOClassRef readObjectType(IDBStoreAccessor accessor, CDOID id)
+ public CDOClassifierRef readObjectType(IDBStoreAccessor accessor, CDOID id)
{
throw new UnsupportedOperationException();
}
@Override
- protected IClassMapping createClassMapping(CDOClass cdoClass)
+ protected IClassMapping createClassMapping(EClass eClass)
{
- return new VerticalClassMapping(this, cdoClass);
+ return new VerticalClassMapping(this, eClass);
}
@Override
- protected List<CDOClass> getClassesWithObjectInfo()
+ protected List<EClass> getClassesWithObjectInfo()
{
- return Collections.singletonList(rootClassMapping.getCDOClass());
+ return Collections.singletonList(rootClassMapping.getEClass());
}
@Override
protected String[] getResourceQueries(CDOID folderID, String name, boolean exactMatch)
{
- // TODO: implement VerticalMappingStrategy.getResourceQueries(folderID, name, exactMatch)
throw new UnsupportedOperationException();
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/internal/teneo/TeneoHibernateMappingProvider.java b/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/internal/teneo/TeneoHibernateMappingProvider.java
index 5ca4849b33..9969aa731f 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/internal/teneo/TeneoHibernateMappingProvider.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/internal/teneo/TeneoHibernateMappingProvider.java
@@ -11,7 +11,6 @@
*/
package org.eclipse.emf.cdo.server.hibernate.internal.teneo;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.server.hibernate.internal.teneo.bundle.OM;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateMappingProvider;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore;
@@ -41,7 +40,7 @@ import java.util.List;
import java.util.Properties;
/**
- * Uses the ecore string in the cdoPackages of the store to generate a mapping.
+ * Uses the ecore string in the ePackages of the store to generate a mapping.
*
* @author Martin Taal
* @author Eike Stepper
@@ -101,14 +100,14 @@ public class TeneoHibernateMappingProvider extends HibernateMappingProvider
rs.getPackageRegistry().put(XMLTypePackage.eNS_URI, XMLTypePackage.eINSTANCE);
rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new EcoreResourceFactoryImpl());
- for (CDOPackage cdoPackage : getHibernateStore().getPackageHandler().getCDOPackages())
+ for (EPackage ePackage : getHibernateStore().getPackageHandler().getEPackages())
{
if (TRACER.isEnabled())
{
- TRACER.trace("Using cdoPackage : " + cdoPackage.getName() + " - " + cdoPackage.getPackageURI());
+ TRACER.trace("Using ePackage : " + ePackage.getName() + " - " + ePackage.getNsURI());
}
- final String ecoreStr = cdoPackage.getEcore();
+ final String ecoreStr = ePackage.getEcore();
if (ecoreStr == null)
{
// happens at initialization time
@@ -119,7 +118,7 @@ public class TeneoHibernateMappingProvider extends HibernateMappingProvider
final ByteArrayInputStream bis = new ByteArrayInputStream(ecoreStr.getBytes());
// fool the resourceset by passing a fake uri
- final URI epackageURI = URI.createURI(cdoPackage.getPackageURI());
+ final URI epackageURI = URI.createURI(ePackage.getNsURI());
final Resource resource = rs.createResource(epackageURI);
try
{
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml b/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml
index 4825332287..55ecfe2266 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml
@@ -4,7 +4,7 @@
<class entity-name="CDOResourceNode" abstract="false" lazy="false"
discriminator-value="cdoresourcenode" table="`cdo_resources_structure`">
<meta attribute="eclassName">CDOResourceNode</meta>
- <meta attribute="epackage">http://www.eclipse.org/emf/CDO/resource/2.0.0</meta>
+ <meta attribute="epackage">http://www.eclipse.org/emf/CDO/Eresource/2.0.0</meta>
<tuplizer entity-mode="pojo"
class="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionTuplizer" />
<tuplizer entity-mode="dynamic-map"
@@ -32,7 +32,7 @@
<subclass entity-name="CDOResourceFolder" abstract="false"
lazy="false" discriminator-value="cdoresourcefolder">
<meta attribute="eclassName">CDOResourceFolder</meta>
- <meta attribute="epackage">http://www.eclipse.org/emf/CDO/resource/2.0.0</meta>
+ <meta attribute="epackage">http://www.eclipse.org/emf/CDO/Eresource/2.0.0</meta>
<list name="nodes" lazy="true" cascade="merge, persist, save-update, refresh, lock, evict, replicate">
<key column="folderid" />
<list-index />
@@ -42,7 +42,7 @@
<subclass entity-name="CDOResource" abstract="false" lazy="false"
discriminator-value="cdoresource">
<meta attribute="eclassName">CDOResource</meta>
- <meta attribute="epackage">http://www.eclipse.org/emf/CDO/resource/2.0.0</meta>
+ <meta attribute="epackage">http://www.eclipse.org/emf/CDO/Eresource/2.0.0</meta>
<list name="contents" lazy="true" cascade="all,delete-orphan">
<key />
<list-index />
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/hibernate/IHibernateStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/hibernate/IHibernateStoreAccessor.java
index d3949e6bfb..83d79c7ab5 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/hibernate/IHibernateStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/hibernate/IHibernateStoreAccessor.java
@@ -10,9 +10,10 @@
*/
package org.eclipse.emf.cdo.server.hibernate;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreAccessor;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.hibernate.Session;
@@ -26,7 +27,7 @@ public interface IHibernateStoreAccessor extends IStoreAccessor
/**
* @since 2.0
*/
- public IHibernateStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature);
+ public IHibernateStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature);
public Session getHibernateSession();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java
index 00b224f706..fce59a8a35 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java
@@ -12,8 +12,9 @@
package org.eclipse.emf.cdo.server.internal.hibernate;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.IStoreAccessor.CommitContext;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import java.util.HashMap;
@@ -27,16 +28,16 @@ public class HibernateCommitContext
{
private CommitContext commitContext;
- private HashMap<CDOID, CDORevision> dirtyObjects = null;
+ private HashMap<CDOID, InternalCDORevision> dirtyObjects = null;
- private HashMap<CDOID, CDORevision> newObjects = null;
+ private HashMap<CDOID, InternalCDORevision> newObjects = null;
- public CommitContext getCommitContext()
+ public IStoreAccessor.CommitContext getCommitContext()
{
return commitContext;
}
- public void setCommitContext(CommitContext commitContext)
+ public void setCommitContext(IStoreAccessor.CommitContext commitContext)
{
this.commitContext = commitContext;
}
@@ -51,26 +52,26 @@ public class HibernateCommitContext
return;
}
- dirtyObjects = new HashMap<CDOID, CDORevision>();
- for (CDORevision cdoRevision : commitContext.getDirtyObjects())
+ dirtyObjects = new HashMap<CDOID, InternalCDORevision>();
+ for (InternalCDORevision cdoRevision : commitContext.getDirtyObjects())
{
dirtyObjects.put(cdoRevision.getID(), cdoRevision);
}
- newObjects = new HashMap<CDOID, CDORevision>();
- for (CDORevision cdoRevision : commitContext.getNewObjects())
+ newObjects = new HashMap<CDOID, InternalCDORevision>();
+ for (InternalCDORevision cdoRevision : commitContext.getNewObjects())
{
newObjects.put(cdoRevision.getID(), cdoRevision);
}
}
- public CDORevision getDirtyObject(CDOID id)
+ public InternalCDORevision getDirtyObject(CDOID id)
{
initialize();
return dirtyObjects.get(id);
}
- public CDORevision getNewObject(CDOID id)
+ public InternalCDORevision getNewObject(CDOID id)
{
initialize();
return newObjects.get(id);
@@ -79,7 +80,7 @@ public class HibernateCommitContext
public void setNewID(CDOID oldId, CDOID newId)
{
initialize();
- CDORevision cdoRevision;
+ InternalCDORevision cdoRevision;
if ((cdoRevision = dirtyObjects.get(oldId)) != null)
{
dirtyObjects.remove(oldId);
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java
index d66eb6f85c..36dc09afa9 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java
@@ -11,17 +11,12 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl;
-import org.eclipse.emf.cdo.server.IStoreAccessor.CommitContext;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.WrappedException;
@@ -29,6 +24,10 @@ import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -65,7 +64,7 @@ public class HibernatePackageHandler extends Lifecycle
private int nextFeatureID;
- private Collection<CDOPackageInfo> cdoPackageInfos = null;
+ private Collection<InternalCDOPackageUnit> packageUnits = null;
private HibernateStore hibernateStore;
@@ -77,47 +76,55 @@ public class HibernatePackageHandler extends Lifecycle
hibernateStore = store;
}
- public List<CDOPackage> getCDOPackages()
+ public List<EPackage> getEPackages()
{
- List<CDOPackage> cdoPackages = new ArrayList<CDOPackage>();
+ List<EPackage> ePackages = new ArrayList<EPackage>();
if (HibernateThreadContext.isHibernateCommitContextSet())
{
- CommitContext cc = HibernateThreadContext.getHibernateCommitContext().getCommitContext();
- if (cc instanceof TransactionCommitContextImpl)
+ IStoreAccessor.CommitContext cc = HibernateThreadContext.getHibernateCommitContext().getCommitContext();
+ if (cc != null)
{
- TransactionCommitContextImpl tx = (TransactionCommitContextImpl)cc;
- for (CDOPackage cdoPackage : tx.getNewPackages())
+ for (InternalCDOPackageUnit packageUnit : cc.getNewPackageUnits())
{
- cdoPackages.add(cdoPackage);
+ for (EPackage ePackage : packageUnit.getEPackages(true))
+ {
+ ePackages.add(ePackage);
+ }
}
}
}
- for (CDOPackage cdoPackage : hibernateStore.getRepository().getPackageManager().getPackages())
+ for (EPackage ePackage : getPackageRegistry().getEPackages())
{
- cdoPackages.add(cdoPackage);
+ ePackages.add(ePackage);
}
- for (CDOPackage cdoPackage : cdoPackages)
- {
- // force resolve
- if (cdoPackage.getClassCount() == 0)
- {
- if (TRACER.isEnabled())
- {
- TRACER.trace("Returning " + cdoPackage.getPackageURI());
- }
- }
- }
+ XXX(); // XXX Still needed?
+ // for (EPackage ePackage : ePackages)
+ // {
+ // // force resolve
+ // if (ePackage.getClassCount() == 0)
+ // {
+ // if (TRACER.isEnabled())
+ // {
+ // TRACER.trace("Returning " + ePackage.getNsURI());
+ // }
+ // }
+ // }
+
+ return ePackages;
+ }
- return cdoPackages;
+ private InternalCDOPackageRegistry getPackageRegistry()
+ {
+ return (InternalCDOPackageRegistry)hibernateStore.getRepository().getPackageRegistry();
}
- public void writePackages(CDOPackage... cdoPackages)
+ public void writePackageUnits(InternalCDOPackageUnit[] packageUnits)
{
if (TRACER.isEnabled())
{
- TRACER.trace("Persisting new CDOPackages");
+ TRACER.trace("Persisting new EPackages");
}
Session session = getSessionFactory().openSession();
@@ -127,21 +134,25 @@ public class HibernatePackageHandler extends Lifecycle
try
{
- for (CDOPackage cdoPackage : cdoPackages)
+ for (InternalCDOPackageUnit packageUnit : packageUnits)
{
- if (cdoPackageExistsAndIsUnchanged(cdoPackage))
+ XXX(); // XXX Really on a per EPackage base?
+ for (EPackage ePackage : packageUnit.getEPackages(true))
{
- OM.LOG.warn("CDOPackage " + cdoPackage.getPackageURI() + " already exists not persisting it again!");
- continue;
- }
+ if (ePackageExistsAndIsUnchanged(ePackage))
+ {
+ OM.LOG.warn("EPackage " + ePackage.getNsURI() + " already exists not persisting it again!");
+ continue;
+ }
- if (TRACER.isEnabled())
- {
- TRACER.trace("Persisting CDOPackage " + cdoPackage.getPackageURI());
- }
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace("Persisting EPackage " + ePackage.getNsURI());
+ }
- session.saveOrUpdate(cdoPackage);
- updated = true;
+ session.saveOrUpdate(ePackage);
+ updated = true;
+ }
}
tx.commit();
@@ -164,15 +175,14 @@ public class HibernatePackageHandler extends Lifecycle
}
}
- protected boolean cdoPackageExistsAndIsUnchanged(CDOPackage newCDOPackage)
+ protected boolean ePackageExistsAndIsUnchanged(EPackage newEPackage)
{
- CDOPackage[] cdoPackages = hibernateStore.getRepository().getPackageManager().getPackages();
- for (CDOPackage cdoPackage : cdoPackages)
+ for (EPackage ePackage : getPackageRegistry().getEPackages())
{
- if (cdoPackage.getClassCount() > 0 && cdoPackage.getPackageURI().equals(newCDOPackage.getPackageURI()))
+ if (ePackage.getClassCount() > 0 && ePackage.getNsURI().equals(newEPackage.getNsURI()))
{
- String ecore = cdoPackage.getEcore();
- String newEcore = newCDOPackage.getEcore();
+ String ecore = ePackage.getEcore();
+ String newEcore = newEPackage.getEcore();
return ObjectUtil.equals(ecore, newEcore);
}
}
@@ -180,11 +190,13 @@ public class HibernatePackageHandler extends Lifecycle
return false;
}
- public void writePackage(CDOPackage cdoPackage)
+ public void writePackage(EPackage ePackage)
{
- if (cdoPackageExistsAndIsUnchanged(cdoPackage))
+ XXX(); // XXX Is this method needed?
+
+ if (ePackageExistsAndIsUnchanged(ePackage))
{
- OM.LOG.warn("CDOPackage " + cdoPackage.getPackageURI() + " already exists not persisting it again!");
+ OM.LOG.warn("EPackage " + ePackage.getNsURI() + " already exists not persisting it again!");
return;
}
@@ -195,10 +207,10 @@ public class HibernatePackageHandler extends Lifecycle
{
if (TRACER.isEnabled())
{
- TRACER.trace("Persisting CDOPackage " + cdoPackage.getPackageURI());
+ TRACER.trace("Persisting EPackage " + ePackage.getNsURI());
}
- session.saveOrUpdate(cdoPackage);
+ session.saveOrUpdate(ePackage);
tx.commit();
err = false;
}
@@ -216,81 +228,81 @@ public class HibernatePackageHandler extends Lifecycle
hibernateStore.reInitialize();
}
- public Collection<CDOPackageInfo> getCDOPackageInfos()
+ public Collection<InternalCDOPackageUnit> getPackageUnits()
{
- readPackageInfos();
- return cdoPackageInfos;
+ readPackageUnits();
+ return packageUnits;
}
- protected void readPackage(CDOPackage cdoPackage)
+ // protected void readPackage(EPackage ePackage)
+ public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
- if (cdoPackage.getClassCount() > 0)
+ if (ePackage.getClassCount() > 0)
{ // already initialized go away
return;
}
if (TRACER.isEnabled())
{
- TRACER.trace("Reading CDOPackage with uri " + cdoPackage.getPackageURI() + " from db");
+ TRACER.trace("Reading EPackage with uri " + ePackage.getNsURI() + " from db");
}
Session session = getSessionFactory().openSession();
try
{
- Criteria criteria = session.createCriteria(CDOPackage.class);
- criteria.add(Expression.eq("packageURI", cdoPackage.getPackageURI()));
+ Criteria criteria = session.createCriteria(EPackage.class);
+ criteria.add(Expression.eq("packageURI", ePackage.getNsURI()));
List<?> list = criteria.list();
if (list.size() != 1)
{
- throw new IllegalArgumentException("CDOPackage with uri " + cdoPackage.getPackageURI()
- + " not present in the db");
+ throw new IllegalArgumentException("EPackage with uri " + ePackage.getNsURI() + " not present in the db");
}
if (TRACER.isEnabled())
{
- TRACER.trace("Found " + list.size() + " CDOPackages in DB");
+ TRACER.trace("Found " + list.size() + " EPackages in DB");
}
- CDOPackage dbPackage = (CDOPackage)list.get(0);
+ EPackage dbPackage = (EPackage)list.get(0);
if (TRACER.isEnabled())
{
- TRACER.trace("Read CDOPackage: " + cdoPackage.getName());
+ TRACER.trace("Read EPackage: " + ePackage.getName());
}
- ((InternalCDOPackage)cdoPackage).setServerInfo(dbPackage.getServerInfo());
- ((InternalCDOPackage)cdoPackage).setName(dbPackage.getName());
- ((InternalCDOPackage)cdoPackage).setEcore(dbPackage.getEcore());
- ((InternalCDOPackage)cdoPackage).setMetaIDRange(cdoPackage.getMetaIDRange());
+ ((InternalEPackage)ePackage).setServerInfo(dbPackage.getServerInfo());
+ ((InternalEPackage)ePackage).setName(dbPackage.getName());
+ ((InternalEPackage)ePackage).setEcore(dbPackage.getEcore());
+ ((InternalEPackage)ePackage).setMetaIDRange(ePackage.getMetaIDRange());
- final List<CDOClass> cdoClasses = new ArrayList<CDOClass>();
- for (CDOClass cdoClass : dbPackage.getClasses())
+ final List<EClass> eClasses = new ArrayList<EClass>();
+ for (EClass eClass : EMFUtil.getPersistentClasses(dbPackage))
{
- cdoClasses.add(cdoClass);
- for (CDOClassProxy proxy : ((InternalCDOClass)cdoClass).getSuperTypeProxies())
+ eClasses.add(eClass);
+ for (EClassProxy proxy : ((InternalEClass)eClass).getSuperTypeProxies())
{
- proxy.setCDOPackageManager(hibernateStore.getRepository().getPackageManager());
+ proxy.setCDOPackageManager(hibernateStore.getRepository().getPackageRegistry());
}
- for (CDOFeature cdoFeature : cdoClass.getFeatures())
+ for (EStructuralFeature feature : eClass.getFeatures())
{
- final InternalCDOFeature internalFeature = (InternalCDOFeature)cdoFeature;
- internalFeature.setContainingClass(cdoClass);
+ final InternalCDOFeature internalFeature = (InternalCDOFeature)feature;
+ internalFeature.setContainingClass(eClass);
if (internalFeature.getReferenceTypeProxy() != null)
{
internalFeature.getReferenceTypeProxy().setCDOPackageManager(
- hibernateStore.getRepository().getPackageManager());
+ hibernateStore.getRepository().getPackageRegistry());
}
}
// // force indices to be set
- // if (cdoClass.getAllFeatures().length > 0)
+ // if (TODO.getAllPersistentFeatures(eClass).length > 0)
// {
- // ((InternalCDOClass)cdoClass).getFeatureIndex(0);
+ // ((InternalEClass)eClass).getFeatureIndex(0);
// }
}
- ((InternalCDOPackage)cdoPackage).setClasses(cdoClasses);
+ ((InternalEPackage)ePackage).setClasses(eClasses);
}
finally
{
@@ -299,45 +311,45 @@ public class HibernatePackageHandler extends Lifecycle
if (TRACER.isEnabled())
{
- TRACER.trace("Finished reading CDOPackages");
+ TRACER.trace("Finished reading EPackages");
}
}
- protected void readPackageInfos()
+ protected void readPackageUnits()
{
- if (cdoPackageInfos == null || cdoPackageInfos.size() == 0)
+ if (packageUnits == null || packageUnits.size() == 0)
{
if (TRACER.isEnabled())
{
- TRACER.trace("Reading CDOPackages from db");
+ TRACER.trace("Reading EPackages from db");
}
- Collection<CDOPackageInfo> result = new ArrayList<CDOPackageInfo>();
+ Collection<InternalCDOPackageUnit> result = new ArrayList<InternalCDOPackageUnit>();
Session session = getSessionFactory().openSession();
try
{
- Criteria criteria = session.createCriteria(CDOPackage.class);
+ Criteria criteria = session.createCriteria(EPackage.class);
List<?> list = criteria.list();
if (TRACER.isEnabled())
{
- TRACER.trace("Found " + list.size() + " CDOPackages in DB");
+ TRACER.trace("Found " + list.size() + " EPackages in DB");
}
for (Object object : list)
{
- CDOPackage cdoPackage = (CDOPackage)object;
+ EPackage ePackage = (EPackage)object;
if (TRACER.isEnabled())
{
- TRACER.trace("Read CDOPackage: " + cdoPackage.getName());
+ TRACER.trace("Read EPackage: " + ePackage.getName());
}
- result.add(new CDOPackageInfo(cdoPackage.getPackageURI(), cdoPackage.isDynamic(),
- cdoPackage.getMetaIDRange(), cdoPackage.getParentURI()));
- ((InternalCDOPackage)cdoPackage).setPackageManager(hibernateStore.getRepository().getPackageManager());
+ result.add(new CDOPackageInfo(ePackage.getNsURI(), ePackage.getParentURI(), ePackage.isDynamic(), ePackage
+ .getMetaIDRange()));
+ ((InternalEPackage)ePackage).setPackageManager(hibernateStore.getRepository().getPackageRegistry());
}
- cdoPackageInfos = result;
+ packageUnits = result;
}
finally
{
@@ -347,7 +359,7 @@ public class HibernatePackageHandler extends Lifecycle
if (TRACER.isEnabled())
{
- TRACER.trace("Finished reading CDOPackages");
+ TRACER.trace("Finished reading EPackages");
}
}
@@ -384,7 +396,7 @@ public class HibernatePackageHandler extends Lifecycle
public void reset()
{
- cdoPackageInfos = null;
+ packageUnits = null;
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java
index a93064686c..b5a72618a7 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java
@@ -15,8 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryProvider;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.internal.server.Store;
-import org.eclipse.emf.cdo.internal.server.StoreAccessorPool;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.IView;
@@ -27,6 +25,8 @@ import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateLibraryHan
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOInterceptor;
import org.eclipse.emf.cdo.spi.common.id.CDOIDLibraryProviderImpl;
+import org.eclipse.emf.cdo.spi.server.Store;
+import org.eclipse.emf.cdo.spi.server.StoreAccessorPool;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.io.IOUtil;
@@ -155,16 +155,6 @@ public class HibernateStore extends Store implements IHibernateStore
return packageHandler.getNextFeatureID();
}
- public boolean wasCrashed()
- {
- return false;
- }
-
- public void repairAfterCrash()
- {
- throw new UnsupportedOperationException(); // TODO Implement me
- }
-
public long getCreationTime()
{
return CDORevision.UNSPECIFIED_DATE;
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
index 1322784980..bf5aa746cf 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
@@ -15,14 +15,9 @@ import org.eclipse.emf.cdo.common.CDOQueryInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.internal.server.StoreAccessor;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStoreAccessor;
@@ -32,7 +27,10 @@ import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate;
import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder;
+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.StoreAccessor;
import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.WrappedException;
@@ -40,6 +38,9 @@ import org.eclipse.net4j.util.collection.CloseableIterator;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.Criteria;
import org.hibernate.FlushMode;
import org.hibernate.Query;
@@ -203,7 +204,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
this.errorOccured = errorOccured;
}
- public HibernateStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature)
+ public HibernateStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
{
return new HibernateStoreChunkReader(this, revision, feature);
}
@@ -214,43 +215,38 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
throw new UnsupportedOperationException();
}
- public CloseableIterator<CDOID> readObjectIDs()
+ public Collection<InternalCDOPackageUnit> readPackageUnits()
{
- throw new UnsupportedOperationException();
+ return getStore().getPackageHandler().getPackageUnits();
}
- public CDOClassRef readObjectType(CDOID id)
+ public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
- CDORevision cdoRevision = readRevision(id, -1);
- return cdoRevision.getCDOClass().createClassRef();
+ return getStore().getPackageHandler().loadPackageUnit(packageUnit);
}
- public void readPackage(CDOPackage cdoPackage)
- {
- getStore().getPackageHandler().readPackage(cdoPackage);
- }
-
- public void readPackageEcore(CDOPackage cdoPackage)
+ public CloseableIterator<CDOID> readObjectIDs()
{
throw new UnsupportedOperationException();
}
- public Collection<CDOPackageInfo> readPackageInfos()
+ public CDOClassifierRef readObjectType(CDOID id)
{
- return getStore().getPackageHandler().getCDOPackageInfos();
+ CDORevision cdoRevision = readRevision(id, -1);
+ return new CDOClassifierRef(cdoRevision.getEClass());
}
- public CDORevision readRevision(CDOID id, int referenceChunk)
+ public InternalCDORevision readRevision(CDOID id, int referenceChunk)
{
return HibernateUtil.getInstance().getCDORevision(id);
}
- public CDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
+ public InternalCDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
{
throw new UnsupportedOperationException();
}
- public CDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
+ public InternalCDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
{
// TODO Could be necessary to implement
throw new UnsupportedOperationException();
@@ -276,7 +272,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
boolean exactMatch = context.exactMatch();
final Session session = getHibernateSession();
- final Criteria criteria = session.createCriteria(CDOResourceNodeClass.NAME);
+ final Criteria criteria = session.createCriteria(EresourcePackage.eINSTANCE.getCDOResourceNode().getName());
if (folderID == null)
{
criteria.add(Expression.isNull("containerID"));
@@ -290,7 +286,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
for (Object o : result)
{
final CDORevision revision = (CDORevision)o;
- String revisionName = (String)revision.data().get(getResourceNameFeature(), 0);
+ String revisionName = (String)revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0);
boolean match = exactMatch || revisionName == null || name == null ? ObjectUtil.equals(revisionName, name)
: revisionName.startsWith(name);
@@ -313,22 +309,13 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
// TODO Can this happen? When?
final long longID = CDOIDUtil.getLong(id);
- return CDOIDHibernateFactoryImpl.getInstance().createCDOID(longID, CDOResourceNodeClass.NAME);
+ return CDOIDHibernateFactoryImpl.getInstance().createCDOID(longID,
+ EresourcePackage.eINSTANCE.getCDOResourceNode().getName());
}
return null;
}
- private CDOFeature getResourceNameFeature()
- {
- return getResourceNodeClass().getCDONameFeature();
- }
-
- private CDOResourceNodeClass getResourceNodeClass()
- {
- return getStore().getRepository().getPackageManager().getCDOResourcePackage().getCDOResourceNodeClass();
- }
-
/**
* @since 2.0
*/
@@ -348,13 +335,13 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
}
@Override
- public void write(CommitContext context, OMMonitor monitor)
+ public void write(IStoreAccessor.CommitContext context, OMMonitor monitor)
{
List<InternalCDORevision> adjustRevisions = new ArrayList<InternalCDORevision>();
HibernateThreadContext.setCommitContext(context);
- if (context.getNewPackages().length > 0)
+ if (context.getNewPackageUnits().length > 0)
{
- writePackages(context.getNewPackages(), monitor);
+ writePackageUnits(context.getNewPackageUnits(), monitor);
}
try
{
@@ -380,7 +367,8 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
session.delete(revision);
}
- final List<CDORevision> cdoRevisions = Arrays.asList(context.getNewObjects());
+ // TODO Martin: Why create an additional list?
+ final List<InternalCDORevision> cdoRevisions = Arrays.asList(context.getNewObjects());
// keep track for which cdoRevisions the container id needs to be repaired afterwards
final List<InternalCDORevision> repairContainerIDs = new ArrayList<InternalCDORevision>();
@@ -400,7 +388,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
session.save(HibernateUtil.getInstance().getEntityName(cdoRevision), cdoRevision);
if (TRACER.isEnabled())
{
- TRACER.trace("Persisted new Object " + cdoRevision.getCDOClass().getName() + " id: " + cdoRevision.getID());
+ TRACER.trace("Persisted new Object " + cdoRevision.getEClass().getName() + " id: " + cdoRevision.getID());
}
}
@@ -409,7 +397,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
session.merge(HibernateUtil.getInstance().getEntityName(cdoRevision), cdoRevision);
if (TRACER.isEnabled())
{
- TRACER.trace("Updated Object " + cdoRevision.getCDOClass().getName() + " id: " + cdoRevision.getID());
+ TRACER.trace("Updated Object " + cdoRevision.getEClass().getName() + " id: " + cdoRevision.getID());
}
}
@@ -469,12 +457,11 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
HibernateThreadContext.setCommitContext(null);
}
- @Override
- protected void writePackages(CDOPackage[] cdoPackages, OMMonitor monitor)
+ public void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
- if (cdoPackages != null && cdoPackages.length != 0)
+ if (packageUnits != null && packageUnits.length != 0)
{
- getStore().getPackageHandler().writePackages(cdoPackages);
+ getStore().getPackageHandler().writePackageUnits(packageUnits);
}
// Set a new hibernatesession in the thread
@@ -482,13 +469,19 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
}
@Override
- protected void writeRevisions(CDORevision[] revisions, OMMonitor monitor)
+ protected void writeRevisions(InternalCDORevision[] revisions, OMMonitor monitor)
{
// Don't do anything it is done at commit
}
@Override
- protected void writeRevisionDeltas(CDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
+ protected void addIDMappings(CommitContext context, OMMonitor monitor)
+ {
+ // Do nothing
+ }
+
+ @Override
+ protected void writeRevisionDeltas(InternalCDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
{
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java
index 6abb03be11..3372c9fa94 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java
@@ -10,10 +10,11 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.internal.server.StoreChunkReader;
import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreChunkReader;
+import org.eclipse.emf.cdo.spi.server.StoreChunkReader;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.List;
@@ -22,7 +23,7 @@ import java.util.List;
*/
public class HibernateStoreChunkReader extends StoreChunkReader implements IHibernateStoreChunkReader
{
- public HibernateStoreChunkReader(HibernateStoreAccessor accessor, CDORevision revision, CDOFeature feature)
+ public HibernateStoreChunkReader(HibernateStoreAccessor accessor, CDORevision revision, EStructuralFeature feature)
{
super(accessor, revision, feature);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java
index 75c5643797..a00b25299e 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java
@@ -136,7 +136,7 @@ public class HibernateUtil
public String getEntityName(CDORevision cdoRevision)
{
- return cdoRevision.getCDOClass().getName();
+ return cdoRevision.getEClass().getName();
}
/**
@@ -159,7 +159,7 @@ public class HibernateUtil
}
if (!(cdoRevision.getID() instanceof CDOIDHibernate))
{
- throw new IllegalStateException("CDORevision " + cdoRevision.getCDOClass().getName() + " " + cdoRevision.getID()
+ throw new IllegalStateException("CDORevision " + cdoRevision.getEClass().getName() + " " + cdoRevision.getID()
+ " does not have a hibernate cdoid after saving/updating it");
}
@@ -182,7 +182,7 @@ public class HibernateUtil
* Gets a current object, first checks the new and dirty objects from the commitcontent. Otherwise reads it from the
* session.
*/
- public CDORevision getCDORevision(CDOID id)
+ public InternalCDORevision getCDORevision(CDOID id)
{
if (CDOIDUtil.isNull(id))
{
@@ -192,11 +192,12 @@ public class HibernateUtil
if (HibernateThreadContext.isHibernateCommitContextSet())
{
final HibernateCommitContext hcc = HibernateThreadContext.getHibernateCommitContext();
- CDORevision revision;
+ InternalCDORevision revision;
if ((revision = hcc.getDirtyObject(id)) != null)
{
return revision;
}
+
if ((revision = hcc.getNewObject(id)) != null)
{
return revision;
@@ -221,10 +222,10 @@ public class HibernateUtil
final CDOIDHibernate cdoIDHibernate = (CDOIDHibernate)id;
final Session session = getHibernateSession();
- return (CDORevision)session.get(cdoIDHibernate.getEntityName(), cdoIDHibernate.getId());
+ return (InternalCDORevision)session.get(cdoIDHibernate.getEntityName(), cdoIDHibernate.getId());
}
- public CDORevision getCDORevisionNullable(CDOID id)
+ public InternalCDORevision getCDORevisionNullable(CDOID id)
{
if (CDOIDUtil.isNull(id))
{
@@ -234,11 +235,12 @@ public class HibernateUtil
if (HibernateThreadContext.isHibernateCommitContextSet())
{
final HibernateCommitContext hcc = HibernateThreadContext.getHibernateCommitContext();
- CDORevision revision;
+ InternalCDORevision revision;
if ((revision = hcc.getDirtyObject(id)) != null)
{
return revision;
}
+
if ((revision = hcc.getNewObject(id)) != null)
{
return revision;
@@ -262,6 +264,6 @@ public class HibernateUtil
final CDOIDHibernate cdoIDHibernate = (CDOIDHibernate)id;
final Session session = getHibernateSession();
- return (CDORevision)session.get(cdoIDHibernate.getEntityName(), cdoIDHibernate.getId());
+ return (InternalCDORevision)session.get(cdoIDHibernate.getEntityName(), cdoIDHibernate.getId());
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java
index dfd0675dec..09afc6409c 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java
@@ -54,7 +54,7 @@ public class CDOIDPropertySetter extends CDOPropertySetter
if (cdoID == null)
{
CDOIDHibernate newCDOID = CDOIDHibernateFactoryImpl.getInstance().createCDOID((Serializable)value,
- revision.getCDOClass().getName());
+ revision.getEClass().getName());
revision.setID(newCDOID);
if (hcc != null)
{
@@ -64,7 +64,7 @@ public class CDOIDPropertySetter extends CDOPropertySetter
else if (cdoID instanceof CDOIDTemp)
{
CDOIDHibernate newCDOID = CDOIDHibernateFactoryImpl.getInstance().createCDOID((Serializable)value,
- revision.getCDOClass().getName());
+ revision.getEClass().getName());
revision.setID(newCDOID);
if (hcc != null)
{
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java
index 7377d92043..ea2776b0ae 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java
@@ -33,6 +33,6 @@ public class CDOInterceptor extends EmptyInterceptor
public String getEntityName(Object object)
{
InternalCDORevision revision = HibernateUtil.getInstance().getCDORevision(object);
- return revision.getCDOClass().getName();
+ return revision.getEClass().getName();
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
index 3a62ab32d7..73b8a36133 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java
@@ -48,14 +48,15 @@ public class CDOManyReferenceGetter extends CDOPropertyGetter
public Object get(Object target) throws HibernateException
{
// Check if there is already a persistentcollection
- PersistentCollection collection = PersistableListHolder.getInstance().getListMapping(target, getCDOFeature());
+ PersistentCollection collection = PersistableListHolder.getInstance().getListMapping(target,
+ getEStructuralFeature());
if (collection != null)
{
return collection;
}
InternalCDORevision revision = (InternalCDORevision)target;
- CDOList list = revision.getList(getCDOFeature(), 10);
+ CDOList list = revision.getList(getEStructuralFeature(), 10);
// Wrap the moveablearraylist
HibernateMoveableListWrapper wrapper = new HibernateMoveableListWrapper();
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java
index 031837e375..97467b98f9 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java
@@ -46,13 +46,13 @@ public class CDOManyReferenceSetter extends CDOPropertySetter
}
// Only set it in the listholder
- PersistableListHolder.getInstance().putListMapping(target, getCDOFeature(), (PersistentCollection)value);
+ PersistableListHolder.getInstance().putListMapping(target, getEStructuralFeature(), (PersistentCollection)value);
// check if deep inside the persistentlist there is not already a delegate which is a hibernatemoveable list
// which contains the list which should really be set in the cdorevision
// persistentlist, hibernatemoveablelistwrapper, real list, if so then the real list should be set
final InternalCDORevision revision = (InternalCDORevision)target;
- final Object currentValue = revision.getValue(getCDOFeature());
+ final Object currentValue = revision.getValue(getEStructuralFeature());
final PersistentList pl = (PersistentList)value;
if (currentValue == null)
{
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java
index 2f2c7a8a97..fa8c0d4606 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java
@@ -38,7 +38,7 @@ public class CDOPropertyGetter extends CDOPropertyHandler implements Getter
public Object get(Object target) throws HibernateException
{
InternalCDORevision revision = (InternalCDORevision)target;
- return revision.getValue(getCDOFeature());
+ return revision.getValue(getEStructuralFeature());
}
@SuppressWarnings("unchecked")
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java
index 0a563c85cb..6cc1e057d0 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java
@@ -11,11 +11,12 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Martin Taal
*/
@@ -25,22 +26,22 @@ public abstract class CDOPropertyHandler
private CDORevisionTuplizer tuplizer;
- private CDOFeature cdoFeature;
+ private EStructuralFeature feature;
private boolean virtualProperty = false;
public CDOPropertyHandler(CDORevisionTuplizer tuplizer, String propertyName)
{
this.tuplizer = tuplizer;
- cdoFeature = tuplizer.getCDOClass().lookupFeature(propertyName);
+ feature = tuplizer.getEClass().getEStructuralFeature(propertyName);
if (getTracer().isEnabled())
{
getTracer().trace(
- "Created " + this.getClass().getName() + " for cdoClass/feature: " + tuplizer.getCDOClass().getName() + "."
+ "Created " + this.getClass().getName() + " for eClass/feature: " + tuplizer.getEClass().getName() + "."
+ propertyName);
}
- if (cdoFeature == null)
+ if (feature == null)
{
if (isVirtualPropertyAllowed())
{
@@ -67,9 +68,9 @@ public abstract class CDOPropertyHandler
return tuplizer;
}
- public CDOFeature getCDOFeature()
+ public EStructuralFeature getEStructuralFeature()
{
- return cdoFeature;
+ return feature;
}
protected boolean isVirtualPropertyAllowed()
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java
index 504602068f..9835fbcfcb 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java
@@ -47,6 +47,6 @@ public class CDOPropertySetter extends CDOPropertyHandler implements Setter
public void set(Object target, Object value, SessionFactoryImplementor factory) throws HibernateException
{
InternalCDORevision revision = (InternalCDORevision)target;
- revision.setValue(getCDOFeature(), value);
+ revision.setValue(getEStructuralFeature(), value);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
index 653cbae8cd..c2961e93d9 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
@@ -10,11 +10,12 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+
import org.hibernate.mapping.PersistentClass;
import org.hibernate.tuple.Instantiator;
@@ -27,11 +28,11 @@ public class CDORevisionInstantiator implements Instantiator
{
private static final long serialVersionUID = 1L;
- private CDOClass cdoClass;
+ private EClass eClass;
public CDORevisionInstantiator(CDORevisionTuplizer tuplizer, PersistentClass mappingInfo)
{
- cdoClass = tuplizer.getCDOClass();
+ eClass = tuplizer.getEClass();
}
public Object instantiate()
@@ -42,8 +43,7 @@ public class CDORevisionInstantiator implements Instantiator
public Object instantiate(Serializable id)
{
- return CDORevisionUtil
- .create(cdoClass, CDOIDHibernateFactoryImpl.getInstance().createCDOID(id, cdoClass.getName()));
+ return CDORevisionUtil.create(eClass, CDOIDHibernateFactoryImpl.getInstance().createCDOID(id, eClass.getName()));
}
public boolean isInstance(Object object)
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java
index f2c87394f2..21c5099e39 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java
@@ -10,9 +10,10 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.HibernateException;
import org.hibernate.PropertyNotFoundException;
import org.hibernate.engine.SessionFactoryImplementor;
@@ -60,13 +61,13 @@ public class CDORevisionPropertyAccessor implements PropertyAccessor
{
private CDORevisionPropertyAccessor propertyAccessor;
- private CDOFeature cdoFeature;
+ private EStructuralFeature feature;
public BaseAccessor(CDORevisionPropertyAccessor propertyAccessor, String propertyName)
{
this.propertyAccessor = propertyAccessor;
- cdoFeature = propertyAccessor.getTuplizer().getCDOClass().lookupFeature(propertyName);
- if (cdoFeature == null)
+ feature = propertyAccessor.getTuplizer().getEClass().getEStructuralFeature(propertyName);
+ if (feature == null)
{
throw new IllegalStateException("Feature not found: " + propertyName);
}
@@ -77,9 +78,9 @@ public class CDORevisionPropertyAccessor implements PropertyAccessor
return propertyAccessor;
}
- public CDOFeature getCDOFeature()
+ public EStructuralFeature getEStructuralFeature()
{
- return cdoFeature;
+ return feature;
}
}
@@ -98,7 +99,7 @@ public class CDORevisionPropertyAccessor implements PropertyAccessor
public Object get(Object target) throws HibernateException
{
InternalCDORevision revision = (InternalCDORevision)target;
- return revision.getValue(getCDOFeature());
+ return revision.getValue(getEStructuralFeature());
}
@SuppressWarnings("unchecked")
@@ -149,7 +150,7 @@ public class CDORevisionPropertyAccessor implements PropertyAccessor
public void set(Object target, Object value, SessionFactoryImplementor factory) throws HibernateException
{
InternalCDORevision revision = (InternalCDORevision)target;
- revision.setValue(getCDOFeature(), value);
+ revision.setValue(getEStructuralFeature(), value);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
index 04aa435d97..08434a878f 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
@@ -12,8 +12,6 @@ package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -22,6 +20,9 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.LazyInitializer;
@@ -62,7 +63,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li;
}
- public void add(CDOFeature feature, int index, Object value)
+ public void add(EStructuralFeature feature, int index, Object value)
{
li.getRevision().add(feature, index, value);
}
@@ -72,7 +73,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
li.getRevision().adjustReferences(idMappings);
}
- public void clear(CDOFeature feature)
+ public void clear(EStructuralFeature feature)
{
li.getRevision().clear(feature);
}
@@ -82,19 +83,19 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().compare(origin);
}
- public boolean contains(CDOFeature feature, Object value)
+ public boolean contains(EStructuralFeature feature, Object value)
{
return li.getRevision().contains(feature, value);
}
- public Object get(CDOFeature feature, int index)
+ public Object get(EStructuralFeature feature, int index)
{
return li.getRevision().get(feature, index);
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return li.getRevision().getCDOClass();
+ return li.getRevision().getEClass();
}
public Object getContainerID()
@@ -122,17 +123,17 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().getID();
}
- public CDOList getList(CDOFeature feature, int size)
+ public CDOList getList(EStructuralFeature feature, int size)
{
return li.getRevision().getList(feature, size);
}
- public CDOList getList(CDOFeature feature)
+ public CDOList getList(EStructuralFeature feature)
{
return li.getRevision().getList(feature);
}
- public void setList(CDOFeature feature, InternalCDOList list)
+ public void setList(EStructuralFeature feature, InternalCDOList list)
{
li.getRevision().setList(feature, list);
}
@@ -152,7 +153,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().revision();
}
- public Object getValue(CDOFeature feature)
+ public Object getValue(EStructuralFeature feature)
{
return li.getRevision().getValue(feature);
}
@@ -162,12 +163,12 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().getVersion();
}
- public int hashCode(CDOFeature feature)
+ public int hashCode(EStructuralFeature feature)
{
return li.getRevision().hashCode(feature);
}
- public int indexOf(CDOFeature feature, Object value)
+ public int indexOf(EStructuralFeature feature, Object value)
{
return li.getRevision().indexOf(feature, value);
}
@@ -177,7 +178,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().isCurrent();
}
- public boolean isEmpty(CDOFeature feature)
+ public boolean isEmpty(EStructuralFeature feature)
{
return li.getRevision().isEmpty(feature);
}
@@ -207,7 +208,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().isValid(timeStamp);
}
- public int lastIndexOf(CDOFeature feature, Object value)
+ public int lastIndexOf(EStructuralFeature feature, Object value)
{
return li.getRevision().lastIndexOf(feature, value);
}
@@ -217,17 +218,17 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
li.getRevision().merge(delta);
}
- public Object move(CDOFeature feature, int targetIndex, int sourceIndex)
+ public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex)
{
return li.getRevision().move(feature, targetIndex, sourceIndex);
}
- public Object remove(CDOFeature feature, int index)
+ public Object remove(EStructuralFeature feature, int index)
{
return li.getRevision().remove(feature, index);
}
- public Object set(CDOFeature feature, int index, Object value)
+ public Object set(EStructuralFeature feature, int index, Object value)
{
return li.getRevision().set(feature, index, value);
}
@@ -253,7 +254,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
}
@SuppressWarnings("deprecation")
- public void setListSize(CDOFeature feature, int size)
+ public void setListSize(EStructuralFeature feature, int size)
{
li.getRevision().setListSize(feature, size);
}
@@ -278,7 +279,7 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
li.getRevision().setUntransactional();
}
- public Object setValue(CDOFeature feature, Object value)
+ public Object setValue(EStructuralFeature feature, Object value)
{
return li.getRevision().setValue(feature, value);
}
@@ -288,32 +289,32 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
li.getRevision().setVersion(version);
}
- public int size(CDOFeature feature)
+ public int size(EStructuralFeature feature)
{
return li.getRevision().size(feature);
}
- public <T> T[] toArray(CDOFeature feature, T[] array)
+ public <T> T[] toArray(EStructuralFeature feature, T[] array)
{
return li.getRevision().toArray(feature, array);
}
- public Object[] toArray(CDOFeature feature)
+ public Object[] toArray(EStructuralFeature feature)
{
return li.getRevision().toArray(feature);
}
- public void unset(CDOFeature feature)
+ public void unset(EStructuralFeature feature)
{
li.getRevision().unset(feature);
}
- public Object basicGet(CDOFeature feature, int index)
+ public Object basicGet(EStructuralFeature feature, int index)
{
return li.getRevision().basicGet(feature, index);
}
- public Object basicSet(CDOFeature feature, int index, Object value)
+ public Object basicSet(EStructuralFeature feature, int index, Object value)
{
return li.getRevision().basicSet(feature, index, value);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java
index 2f8db81f9e..9e60117880 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java
@@ -11,16 +11,19 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.EntityMode;
import org.hibernate.HibernateException;
import org.hibernate.mapping.PersistentClass;
@@ -39,7 +42,7 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDORevisionTuplizer.class);
- private CDOClass cdoClass;
+ private EClass eClass;
public CDORevisionTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappingInfo)
{
@@ -49,19 +52,19 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
TRACER.trace("Created CDORevisionTuplizer for entity " + mappingInfo.getEntityName());
}
- initCDOClass(mappingInfo);
+ initEClass(mappingInfo);
}
- private void initCDOClass(PersistentClass mappingInfo)
+ private void initEClass(PersistentClass mappingInfo)
{
- if (cdoClass != null)
+ if (eClass != null)
{
return;
}
HibernateStore hbStore = HibernateStore.getCurrentHibernateStore();
- // find the CDOClass/Package
+ // find the EClass/Package
// TODO: error handling if meta attribute not present
// TODO: error handling if entityname not set
String entityName = mappingInfo.getEntityName();
@@ -72,30 +75,30 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
TRACER.trace("EntityName/packageURI " + entityName + " " + ePackageURI);
}
- for (CDOPackage cdoPackage : hbStore.getPackageHandler().getCDOPackages())
+ for (EPackage ePackage : hbStore.getPackageHandler().getEPackages())
{
- if (cdoPackage.getPackageURI().compareTo(ePackageURI) != 0)
+ if (ePackage.getNsURI().compareTo(ePackageURI) != 0)
{
continue;
}
- for (CDOClass localCdoClass : cdoPackage.getClasses())
+ for (EClass localCdoClass : EMFUtil.getPersistentClasses(ePackage))
{
if (localCdoClass.getName().compareTo(entityName) == 0)
{
- cdoClass = localCdoClass;
+ eClass = localCdoClass;
break;
}
}
}
- if (cdoClass == null && ePackageURI.compareTo(CDOResourcePackage.PACKAGE_URI) == 0)
+ if (eClass == null && ePackageURI.compareTo(EresourcePackage.eINSTANCE.getNsURI()) == 0)
{
- for (CDOClass localCdoClass : hbStore.getRepository().getPackageManager().getCDOResourcePackage().getClasses())
+ for (EClass localCdoClass : EMFUtil.getPersistentClasses(EresourcePackage.eINSTANCE))
{
if (localCdoClass.getName().compareTo(entityName) == 0)
{
- cdoClass = localCdoClass;
+ eClass = localCdoClass;
if (TRACER.isEnabled())
{
TRACER.trace("Class is CDOResource class");
@@ -106,10 +109,10 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
}
}
- if (cdoClass == null)
+ if (eClass == null)
{
throw new IllegalArgumentException("The mapped class " + mappingInfo.getEntityName()
- + " does not have a cdoClass equivalent");
+ + " does not have a eClass equivalent");
}
}
@@ -176,18 +179,18 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
return EntityMode.MAP;
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return cdoClass;
+ return eClass;
}
@Override
protected Getter buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity)
{
- initCDOClass(mappedEntity);
+ initEClass(mappedEntity);
if (TRACER.isEnabled())
{
- TRACER.trace("Building property getter for " + cdoClass.getName() + "." + mappedProperty.getName());
+ TRACER.trace("Building property getter for " + eClass.getName() + "." + mappedProperty.getName());
}
if (mappedProperty.isBackRef())
@@ -215,12 +218,12 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
return new CDOContainingFeatureIDGetter(this, mappedProperty.getName());
}
- CDOFeature cdoFeature = getCDOClass().lookupFeature(mappedProperty.getName());
- if (cdoFeature.isReference() && cdoFeature.isMany())
+ EStructuralFeature feature = getEClass().getEStructuralFeature(mappedProperty.getName());
+ if (feature instanceof EReference && feature.isMany())
{
return new CDOManyReferenceGetter(this, mappedProperty.getName());
}
- else if (cdoFeature.isReference())
+ else if (feature instanceof EReference)
{
return new CDOReferenceGetter(this, mappedProperty.getName());
}
@@ -231,44 +234,50 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer
@Override
protected Setter buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity)
{
- initCDOClass(mappedEntity);
+ initEClass(mappedEntity);
if (TRACER.isEnabled())
{
- TRACER.trace("Building property setter for " + cdoClass.getName() + "." + mappedProperty.getName());
+ TRACER.trace("Building property setter for " + eClass.getName() + "." + mappedProperty.getName());
}
if (mappedProperty.isBackRef())
{
return mappedProperty.getSetter(mappedEntity.getMappedClass());
}
- else if (mappedProperty == mappedEntity.getIdentifierProperty())
+
+ if (mappedProperty == mappedEntity.getIdentifierProperty())
{
return new CDOIDPropertySetter(this, mappedProperty.getName());
}
- else if (mappedProperty == mappedEntity.getVersion())
+
+ if (mappedProperty == mappedEntity.getVersion())
{
return new CDOVersionPropertySetter(this, mappedProperty.getName());
}
+
// TODO: externalize this
- else if (mappedProperty.getName().compareTo("resourceID") == 0)
+ if (mappedProperty.getName().compareTo("resourceID") == 0)
{
return new CDOResourceIDSetter(this, mappedProperty.getName());
}
- else if (mappedProperty.getName().compareTo("containerID") == 0)
+
+ if (mappedProperty.getName().compareTo("containerID") == 0)
{
return new CDOContainerIDSetter(this, mappedProperty.getName());
}
- else if (mappedProperty.getName().compareTo("containingFeatureID") == 0)
+
+ if (mappedProperty.getName().compareTo("containingFeatureID") == 0)
{
return new CDOContainingFeatureIDSetter(this, mappedProperty.getName());
}
- CDOFeature cdoFeature = getCDOClass().lookupFeature(mappedProperty.getName());
- if (cdoFeature.isReference() && cdoFeature.isMany())
+ EStructuralFeature feature = getEClass().getEStructuralFeature(mappedProperty.getName());
+ if (feature instanceof EReference && feature.isMany())
{
return new CDOManyReferenceSetter(this, mappedProperty.getName());
}
- else if (cdoFeature.isReference())
+
+ if (feature instanceof EReference)
{
return new CDOReferenceSetter(this, mappedProperty.getName());
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java
index 8f1fa387d0..fbc0aebc0a 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java
@@ -37,7 +37,7 @@ import java.util.Map;
* Is only used for synthetic id's.
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
@SuppressWarnings("unchecked")
public class CDOSyntheticIdPropertyHandler implements Getter, Setter, PropertyAccessor
@@ -109,7 +109,7 @@ public class CDOSyntheticIdPropertyHandler implements Getter, Setter, PropertyAc
if (cdoID == null)
{
CDOIDHibernate newCDOID = CDOIDHibernateFactoryImpl.getInstance().createCDOID((Serializable)value,
- revision.getCDOClass().getName());
+ revision.getEClass().getName());
revision.setID(newCDOID);
if (hcc != null)
{
@@ -119,7 +119,7 @@ public class CDOSyntheticIdPropertyHandler implements Getter, Setter, PropertyAc
else if (cdoID instanceof CDOIDTemp)
{
CDOIDHibernate newCDOID = CDOIDHibernateFactoryImpl.getInstance().createCDOID((Serializable)value,
- revision.getCDOClass().getName());
+ revision.getEClass().getName());
revision.setID(newCDOID);
if (hcc != null)
{
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java
index c7e2703042..ccbcc3c372 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java
@@ -11,12 +11,13 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import org.hibernate.collection.PersistentCollection;
import java.util.HashMap;
@@ -40,20 +41,20 @@ public class PersistableListHolder
{
}
- public void putListMapping(Object target, CDOFeature cdoFeature, PersistentCollection collection)
+ public void putListMapping(Object target, EStructuralFeature feature, PersistentCollection collection)
{
- Key key = new Key(target, cdoFeature);
+ Key key = new Key(target, feature);
getListMapping().put(key, collection);
if (TRACER.isEnabled())
{
- TRACER.trace("Stored hb list in threadlocal: " + ((CDORevision)target).getCDOClass().getName() + "."
- + cdoFeature.getName());
+ TRACER.trace("Stored hb list in threadlocal: " + ((CDORevision)target).getEClass().getName() + "."
+ + feature.getName());
}
}
- public PersistentCollection getListMapping(Object target, CDOFeature cdoFeature)
+ public PersistentCollection getListMapping(Object target, EStructuralFeature feature)
{
- Key key = new Key(target, cdoFeature);
+ Key key = new Key(target, feature);
return getListMapping().get(key);
}
@@ -86,12 +87,12 @@ public class PersistableListHolder
{
private Object owner;
- private CDOFeature cdoFeature;
+ private EStructuralFeature feature;
- public Key(Object owner, CDOFeature cdoFeature)
+ public Key(Object owner, EStructuralFeature feature)
{
this.owner = owner;
- this.cdoFeature = cdoFeature;
+ this.feature = feature;
}
@Override
@@ -103,15 +104,15 @@ public class PersistableListHolder
}
Key otherKey = (Key)obj;
- // the owner is uniquely present in mem, the same applies for the cdoFeature
+ // the owner is uniquely present in mem, the same applies for the feature
// therefore == is allowed
- return owner == otherKey.owner && cdoFeature == otherKey.cdoFeature;
+ return owner == otherKey.owner && feature == otherKey.feature;
}
@Override
public int hashCode()
{
- return owner.hashCode() + cdoFeature.hashCode();
+ return owner.hashCode() + feature.hashCode();
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
index 4d8d4fdee3..a615d6838a 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
@@ -12,6 +12,7 @@
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
@@ -19,6 +20,9 @@ import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateUtil;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -86,8 +90,9 @@ public class WrappedHibernateList implements InternalCDOList
}
}
- public void adjustReferences(CDOReferenceAdjuster adjuster, CDOType type)
+ public void adjustReferences(CDOReferenceAdjuster adjuster, EClass classifier)
{
+ CDOType type = CDOModelUtil.getType(classifier);
int size = size();
for (int i = 0; i < size; i++)
{
@@ -100,14 +105,16 @@ public class WrappedHibernateList implements InternalCDOList
}
}
- public InternalCDOList clone(CDOType type)
+ public InternalCDOList clone(EClassifier classifier)
{
+ CDOType type = CDOModelUtil.getType(classifier);
int size = size();
InternalCDOList list = (InternalCDOList)CDOListFactory.DEFAULT.createList(size, 0, 0);
for (int i = 0; i < size; i++)
{
list.add(type.copyValue(get(i)));
}
+
return list;
}
diff --git a/plugins/org.eclipse.emf.cdo.server/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.server/.settings/.api_filters
index 02392d2c2a..063ce74251 100644
--- a/plugins/org.eclipse.emf.cdo.server/.settings/.api_filters
+++ b/plugins/org.eclipse.emf.cdo.server/.settings/.api_filters
@@ -1,130 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.emf.cdo.server" version="2">
- <resource path="src/org/eclipse/emf/cdo/internal/server/View.java" type="org.eclipse.emf.cdo.internal.server.View">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="IView"/>
- <message_argument value="CDOCommonView"/>
- <message_argument value="View"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/RevisionManager.java" type="org.eclipse.emf.cdo.internal.server.RevisionManager">
- <filter id="576720909">
- <message_arguments>
- <message_argument value="CDORevisionResolverImpl"/>
- <message_argument value="RevisionManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IPackageManager.java" type="org.eclipse.emf.cdo.server.IPackageManager">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOPackageManager"/>
- <message_argument value="IPackageManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/SessionManager.java" type="org.eclipse.emf.cdo.internal.server.SessionManager">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CDOServerProtocol"/>
- <message_argument value="SessionManager"/>
- <message_argument value="openSession(CDOServerProtocol)"/>
- </message_arguments>
- </filter>
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CDOServerProtocol"/>
- <message_argument value="SessionManager"/>
- <message_argument value="openSession(CDOServerProtocol, boolean)"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="src/org/eclipse/emf/cdo/server/ISessionManager.java" type="org.eclipse.emf.cdo.server.ISessionManager">
<filter id="643846161">
<message_arguments>
<message_argument value="CDOServerProtocol"/>
<message_argument value="ISessionManager"/>
- <message_argument value="openSession(CDOServerProtocol, boolean)"/>
- </message_arguments>
- </filter>
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CDOServerProtocol"/>
- <message_argument value="ISessionManager"/>
<message_argument value="openSession(CDOServerProtocol)"/>
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/emf/cdo/server/IRevisionManager.java" type="org.eclipse.emf.cdo.server.IRevisionManager">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDORevisionResolver"/>
- <message_argument value="IRevisionManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IView.java" type="org.eclipse.emf.cdo.server.IView">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOProtocolView"/>
- <message_argument value="IView"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/Session.java" type="org.eclipse.emf.cdo.internal.server.Session">
- <filter id="643850349">
- <message_arguments>
- <message_argument value="CDOServerProtocol"/>
- <message_argument value="Session"/>
- <message_argument value="Session(SessionManager, CDOServerProtocol, int)"/>
- </message_arguments>
- </filter>
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOIDProvider"/>
- <message_argument value="Session"/>
- </message_arguments>
- </filter>
- <filter id="574660632">
- <message_arguments>
- <message_argument value="ISession"/>
- <message_argument value="CDOCommonSession"/>
- <message_argument value="Session"/>
- </message_arguments>
- </filter>
- <filter id="643850349">
- <message_arguments>
- <message_argument value="CDOServerProtocol"/>
- <message_argument value="Session"/>
- <message_argument value="Session(SessionManager, CDOServerProtocol, int, boolean)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/PackageManager.java" type="org.eclipse.emf.cdo.internal.server.PackageManager">
- <filter id="576720909">
- <message_arguments>
- <message_argument value="CDOPackageManagerImpl"/>
- <message_argument value="PackageManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java" type="org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl$TransactionPackageManager">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="InternalCDOPackageManager"/>
- <message_argument value="CDOPackageManager"/>
- <message_argument value="TransactionPackageManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/ISession.java" type="org.eclipse.emf.cdo.server.ISession">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOCommonSession"/>
- <message_argument value="ISession"/>
- </message_arguments>
- </filter>
- </resource>
</component>
diff --git a/plugins/org.eclipse.emf.cdo.server/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.server/.settings/org.eclipse.jdt.core.prefs
index 4a9b13a84e..92654e06ca 100644
--- a/plugins/org.eclipse.emf.cdo.server/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.emf.cdo.server/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Fri Aug 01 21:17:01 CEST 2008
+#Sun Mar 01 17:27:11 CET 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.codeComplete.argumentPrefixes=
org.eclipse.jdt.core.codeComplete.argumentSuffixes=
@@ -8,6 +8,7 @@ org.eclipse.jdt.core.codeComplete.localPrefixes=
org.eclipse.jdt.core.codeComplete.localSuffixes=
org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
diff --git a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch
index 3cbdac5725..be287a0ef2 100644
--- a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch
+++ b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch
@@ -25,8 +25,8 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx1024m&#13;&#10;-Ddebug=true&#13;&#10;-Dnet4j.config=${resource_loc:/org.eclipse.emf.cdo.server.product/rootfiles/configuration}&#13;&#10;-Dorg.osgi.service.http.port=8080"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<stringAttribute key="selected_target_plugins" value="com.springsource.com.mysql.jdbc,com.springsource.javax.xml.stream,com.springsource.org.apache.commons.logging,com.springsource.org.hsqldb,javax.servlet*2.3.0.v200806031603,javax.servlet*2.4.0.v200806031604,javax.servlet*2.5.0.v200806031605,org.apache.commons.logging*1.1.1.v20080605-1935,org.apache.commons.logging*1.0.4.v20080605-1930,org.apache.derby,org.eclipse.core.contenttype,org.eclipse.core.jobs,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.osgi,org.eclipse.osgi.services,org.mortbay.jetty.server,org.mortbay.jetty.util"/>
-<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"/>
+<stringAttribute key="selected_target_plugins" value="com.springsource.javax.xml.stream@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@default:default,org.eclipse.equinox.http.jetty@default:default,com.springsource.com.mysql.jdbc@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.emf.ecore.xmi@default:default,javax.servlet@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.emf.common@default:default,org.apache.derby@default:default,org.eclipse.equinox.registry@default:default,org.mortbay.jetty.util@default:default,com.springsource.org.hsqldb@default:default,org.eclipse.osgi@default:default,org.eclipse.core.jobs@default:default,com.springsource.javax.transaction@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.equinox.http.registry@default:default,com.springsource.org.apache.commons.logging@default:default,org.eclipse.emf.ecore@default:default,org.apache.commons.logging@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.contenttype@default:default,org.mortbay.jetty.server@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.util@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.db.hsqldb@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.db.derby@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j@default:default,org.eclipse.net4j.db.mysql@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.net4j.db@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="tracing" value="true"/>
diff --git a/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
index 1b0d6948f3..3c8fb4c0eb 100644
--- a/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
@@ -10,8 +10,11 @@ Bundle-Activator: org.eclipse.emf.cdo.internal.server.bundle.OM$Activator
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ClassPath: .
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
- org.eclipse.emf.cdo.common;bundle-version="[2.0.0,3.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.internal.server;version="2.0.0",
+ org.eclipse.emf.cdo;bundle-version="[2.0.0,3.0.0)";visibility:=reexport
+Export-Package: org.eclipse.emf.cdo.internal.server;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo.server.db",
org.eclipse.emf.cdo.internal.server.bundle;version="2.0.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.server.mem;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests",
org.eclipse.emf.cdo.internal.server.protocol;version="2.0.0";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.server;version="2.0.0"
+ org.eclipse.emf.cdo.server;version="2.0.0",
+ org.eclipse.emf.cdo.server.mem;version="2.0.0",
+ org.eclipse.emf.cdo.spi.server;version="2.0.0"
diff --git a/plugins/org.eclipse.emf.cdo.server/plugin.xml b/plugins/org.eclipse.emf.cdo.server/plugin.xml
index 35660c283e..6ef1bff118 100644
--- a/plugins/org.eclipse.emf.cdo.server/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.server/plugin.xml
@@ -43,7 +43,7 @@
<extension
point="org.eclipse.emf.cdo.server.storeFactories">
<storeFactory
- class="org.eclipse.emf.cdo.internal.server.MEMStoreFactory"
+ class="org.eclipse.emf.cdo.internal.server.mem.MEMStoreFactory"
storeType="mem"/>
</extension>
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java
index 3e9041df25..701ea9c510 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java
@@ -13,7 +13,6 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.internal.server.Transaction.InternalCommitContext;
import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.IRepositoryElement;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
@@ -31,7 +30,7 @@ import java.util.concurrent.Future;
* @author Simon McDuff
* @since 2.0
*/
-public class CommitManager extends Lifecycle implements IRepositoryElement
+public class CommitManager extends Lifecycle
{
private IRepository repository;
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LockManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LockManager.java
index a0e2785996..cabd4cbfa6 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LockManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LockManager.java
@@ -13,7 +13,6 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.IRepositoryElement;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ISessionManager;
import org.eclipse.emf.cdo.server.IView;
@@ -28,7 +27,7 @@ import org.eclipse.net4j.util.event.IListener;
* @author Simon McDuff
* @since 2.0
*/
-public class LockManager extends RWLockManager<CDOID, IView> implements IRepositoryElement
+public class LockManager extends RWLockManager<CDOID, IView>
{
private IRepository repository;
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 eb611b3f60..d55a825978 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
@@ -17,6 +17,7 @@ import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.server.INotificationManager;
import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
@@ -46,7 +47,7 @@ public class NotificationManager extends Lifecycle implements INotificationManag
this.repository = repository;
}
- public void notifyCommit(Session session, IStoreAccessor.CommitContext commitContext)
+ public void notifyCommit(ISession session, IStoreAccessor.CommitContext commitContext)
{
CDORevisionDelta[] arrayOfDeltas = commitContext.getDirtyObjectDeltas();
CDOID[] arrayOfDetachedObjects = commitContext.getDetachedObjects();
@@ -73,7 +74,8 @@ public class NotificationManager extends Lifecycle implements INotificationManag
}
SessionManager sessionManager = (SessionManager)repository.getSessionManager();
- sessionManager.handleCommitNotification(commitContext.getTimeStamp(), dirtyIDs, detachedObjects, deltas, session);
+ sessionManager.handleCommitNotification(commitContext.getTimeStamp(), commitContext.getNewPackageUnits(),
+ dirtyIDs, detachedObjects, deltas, (Session)session);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java
deleted file mode 100644
index de565a9444..0000000000
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server;
-
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageManagerImpl;
-import org.eclipse.emf.cdo.server.IPackageManager;
-import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.IStoreAccessor;
-import org.eclipse.emf.cdo.server.StoreThreadLocal;
-
-import java.util.Collection;
-
-/**
- * @author Eike Stepper
- */
-public class PackageManager extends CDOPackageManagerImpl implements IPackageManager
-{
- private IRepository repository;
-
- /**
- * @since 2.0
- */
- public PackageManager()
- {
- }
-
- /**
- * @since 2.0
- */
- public IRepository getRepository()
- {
- return repository;
- }
-
- /**
- * @since 2.0
- */
- public void setRepository(IRepository repository)
- {
- this.repository = repository;
- }
-
- public CDOIDObjectFactory getCDOIDObjectFactory()
- {
- return repository.getStore().getCDOIDObjectFactory();
- }
-
- /**
- * @since 2.0
- */
- public void loadPackage(CDOPackage cdoPackage)
- {
- IStoreAccessor accessor = StoreThreadLocal.getAccessor();
- accessor.readPackage(cdoPackage);
- }
-
- /**
- * @since 2.0
- */
- public void loadPackageEcore(CDOPackage cdoPackage)
- {
- IStoreAccessor accessor = StoreThreadLocal.getAccessor();
- accessor.readPackageEcore(cdoPackage);
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- IStoreAccessor accessor = null;
-
- try
- {
- accessor = repository.getStore().getReader(null);
- Collection<CDOPackageInfo> packageInfos = accessor.readPackageInfos();
- for (CDOPackageInfo info : packageInfos)
- {
- addPackage(CDOModelUtil.createProxyPackage(this, info.getPackageURI(), info.isDynamic(), info.getMetaIDRange(),
- info.getParentURI()));
- }
- }
- finally
- {
- if (accessor != null)
- {
- accessor.release();
- }
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java
index 5fd4294660..8ddefc9f52 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.IRepositoryElement;
import org.eclipse.emf.cdo.server.IView;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
@@ -37,7 +36,7 @@ import java.util.concurrent.Future;
* @author Simon McDuff
* @since 2.0
*/
-public class QueryManager extends Lifecycle implements IRepositoryElement
+public class QueryManager extends Lifecycle
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, QueryManager.class);
@@ -249,6 +248,7 @@ public class QueryManager extends Lifecycle implements IRepositoryElement
{
Session session = (Session)queryResult.getView().getSession();
StoreThreadLocal.setSession(session);
+
try
{
started = true;
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 efbc8e7332..bc779ad614 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
@@ -10,23 +10,28 @@
* Simon McDuff - http://bugs.eclipse.org/201266
* Simon McDuff - http://bugs.eclipse.org/233273
* Simon McDuff - http://bugs.eclipse.org/233490
+ * Stefan Winkler - changed order of determining audit and revision delta support.
*/
package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.CDOQueryInfo;
-import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.IQueryHandlerProvider;
import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.IRepositoryElement;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
@@ -35,10 +40,15 @@ import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.monitor.Monitor;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,7 +58,7 @@ import java.util.UUID;
* @author Eike Stepper
* @since 2.0
*/
-public class Repository extends Container<IRepositoryElement> implements IRepository
+public class Repository extends Container<Object> implements IRepository, InternalCDOPackageRegistry.PackageLoader
{
private String name;
@@ -64,7 +74,7 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
private boolean verifyingRevisions;
- private PackageManager packageManager;
+ private InternalCDOPackageRegistry packageRegistry;
private SessionManager sessionManager;
@@ -85,12 +95,6 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
private List<WriteAccessHandler> writeAccessHandlers = new ArrayList<WriteAccessHandler>();
@ExcludeFromDump
- private transient IRepositoryElement[] elements;
-
- @ExcludeFromDump
- private transient long lastMetaID;
-
- @ExcludeFromDump
private transient long lastCommitTimeStamp;
@ExcludeFromDump
@@ -169,17 +173,38 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
return verifyingRevisions;
}
- public PackageManager getPackageManager()
+ public EPackage[] loadPackages(CDOPackageUnit packageUnit)
{
- return packageManager;
+ IStoreAccessor accessor = StoreThreadLocal.getAccessor();
+ return accessor.loadPackageUnit((InternalCDOPackageUnit)packageUnit);
}
- /**
- * @since 2.0
- */
- public void setPackageManager(PackageManager packageManager)
+ public InternalCDOPackageRegistry getPackageRegistry(boolean considerCommitContext)
+ {
+ if (considerCommitContext)
+ {
+ IStoreAccessor.CommitContext commitContext = StoreThreadLocal.getCommitContext();
+ if (commitContext != null)
+ {
+ InternalCDOPackageRegistry contextualPackageRegistry = commitContext.getPackageRegistry();
+ if (contextualPackageRegistry != null)
+ {
+ return contextualPackageRegistry;
+ }
+ }
+ }
+
+ return packageRegistry;
+ }
+
+ public InternalCDOPackageRegistry getPackageRegistry()
{
- this.packageManager = packageManager;
+ return getPackageRegistry(true);
+ }
+
+ public void setPackageRegistry(InternalCDOPackageRegistry packageRegistry)
+ {
+ this.packageRegistry = packageRegistry;
}
public SessionManager getSessionManager()
@@ -350,8 +375,10 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
return handler;
}
- public IRepositoryElement[] getElements()
+ public Object[] getElements()
{
+ final Object[] elements = { packageRegistry, sessionManager, revisionManager, queryManager, notificationManager,
+ commitManager, lockManager, store };
return elements;
}
@@ -361,23 +388,6 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
return false;
}
- public synchronized CDOIDMetaRange getMetaIDRange(int count)
- {
- CDOID lowerBound = CDOIDUtil.createMeta(lastMetaID + 1);
- lastMetaID += count;
- return CDOIDUtil.createMetaRange(lowerBound, count);
- }
-
- public long getLastMetaID()
- {
- return lastMetaID;
- }
-
- public void setLastMetaID(long lastMetaID)
- {
- this.lastMetaID = lastMetaID;
- }
-
/**
* @since 2.0
*/
@@ -528,7 +538,7 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
{
super.doBeforeActivate();
checkState(!StringUtil.isEmpty(name), "name is empty");
- checkState(packageManager, "packageManager");
+ checkState(packageRegistry, "packageRegistry");
checkState(sessionManager, "sessionManager");
checkState(revisionManager, "revisionManager");
checkState(queryManager, "queryManager");
@@ -536,7 +546,8 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
checkState(commitManager, "commitManager");
checkState(lockManager, "lockingManager");
- packageManager.setRepository(this);
+ packageRegistry.setReplacingDescriptors(true);
+ packageRegistry.setPackageLoader(this);
sessionManager.setRepository(this);
revisionManager.setRepository(this);
queryManager.setRepository(this);
@@ -545,7 +556,6 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
lockManager.setRepository(this);
checkState(store, "store");
- supportingRevisionDeltas = store.getSupportedChangeFormats().contains(IStore.ChangeFormat.DELTA);
{
String value = getProperties().get(Props.SUPPORTING_AUDITS);
@@ -561,29 +571,20 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
}
}
+ supportingRevisionDeltas = store.getSupportedChangeFormats().contains(IStore.ChangeFormat.DELTA);
+
{
String value = getProperties().get(Props.VERIFYING_REVISIONS);
verifyingRevisions = value == null ? false : Boolean.valueOf(value);
}
-
- elements = new IRepositoryElement[] { packageManager, sessionManager, revisionManager, queryManager,
- notificationManager, commitManager, lockManager, store };
}
@Override
protected void doActivate() throws Exception
{
super.doActivate();
+ LifecycleUtil.activate(packageRegistry);
LifecycleUtil.activate(store);
- LifecycleUtil.activate(packageManager);
- if (store.wasCrashed())
- {
- OM.LOG.info("Crash of repository " + name + " detected");
- store.repairAfterCrash();
- }
-
- setLastMetaID(store.getLastMetaID());
-
LifecycleUtil.activate(sessionManager);
LifecycleUtil.activate(revisionManager);
LifecycleUtil.activate(queryManager);
@@ -592,6 +593,14 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
LifecycleUtil.activate(queryHandlerProvider);
LifecycleUtil.activate(lockManager);
+ if (store.isFirstTime())
+ {
+ initSystemPackages();
+ }
+ else
+ {
+ readPackageUnits();
+ }
}
@Override
@@ -604,12 +613,66 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
LifecycleUtil.deactivate(queryManager);
LifecycleUtil.deactivate(revisionManager);
LifecycleUtil.deactivate(sessionManager);
-
- LifecycleUtil.deactivate(packageManager);
LifecycleUtil.deactivate(store);
+ LifecycleUtil.deactivate(packageRegistry);
super.doDeactivate();
}
+ protected void initSystemPackages()
+ {
+ IStoreAccessor writer = store.getWriter(null);
+ StoreThreadLocal.setAccessor(writer);
+
+ try
+ {
+ InternalCDOPackageUnit ecoreUnit = initSystemPackage(EcorePackage.eINSTANCE);
+ InternalCDOPackageUnit eresourceUnit = initSystemPackage(EresourcePackage.eINSTANCE);
+ InternalCDOPackageUnit[] systemUnits = { ecoreUnit, eresourceUnit };
+
+ writer.writePackageUnits(systemUnits, new Monitor());
+ writer.commit(new Monitor());
+ }
+ finally
+ {
+ LifecycleUtil.deactivate(writer); // Don't let the null-context accessor go to the pool!
+ StoreThreadLocal.release();
+ }
+ }
+
+ protected InternalCDOPackageUnit initSystemPackage(EPackage ePackage)
+ {
+ EMFUtil.registerPackage(ePackage, packageRegistry);
+ InternalCDOPackageInfo packageInfo = packageRegistry.getPackageInfo(ePackage);
+ CDOIDMetaRange metaIDRange = store.getNextMetaIDRange(packageInfo.getMetaIDRange().size());
+ packageInfo.setMetaIDRange(metaIDRange);
+ packageRegistry.getMetaInstanceMapper().mapMetaInstances(ePackage, metaIDRange);
+
+ InternalCDOPackageUnit packageUnit = packageInfo.getPackageUnit();
+ packageUnit.setTimeStamp(store.getCreationTime());
+ packageUnit.setState(CDOPackageUnit.State.LOADED);
+ return packageUnit;
+ }
+
+ protected void readPackageUnits()
+ {
+ IStoreAccessor reader = store.getReader(null);
+ StoreThreadLocal.setAccessor(reader);
+
+ try
+ {
+ Collection<InternalCDOPackageUnit> packageUnits = reader.readPackageUnits();
+ for (InternalCDOPackageUnit packageUnit : packageUnits)
+ {
+ packageRegistry.putPackageUnit(packageUnit);
+ }
+ }
+ finally
+ {
+ LifecycleUtil.deactivate(reader); // Don't let the null-context accessor go to the pool!
+ StoreThreadLocal.release();
+ }
+ }
+
/**
* @author Eike Stepper
* @since 2.0
@@ -623,9 +686,9 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
@Override
protected void doBeforeActivate() throws Exception
{
- if (getPackageManager() == null)
+ if (getPackageRegistry() == null)
{
- setPackageManager(createPackageManager());
+ setPackageRegistry(createPackageRegistry());
}
if (getSessionManager() == null)
@@ -661,9 +724,9 @@ public class Repository extends Container<IRepositoryElement> implements IReposi
super.doBeforeActivate();
}
- protected PackageManager createPackageManager()
+ protected InternalCDOPackageRegistry createPackageRegistry()
{
- return new PackageManager();
+ return new CDOPackageRegistryImpl();
}
protected SessionManager createSessionManager()
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java
index 5528ab9850..152dd85ded 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java
@@ -14,9 +14,7 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.internal.common.revision.CDORevisionResolverImpl;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IRevisionManager;
@@ -28,6 +26,10 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.MoveableList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -90,12 +92,12 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio
*/
protected void ensureChunks(InternalCDORevision revision, int referenceChunk, IStoreAccessor accessor)
{
- CDOClass cdoClass = revision.getCDOClass();
- CDOFeature[] features = cdoClass.getAllFeatures();
+ EClass eClass = revision.getEClass();
+ EStructuralFeature[] features = CDOModelUtil.getAllPersistentFeatures(eClass);
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
- if (feature.isReference() && feature.isMany())
+ EStructuralFeature feature = features[i];
+ if (feature instanceof EReference && feature.isMany())
{
MoveableList<Object> list = revision.getList(feature);
int chunkEnd = Math.min(referenceChunk, list.size());
@@ -107,15 +109,16 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio
/**
* @since 2.0
*/
- public IStoreAccessor ensureChunk(InternalCDORevision revision, CDOFeature feature, int chunkStart, int chunkEnd)
+ public IStoreAccessor ensureChunk(InternalCDORevision revision, EStructuralFeature feature, int chunkStart,
+ int chunkEnd)
{
MoveableList<Object> list = revision.getList(feature);
chunkEnd = Math.min(chunkEnd, list.size());
return ensureChunk(revision, feature, StoreThreadLocal.getAccessor(), list, chunkStart, chunkEnd);
}
- protected IStoreAccessor ensureChunk(InternalCDORevision revision, CDOFeature feature, IStoreAccessor accessor,
- MoveableList<Object> list, int chunkStart, int chunkEnd)
+ protected IStoreAccessor ensureChunk(InternalCDORevision revision, EStructuralFeature feature,
+ IStoreAccessor accessor, MoveableList<Object> list, int chunkStart, int chunkEnd)
{
IStoreChunkReader chunkReader = null;
int fromIndex = -1;
@@ -282,15 +285,6 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio
}
/**
- * @since 2.0
- */
- @Override
- protected CDOPackageManager getPackageManager()
- {
- return repository.getPackageManager();
- }
-
- /**
* TODO Move this to the cache(s)
*/
protected int getLRUCapacity(String prop)
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 115055cb5f..bfdc6b4d12 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
@@ -19,9 +19,8 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
@@ -40,15 +39,15 @@ import org.eclipse.net4j.channel.IChannel;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.event.IListener;
-import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataOutput;
-import org.eclipse.net4j.util.io.StringCompressor;
import org.eclipse.net4j.util.lifecycle.ILifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.options.IOptionsContainer;
-import java.io.IOException;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
@@ -60,8 +59,7 @@ import java.util.concurrent.ConcurrentMap;
/**
* @author Eike Stepper
*/
-public class Session extends Container<IView> implements ISession, CDOIDProvider, CDOPackageURICompressor,
- CDOCommonSession.Options
+public class Session extends Container<IView> implements ISession, CDOIDProvider, CDOCommonSession.Options
{
private SessionManager sessionManager;
@@ -74,9 +72,6 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider
private ConcurrentMap<Integer, IView> views = new ConcurrentHashMap<Integer, IView>();
@ExcludeFromDump
- private transient StringCompressor packageURICompressor = new StringCompressor(false);
-
- @ExcludeFromDump
private IListener protocolListener = new LifecycleEventAdapter()
{
@Override
@@ -268,14 +263,13 @@ 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, CDOPackageUnit[] packageUnits, List<CDOIDAndVersion> dirtyIDs,
+ List<CDOID> detachedObjects, List<CDORevisionDelta> deltas)
{
if (!isPassiveUpdateEnabled())
{
dirtyIDs = Collections.emptyList();
}
-
// Look if someone needs to know something about modified objects
List<CDORevisionDelta> newDeltas = new ArrayList<CDORevisionDelta>();
for (CDORevisionDelta delta : deltas)
@@ -311,12 +305,13 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider
try
{
- if (!dirtyIDs.isEmpty() || !newDeltas.isEmpty() || !detachedObjects.isEmpty())
+ if (!dirtyIDs.isEmpty() || !newDeltas.isEmpty() || !detachedObjects.isEmpty() || packageUnits.length > 0)
{
IChannel channel = protocol.getChannel();
if (LifecycleUtil.isActive(channel))
{
- new CommitNotificationRequest(channel, timeStamp, dirtyIDs, detachedObjects, newDeltas).sendAsync();
+ new CommitNotificationRequest(channel, timeStamp, packageUnits, dirtyIDs, detachedObjects, newDeltas)
+ .sendAsync();
}
else
{
@@ -367,12 +362,12 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider
List<CDORevision> additionalRevisions)
{
RevisionManager revisionManager = (RevisionManager)getSessionManager().getRepository().getRevisionManager();
- CDOClass cdoClass = revision.getCDOClass();
- CDOFeature[] features = cdoClass.getAllFeatures();
+ EClass eClass = revision.getEClass();
+ EStructuralFeature[] features = CDOModelUtil.getAllPersistentFeatures(eClass);
for (int i = 0; i < features.length; i++)
{
- CDOFeature feature = features[i];
- if (feature.isReference() && !feature.isMany() && feature.isContainment())
+ EStructuralFeature feature = features[i];
+ if (feature instanceof EReference && !feature.isMany() && ((EReference)feature).isContainment())
{
Object value = revision.getValue(feature);
if (value instanceof CDOID)
@@ -391,22 +386,6 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider
}
}
- /**
- * @since 2.0
- */
- public void writePackageURI(ExtendedDataOutput out, String uri) throws IOException
- {
- packageURICompressor.write(out, uri);
- }
-
- /**
- * @since 2.0
- */
- public String readPackageURI(ExtendedDataInput in) throws IOException
- {
- return packageURICompressor.read(in);
- }
-
@Override
public String toString()
{
@@ -444,7 +423,6 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider
views = null;
sessionManager.sessionClosed(this);
sessionManager = null;
- packageURICompressor = null;
super.doDeactivate();
}
}
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 751185ad99..802ea279f5 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
@@ -14,6 +14,7 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
@@ -157,14 +158,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, CDOPackageUnit[] packageUnits, 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, packageUnits, 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
deleted file mode 100644
index 7251488732..0000000000
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- * Simon McDuff - http://bugs.eclipse.org/201266
- * Simon McDuff - http://bugs.eclipse.org/213402
- */
-package org.eclipse.emf.cdo.internal.server;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.internal.server.bundle.OM;
-import org.eclipse.emf.cdo.server.ISession;
-import org.eclipse.emf.cdo.server.IStoreAccessor;
-import org.eclipse.emf.cdo.server.ITransaction;
-import org.eclipse.emf.cdo.server.StoreUtil;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
-
-import org.eclipse.net4j.util.lifecycle.Lifecycle;
-import org.eclipse.net4j.util.om.monitor.OMMonitor;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-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;
-
- private boolean reader;
-
- private StoreAccessor(Store store, Object context, boolean reader)
- {
- this.store = store;
- this.context = context;
- this.reader = reader;
- }
-
- protected StoreAccessor(Store store, ISession session)
- {
- this(store, session, true);
- }
-
- /**
- * @since 2.0
- */
- protected StoreAccessor(Store store, ITransaction transaction)
- {
- this(store, transaction, false);
- }
-
- public Store getStore()
- {
- return store;
- }
-
- public boolean isReader()
- {
- return reader;
- }
-
- public ISession getSession()
- {
- if (context instanceof ITransaction)
- {
- return ((ITransaction)context).getSession();
- }
-
- return (ISession)context;
- }
-
- /**
- * @since 2.0
- */
- public ITransaction getTransaction()
- {
- if (context instanceof ITransaction)
- {
- return (ITransaction)context;
- }
-
- return null;
- }
-
- /**
- * @since 2.0
- */
- public CDOID readResourceID(CDOID folderID, String name, long timeStamp)
- {
- IStoreAccessor.QueryResourcesContext.ExactMatch context = //
- StoreUtil.createExactMatchContext(folderID, name, timeStamp);
-
- queryResources(context);
- return context.getResourceID();
- }
-
- /**
- * @since 2.0
- */
- public InternalCDORevision verifyRevision(CDORevision revision)
- {
- return (InternalCDORevision)revision;
- }
-
- /**
- * @since 2.0
- */
- public void write(CommitContext context, OMMonitor monitor)
- {
- if (TRACER.isEnabled())
- {
- TRACER.format("Writing transaction: {0}", getTransaction());
- }
-
- commitContexts.add(context);
- long timeStamp = context.getTimeStamp();
- boolean deltas = store.getRepository().isSupportingRevisionDeltas();
- CDOPackage[] newPackages = context.getNewPackages();
- CDORevision[] newObjects = context.getNewObjects();
- CDOID[] detachedObjects = context.getDetachedObjects();
- int dirtyCount = deltas ? context.getDirtyObjectDeltas().length : context.getDirtyObjects().length;
-
- try
- {
- monitor.begin(newPackages.length + newObjects.length + detachedObjects.length + dirtyCount + 2);
- writePackages(newPackages, monitor.fork(newPackages.length));
- addIDMappings(context, monitor.fork());
- context.applyIDMappings(monitor.fork());
-
- writeRevisions(newObjects, monitor.fork(newObjects.length));
- if (deltas)
- {
- writeRevisionDeltas(context.getDirtyObjectDeltas(), timeStamp, monitor.fork(dirtyCount));
- }
- else
- {
- writeRevisions(context.getDirtyObjects(), monitor.fork(dirtyCount));
- }
-
- detachObjects(detachedObjects, timeStamp - 1, monitor.fork(detachedObjects.length));
- }
- finally
- {
- monitor.done();
- }
- }
-
- /**
- * @since 2.0
- */
- public void rollback()
- {
- if (TRACER.isEnabled())
- {
- TRACER.format("Rolling back transaction: {0}", getTransaction());
- }
-
- for (CommitContext commitContext : commitContexts)
- {
- rollback(commitContext);
- }
- }
-
- /**
- * @since 2.0
- */
- protected abstract void rollback(IStoreAccessor.CommitContext commitContext);
-
- public final void release()
- {
- store.releaseAccessor(this);
- commitContexts.clear();
- }
-
- /**
- * @since 2.0
- */
- protected void addIDMappings(CommitContext context, OMMonitor monitor)
- {
- try
- {
- if (store instanceof LongIDStore)
- {
- LongIDStore longIDStore = (LongIDStore)getStore();
- CDORevision[] newObjects = context.getNewObjects();
- monitor.begin(newObjects.length);
- for (CDORevision revision : newObjects)
- {
- CDOIDTemp oldID = (CDOIDTemp)revision.getID();
- CDOID newID = longIDStore.getNextCDOID();
- if (CDOIDUtil.isNull(newID) || newID.isTemporary())
- {
- throw new IllegalStateException("newID=" + newID);
- }
-
- context.addIDMapping(oldID, newID);
- monitor.worked();
- }
- }
- }
- finally
- {
- monitor.done();
- }
- }
-
- /**
- * @since 2.0
- */
- protected abstract void writePackages(CDOPackage[] cdoPackages, OMMonitor monitor);
-
- /**
- * @since 2.0
- */
- protected abstract void writeRevisions(CDORevision[] revisions, OMMonitor monitor);
-
- /**
- * @since 2.0
- */
- protected abstract void writeRevisionDeltas(CDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor);
-
- /**
- * @since 2.0
- */
- protected abstract void detachObjects(CDOID[] detachedObjects, long revised, OMMonitor monitor);
-
- /**
- * @since 2.0
- */
- @Override
- protected abstract void doActivate() throws Exception;
-
- /**
- * @since 2.0
- */
- @Override
- protected abstract void doDeactivate() throws Exception;
-
- /**
- * @since 2.0
- */
- protected abstract void doPassivate() throws Exception;
-
- /**
- * @since 2.0
- */
- protected abstract void doUnpassivate() throws Exception;
-
- /**
- * @author Eike Stepper
- * @since 2.0
- */
- public static abstract class PackageWriter implements Runnable
- {
- private CDOPackage[] cdoPackages;
-
- private OMMonitor mainMonitor;
-
- public PackageWriter(CDOPackage[] cdoPackages, OMMonitor monitor)
- {
- this.cdoPackages = cdoPackages;
- mainMonitor = monitor;
- }
-
- public CDOPackage[] getCDOPackages()
- {
- return cdoPackages;
- }
-
- public OMMonitor getMonitor()
- {
- return mainMonitor;
- }
-
- public void run()
- {
- try
- {
- mainMonitor.begin(cdoPackages.length);
- for (CDOPackage cdoPackage : cdoPackages)
- {
- runPackage(cdoPackage, mainMonitor.fork());
- }
- }
- finally
- {
- mainMonitor.done();
- }
- }
-
- protected void runPackage(CDOPackage cdoPackage, OMMonitor monitor)
- {
- try
- {
- CDOClass[] classes = cdoPackage.getClasses();
- monitor.begin(1 + classes.length);
-
- writePackage((InternalCDOPackage)cdoPackage, monitor.fork());
- for (CDOClass cdoClass : classes)
- {
- runClass((InternalCDOClass)cdoClass, monitor.fork());
- }
- }
- finally
- {
- monitor.done();
- }
- }
-
- protected void runClass(InternalCDOClass cdoClass, OMMonitor monitor)
- {
- try
- {
- List<CDOClassProxy> superTypeProxies = cdoClass.getSuperTypeProxies();
- CDOFeature[] features = cdoClass.getFeatures();
- monitor.begin(1 + superTypeProxies.size() + features.length);
-
- writeClass(cdoClass, monitor.fork());
-
- for (CDOClassProxy superType : superTypeProxies)
- {
- writeSuperType(cdoClass, superType, monitor.fork());
- }
-
- for (CDOFeature feature : features)
- {
- writeFeature((InternalCDOFeature)feature, monitor.fork());
- }
- }
- finally
- {
- monitor.done();
- }
- }
-
- protected abstract void writePackage(InternalCDOPackage cdoPackage, OMMonitor monitor);
-
- protected abstract void writeClass(InternalCDOClass cdoClass, OMMonitor monitor);
-
- protected abstract void writeSuperType(InternalCDOClass type, CDOClassProxy superType, OMMonitor monitor);
-
- protected abstract void writeFeature(InternalCDOFeature feature, OMMonitor monitor);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java
index 5354f32bcc..221bb5cbfb 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java
@@ -15,12 +15,11 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.CDOCommonView;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl.TransactionPackageManager;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.ITransaction;
+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.net4j.util.om.monitor.OMMonitor;
@@ -69,7 +68,7 @@ public class Transaction extends View implements ITransaction
*
* @since 2.0
*/
- public InternalCommitContext createCommitContext(final long timeStamp)
+ public InternalCommitContext testCreateCommitContext(final long timeStamp)
{
checkOpen();
return new TransactionCommitContextImpl(this)
@@ -98,8 +97,6 @@ public class Transaction extends View implements ITransaction
{
public Transaction getTransaction();
- public TransactionPackageManager getPackageManager();
-
public void preCommit();
public void write(OMMonitor monitor);
@@ -114,11 +111,11 @@ public class Transaction extends View implements ITransaction
public List<CDOIDMetaRange> getMetaIDRanges();
- public void setNewPackages(CDOPackage[] newPackages);
+ public void setNewPackageUnits(InternalCDOPackageUnit[] newPackageUnits);
- public void setNewObjects(CDORevision[] newObjects);
+ public void setNewObjects(InternalCDORevision[] newObjects);
- public void setDirtyObjectDeltas(CDORevisionDelta[] dirtyObjectDeltas);
+ public void setDirtyObjectDeltas(InternalCDORevisionDelta[] dirtyObjectDeltas);
public void setDetachedObjects(CDOID[] detachedObjects);
@@ -126,5 +123,4 @@ public class Transaction extends View implements ITransaction
public boolean isAutoReleaseLocksEnabled();
}
-
}
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 2e65b3d5c6..e42db76f9f 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
@@ -13,33 +13,32 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageManager;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+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.CDOIDMapper;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
-import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.concurrent.RWLockManager;
import org.eclipse.net4j.util.concurrent.TimeoutRuntimeException;
-import org.eclipse.net4j.util.event.IListener;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EPackage;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -51,22 +50,22 @@ import java.util.concurrent.ConcurrentMap;
* @author Simon McDuff
* @since 2.0
*/
-public class TransactionCommitContextImpl implements IStoreAccessor.CommitContext, Transaction.InternalCommitContext
+public class TransactionCommitContextImpl implements Transaction.InternalCommitContext
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_TRANSACTION,
TransactionCommitContextImpl.class);
- private TransactionPackageManager packageManager;
+ private TransactionPackageRegistry packageRegistry;
private IStoreAccessor accessor;
private long timeStamp = CDORevision.UNSPECIFIED_DATE;
- private CDOPackage[] newPackages;
+ private InternalCDOPackageUnit[] newPackageUnits;
- private CDORevision[] newObjects;
+ private InternalCDORevision[] newObjects;
- private CDORevision[] dirtyObjects;
+ private InternalCDORevision[] dirtyObjects;
private CDOID[] detachedObjects;
@@ -74,7 +73,7 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
private List<InternalCDORevision> detachedRevisions = new ArrayList<InternalCDORevision>();;
- private CDORevisionDelta[] dirtyObjectDeltas;
+ private InternalCDORevisionDelta[] dirtyObjectDeltas;
private List<CDOIDMetaRange> metaIDRanges = new ArrayList<CDOIDMetaRange>();
@@ -91,7 +90,9 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
public TransactionCommitContextImpl(Transaction transaction)
{
this.transaction = transaction;
- packageManager = new TransactionPackageManager();
+ Repository repository = (Repository)transaction.getRepository();
+ packageRegistry = new TransactionPackageRegistry(repository.getPackageRegistry(false));
+ packageRegistry.activate();
}
public int getTransactionID()
@@ -109,22 +110,22 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
return timeStamp;
}
- public TransactionPackageManager getPackageManager()
+ public InternalCDOPackageRegistry getPackageRegistry()
{
- return packageManager;
+ return packageRegistry;
}
- public CDOPackage[] getNewPackages()
+ public InternalCDOPackageUnit[] getNewPackageUnits()
{
- return newPackages;
+ return newPackageUnits;
}
- public CDORevision[] getNewObjects()
+ public InternalCDORevision[] getNewObjects()
{
return newObjects;
}
- public CDORevision[] getDirtyObjects()
+ public InternalCDORevision[] getDirtyObjects()
{
return dirtyObjects;
}
@@ -134,7 +135,7 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
return detachedObjects;
}
- public CDORevisionDelta[] getDirtyObjectDeltas()
+ public InternalCDORevisionDelta[] getDirtyObjectDeltas()
{
return dirtyObjectDeltas;
}
@@ -194,19 +195,20 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
// Make the store writer available in a ThreadLocal variable
StoreThreadLocal.setAccessor(accessor);
+ StoreThreadLocal.setCommitContext(this);
}
- public void setNewPackages(CDOPackage[] newPackages)
+ public void setNewPackageUnits(InternalCDOPackageUnit[] newPackageUnits)
{
- this.newPackages = newPackages;
+ this.newPackageUnits = newPackageUnits;
}
- public void setNewObjects(CDORevision[] newObjects)
+ public void setNewObjects(InternalCDORevision[] newObjects)
{
this.newObjects = newObjects;
}
- public void setDirtyObjectDeltas(CDORevisionDelta[] dirtyObjectDeltas)
+ public void setDirtyObjectDeltas(InternalCDORevisionDelta[] dirtyObjectDeltas)
{
this.dirtyObjectDeltas = dirtyObjectDeltas;
}
@@ -244,10 +246,13 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
// Could throw an exception
timeStamp = createTimeStamp();
- dirtyObjects = new CDORevision[dirtyObjectDeltas.length];
+ dirtyObjects = new InternalCDORevision[dirtyObjectDeltas.length];
+
+ adjustMetaRanges();
+ monitor.worked();
- adjustMetaRanges(monitor.fork());
- adjustTimeStamps(monitor.fork());
+ adjustTimeStamps();
+ monitor.worked();
Repository repository = (Repository)transaction.getRepository();
computeDirtyObjects(!repository.isSupportingRevisionDeltas(), monitor.fork());
@@ -319,86 +324,74 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
StoreThreadLocal.release();
accessor = null;
timeStamp = CDORevision.UNSPECIFIED_DATE;
- packageManager.clear();
+
+ packageRegistry.deactivate();
+ packageRegistry = null;
+
metaIDRanges.clear();
+ metaIDRanges = null;
+
idMappings.clear();
+ idMappings = null;
+
rollbackMessage = null;
- newPackages = null;
+ newPackageUnits = null;
newObjects = null;
dirtyObjectDeltas = null;
dirtyObjects = null;
}
}
- private void adjustTimeStamps(OMMonitor monitor)
+ private void adjustTimeStamps()
{
- try
+ for (InternalCDOPackageUnit newPackageUnit : newPackageUnits)
{
- monitor.begin(newObjects.length);
- for (CDORevision newObject : newObjects)
- {
- InternalCDORevision revision = (InternalCDORevision)newObject;
- revision.setCreated(timeStamp);
- monitor.worked();
- }
+ newPackageUnit.setTimeStamp(timeStamp);
}
- finally
+
+ for (InternalCDORevision newObject : newObjects)
{
- monitor.done();
+ newObject.setCreated(timeStamp);
}
}
- private void adjustMetaRanges(OMMonitor monitor)
+ private void adjustMetaRanges()
{
- try
+ for (InternalCDOPackageUnit newPackageUnit : newPackageUnits)
{
- monitor.begin(newPackages.length);
- for (CDOPackage newPackage : newPackages)
+ for (InternalCDOPackageInfo packageInfo : newPackageUnit.getPackageInfos())
{
- if (newPackage.getParentURI() == null)
- {
- adjustMetaRange(newPackage, monitor.fork());
- }
+ adjustMetaRange(packageInfo);
}
}
- finally
- {
- monitor.done();
- }
}
- private void adjustMetaRange(CDOPackage newPackage, OMMonitor monitor)
+ private void adjustMetaRange(InternalCDOPackageInfo packageInfo)
{
- CDOIDMetaRange oldRange = newPackage.getMetaIDRange();
+ CDOIDMetaRange oldRange = packageInfo.getMetaIDRange();
if (!oldRange.isTemporary())
{
throw new IllegalStateException("!oldRange.isTemporary()");
}
- try
+ int count = oldRange.size();
+ CDOIDMetaRange newRange = transaction.getRepository().getStore().getNextMetaIDRange(count);
+ packageInfo.setMetaIDRange(newRange);
+ packageRegistry.getMetaInstanceMapper().mapMetaInstances(packageInfo.getEPackage(), newRange);
+
+ for (int i = 0; i < count; i++)
{
- monitor.begin(oldRange.size());
- CDOIDMetaRange newRange = transaction.getRepository().getMetaIDRange(oldRange.size());
- ((InternalCDOPackage)newPackage).setMetaIDRange(newRange);
- for (int l = 0; l < oldRange.size(); l++)
+ CDOIDTemp oldID = (CDOIDTemp)oldRange.get(i);
+ CDOID newID = newRange.get(i);
+ if (TRACER.isEnabled())
{
- CDOIDTemp oldID = (CDOIDTemp)oldRange.get(l);
- CDOID newID = newRange.get(l);
- if (TRACER.isEnabled())
- {
- TRACER.format("Mapping meta ID: {0} --> {1}", oldID, newID);
- }
-
- idMappings.put(oldID, newID);
- monitor.worked();
+ TRACER.format("Mapping meta ID: {0} --> {1}", oldID, newID);
}
- metaIDRanges.add(newRange);
- }
- finally
- {
- monitor.done();
+ idMappings.put(oldID, newID);
}
+
+ metaIDRanges.add(newRange);
}
private void lockObjects() throws InterruptedException
@@ -458,7 +451,7 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
}
}
- private CDORevision computeDirtyObject(CDORevisionDelta dirtyObjectDelta, boolean loadOnDemand)
+ private InternalCDORevision computeDirtyObject(InternalCDORevisionDelta dirtyObjectDelta, boolean loadOnDemand)
{
CDOID id = dirtyObjectDelta.getID();
int version = dirtyObjectDelta.getOriginVersion();
@@ -477,23 +470,22 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
return null;
}
- private void applyIDMappings(CDORevision[] revisions, OMMonitor monitor)
+ private void applyIDMappings(InternalCDORevision[] revisions, OMMonitor monitor)
{
try
{
monitor.begin(revisions.length);
- for (CDORevision revision : revisions)
+ for (InternalCDORevision revision : revisions)
{
if (revision != null)
{
- InternalCDORevision internalRevision = (InternalCDORevision)revision;
- CDOID newID = idMappings.get(internalRevision.getID());
+ CDOID newID = idMappings.get(revision.getID());
if (newID != null)
{
- internalRevision.setID(newID);
+ revision.setID(newID);
}
- internalRevision.adjustReferences(idMapper);
+ revision.adjustReferences(idMapper);
monitor.worked();
}
}
@@ -535,7 +527,7 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
try
{
monitor.begin(6);
- addNewPackages(monitor.fork());
+ addNewPackageUnits(monitor.fork());
addRevisions(newObjects, monitor.fork());
addRevisions(dirtyObjects, monitor.fork());
revisedDetachObjects(monitor.fork());
@@ -560,22 +552,28 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
}
}
- private void addNewPackages(OMMonitor monitor)
+ private void addNewPackageUnits(OMMonitor monitor)
{
- try
+ Repository repository = (Repository)transaction.getRepository();
+ InternalCDOPackageRegistry repositoryPackageRegistry = repository.getPackageRegistry(false);
+ synchronized (repositoryPackageRegistry)
{
- monitor.begin(newPackages.length);
- PackageManager packageManager = (PackageManager)transaction.getRepository().getPackageManager();
- for (int i = 0; i < newPackages.length; i++)
+ try
{
- CDOPackage cdoPackage = newPackages[i];
- packageManager.addPackage(cdoPackage);
- monitor.worked();
+ monitor.begin(newPackageUnits.length);
+ for (int i = 0; i < newPackageUnits.length; i++)
+ {
+ newPackageUnits[i].setState(CDOPackageUnit.State.LOADED);
+ repositoryPackageRegistry.putPackageUnit(newPackageUnits[i]);
+ monitor.worked();
+ }
+
+ repositoryPackageRegistry.getMetaInstanceMapper().mapMetaInstances(packageRegistry.getMetaInstanceMapper());
+ }
+ finally
+ {
+ monitor.done();
}
- }
- finally
- {
- monitor.done();
}
}
@@ -647,92 +645,33 @@ public class TransactionCommitContextImpl implements IStoreAccessor.CommitContex
/**
* @author Eike Stepper
*/
- public final class TransactionPackageManager implements InternalCDOPackageManager
+ public static final class TransactionPackageRegistry extends CDOPackageRegistryImpl
{
- private List<CDOPackage> newPackages = new ArrayList<CDOPackage>();
+ private static final long serialVersionUID = 1L;
- private PackageManager repositoryPackageManager = (PackageManager)transaction.getRepository().getPackageManager();
-
- public TransactionPackageManager()
+ public TransactionPackageRegistry(InternalCDOPackageRegistry repositoryPackageRegistry)
{
+ delegateRegistry = repositoryPackageRegistry;
+ setPackageLoader(repositoryPackageRegistry.getPackageLoader());
}
- public void addPackage(CDOPackage cdoPackage)
+ @Override
+ public void putPackageUnit(InternalCDOPackageUnit packageUnit)
{
- newPackages.add(cdoPackage);
- }
-
- public void clear()
- {
- newPackages.clear();
- }
-
- public CDOIDObjectFactory getCDOIDObjectFactory()
- {
- return repositoryPackageManager.getCDOIDObjectFactory();
- }
-
- public CDOPackage lookupPackage(String uri)
- {
- for (CDOPackage cdoPackage : newPackages)
+ packageUnit.setPackageRegistry(this);
+ for (InternalCDOPackageInfo packageInfo : packageUnit.getPackageInfos())
{
- if (ObjectUtil.equals(cdoPackage.getPackageURI(), uri))
- {
- return cdoPackage;
- }
+ EPackage ePackage = packageInfo.getEPackage();
+ basicPut(ePackage.getNsURI(), ePackage);
}
- return repositoryPackageManager.lookupPackage(uri);
- }
-
- public CDOCorePackage getCDOCorePackage()
- {
- return repositoryPackageManager.getCDOCorePackage();
- }
-
- public CDOResourcePackage getCDOResourcePackage()
- {
- return repositoryPackageManager.getCDOResourcePackage();
- }
-
- public void loadPackage(CDOPackage cdoPackage)
- {
- repositoryPackageManager.loadPackage(cdoPackage);
- }
-
- public void loadPackageEcore(CDOPackage cdoPackage)
- {
- repositoryPackageManager.loadPackageEcore(cdoPackage);
- }
-
- public int getPackageCount()
- {
- throw new UnsupportedOperationException();
- }
-
- public CDOPackage[] getPackages()
- {
- throw new UnsupportedOperationException();
- }
-
- public CDOPackage[] getElements()
- {
- throw new UnsupportedOperationException();
- }
-
- public boolean isEmpty()
- {
- throw new UnsupportedOperationException();
- }
-
- public void addListener(IListener listener)
- {
- throw new UnsupportedOperationException();
+ resetInternalCaches();
}
- public void removeListener(IListener listener)
+ @Override
+ protected void disposePackageUnits()
{
- throw new UnsupportedOperationException();
+ // Do nothing
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStore.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java
index d1baf9d9e4..1732a614c7 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStore.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java
@@ -10,12 +10,11 @@
* Simon McDuff - http://bugs.eclipse.org/233273
* Eike Stepper - maintenance
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.internal.server.mem;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
+import org.eclipse.emf.cdo.common.model.CDOModelConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IMEMStore;
import org.eclipse.emf.cdo.server.ISession;
@@ -24,9 +23,13 @@ import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.IView;
import org.eclipse.emf.cdo.server.StoreThreadLocal;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.server.LongIDStore;
+import org.eclipse.emf.cdo.spi.server.StoreAccessorPool;
import org.eclipse.net4j.util.ObjectUtil;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -42,7 +45,7 @@ public class MEMStore extends LongIDStore implements IMEMStore
private long creationTime;
- private Map<CDOID, List<CDORevision>> revisions = new HashMap<CDOID, List<CDORevision>>();
+ private Map<CDOID, List<InternalCDORevision>> revisions = new HashMap<CDOID, List<InternalCDORevision>>();
private int listLimit;
@@ -79,7 +82,7 @@ public class MEMStore extends LongIDStore implements IMEMStore
{
if (listLimit != UNLIMITED && this.listLimit != listLimit)
{
- for (List<CDORevision> list : revisions.values())
+ for (List<InternalCDORevision> list : revisions.values())
{
enforceListLimit(list);
}
@@ -91,23 +94,23 @@ public class MEMStore extends LongIDStore implements IMEMStore
/**
* @since 2.0
*/
- public synchronized List<CDORevision> getCurrentRevisions()
+ public synchronized List<InternalCDORevision> getCurrentRevisions()
{
- ArrayList<CDORevision> simpleRevisions = new ArrayList<CDORevision>();
- Iterator<List<CDORevision>> itr = revisions.values().iterator();
+ ArrayList<InternalCDORevision> simpleRevisions = new ArrayList<InternalCDORevision>();
+ Iterator<List<InternalCDORevision>> itr = revisions.values().iterator();
while (itr.hasNext())
{
- List<CDORevision> list = itr.next();
- CDORevision revision = list.get(list.size() - 1);
+ List<InternalCDORevision> list = itr.next();
+ InternalCDORevision revision = list.get(list.size() - 1);
simpleRevisions.add(revision);
}
return simpleRevisions;
}
- public synchronized CDORevision getRevision(CDOID id)
+ public synchronized InternalCDORevision getRevision(CDOID id)
{
- List<CDORevision> list = revisions.get(id);
+ List<InternalCDORevision> list = revisions.get(id);
if (list != null)
{
return list.get(list.size() - 1);
@@ -116,11 +119,11 @@ public class MEMStore extends LongIDStore implements IMEMStore
return null;
}
- public synchronized CDORevision getRevisionByVersion(CDOID id, int version)
+ public synchronized InternalCDORevision getRevisionByVersion(CDOID id, int version)
{
if (getRepository().isSupportingAudits())
{
- List<CDORevision> list = revisions.get(id);
+ List<InternalCDORevision> list = revisions.get(id);
if (list != null)
{
return getRevisionByVersion(list, version);
@@ -135,11 +138,11 @@ public class MEMStore extends LongIDStore implements IMEMStore
/**
* @since 2.0
*/
- public synchronized CDORevision getRevisionByTime(CDOID id, long timeStamp)
+ public synchronized InternalCDORevision getRevisionByTime(CDOID id, long timeStamp)
{
if (getRepository().isSupportingAudits())
{
- List<CDORevision> list = revisions.get(id);
+ List<InternalCDORevision> list = revisions.get(id);
if (list != null)
{
return getRevisionByTime(list, timeStamp);
@@ -151,25 +154,25 @@ public class MEMStore extends LongIDStore implements IMEMStore
throw new UnsupportedOperationException();
}
- public synchronized void addRevision(CDORevision revision)
+ public synchronized void addRevision(InternalCDORevision revision)
{
CDOID id = revision.getID();
int version = revision.getVersion();
- List<CDORevision> list = revisions.get(id);
+ List<InternalCDORevision> list = revisions.get(id);
if (list == null)
{
- list = new ArrayList<CDORevision>();
+ list = new ArrayList<InternalCDORevision>();
revisions.put(id, list);
}
- InternalCDORevision rev = (InternalCDORevision)getRevisionByVersion(list, version);
+ InternalCDORevision rev = getRevisionByVersion(list, version);
if (rev != null)
{
throw new IllegalStateException("Concurrent modification of revision " + rev);
}
- rev = (InternalCDORevision)getRevisionByVersion(list, version - 1);
+ rev = getRevisionByVersion(list, version - 1);
if (rev != null)
{
rev.setRevised(revision.getCreated() - 1);
@@ -177,8 +180,10 @@ public class MEMStore extends LongIDStore implements IMEMStore
if (revision.isResource())
{
+ EStructuralFeature feature = revision.getEClass().getEStructuralFeature(
+ CDOModelConstants.RESOURCE_NODE_NAME_ATTRIBUTE);
CDOID revisionFolder = (CDOID)revision.data().getContainerID();
- String revisionName = (String)revision.data().get(getResourceNameFeature(), 0);
+ String revisionName = (String)revision.data().get(feature, 0);
IStoreAccessor accessor = StoreThreadLocal.getAccessor();
CDOID resourceID = accessor.readResourceID(revisionFolder, revisionName, revision.getCreated());
@@ -195,32 +200,22 @@ public class MEMStore extends LongIDStore implements IMEMStore
}
}
- private CDOResourceNodeClass getResourceNodeClass()
- {
- return getRepository().getPackageManager().getCDOResourcePackage().getCDOResourceNodeClass();
- }
-
- private CDOFeature getResourceNameFeature()
- {
- return getResourceNodeClass().getCDONameFeature();
- }
-
/**
* @since 2.0
*/
- public synchronized boolean rollbackRevision(CDORevision revision)
+ public synchronized boolean rollbackRevision(InternalCDORevision revision)
{
CDOID id = revision.getID();
- List<CDORevision> list = revisions.get(id);
+ List<InternalCDORevision> list = revisions.get(id);
if (list == null)
{
return false;
}
int version = revision.getVersion();
- for (Iterator<CDORevision> it = list.iterator(); it.hasNext();)
+ for (Iterator<InternalCDORevision> it = list.iterator(); it.hasNext();)
{
- InternalCDORevision rev = (InternalCDORevision)it.next();
+ InternalCDORevision rev = it.next();
if (rev.getVersion() == version)
{
it.remove();
@@ -251,11 +246,11 @@ public class MEMStore extends LongIDStore implements IMEMStore
CDOID folderID = context.getFolderID();
String name = context.getName();
boolean exactMatch = context.exactMatch();
- for (List<CDORevision> list : revisions.values())
+ for (List<InternalCDORevision> list : revisions.values())
{
if (!list.isEmpty())
{
- CDORevision revision = list.get(0);
+ InternalCDORevision revision = list.get(0);
if (revision.isResourceNode())
{
revision = getRevisionByTime(list, context.getTimeStamp());
@@ -264,7 +259,9 @@ public class MEMStore extends LongIDStore implements IMEMStore
CDOID revisionFolder = (CDOID)revision.data().getContainerID();
if (CDOIDUtil.equals(revisionFolder, folderID))
{
- String revisionName = (String)revision.data().get(getResourceNameFeature(), 0);
+ EStructuralFeature feature = revision.getEClass().getEStructuralFeature(
+ CDOModelConstants.RESOURCE_NODE_NAME_ATTRIBUTE);
+ String revisionName = (String)revision.data().get(feature, 0);
boolean match = exactMatch || revisionName == null || name == null ? ObjectUtil
.equals(revisionName, name) : revisionName.startsWith(name);
@@ -283,11 +280,6 @@ public class MEMStore extends LongIDStore implements IMEMStore
}
}
- public void repairAfterCrash()
- {
- // Do nothing
- }
-
@Override
public MEMStoreAccessor createReader(ISession session)
{
@@ -311,6 +303,11 @@ public class MEMStore extends LongIDStore implements IMEMStore
return creationTime;
}
+ public boolean isFirstTime()
+ {
+ return true;
+ }
+
/**
* @since 2.0
*/
@@ -342,9 +339,9 @@ public class MEMStore extends LongIDStore implements IMEMStore
return null;
}
- private CDORevision getRevisionByVersion(List<CDORevision> list, int version)
+ private InternalCDORevision getRevisionByVersion(List<InternalCDORevision> list, int version)
{
- for (CDORevision revision : list)
+ for (InternalCDORevision revision : list)
{
if (revision.getVersion() == version)
{
@@ -355,9 +352,9 @@ public class MEMStore extends LongIDStore implements IMEMStore
return null;
}
- private CDORevision getRevisionByTime(List<CDORevision> list, long timeStamp)
+ private InternalCDORevision getRevisionByTime(List<InternalCDORevision> list, long timeStamp)
{
- for (CDORevision revision : list)
+ for (InternalCDORevision revision : list)
{
if (timeStamp == CDORevision.UNSPECIFIED_DATE)
{
@@ -378,7 +375,7 @@ public class MEMStore extends LongIDStore implements IMEMStore
return null;
}
- private void enforceListLimit(List<CDORevision> list)
+ private void enforceListLimit(List<InternalCDORevision> list)
{
while (list.size() > listLimit)
{
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/mem/MEMStoreAccessor.java
index 3c524bd9c9..3cca83da3c 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/mem/MEMStoreAccessor.java
@@ -10,26 +10,27 @@
* Eike Stepper - maintenance
* Simon McDuff - http://bugs.eclipse.org/213402
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.internal.server.mem;
import org.eclipse.emf.cdo.common.CDOQueryInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ITransaction;
+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.LongIDStoreAccessor;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.collection.CloseableIterator;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -38,9 +39,9 @@ import java.util.List;
/**
* @author Simon McDuff
*/
-public class MEMStoreAccessor extends StoreAccessor
+public class MEMStoreAccessor extends LongIDStoreAccessor
{
- private List<CDORevision> newRevisions = new ArrayList<CDORevision>();
+ private List<InternalCDORevision> newRevisions = new ArrayList<InternalCDORevision>();
public MEMStoreAccessor(MEMStore store, ISession session)
{
@@ -64,25 +65,17 @@ public class MEMStoreAccessor extends StoreAccessor
/**
* @since 2.0
*/
- public MEMStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature)
+ public MEMStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
{
return new MEMStoreChunkReader(this, revision, feature);
}
- public Collection<CDOPackageInfo> readPackageInfos()
+ public Collection<InternalCDOPackageUnit> readPackageUnits()
{
return Collections.emptySet();
}
- public void readPackage(CDOPackage cdoPackage)
- {
- throw new UnsupportedOperationException();
- }
-
- /**
- * @since 2.0
- */
- public void readPackageEcore(CDOPackage cdoPackage)
+ public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
throw new UnsupportedOperationException();
}
@@ -95,22 +88,22 @@ public class MEMStoreAccessor extends StoreAccessor
throw new UnsupportedOperationException();
}
- public CDOClassRef readObjectType(CDOID id)
+ public CDOClassifierRef readObjectType(CDOID id)
{
- InternalCDORevision storeRevision = (InternalCDORevision)getStore().getRevision(id);
- return storeRevision.getCDOClass().createClassRef();
+ InternalCDORevision storeRevision = getStore().getRevision(id);
+ return new CDOClassifierRef(storeRevision.getEClass());
}
- public CDORevision readRevision(CDOID id, int referenceChunk)
+ public InternalCDORevision readRevision(CDOID id, int referenceChunk)
{
- InternalCDORevision storeRevision = (InternalCDORevision)getStore().getRevision(id);
+ InternalCDORevision storeRevision = getStore().getRevision(id);
// IRevisionManager revisionManager = getStore().getRepository().getRevisionManager();
- // InternalCDORevision newRevision = new InternalCDORevision(revisionManager, storeRevision.getCDOClass(),
+ // InternalCDORevision newRevision = new InternalCDORevision(revisionManager, storeRevision.getEClass(),
// storeRevision
// .getID());
// newRevision.setResourceID(storeRevision.getResourceID());
//
- // for (CDOFeature feature : storeRevision.getCDOClass().getAllFeatures())
+ // for (EStructuralFeature feature : storeRevision.TODO.getAllPersistentFeatures(getEClass()))
// {
// if (feature.isMany())
// {
@@ -128,12 +121,12 @@ public class MEMStoreAccessor extends StoreAccessor
return storeRevision;
}
- public CDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
+ public InternalCDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp)
{
return getStore().getRevisionByTime(id, timeStamp);
}
- public CDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
+ public InternalCDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version)
{
return getStore().getRevisionByVersion(id, version);
}
@@ -162,29 +155,28 @@ public class MEMStoreAccessor extends StoreAccessor
MEMStore store = getStore();
synchronized (store)
{
- for (CDORevision revision : newRevisions)
+ for (InternalCDORevision revision : newRevisions)
{
store.rollbackRevision(revision);
}
}
}
- @Override
- protected void writePackages(CDOPackage[] cdoPackages, OMMonitor monitor)
+ public void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
// Do nothing
}
@Override
- protected void writeRevisions(CDORevision[] revisions, OMMonitor monitor)
+ protected void writeRevisions(InternalCDORevision[] revisions, OMMonitor monitor)
{
- for (CDORevision revision : revisions)
+ for (InternalCDORevision revision : revisions)
{
writeRevision(revision);
}
}
- protected void writeRevision(CDORevision revision)
+ protected void writeRevision(InternalCDORevision revision)
{
newRevisions.add(revision);
getStore().addRevision(revision);
@@ -194,9 +186,9 @@ public class MEMStoreAccessor extends StoreAccessor
* @since 2.0
*/
@Override
- protected void writeRevisionDeltas(CDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
+ protected void writeRevisionDeltas(InternalCDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor)
{
- for (CDORevisionDelta revisionDelta : revisionDeltas)
+ for (InternalCDORevisionDelta revisionDelta : revisionDeltas)
{
writeRevisionDelta(revisionDelta, created);
}
@@ -205,12 +197,12 @@ public class MEMStoreAccessor extends StoreAccessor
/**
* @since 2.0
*/
- protected void writeRevisionDelta(CDORevisionDelta revisionDelta, long created)
+ protected void writeRevisionDelta(InternalCDORevisionDelta revisionDelta, long created)
{
- CDORevision revision = getStore().getRevision(revisionDelta.getID());
- CDORevision newRevision = revision.copy();
+ InternalCDORevision revision = getStore().getRevision(revisionDelta.getID());
+ InternalCDORevision newRevision = (InternalCDORevision)revision.copy();
revisionDelta.apply(newRevision);
- ((InternalCDORevision)newRevision).setCreated(created);
+ newRevision.setCreated(created);
writeRevision(newRevision);
}
@@ -254,22 +246,22 @@ public class MEMStoreAccessor extends StoreAccessor
Long sleep = (Long)info.getParameters().get("sleep");
if (context != null)
{
- if (context instanceof CDOClass)
+ if (context instanceof EClass)
{
- final CDOClass cdoClass = (CDOClass)context;
+ final EClass eClass = (EClass)context;
filters.add(new Object()
{
@Override
public boolean equals(Object obj)
{
- CDORevision revision = (CDORevision)obj;
- return revision.getCDOClass().equals(cdoClass);
+ InternalCDORevision revision = (InternalCDORevision)obj;
+ return revision.getEClass().equals(eClass);
}
});
}
}
- for (CDORevision revision : getStore().getCurrentRevisions())
+ for (InternalCDORevision revision : getStore().getCurrentRevisions())
{
if (sleep != null)
{
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreChunkReader.java
index f28820fd90..52a2df2cb6 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreChunkReader.java
@@ -9,12 +9,14 @@
* Simon McDuff - initial API and implementation
* Eike Stepper - maintenance
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.internal.server.mem;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.server.StoreChunkReader;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.List;
@@ -26,7 +28,7 @@ public class MEMStoreChunkReader extends StoreChunkReader
/**
* @since 2.0
*/
- public MEMStoreChunkReader(IStoreAccessor accessor, CDORevision revision, CDOFeature feature)
+ public MEMStoreChunkReader(IStoreAccessor accessor, CDORevision revision, EStructuralFeature feature)
{
super(accessor, revision, feature);
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreFactory.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreFactory.java
index 5aa2501803..26b1f7e066 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreFactory.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreFactory.java
@@ -9,7 +9,7 @@
* Simon McDuff - initial API and implementation
* Eike Stepper - maintenance
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.internal.server.mem;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreFactory;
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java
index 218c7899a9..a819fdace1 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java
@@ -15,22 +15,20 @@ import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl;
import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl;
import org.eclipse.emf.cdo.internal.common.revision.CDOListImpl;
import org.eclipse.emf.cdo.internal.server.Repository;
-import org.eclipse.emf.cdo.internal.server.RevisionManager;
import org.eclipse.emf.cdo.internal.server.Session;
-import org.eclipse.emf.cdo.internal.server.SessionManager;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.net4j.signal.IndicationWithResponse;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import java.io.IOException;
@@ -53,33 +51,13 @@ public abstract class CDOServerIndication extends IndicationWithResponse
protected Session getSession()
{
- return getProtocol().getSession();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
- }
-
- protected CDOIDProvider getIDProvider()
- {
- return getSession();
- }
-
- protected CDOIDObjectFactory getIDFactory()
- {
- return getStore().getCDOIDObjectFactory();
- }
-
- protected SessionManager getSessionManager()
- {
- return getSession().getSessionManager();
+ return (Session)getProtocol().getSession();
}
protected Repository getRepository()
{
- Repository repository = (Repository)getSessionManager().getRepository();
- if (!repository.isActive())
+ Repository repository = (Repository)getSession().getSessionManager().getRepository();
+ if (!LifecycleUtil.isActive(repository))
{
throw new IllegalStateException("Repository has been deactivated");
}
@@ -87,16 +65,6 @@ public abstract class CDOServerIndication extends IndicationWithResponse
return repository;
}
- protected RevisionManager getRevisionManager()
- {
- return getRepository().getRevisionManager();
- }
-
- protected CDOPackageManager getPackageManager()
- {
- return getRepository().getPackageManager();
- }
-
protected IStore getStore()
{
IStore store = getRepository().getStore();
@@ -116,25 +84,25 @@ public abstract class CDOServerIndication extends IndicationWithResponse
@Override
protected CDORevisionResolver getRevisionResolver()
{
- return CDOServerIndication.this.getRevisionManager();
+ return getRepository().getRevisionManager();
}
@Override
- protected CDOPackageManager getPackageManager()
+ protected CDOPackageRegistry getPackageRegistry()
{
- return CDOServerIndication.this.getPackageManager();
+ return getRepository().getPackageRegistry();
}
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CDOServerIndication.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
@Override
protected CDOIDObjectFactory getIDFactory()
{
- return CDOServerIndication.this.getIDFactory();
+ return getStore().getCDOIDObjectFactory();
}
@Override
@@ -151,14 +119,14 @@ public abstract class CDOServerIndication extends IndicationWithResponse
responding(new CDODataOutputImpl(out)
{
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CDOServerIndication.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
public CDOIDProvider getIDProvider()
{
- return CDOServerIndication.this.getIDProvider();
+ return getSession();
}
});
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerProtocol.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerProtocol.java
index 70db8e6c23..80a77354bc 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerProtocol.java
@@ -16,10 +16,11 @@ package org.eclipse.emf.cdo.internal.server.protocol;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.internal.common.protocol.CDOProtocolImpl;
-import org.eclipse.emf.cdo.internal.server.Session;
import org.eclipse.emf.cdo.server.IRepositoryProvider;
import org.eclipse.net4j.signal.SignalReactor;
+import org.eclipse.net4j.util.io.StringCompressor;
+import org.eclipse.net4j.util.io.StringIO;
/**
* @author Eike Stepper
@@ -28,6 +29,8 @@ public class CDOServerProtocol extends CDOProtocolImpl
{
private IRepositoryProvider repositoryProvider;
+ private StringCompressor packageURICompressor = new StringCompressor(false);
+
public CDOServerProtocol(IRepositoryProvider repositoryProvider)
{
this.repositoryProvider = repositoryProvider;
@@ -38,10 +41,9 @@ public class CDOServerProtocol extends CDOProtocolImpl
return repositoryProvider;
}
- @Override
- public Session getSession()
+ public StringIO getPackageURICompressor()
{
- return (Session)super.getSession();
+ return packageURICompressor;
}
@Override
@@ -61,8 +63,8 @@ public class CDOServerProtocol extends CDOProtocolImpl
case CDOProtocolConstants.SIGNAL_RESOURCE_ID:
return new ResourceIDIndication(this);
- case CDOProtocolConstants.SIGNAL_LOAD_PACKAGE:
- return new LoadPackageIndication(this);
+ case CDOProtocolConstants.SIGNAL_LOAD_PACKAGES:
+ return new LoadPackagesIndication(this);
case CDOProtocolConstants.SIGNAL_LOAD_REVISION:
return new LoadRevisionIndication(this);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java
index 7307edb0d7..e52b11d346 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java
@@ -10,21 +10,15 @@
*/
package org.eclipse.emf.cdo.internal.server.protocol;
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl;
-import org.eclipse.emf.cdo.internal.server.PackageManager;
-import org.eclipse.emf.cdo.internal.server.Repository;
-import org.eclipse.emf.cdo.internal.server.RevisionManager;
import org.eclipse.emf.cdo.internal.server.Session;
-import org.eclipse.emf.cdo.internal.server.SessionManager;
-import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.net4j.channel.IChannel;
import org.eclipse.net4j.signal.Request;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import java.io.IOException;
@@ -47,59 +41,7 @@ public abstract class CDOServerRequest extends Request
protected Session getSession()
{
- return getProtocol().getSession();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
- }
-
- protected CDOIDProvider getIDProvider()
- {
- return getSession();
- }
-
- protected CDOIDObjectFactory getIDFactory()
- {
- return getStore().getCDOIDObjectFactory();
- }
-
- protected SessionManager getSessionManager()
- {
- return getSession().getSessionManager();
- }
-
- protected Repository getRepository()
- {
- Repository repository = (Repository)getSessionManager().getRepository();
- if (!repository.isActive())
- {
- throw new IllegalStateException("Repository has been deactivated");
- }
-
- return repository;
- }
-
- protected RevisionManager getRevisionManager()
- {
- return getRepository().getRevisionManager();
- }
-
- protected PackageManager getPackageManager()
- {
- return getRepository().getPackageManager();
- }
-
- protected IStore getStore()
- {
- IStore store = getRepository().getStore();
- if (!LifecycleUtil.isActive(store))
- {
- throw new IllegalStateException("Store has been deactivated");
- }
-
- return store;
+ return (Session)getProtocol().getSession();
}
@Override
@@ -108,14 +50,14 @@ public abstract class CDOServerRequest extends Request
requesting(new CDODataOutputImpl(out)
{
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CDOServerRequest.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
public CDOIDProvider getIDProvider()
{
- return CDOServerRequest.this.getIDProvider();
+ return getSession();
}
});
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ChangeSubscriptionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ChangeSubscriptionIndication.java
index 7dab892b5d..fb584938ee 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ChangeSubscriptionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ChangeSubscriptionIndication.java
@@ -27,8 +27,7 @@ import java.io.IOException;
*/
public class ChangeSubscriptionIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- ChangeSubscriptionIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ChangeSubscriptionIndication.class);
public ChangeSubscriptionIndication(CDOServerProtocol protocol)
{
@@ -52,9 +51,9 @@ public class ChangeSubscriptionIndication extends CDOReadIndication
View view = (View)getSession().getView(viewID);
if (clear)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Clear subscription");
+ TRACER.trace("Clear subscription");
}
view.clearChangeSubscription();
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 da9ddd7cbc..02875402c1 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
@@ -15,6 +15,7 @@ package org.eclipse.emf.cdo.internal.server.protocol;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
@@ -30,22 +31,24 @@ import java.util.List;
*/
public class CommitNotificationRequest extends CDOServerRequest
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- CommitNotificationRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationRequest.class);
private long timeStamp;
+ private final CDOPackageUnit[] packageUnits;
+
private List<CDOIDAndVersion> dirtyIDs;
private List<CDORevisionDelta> deltas;
private List<CDOID> detachedObjects;
- public CommitNotificationRequest(IChannel channel, long timeStamp, List<CDOIDAndVersion> dirtyIDs,
- List<CDOID> detachedObjects, List<CDORevisionDelta> deltas)
+ public CommitNotificationRequest(IChannel channel, long timeStamp, CDOPackageUnit[] packageUnits,
+ List<CDOIDAndVersion> dirtyIDs, List<CDOID> detachedObjects, List<CDORevisionDelta> deltas)
{
super(channel, CDOProtocolConstants.SIGNAL_COMMIT_NOTIFICATION);
this.timeStamp = timeStamp;
+ this.packageUnits = packageUnits;
this.dirtyIDs = dirtyIDs;
this.deltas = deltas;
this.detachedObjects = detachedObjects;
@@ -54,23 +57,25 @@ public class CommitNotificationRequest extends CDOServerRequest
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp);
+ TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp);
}
out.writeLong(timeStamp);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} dirty IDs", dirtyIDs.size());
+ TRACER.format("Writing {0} dirty IDs", dirtyIDs.size());
}
+ out.writeCDOPackageUnits(packageUnits);
+
out.writeInt(dirtyIDs == null ? 0 : dirtyIDs.size());
for (CDOIDAndVersion dirtyID : dirtyIDs)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing dirty ID: {0}", dirtyID);
+ TRACER.format("Writing dirty ID: {0}", dirtyID);
}
out.writeCDOIDAndVersion(dirtyID);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionCancelIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionCancelIndication.java
index e351daacd5..67265791e9 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionCancelIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionCancelIndication.java
@@ -30,7 +30,7 @@ public class CommitTransactionCancelIndication extends CommitTransactionIndicati
@Override
protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception
{
- indicationTransaction(in);
+ indicatingTransaction(in);
}
@Override
@@ -58,7 +58,7 @@ public class CommitTransactionCancelIndication extends CommitTransactionIndicati
}
@Override
- protected void indicationTransaction(CDODataInput in) throws Exception
+ protected void indicatingTransaction(CDODataInput in) throws Exception
{
int viewID = in.readInt();
commitContext = getRepository().getCommitManager().get(getTransaction(viewID));
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 4fefb9c556..27f78c020f 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
@@ -19,39 +19,39 @@ import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl;
import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl;
import org.eclipse.emf.cdo.internal.common.revision.CDOListImpl;
import org.eclipse.emf.cdo.internal.server.Repository;
-import org.eclipse.emf.cdo.internal.server.RevisionManager;
import org.eclipse.emf.cdo.internal.server.Session;
-import org.eclipse.emf.cdo.internal.server.SessionManager;
import org.eclipse.emf.cdo.internal.server.Transaction;
import org.eclipse.emf.cdo.internal.server.Transaction.InternalCommitContext;
-import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl.TransactionPackageManager;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IView;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+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.net4j.signal.IndicationWithMonitoring;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.monitor.ProgressDistributable;
import org.eclipse.net4j.util.om.monitor.ProgressDistributor;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -62,8 +62,7 @@ import java.util.Map.Entry;
*/
public class CommitTransactionIndication extends IndicationWithMonitoring
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- CommitTransactionIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitTransactionIndication.class);
@SuppressWarnings("unchecked")
private static final ProgressDistributable<InternalCommitContext>[] ops = ProgressDistributor.array( //
@@ -109,33 +108,13 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
protected Session getSession()
{
- return getProtocol().getSession();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
- }
-
- protected CDOIDProvider getIDProvider()
- {
- return getSession();
- }
-
- protected CDOIDObjectFactory getIDFactory()
- {
- return getStore().getCDOIDObjectFactory();
- }
-
- protected SessionManager getSessionManager()
- {
- return getSession().getSessionManager();
+ return (Session)getProtocol().getSession();
}
protected Repository getRepository()
{
- Repository repository = (Repository)getSessionManager().getRepository();
- if (!repository.isActive())
+ Repository repository = (Repository)getSession().getSessionManager().getRepository();
+ if (!LifecycleUtil.isActive(repository))
{
throw new IllegalStateException("Repository has been deactivated");
}
@@ -143,16 +122,6 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
return repository;
}
- protected RevisionManager getRevisionManager()
- {
- return getRepository().getRevisionManager();
- }
-
- protected TransactionPackageManager getPackageManager()
- {
- return commitContext.getPackageManager();
- }
-
protected IStore getStore()
{
IStore store = getRepository().getStore();
@@ -172,25 +141,25 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
@Override
protected CDORevisionResolver getRevisionResolver()
{
- return CommitTransactionIndication.this.getRevisionManager();
+ return CommitTransactionIndication.this.getRepository().getRevisionManager();
}
@Override
- protected CDOPackageManager getPackageManager()
+ protected CDOPackageRegistry getPackageRegistry()
{
- return CommitTransactionIndication.this.getPackageManager();
+ return commitContext.getPackageRegistry();
}
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CommitTransactionIndication.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
@Override
protected CDOIDObjectFactory getIDFactory()
{
- return CommitTransactionIndication.this.getIDFactory();
+ return CommitTransactionIndication.this.getStore().getCDOIDObjectFactory();
}
@Override
@@ -207,14 +176,14 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
responding(new CDODataOutputImpl(out)
{
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CommitTransactionIndication.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
public CDOIDProvider getIDProvider()
{
- return CommitTransactionIndication.this.getIDProvider();
+ return CommitTransactionIndication.this.getSession();
}
}, monitor);
}
@@ -262,7 +231,7 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
}
}
- protected void indicationTransaction(CDODataInput in) throws Exception
+ protected void indicatingTransaction(CDODataInput in) throws Exception
{
int viewID = in.readInt();
commitContext = getTransaction(viewID).createCommitContext();
@@ -270,59 +239,65 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
protected void indicatingCommit(CDODataInput in, OMMonitor monitor) throws Exception
{
- // Create transaction context
- indicationTransaction(in);
+ // Create commit context
+ indicatingTransaction(in);
commitContext.preCommit();
boolean autoReleaseLocksEnabled = in.readBoolean();
commitContext.setAutoReleaseLocksEnabled(autoReleaseLocksEnabled);
- TransactionPackageManager packageManager = commitContext.getPackageManager();
- CDOPackage[] newPackages = new CDOPackage[in.readInt()];
- CDORevision[] newObjects = new CDORevision[in.readInt()];
- CDORevisionDelta[] dirtyObjectDeltas = new CDORevisionDelta[in.readInt()];
+ InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[in.readInt()];
+ InternalCDORevision[] newObjects = new InternalCDORevision[in.readInt()];
+ InternalCDORevisionDelta[] dirtyObjectDeltas = new InternalCDORevisionDelta[in.readInt()];
CDOID[] detachedObjects = new CDOID[in.readInt()];
-
- // New packages
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Reading {0} new packages", newPackages.length);
- }
-
- monitor.begin(newPackages.length + newObjects.length + dirtyObjectDeltas.length + detachedObjects.length);
+ monitor.begin(newPackageUnits.length + newObjects.length + dirtyObjectDeltas.length + detachedObjects.length);
try
{
- for (int i = 0; i < newPackages.length; i++)
+ // New package units
+ if (TRACER.isEnabled())
{
- InternalCDOPackage newPackage = (InternalCDOPackage)in.readCDOPackage();
- newPackage.setEcore(in.readString());
- newPackages[i] = newPackage;
- packageManager.addPackage(newPackage);
+ TRACER.format("Reading {0} new package units", newPackageUnits.length);
+ }
+
+ InternalCDOPackageRegistry packageRegistry = commitContext.getPackageRegistry();
+ for (int i = 0; i < newPackageUnits.length; i++)
+ {
+ newPackageUnits[i] = (InternalCDOPackageUnit)in.readCDOPackageUnit(packageRegistry);
+ packageRegistry.putPackageUnit(newPackageUnits[i]); // Must happen before readCDORevision!!!
monitor.worked();
}
+ // When all packages are deserialized and registered, resolve them
+ for (InternalCDOPackageUnit packageUnit : newPackageUnits)
+ {
+ for (EPackage ePackage : packageUnit.getEPackages(true))
+ {
+ EcoreUtil.resolveAll(ePackage);
+ }
+ }
+
// New objects
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} new objects", newObjects.length);
+ TRACER.format("Reading {0} new objects", newObjects.length);
}
for (int i = 0; i < newObjects.length; i++)
{
- newObjects[i] = in.readCDORevision();
+ newObjects[i] = (InternalCDORevision)in.readCDORevision();
monitor.worked();
}
// Dirty objects
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} dirty object deltas", dirtyObjectDeltas.length);
+ TRACER.format("Reading {0} dirty object deltas", dirtyObjectDeltas.length);
}
for (int i = 0; i < dirtyObjectDeltas.length; i++)
{
- dirtyObjectDeltas[i] = in.readCDORevisionDelta();
+ dirtyObjectDeltas[i] = (InternalCDORevisionDelta)in.readCDORevisionDelta();
monitor.worked();
}
@@ -332,7 +307,7 @@ public class CommitTransactionIndication extends IndicationWithMonitoring
monitor.worked();
}
- commitContext.setNewPackages(newPackages);
+ commitContext.setNewPackageUnits(newPackageUnits);
commitContext.setNewObjects(newObjects);
commitContext.setDirtyObjectDeltas(dirtyObjectDeltas);
commitContext.setDetachedObjects(detachedObjects);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase1Indication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase1Indication.java
index 59a5d33f87..1f68ac764a 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase1Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase1Indication.java
@@ -63,7 +63,7 @@ public class CommitTransactionPhase1Indication extends CommitTransactionIndicati
}
@Override
- protected void indicationTransaction(CDODataInput in) throws Exception
+ protected void indicatingTransaction(CDODataInput in) throws Exception
{
int viewID = in.readInt();
commitContext = new XATransactionCommitContext(getTransaction(viewID));
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase2Indication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase2Indication.java
index f8004571bc..05db126417 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase2Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase2Indication.java
@@ -41,7 +41,7 @@ public class CommitTransactionPhase2Indication extends CommitTransactionIndicati
@Override
protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception
{
- indicationTransaction(in);
+ indicatingTransaction(in);
XATransactionCommitContext xaContextContext = (XATransactionCommitContext)commitContext;
int size = in.readInt();
@@ -89,7 +89,7 @@ public class CommitTransactionPhase2Indication extends CommitTransactionIndicati
}
@Override
- protected void indicationTransaction(CDODataInput in) throws Exception
+ protected void indicatingTransaction(CDODataInput in) throws Exception
{
int viewID = in.readInt();
commitContext = getRepository().getCommitManager().get(getTransaction(viewID));
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase3Indication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase3Indication.java
index e18a8b0797..9e0664ca97 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase3Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CommitTransactionPhase3Indication.java
@@ -30,7 +30,7 @@ public class CommitTransactionPhase3Indication extends CommitTransactionIndicati
@Override
protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception
{
- indicationTransaction(in);
+ indicatingTransaction(in);
}
@Override
@@ -47,7 +47,7 @@ public class CommitTransactionPhase3Indication extends CommitTransactionIndicati
}
@Override
- protected void indicationTransaction(CDODataInput in) throws Exception
+ protected void indicatingTransaction(CDODataInput in) throws Exception
{
int viewID = in.readInt();
commitContext = getRepository().getCommitManager().get(getTransaction(viewID));
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/GetRemoteSessionsIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/GetRemoteSessionsIndication.java
index 865f77f565..8e29198ecc 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/GetRemoteSessionsIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/GetRemoteSessionsIndication.java
@@ -25,8 +25,7 @@ import java.io.IOException;
*/
public class GetRemoteSessionsIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- GetRemoteSessionsIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, GetRemoteSessionsIndication.class);
private boolean subscribe;
@@ -39,9 +38,9 @@ public class GetRemoteSessionsIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
subscribe = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read subscribe: {0}", subscribe);
+ TRACER.format("Read subscribe: {0}", subscribe);
}
}
@@ -49,7 +48,7 @@ public class GetRemoteSessionsIndication extends CDOReadIndication
protected void responding(CDODataOutput out) throws IOException
{
Session localSession = getSession();
- Session[] sessions = getSessionManager().getSessions();
+ Session[] sessions = getSession().getSessionManager().getSessions();
for (Session session : sessions)
{
if (session != localSession)
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadChunkIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadChunkIndication.java
index b4aaaa517e..0ade1aa8e7 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadChunkIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadChunkIndication.java
@@ -14,8 +14,8 @@ package org.eclipse.emf.cdo.internal.server.protocol;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -23,6 +23,9 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.MoveableList;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -30,13 +33,13 @@ import java.io.IOException;
*/
public class LoadChunkIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadChunkIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadChunkIndication.class);
private CDOID id;
private int version;
- private CDOFeature feature;
+ private EStructuralFeature feature;
private int fromIndex;
@@ -51,48 +54,49 @@ public class LoadChunkIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
id = in.readCDOID();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read revision ID: {0}", id);
+ TRACER.format("Read revision ID: {0}", id);
}
version = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read revision version: {0}", version);
+ TRACER.format("Read revision version: {0}", version);
}
- CDOClass cdoClass = in.readCDOClassRefAndResolve();
+ EClass eClass = (EClass)in.readCDOClassifierRefAndResolve();
int featureID = in.readInt();
- feature = cdoClass.getAllFeatures()[featureID];
- if (PROTOCOL_TRACER.isEnabled())
+ feature = eClass.getEStructuralFeature(featureID);
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read feature: {0}", feature);
+ TRACER.format("Read feature: {0}", feature);
}
fromIndex = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read fromIndex: {0}", fromIndex);
+ TRACER.format("Read fromIndex: {0}", fromIndex);
}
toIndex = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read toIndex: {0}", toIndex);
+ TRACER.format("Read toIndex: {0}", toIndex);
}
}
@Override
protected void responding(CDODataOutput out) throws IOException
{
- InternalCDORevision revision = getRevisionManager().getRevisionByVersion(id, 0, version);
- getRevisionManager().ensureChunk(revision, feature, fromIndex, toIndex + 1);
+ InternalCDORevision revision = getRepository().getRevisionManager().getRevisionByVersion(id, 0, version);
+ getRepository().getRevisionManager().ensureChunk(revision, feature, fromIndex, toIndex + 1);
+ CDOType type = CDOModelUtil.getType(feature.getEType());
MoveableList<Object> list = revision.getList(feature);
for (int i = fromIndex; i <= toIndex; i++)
{
- feature.getType().writeValue(out, list.get(i));
+ type.writeValue(out, list.get(i));
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadLibrariesIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadLibrariesIndication.java
index 4769149256..10e5a060cc 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadLibrariesIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadLibrariesIndication.java
@@ -27,8 +27,7 @@ import java.io.InputStream;
*/
public class LoadLibrariesIndication extends CDOServerIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- LoadLibrariesIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadLibrariesIndication.class);
private String[] libraryNames;
@@ -41,18 +40,18 @@ public class LoadLibrariesIndication extends CDOServerIndication
protected void indicating(CDODataInput in) throws IOException
{
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} library names", size);
+ TRACER.format("Reading {0} library names", size);
}
libraryNames = new String[size];
for (int i = 0; i < size; i++)
{
libraryNames[i] = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read library name: {0}", libraryNames[i]);
+ TRACER.format("Read library name: {0}", libraryNames[i]);
}
}
}
@@ -65,9 +64,9 @@ public class LoadLibrariesIndication extends CDOServerIndication
for (String libraryName : libraryNames)
{
int size = libraryProvider.getSize(libraryName);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing library {0}: {1} bytes", libraryName, size);
+ TRACER.format("Writing library {0}: {1} bytes", libraryName, size);
}
out.writeInt(size);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackageIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackageIndication.java
deleted file mode 100644
index 2e4ff1c5d8..0000000000
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackageIndication.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server.protocol;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
-import org.eclipse.emf.cdo.internal.server.bundle.OM;
-
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- */
-public class LoadPackageIndication extends CDOReadIndication
-{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadPackageIndication.class);
-
- private CDOPackage cdoPackage;
-
- private boolean onlyEcore;
-
- public LoadPackageIndication(CDOServerProtocol protocol)
- {
- super(protocol, CDOProtocolConstants.SIGNAL_LOAD_PACKAGE);
- }
-
- @Override
- protected void indicating(CDODataInput in) throws IOException
- {
- String packageURI = in.readCDOPackageURI();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read packageURI: {0}", packageURI);
- }
-
- onlyEcore = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read onlyEcore: {0}", onlyEcore);
- }
-
- cdoPackage = getPackageManager().lookupPackage(packageURI);
- if (cdoPackage == null)
- {
- throw new IllegalStateException("CDO package not found: " + packageURI);
- }
- }
-
- @Override
- protected void responding(CDODataOutput out) throws IOException
- {
- if (onlyEcore)
- {
- String ecore = cdoPackage.getEcore();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing ecore:\n{0}", ecore);
- }
-
- out.writeString(ecore);
- }
- else
- {
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing package: {0}", cdoPackage);
- }
-
- out.writeCDOPackage(cdoPackage);
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java
new file mode 100644
index 0000000000..6c15210e8d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java
@@ -0,0 +1,62 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.server.protocol;
+
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+import org.eclipse.emf.cdo.internal.server.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class LoadPackagesIndication extends CDOReadIndication
+{
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadPackagesIndication.class);
+
+ private String packageUnitID;
+
+ public LoadPackagesIndication(CDOServerProtocol protocol)
+ {
+ super(protocol, CDOProtocolConstants.SIGNAL_LOAD_PACKAGES);
+ }
+
+ @Override
+ protected void indicating(CDODataInput in) throws IOException
+ {
+ packageUnitID = in.readCDOPackageURI();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Read packageUnitID: {0}", packageUnitID);
+ }
+ }
+
+ @Override
+ protected void responding(CDODataOutput out) throws IOException
+ {
+ InternalCDOPackageRegistry packageRegistry = getRepository().getPackageRegistry();
+ EPackage ePackage = packageRegistry.getEPackage(packageUnitID);
+ if (ePackage == null)
+ {
+ throw new IllegalStateException("Package unit not found: " + packageUnitID);
+ }
+
+ CDOModelUtil.writePackage(out, ePackage, true, packageRegistry);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByTimeIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByTimeIndication.java
index 69562f3680..643d1d9f6b 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByTimeIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByTimeIndication.java
@@ -25,8 +25,7 @@ import java.io.IOException;
*/
public class LoadRevisionByTimeIndication extends LoadRevisionIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- LoadRevisionByTimeIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionByTimeIndication.class);
private long timeStamp;
@@ -40,15 +39,15 @@ public class LoadRevisionByTimeIndication extends LoadRevisionIndication
{
super.indicating(in);
timeStamp = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read timeStamp: {0}", timeStamp);
+ TRACER.format("Read timeStamp: {0}", timeStamp);
}
}
@Override
protected InternalCDORevision getRevision(CDOID cdoID)
{
- return getRevisionManager().getRevisionByTime(cdoID, referenceChunk, timeStamp);
+ return getRepository().getRevisionManager().getRevisionByTime(cdoID, referenceChunk, timeStamp);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByVersionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByVersionIndication.java
index 6cf26ddaac..c798e34c71 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByVersionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionByVersionIndication.java
@@ -25,7 +25,7 @@ import java.io.IOException;
*/
public class LoadRevisionByVersionIndication extends LoadRevisionIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
LoadRevisionByVersionIndication.class);
private int version;
@@ -40,15 +40,15 @@ public class LoadRevisionByVersionIndication extends LoadRevisionIndication
{
super.indicating(in);
version = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read version: {0}", version);
+ TRACER.format("Read version: {0}", version);
}
}
@Override
protected InternalCDORevision getRevision(CDOID id)
{
- return getRevisionManager().getRevisionByVersion(id, referenceChunk, version);
+ return getRepository().getRevisionManager().getRevisionByVersion(id, referenceChunk, version);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java
index 25a0556645..b836ec2c3e 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java
@@ -15,8 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.internal.server.RevisionManager;
@@ -26,6 +24,9 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.MoveableList;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -39,14 +40,13 @@ import java.util.Set;
*/
public class LoadRevisionIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- LoadRevisionIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionIndication.class);
protected CDOID[] ids;
protected int referenceChunk;
- protected Map<CDOClass, CDOFetchRule> fetchRules = new HashMap<CDOClass, CDOFetchRule>();
+ protected Map<EClass, CDOFetchRule> fetchRules = new HashMap<EClass, CDOFetchRule>();
protected CDOID contextID = CDOID.NULL;
@@ -66,24 +66,24 @@ public class LoadRevisionIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
referenceChunk = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read referenceChunk: {0}", referenceChunk);
+ TRACER.format("Read referenceChunk: {0}", referenceChunk);
}
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} IDs", size);
+ TRACER.format("Reading {0} IDs", size);
}
ids = new CDOID[size];
for (int i = 0; i < size; i++)
{
CDOID id = in.readCDOID();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read ID: {0}", id);
+ TRACER.format("Read ID: {0}", id);
}
ids[i] = id;
@@ -99,15 +99,15 @@ public class LoadRevisionIndication extends CDOReadIndication
}
contextID = in.readCDOID();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading fetch rules for context {0}", contextID);
+ TRACER.format("Reading fetch rules for context {0}", contextID);
}
for (int i = 0; i < fetchSize; i++)
{
- CDOFetchRule fetchRule = new CDOFetchRule(in, getPackageManager());
- fetchRules.put(fetchRule.getCDOClass(), fetchRule);
+ CDOFetchRule fetchRule = new CDOFetchRule(in, getRepository().getPackageRegistry());
+ fetchRules.put(fetchRule.getEClass(), fetchRule);
}
}
}
@@ -117,9 +117,9 @@ public class LoadRevisionIndication extends CDOReadIndication
{
List<CDORevision> additionalRevisions = new ArrayList<CDORevision>();
Set<CDOID> revisionIDs = new HashSet<CDOID>();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} revisions", ids.length);
+ TRACER.format("Writing {0} revisions", ids.length);
}
for (CDOID id : ids)
@@ -131,9 +131,9 @@ public class LoadRevisionIndication extends CDOReadIndication
Set<CDOFetchRule> visitedFetchRules = new HashSet<CDOFetchRule>();
if (!CDOIDUtil.isNull(contextID) && fetchRules.size() > 0)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Collecting more revisions based on rules");
+ TRACER.format("Collecting more revisions based on rules");
}
InternalCDORevision revisionContext = getRevision(contextID);
@@ -159,9 +159,9 @@ public class LoadRevisionIndication extends CDOReadIndication
}
int additionalSize = additionalRevisions.size();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} additional revisions", additionalSize);
+ TRACER.format("Writing {0} additional revisions", additionalSize);
}
out.writeInt(additionalSize);
@@ -173,7 +173,7 @@ public class LoadRevisionIndication extends CDOReadIndication
protected InternalCDORevision getRevision(CDOID id)
{
- RevisionManager revisionManager = getRevisionManager();
+ RevisionManager revisionManager = getRepository().getRevisionManager();
return revisionManager.getRevision(id, referenceChunk);
}
@@ -181,7 +181,7 @@ public class LoadRevisionIndication extends CDOReadIndication
List<CDORevision> additionalRevisions, Set<CDOFetchRule> visitedFetchRules)
{
getSession().collectContainedRevisions(revision, referenceChunk, revisions, additionalRevisions);
- CDOFetchRule fetchRule = fetchRules.get(revision.getCDOClass());
+ CDOFetchRule fetchRule = fetchRules.get(revision.getEClass());
if (fetchRule == null || visitedFetchRules.contains(fetchRule))
{
return;
@@ -189,8 +189,9 @@ public class LoadRevisionIndication extends CDOReadIndication
visitedFetchRules.add(fetchRule);
- RevisionManager revisionManager = (RevisionManager)getSessionManager().getRepository().getRevisionManager();
- for (CDOFeature feature : fetchRule.getFeatures())
+ RevisionManager revisionManager = (RevisionManager)getSession().getSessionManager().getRepository()
+ .getRevisionManager();
+ for (EStructuralFeature feature : fetchRule.getFeatures())
{
if (feature.isMany())
{
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
index 39a85c0132..072d3ecb39 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
@@ -12,7 +12,7 @@ package org.eclipse.emf.cdo.internal.server.protocol;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.internal.server.Repository;
import org.eclipse.emf.cdo.internal.server.Session;
@@ -31,7 +31,7 @@ import java.io.IOException;
*/
public class OpenSessionIndication extends RepositoryTimeIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, OpenSessionIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, OpenSessionIndication.class);
private String repositoryName;
@@ -63,15 +63,15 @@ public class OpenSessionIndication extends RepositoryTimeIndication
{
super.indicating(in);
repositoryName = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read repositoryName: {0}", repositoryName);
+ TRACER.format("Read repositoryName: {0}", repositoryName);
}
passiveUpdateEnabled = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read passiveUpdateEnabled: {0}", passiveUpdateEnabled);
+ TRACER.format("Read passiveUpdateEnabled: {0}", passiveUpdateEnabled);
}
}
@@ -94,37 +94,39 @@ public class OpenSessionIndication extends RepositoryTimeIndication
// Adjust the infra structure (was IRepositoryProvider)
protocol.setInfraStructure(session);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing sessionID: {0}", session.getSessionID());
+ TRACER.format("Writing sessionID: {0}", session.getSessionID());
}
out.writeInt(session.getSessionID());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing repositoryUUID: {0}", repository.getUUID());
+ TRACER.format("Writing repositoryUUID: {0}", repository.getUUID());
}
out.writeString(repository.getUUID());
out.writeLong(repository.getCreationTime());
out.writeBoolean(repository.isSupportingAudits());
repository.getStore().getCDOIDLibraryDescriptor().write(out);
- writePackageInfos(out);
+
+ CDOPackageUnit[] packageUnits = repository.getPackageRegistry().getPackageUnits();
+ out.writeCDOPackageUnits(packageUnits);
}
catch (RepositoryNotFoundException ex)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Repository {0} not found", repositoryName);
+ TRACER.format("Repository {0} not found", repositoryName);
}
out.writeInt(CDOProtocolConstants.ERROR_REPOSITORY_NOT_FOUND);
}
catch (SessionCreationException ex)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Failed to open session for repository {0}", repositoryName);
+ TRACER.format("Failed to open session for repository {0}", repositoryName);
}
out.writeInt(CDOProtocolConstants.ERROR_NO_SESSION);
@@ -133,28 +135,4 @@ public class OpenSessionIndication extends RepositoryTimeIndication
super.responding(out);
}
-
- private void writePackageInfos(CDODataOutput out) throws IOException
- {
- CDOPackage[] packages = getPackageManager().getPackages();
- for (CDOPackage p : packages)
- {
- if (!p.isSystem())
- {
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing package info: uri={0}, dynamic={1}, metaIDRange={2}, parentURI={3}", p
- .getPackageURI(), p.isDynamic(), p.getMetaIDRange(), p.getParentURI());
- }
-
- out.writeBoolean(true);
- out.writeCDOPackageURI(p.getPackageURI());
- out.writeBoolean(p.isDynamic());
- out.writeCDOIDMetaRange(p.getMetaIDRange());
- out.writeCDOPackageURI(p.getParentURI());
- }
- }
-
- out.writeBoolean(false);
- }
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/QueryIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/QueryIndication.java
index 70d0c0ca0c..5fec8146ca 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/QueryIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/QueryIndication.java
@@ -74,7 +74,7 @@ public class QueryIndication extends CDOReadIndication
if (TRACER.isEnabled())
{
- TRACER.trace("Query had " + numberOfResults + " objects return");
+ TRACER.trace("Query returned " + numberOfResults + " results");
}
// Query is done successfully
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/RepositoryTimeIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/RepositoryTimeIndication.java
index f5c24d14f2..c4ccda1fde 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/RepositoryTimeIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/RepositoryTimeIndication.java
@@ -24,8 +24,7 @@ import java.io.IOException;
*/
public class RepositoryTimeIndication extends CDOServerIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- RepositoryTimeIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, RepositoryTimeIndication.class);
private long indicated;
@@ -49,15 +48,15 @@ public class RepositoryTimeIndication extends CDOServerIndication
protected void responding(CDODataOutput out) throws IOException
{
long responded = System.currentTimeMillis();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing indicated: {0,date} {0,time}", indicated);
+ TRACER.format("Writing indicated: {0,date} {0,time}", indicated);
}
out.writeLong(indicated);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing responded: {0,date} {0,time}", responded);
+ TRACER.format("Writing responded: {0,date} {0,time}", responded);
}
out.writeLong(responded);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ResourceIDIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ResourceIDIndication.java
index f8d7f8a871..fe757fac58 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ResourceIDIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ResourceIDIndication.java
@@ -26,7 +26,7 @@ import java.io.IOException;
*/
public class ResourceIDIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ResourceIDIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ResourceIDIndication.class);
private CDOID id;
@@ -39,15 +39,15 @@ public class ResourceIDIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
int viewID = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read viewID: {0}", viewID);
+ TRACER.format("Read viewID: {0}", viewID);
}
String path = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read path: {0}", path);
+ TRACER.format("Read path: {0}", path);
}
IView view = getSession().getView(viewID);
@@ -57,9 +57,9 @@ public class ResourceIDIndication extends CDOReadIndication
@Override
protected void responding(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing ID: {0}", id);
+ TRACER.format("Writing ID: {0}", id);
}
out.writeCDOID(id);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetAuditIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetAuditIndication.java
index 0c1ed897df..3bb09df854 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetAuditIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetAuditIndication.java
@@ -30,7 +30,7 @@ import java.util.List;
*/
public class SetAuditIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetAuditIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetAuditIndication.class);
private List<CDORevision> revisions;
@@ -43,21 +43,21 @@ public class SetAuditIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
int viewID = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read viewID: {0}", viewID);
+ TRACER.format("Read viewID: {0}", viewID);
}
long timeStamp = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
+ TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
}
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} IDs", size);
+ TRACER.format("Reading {0} IDs", size);
}
List<CDOID> invalidObjects = new ArrayList<CDOID>(size);
@@ -65,9 +65,9 @@ public class SetAuditIndication extends CDOReadIndication
{
CDOID id = in.readCDOID();
invalidObjects.add(id);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read ID: {0}", id);
+ TRACER.format("Read ID: {0}", id);
}
}
@@ -82,18 +82,18 @@ public class SetAuditIndication extends CDOReadIndication
@Override
protected void responding(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} existanceFlags", revisions.size());
+ TRACER.format("Writing {0} existanceFlags", revisions.size());
}
out.writeInt(revisions.size());
for (CDORevision revision : revisions)
{
boolean existanceFlag = revision != null;
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing existanceFlag: {0}", existanceFlag);
+ TRACER.format("Writing existanceFlag: {0}", existanceFlag);
}
out.writeBoolean(existanceFlag);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetPassiveUpdateIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetPassiveUpdateIndication.java
index ab80fcb77e..02b7ae4999 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetPassiveUpdateIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SetPassiveUpdateIndication.java
@@ -25,8 +25,7 @@ import java.io.IOException;
*/
public class SetPassiveUpdateIndication extends SyncRevisionsIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- SetPassiveUpdateIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetPassiveUpdateIndication.class);
public SetPassiveUpdateIndication(CDOServerProtocol protocol)
{
@@ -38,9 +37,9 @@ public class SetPassiveUpdateIndication extends SyncRevisionsIndication
{
super.indicating(in);
boolean passiveUpdateEnabled = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Turning " + (passiveUpdateEnabled ? "on" : "off") + " passive update");
+ TRACER.trace("Turning " + (passiveUpdateEnabled ? "on" : "off") + " passive update");
}
getSession().setPassiveUpdateEnabled(passiveUpdateEnabled);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SyncRevisionsIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SyncRevisionsIndication.java
index cc5f9ded66..1e7fd564b8 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SyncRevisionsIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/SyncRevisionsIndication.java
@@ -33,8 +33,7 @@ import java.util.List;
*/
public class SyncRevisionsIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- SyncRevisionsIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SyncRevisionsIndication.class);
private List<Pair<InternalCDORevision, Long>> dirtyObjects = new ArrayList<Pair<InternalCDORevision, Long>>();
@@ -56,9 +55,9 @@ public class SyncRevisionsIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
IStoreAccessor reader = StoreThreadLocal.getAccessor();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Refreshing store accessor: " + reader);
+ TRACER.format("Refreshing store accessor: " + reader);
}
reader.refreshRevisions();
@@ -72,7 +71,7 @@ public class SyncRevisionsIndication extends CDOReadIndication
{
try
{
- InternalCDORevision revision = getRevisionManager().getRevision(id, referenceChunk);
+ InternalCDORevision revision = getRepository().getRevisionManager().getRevision(id, referenceChunk);
if (revision == null)
{
detachedObjects.add(new Pair<CDOID, Long>(id, getTimestamp(id, version)));
@@ -92,7 +91,7 @@ public class SyncRevisionsIndication extends CDOReadIndication
private long getTimestamp(CDOID id, int version)
{
- CDORevision revision = getRevisionManager().getRevisionByVersion(id, 0, version, false);
+ CDORevision revision = getRepository().getRevisionManager().getRevisionByVersion(id, 0, version, false);
if (revision != null)
{
return revision.getRevised() + 1;
@@ -104,9 +103,9 @@ public class SyncRevisionsIndication extends CDOReadIndication
@Override
protected void responding(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Sync found " + dirtyObjects.size() + " dirty objects");
+ TRACER.format("Sync found " + dirtyObjects.size() + " dirty objects");
}
out.writeInt(dirtyObjects.size());
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/UnsubscribeRemoteSessionsIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/UnsubscribeRemoteSessionsIndication.java
index 1c2b1cb7f8..7bb5772339 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/UnsubscribeRemoteSessionsIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/UnsubscribeRemoteSessionsIndication.java
@@ -30,7 +30,8 @@ import java.util.List;
*/
public class UnsubscribeRemoteSessionsIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, UnsubscribeRemoteSessionsIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
+ UnsubscribeRemoteSessionsIndication.class);
private List<CDORevision> revisions;
@@ -43,21 +44,21 @@ public class UnsubscribeRemoteSessionsIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
int viewID = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read viewID: {0}", viewID);
+ TRACER.format("Read viewID: {0}", viewID);
}
long timeStamp = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
+ TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
}
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} IDs", size);
+ TRACER.format("Reading {0} IDs", size);
}
List<CDOID> invalidObjects = new ArrayList<CDOID>(size);
@@ -65,9 +66,9 @@ public class UnsubscribeRemoteSessionsIndication extends CDOReadIndication
{
CDOID id = in.readCDOID();
invalidObjects.add(id);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read ID: {0}", id);
+ TRACER.format("Read ID: {0}", id);
}
}
@@ -82,18 +83,18 @@ public class UnsubscribeRemoteSessionsIndication extends CDOReadIndication
@Override
protected void responding(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} existanceFlags", revisions.size());
+ TRACER.format("Writing {0} existanceFlags", revisions.size());
}
out.writeInt(revisions.size());
for (CDORevision revision : revisions)
{
boolean existanceFlag = revision != null;
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing existanceFlag: {0}", existanceFlag);
+ TRACER.format("Writing existanceFlag: {0}", existanceFlag);
}
out.writeBoolean(existanceFlag);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/VerifyRevisionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/VerifyRevisionIndication.java
index df3829c3b8..569113adda 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/VerifyRevisionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/VerifyRevisionIndication.java
@@ -27,8 +27,7 @@ import java.io.IOException;
*/
public class VerifyRevisionIndication extends CDOReadIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- VerifyRevisionIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, VerifyRevisionIndication.class);
protected long[] timeStamps;
@@ -41,20 +40,20 @@ public class VerifyRevisionIndication extends CDOReadIndication
protected void indicating(CDODataInput in) throws IOException
{
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} IDs and versions", size);
+ TRACER.format("Reading {0} IDs and versions", size);
}
- RevisionManager revisionManager = getRevisionManager();
+ RevisionManager revisionManager = getRepository().getRevisionManager();
timeStamps = new long[size];
for (int i = 0; i < size; i++)
{
CDOID id = in.readCDOID();
int version = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read ID and version: {0}v{1}", id, version);
+ TRACER.format("Read ID and version: {0}v{1}", id, version);
}
InternalCDORevision revision = revisionManager.getRevisionByVersion(id, 0, version);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ViewsChangedIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ViewsChangedIndication.java
index 8581931bcc..0c3243eb21 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ViewsChangedIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/ViewsChangedIndication.java
@@ -35,8 +35,7 @@ public class ViewsChangedIndication extends CDOServerIndication
{
int viewID = in.readInt();
byte kind = in.readByte();
- CDOServerProtocol protocol = getProtocol();
- Session session = protocol.getSession();
+ Session session = getSession();
switch (kind)
{
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/INotificationManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/INotificationManager.java
index 583419abd2..b07b02af5e 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/INotificationManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/INotificationManager.java
@@ -11,13 +11,21 @@
*/
package org.eclipse.emf.cdo.server;
-import org.eclipse.emf.cdo.internal.server.Session;
-
/**
* @author Simon McDuff
* @since 2.0
*/
-public interface INotificationManager extends IRepositoryElement
+public interface INotificationManager
{
- public void notifyCommit(Session session, IStoreAccessor.CommitContext commitContext);
+ public IRepository getRepository();
+
+ /**
+ * Internal.
+ */
+ public void setRepository(IRepository repository);
+
+ /**
+ * Internal.
+ */
+ public void notifyCommit(ISession session, IStoreAccessor.CommitContext commitContext);
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IPackageManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IPackageManager.java
deleted file mode 100644
index f7d38dd9c1..0000000000
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IPackageManager.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server;
-
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-
-/**
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IPackageManager extends IRepositoryElement, CDOPackageManager
-{
-}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
index 40523cfe60..25c73a7f31 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
@@ -10,12 +10,14 @@
*/
package org.eclipse.emf.cdo.server;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EPackage;
+
import java.util.List;
import java.util.Map;
@@ -23,7 +25,7 @@ import java.util.Map;
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface IRepository extends IContainer<IRepositoryElement>, IQueryHandlerProvider
+public interface IRepository extends IContainer<Object>, IQueryHandlerProvider
{
public String getName();
@@ -45,7 +47,14 @@ public interface IRepository extends IContainer<IRepositoryElement>, IQueryHandl
public boolean isVerifyingRevisions();
- public IPackageManager getPackageManager();
+ /**
+ * Returns the EMF {@link EPackage.Registry package registry} that is used by this repository.
+ * <p>
+ * This registry is managed by the {@link CDOPackageUnitManager package manager} of this repository.
+ *
+ * @see #getPackageUnitManager()
+ */
+ public CDOPackageRegistry getPackageRegistry();
public ISessionManager getSessionManager();
@@ -61,10 +70,6 @@ public interface IRepository extends IContainer<IRepositoryElement>, IQueryHandl
*/
public IQueryHandlerProvider getQueryHandlerProvider();
- public long getLastMetaID();
-
- public CDOIDMetaRange getMetaIDRange(int count);
-
/**
* Returns the repository creation time.
*
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRevisionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRevisionManager.java
index 02af3f5d46..c197123172 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRevisionManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRevisionManager.java
@@ -16,6 +16,14 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface IRevisionManager extends IRepositoryElement, CDORevisionResolver
+public interface IRevisionManager extends CDORevisionResolver
{
+ public IRepository getRepository();
+
+ /**
+ * Internal.
+ *
+ * @since 2.0
+ */
+ public void setRepository(IRepository repository);
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISession.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISession.java
index cc6ba3300e..45cbd7228f 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISession.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISession.java
@@ -17,7 +17,6 @@ import org.eclipse.net4j.util.container.IContainer;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
*/
public interface ISession extends CDOCommonSession, IContainer<IView>
{
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
index 1ef91c2f7c..daf1dd3a39 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
@@ -18,8 +18,17 @@ import org.eclipse.net4j.util.container.IContainer;
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface ISessionManager extends IRepositoryElement, IContainer<ISession>
+public interface ISessionManager extends IContainer<ISession>
{
+ public IRepository getRepository();
+
+ /**
+ * Internal.
+ *
+ * @since 2.0
+ */
+ public void setRepository(IRepository repository);
+
public ISession[] getSessions();
/**
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java
index 75bb8d38da..375546ee87 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java
@@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.server;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryProvider;
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.net4j.util.om.monitor.ProgressDistributor;
@@ -21,8 +22,17 @@ import java.util.Set;
/**
* @author Eike Stepper
*/
-public interface IStore extends IRepositoryElement
+public interface IStore
{
+ public IRepository getRepository();
+
+ /**
+ * Internal.
+ *
+ * @since 2.0
+ */
+ public void setRepository(IRepository repository);
+
/**
* @since 2.0
*/
@@ -69,11 +79,7 @@ public interface IStore extends IRepositoryElement
*/
public void setRevisionParallelism(RevisionParallelism revisionParallelism);
- public boolean wasCrashed();
-
- public void repairAfterCrash();
-
- public long getLastMetaID();
+ public CDOIDMetaRange getNextMetaIDRange(int count);
/**
* Returns the store creation time.
@@ -83,6 +89,13 @@ public interface IStore extends IRepositoryElement
public long getCreationTime();
/**
+ * Returns <code>true</code>if this store was activated for the first time, <code>false</code> otherwise.
+ *
+ * @since 2.0
+ */
+ public boolean isFirstTime();
+
+ /**
* Returns a reader that can be used to read from this store in the context of the given session.
*
* @param session
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
index 96ae6fc2b0..f71d70f9e3 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
@@ -14,18 +14,18 @@ import org.eclipse.emf.cdo.common.CDOCommonView;
import org.eclipse.emf.cdo.common.CDOQueryInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+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.net4j.util.collection.CloseableIterator;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.Collection;
import java.util.Map;
@@ -59,34 +59,26 @@ public interface IStoreAccessor extends IQueryHandler
/**
* @since 2.0
*/
- public IStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature);
+ public IStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature);
/**
* @since 2.0
*/
- public Collection<CDOPackageInfo> readPackageInfos();
+ public Collection<InternalCDOPackageUnit> readPackageUnits();
/**
* Demand loads a given package proxy that has been created on startup of the repository.
* <p>
- * It's left to the implementor's choice whether to load the {@link CDOPackage#getEcore() ecore xml} at this time
- * already. In case it is <b>not</b> loaded at this time {@link #readPackageEcore(CDOPackage) readPackageEcore()} is
+ * It's left to the implementor's choice whether to load the {@link EPackage#getEcore() ecore xml} at this time
+ * already. In case it is <b>not</b> loaded at this time {@link #readPackageEcore(EPackage) readPackageEcore()} is
* called later on demand.
* <p>
* This method must only load the given package, <b>not</b> possible contained packages.
*
- * @see InternalCDOPackage
- * @since 2.0
- */
- public void readPackage(CDOPackage cdoPackage);
-
- /**
- * Loads the {@link CDOPackage#getEcore() ecore xml} of the given package.
- *
- * @see InternalCDOPackage#setEcore(String)
+ * @see InternalEPackage
* @since 2.0
*/
- public void readPackageEcore(CDOPackage cdoPackage);
+ public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit);
/**
* Returns an iterator that iterates over all objects in the store and makes their CDOIDs available for processing.
@@ -102,7 +94,7 @@ public interface IStoreAccessor extends IQueryHandler
*
* @since 2.0
*/
- public CDOClassRef readObjectType(CDOID id);
+ public CDOClassifierRef readObjectType(CDOID id);
/**
* Reads a current revision (i.e. one with revised == 0) from the back-end. Returns <code>null</code> if the id is
@@ -110,7 +102,7 @@ public interface IStoreAccessor extends IQueryHandler
*
* @since 2.0
*/
- public CDORevision readRevision(CDOID id, int referenceChunk);
+ public InternalCDORevision readRevision(CDOID id, int referenceChunk);
/**
* Reads a revision with the given version from the back-end. This method will only be called by the framework if
@@ -118,7 +110,7 @@ public interface IStoreAccessor extends IQueryHandler
*
* @since 2.0
*/
- public CDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version);
+ public InternalCDORevision readRevisionByVersion(CDOID id, int referenceChunk, int version);
/**
* Reads a revision from the back-end that was valid at the given timeStamp. This method will only be called by the
@@ -127,7 +119,7 @@ public interface IStoreAccessor extends IQueryHandler
*
* @since 2.0
*/
- public CDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp);
+ public InternalCDORevision readRevisionByTime(CDOID id, int referenceChunk, long timeStamp);
/**
* Returns the <code>CDOID</code> of the resource node with the given folderID and name if a resource with this
@@ -140,7 +132,7 @@ public interface IStoreAccessor extends IQueryHandler
/**
* @since 2.0
*/
- public CDORevision verifyRevision(CDORevision revision);
+ public InternalCDORevision verifyRevision(InternalCDORevision revision);
/**
* TODO Clarify the meaning of {@link #refreshRevisions()}
@@ -206,6 +198,11 @@ public interface IStoreAccessor extends IQueryHandler
public ITransaction getTransaction();
/**
+ * @since 2.0
+ */
+ public void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor);
+
+ /**
* Called before committing. An instance of this accessor represents an instance of a back-end transaction. Could be
* called multiple times before commit it called. {@link IStoreAccessor#commit(OMMonitor)} or
* {@link IStoreAccessor#rollback()} will be called after any numbers of
@@ -264,31 +261,31 @@ public interface IStoreAccessor extends IQueryHandler
* <code>CommitContext</code>. In addition to the packages registered with the session this package manager also
* contains the new packages that are part of this commit operation.
*/
- public CDOPackageManager getPackageManager();
+ public InternalCDOPackageRegistry getPackageRegistry();
/**
- * Returns an array of the new packages that are part of the commit operation represented by this
+ * Returns an array of the new package units that are part of the commit operation represented by this
* <code>CommitContext</code>.
*/
- public CDOPackage[] getNewPackages();
+ public InternalCDOPackageUnit[] getNewPackageUnits();
/**
* Returns an array of the new objects that are part of the commit operation represented by this
* <code>CommitContext</code>.
*/
- public CDORevision[] getNewObjects();
+ public InternalCDORevision[] getNewObjects();
/**
* Returns an array of the dirty objects that are part of the commit operation represented by this
* <code>CommitContext</code>.
*/
- public CDORevision[] getDirtyObjects();
+ public InternalCDORevision[] getDirtyObjects();
/**
* Returns an array of the dirty object deltas that are part of the commit operation represented by this
* <code>CommitContext</code>.
*/
- public CDORevisionDelta[] getDirtyObjectDeltas();
+ public InternalCDORevisionDelta[] getDirtyObjectDeltas();
/**
* Returns an array of the removed object that are part of the commit operation represented by this
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreChunkReader.java
index 0a15755447..755775c5f4 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreChunkReader.java
@@ -11,9 +11,10 @@
*/
package org.eclipse.emf.cdo.server;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.List;
/**
@@ -28,7 +29,7 @@ public interface IStoreChunkReader
public CDORevision getRevision();
- public CDOFeature getFeature();
+ public EStructuralFeature getFeature();
public void addSimpleChunk(int index);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IView.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IView.java
index a9fd44475e..003b2063b4 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IView.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IView.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
*/
public interface IView extends CDOCommonView
{
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreThreadLocal.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreThreadLocal.java
index e13819a1b5..3dd97e8c6a 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreThreadLocal.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreThreadLocal.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.emf.cdo.server;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
/**
* @author Eike Stepper
* @since 2.0
@@ -20,6 +22,8 @@ public final class StoreThreadLocal
private static final ThreadLocal<IStoreAccessor> ACCESSOR = new InheritableThreadLocal<IStoreAccessor>();
+ private static final ThreadLocal<IStoreAccessor.CommitContext> COMMIT_CONTEXT = new InheritableThreadLocal<IStoreAccessor.CommitContext>();
+
private StoreThreadLocal()
{
}
@@ -68,15 +72,30 @@ public final class StoreThreadLocal
return accessor;
}
+ public static void setCommitContext(IStoreAccessor.CommitContext commitContext)
+ {
+ COMMIT_CONTEXT.set(commitContext);
+ }
+
+ public static IStoreAccessor.CommitContext getCommitContext()
+ {
+ return COMMIT_CONTEXT.get();
+ }
+
public static void release()
{
IStoreAccessor accessor = ACCESSOR.get();
if (accessor != null)
{
- accessor.release();
+ if (LifecycleUtil.isActive(accessor))
+ {
+ accessor.release();
+ }
+
ACCESSOR.set(null);
}
SESSION.set(null);
+ COMMIT_CONTEXT.set(null);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreUtil.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreUtil.java
deleted file mode 100644
index e2f7c6bb4a..0000000000
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/StoreUtil.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.server;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.internal.server.MEMStore;
-
-/**
- * @author Eike Stepper
- */
-public final class StoreUtil
-{
- private StoreUtil()
- {
- }
-
- /**
- * @since 2.0
- */
- public static IMEMStore createMEMStore()
- {
- return new MEMStore();
- }
-
- /**
- * @since 2.0
- */
- public static IStoreAccessor.QueryResourcesContext.ExactMatch createExactMatchContext(final CDOID folderID,
- final String name, final long timeStamp)
- {
- return new IStoreAccessor.QueryResourcesContext.ExactMatch()
- {
- private CDOID resourceID;
-
- public CDOID getResourceID()
- {
- return resourceID;
- }
-
- public long getTimeStamp()
- {
- return timeStamp;
- }
-
- public CDOID getFolderID()
- {
- return folderID;
- }
-
- public String getName()
- {
- return name;
- }
-
- public boolean exactMatch()
- {
- return true;
- }
-
- public int getMaxResults()
- {
- return 1;
- }
-
- public boolean addResource(CDOID resourceID)
- {
- this.resourceID = resourceID;
- return false;
- }
- };
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/mem/MEMStoreUtil.java
index 926fea6173..e73afbcf5c 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/mem/MEMStoreUtil.java
@@ -8,20 +8,23 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.server;
+package org.eclipse.emf.cdo.server.mem;
+
+import org.eclipse.emf.cdo.internal.server.mem.MEMStore;
+import org.eclipse.emf.cdo.server.IMEMStore;
/**
* @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
+ * @since 2.0
*/
-public interface IRepositoryElement
+public final class MEMStoreUtil
{
- public IRepository getRepository();
+ private MEMStoreUtil()
+ {
+ }
- /**
- * Internal.
- *
- * @since 2.0
- */
- public void setRepository(IRepository repository);
+ public static IMEMStore createMEMStore()
+ {
+ return new MEMStore();
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LongIDStore.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStore.java
index 23244749a0..43ea404f99 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/LongIDStore.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStore.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.spi.server;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
@@ -26,13 +26,14 @@ import java.util.Set;
*/
public abstract class LongIDStore extends Store
{
- protected static final long CRASHED = -1L;
-
private static final CDOIDLongFactoryImpl CDOID_OBJECT_FACTORY = new CDOIDLongFactoryImpl();
@ExcludeFromDump
private transient long lastObjectID;
+ @ExcludeFromDump
+ private transient Object lastObjectIDLock = new Object();
+
/**
* @since 2.0
*/
@@ -59,21 +60,25 @@ public abstract class LongIDStore extends Store
public long getLastObjectID()
{
- return lastObjectID;
+ synchronized (lastObjectIDLock)
+ {
+ return lastObjectID;
+ }
}
public void setLastObjectID(long lastObjectID)
{
- this.lastObjectID = lastObjectID;
- }
-
- public synchronized CDOID getNextCDOID()
- {
- return CDOIDUtil.createLong(++lastObjectID);
+ synchronized (lastObjectIDLock)
+ {
+ this.lastObjectID = lastObjectID;
+ }
}
- public boolean wasCrashed()
+ public CDOID getNextCDOID()
{
- return lastObjectID == CRASHED;
+ synchronized (lastObjectIDLock)
+ {
+ return CDOIDUtil.createLong(++lastObjectID);
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStoreAccessor.java
new file mode 100644
index 0000000000..96708873e3
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/LongIDStoreAccessor.java
@@ -0,0 +1,66 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ * Simon McDuff - http://bugs.eclipse.org/201266
+ * Simon McDuff - http://bugs.eclipse.org/213402
+ */
+package org.eclipse.emf.cdo.spi.server;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDTemp;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.server.ISession;
+import org.eclipse.emf.cdo.server.ITransaction;
+
+import org.eclipse.net4j.util.om.monitor.OMMonitor;
+
+/**
+ * @since 2.0
+ * @author Eike Stepper
+ */
+public abstract class LongIDStoreAccessor extends StoreAccessor
+{
+ protected LongIDStoreAccessor(Store store, ISession session)
+ {
+ super(store, session);
+ }
+
+ protected LongIDStoreAccessor(Store store, ITransaction transaction)
+ {
+ super(store, transaction);
+ }
+
+ @Override
+ protected void addIDMappings(CommitContext context, OMMonitor monitor)
+ {
+ try
+ {
+ LongIDStore longIDStore = (LongIDStore)getStore();
+ CDORevision[] newObjects = context.getNewObjects();
+ monitor.begin(newObjects.length);
+ for (CDORevision revision : newObjects)
+ {
+ CDOIDTemp oldID = (CDOIDTemp)revision.getID();
+ CDOID newID = longIDStore.getNextCDOID();
+ if (CDOIDUtil.isNull(newID) || newID.isTemporary())
+ {
+ throw new IllegalStateException("newID=" + newID);
+ }
+
+ context.addIDMapping(oldID, newID);
+ monitor.worked();
+ }
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Store.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java
index 2d4f7264a5..0e61df555e 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Store.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java
@@ -8,9 +8,12 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.spi.server;
import org.eclipse.emf.cdo.common.CDOCommonView;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ISessionManager;
@@ -36,6 +39,8 @@ import java.util.Set;
*/
public abstract class Store extends Lifecycle implements IStore
{
+ protected static final long CRASHED = -1L;
+
@ExcludeFromDump
private final transient String type;
@@ -58,6 +63,9 @@ public abstract class Store extends Lifecycle implements IStore
private transient long lastMetaID;
@ExcludeFromDump
+ private transient Object lastMetaIDLock = new Object();
+
+ @ExcludeFromDump
private transient ProgressDistributor indicatingCommitDistributor = new ProgressDistributor.Geometric()
{
@Override
@@ -176,18 +184,34 @@ public abstract class Store extends Lifecycle implements IStore
public long getLastMetaID()
{
- return lastMetaID;
+ synchronized (lastMetaIDLock)
+ {
+ return lastMetaID;
+ }
}
public void setLastMetaID(long lastMetaID)
{
- this.lastMetaID = lastMetaID;
+ synchronized (lastMetaIDLock)
+ {
+ this.lastMetaID = lastMetaID;
+ }
+ }
+
+ public CDOIDMetaRange getNextMetaIDRange(int count)
+ {
+ synchronized (lastMetaIDLock)
+ {
+ CDOID lowerBound = CDOIDUtil.createMeta(lastMetaID + 1);
+ lastMetaID += count;
+ return CDOIDUtil.createMetaRange(lowerBound, count);
+ }
}
/**
* @since 2.0
*/
- public final IStoreAccessor getReader(ISession session)
+ public IStoreAccessor getReader(ISession session)
{
IStoreAccessor reader = null;
StoreAccessorPool pool = getReaderPool(session, false);
@@ -225,7 +249,7 @@ public abstract class Store extends Lifecycle implements IStore
/**
* @since 2.0
*/
- public final IStoreAccessor getWriter(ITransaction transaction)
+ public IStoreAccessor getWriter(ITransaction transaction)
{
IStoreAccessor writer = null;
StoreAccessorPool pool = getWriterPool(transaction, false);
@@ -334,6 +358,54 @@ public abstract class Store extends Lifecycle implements IStore
/**
* @since 2.0
*/
+ public static IStoreAccessor.QueryResourcesContext.ExactMatch createExactMatchContext(final CDOID folderID,
+ final String name, final long timeStamp)
+ {
+ return new IStoreAccessor.QueryResourcesContext.ExactMatch()
+ {
+ private CDOID resourceID;
+
+ public CDOID getResourceID()
+ {
+ return resourceID;
+ }
+
+ public long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public CDOID getFolderID()
+ {
+ return folderID;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean exactMatch()
+ {
+ return true;
+ }
+
+ public int getMaxResults()
+ {
+ return 1;
+ }
+
+ public boolean addResource(CDOID resourceID)
+ {
+ this.resourceID = resourceID;
+ return false;
+ }
+ };
+ }
+
+ /**
+ * @since 2.0
+ */
protected static <T> Set<T> set(T... elements)
{
return Collections.unmodifiableSet(new HashSet<T>(Arrays.asList(elements)));
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessor.java
new file mode 100644
index 0000000000..555f6348bb
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessor.java
@@ -0,0 +1,249 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ * Simon McDuff - http://bugs.eclipse.org/201266
+ * Simon McDuff - http://bugs.eclipse.org/213402
+ */
+package org.eclipse.emf.cdo.spi.server;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDTemp;
+import org.eclipse.emf.cdo.internal.server.bundle.OM;
+import org.eclipse.emf.cdo.server.ISession;
+import org.eclipse.emf.cdo.server.IStoreAccessor;
+import org.eclipse.emf.cdo.server.ITransaction;
+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.net4j.util.lifecycle.Lifecycle;
+import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+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;
+
+ private boolean reader;
+
+ private StoreAccessor(Store store, Object context, boolean reader)
+ {
+ this.store = store;
+ this.context = context;
+ this.reader = reader;
+ }
+
+ protected StoreAccessor(Store store, ISession session)
+ {
+ this(store, session, true);
+ }
+
+ /**
+ * @since 2.0
+ */
+ protected StoreAccessor(Store store, ITransaction transaction)
+ {
+ this(store, transaction, false);
+ }
+
+ public Store getStore()
+ {
+ return store;
+ }
+
+ public boolean isReader()
+ {
+ return reader;
+ }
+
+ public ISession getSession()
+ {
+ if (context instanceof ITransaction)
+ {
+ return ((ITransaction)context).getSession();
+ }
+
+ return (ISession)context;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public ITransaction getTransaction()
+ {
+ if (context instanceof ITransaction)
+ {
+ return (ITransaction)context;
+ }
+
+ return null;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public CDOID readResourceID(CDOID folderID, String name, long timeStamp)
+ {
+ IStoreAccessor.QueryResourcesContext.ExactMatch context = //
+ Store.createExactMatchContext(folderID, name, timeStamp);
+
+ queryResources(context);
+ return context.getResourceID();
+ }
+
+ /**
+ * @since 2.0
+ */
+ public InternalCDORevision verifyRevision(InternalCDORevision revision)
+ {
+ return revision;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public void write(CommitContext context, OMMonitor monitor)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing transaction: {0}", getTransaction());
+ }
+
+ commitContexts.add(context);
+ long timeStamp = context.getTimeStamp();
+ boolean deltas = store.getRepository().isSupportingRevisionDeltas();
+ InternalCDOPackageUnit[] newPackageUnits = context.getNewPackageUnits();
+ InternalCDORevision[] newObjects = context.getNewObjects();
+ CDOID[] detachedObjects = context.getDetachedObjects();
+ int dirtyCount = deltas ? context.getDirtyObjectDeltas().length : context.getDirtyObjects().length;
+
+ try
+ {
+ monitor.begin(newPackageUnits.length + 2 + newObjects.length + detachedObjects.length + dirtyCount);
+ if (newPackageUnits.length != 0)
+ {
+ writePackageUnits(newPackageUnits, monitor.fork(newPackageUnits.length));
+ }
+
+ addIDMappings(context, monitor.fork());
+ context.applyIDMappings(monitor.fork());
+
+ if (newObjects.length != 0)
+ {
+ writeRevisions(newObjects, monitor.fork(newObjects.length));
+ }
+
+ if (dirtyCount != 0)
+ {
+ if (deltas)
+ {
+ writeRevisionDeltas(context.getDirtyObjectDeltas(), timeStamp, monitor.fork(dirtyCount));
+ }
+ else
+ {
+ writeRevisions(context.getDirtyObjects(), monitor.fork(dirtyCount));
+ }
+ }
+
+ if (detachedObjects.length != 0)
+ {
+ detachObjects(detachedObjects, timeStamp - 1, monitor.fork(detachedObjects.length));
+ }
+ }
+ finally
+ {
+ monitor.done();
+ }
+ }
+
+ /**
+ * @since 2.0
+ */
+ public void rollback()
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Rolling back transaction: {0}", getTransaction());
+ }
+
+ for (CommitContext commitContext : commitContexts)
+ {
+ rollback(commitContext);
+ }
+ }
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void rollback(IStoreAccessor.CommitContext commitContext);
+
+ public final void release()
+ {
+ store.releaseAccessor(this);
+ commitContexts.clear();
+ }
+
+ /**
+ * Add ID mappings for all new objects of a transaction to the commit context. The implementor must, for each new
+ * object of the commit context, determine a permanent CDOID and make it known to the context by calling
+ * {@link CommitContext#addIDMapping(CDOIDTemp, CDOID)}.
+ *
+ * @since 2.0
+ */
+ protected abstract void addIDMappings(CommitContext context, OMMonitor monitor);
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void writeRevisions(InternalCDORevision[] revisions, OMMonitor monitor);
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void writeRevisionDeltas(InternalCDORevisionDelta[] revisionDeltas, long created, OMMonitor monitor);
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void detachObjects(CDOID[] detachedObjects, long revised, OMMonitor monitor);
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ protected abstract void doActivate() throws Exception;
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ protected abstract void doDeactivate() throws Exception;
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void doPassivate() throws Exception;
+
+ /**
+ * @since 2.0
+ */
+ protected abstract void doUnpassivate() throws Exception;
+}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessorPool.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessorPool.java
index 4618f46943..4fc686fe56 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessorPool.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreAccessorPool.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.spi.server;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.ISession;
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreChunkReader.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreChunkReader.java
index 31773ff1d1..04656ff9b1 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreChunkReader.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/StoreChunkReader.java
@@ -8,13 +8,14 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.server;
+package org.eclipse.emf.cdo.spi.server;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.IStoreChunkReader;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.ArrayList;
import java.util.List;
@@ -27,14 +28,14 @@ public abstract class StoreChunkReader implements IStoreChunkReader
private CDORevision revision;
- private CDOFeature feature;
+ private EStructuralFeature feature;
private List<Chunk> chunks = new ArrayList<Chunk>(0);
/**
* @since 2.0
*/
- public StoreChunkReader(IStoreAccessor accessor, CDORevision revision, CDOFeature feature)
+ public StoreChunkReader(IStoreAccessor accessor, CDORevision revision, EStructuralFeature feature)
{
this.accessor = accessor;
this.revision = revision;
@@ -54,7 +55,7 @@ public abstract class StoreChunkReader implements IStoreChunkReader
return revision;
}
- public CDOFeature getFeature()
+ public EStructuralFeature getFeature()
{
return feature;
}
diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java
index d257ca71d0..55940a3a90 100644
--- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java
@@ -38,7 +38,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest
{
try
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE);
session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE);
@@ -58,7 +58,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest
{
try
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE);
session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE);
@@ -79,7 +79,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest
{
try
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE);
session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE);
@@ -99,7 +99,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest
{
try
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE);
session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE);
diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java
index 566fe2514f..173482cc1b 100644
--- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java
@@ -38,7 +38,7 @@ public class HbCDOPackageRefTest extends AbstractCDOTest
{
try
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE);
session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE);
diff --git a/plugins/org.eclipse.emf.cdo.tests/.classpath b/plugins/org.eclipse.emf.cdo.tests/.classpath
index 6e84b7ccb5..e42063317f 100644
--- a/plugins/org.eclipse.emf.cdo.tests/.classpath
+++ b/plugins/org.eclipse.emf.cdo.tests/.classpath
@@ -2,7 +2,7 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry excluding="org/eclipse/emf/cdo/tests/store/logic/" kind="src" path="src"/>
<classpathentry kind="src" path="model"/>
<classpathentry kind="src" path="net4j"/>
<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB Hsqldb - nonaudit).launch b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB Hsqldb - nonaudit).launch
new file mode 100644
index 0000000000..13fe4c7eb0
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB Hsqldb - nonaudit).launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbNonAudit.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<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="org.eclipse.emf.cdo.tests.AllTestsDBHsqldbNonAudit"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB HsqldbPrepStmt - nonaudit).launch b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB HsqldbPrepStmt - nonaudit).launch
new file mode 100644
index 0000000000..0c6721fcf4
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (DB HsqldbPrepStmt - nonaudit).launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbPrepStmtNonAudit.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<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="org.eclipse.emf.cdo.tests.AllTestsDBHsqldbPrepStmtNonAudit"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch
index 60e98179d3..c2cb938d34 100644
--- a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch
@@ -16,4 +16,5 @@
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTests"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="yk-options" value="&#13;&#10;additional-options=&#13;&#10;snapshots-dir=&#13;&#10;"/>
</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
index c86817c454..bf4b9a5e6e 100644
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
@@ -44,16 +44,15 @@ Export-Package: base;version="2.0.0",
org.eclipse.emf.cdo.tests.config;version="2.0.0",
org.eclipse.emf.cdo.tests.config.impl;version="2.0.0",
org.eclipse.emf.cdo.tests.defs;version="2.0.0",
- org.eclipse.emf.cdo.tests.store.logic;version="2.0.0",
org.eclipse.net4j.tests;version="2.0.0",
reference;version="2.0.0",
reference.impl;version="2.0.0",
reference.util;version="2.0.0"
-Import-Package: org.apache.commons.collections;version="[3.2.0,4.0.0)",
+Import-Package: com.mysql.jdbc.jdbc2.optional;version="[5.1.0,6.0.0)",
+ org.apache.commons.collections;version="[3.2.0,4.0.0)",
org.apache.commons.logging;version="[1.1.0,2.0.0)",
org.apache.derby.jdbc,
org.dom4j;version="[1.6.0,2.0.0)",
org.hsqldb;version="[1.8.0,2.0.0)",
- org.hsqldb.jdbc;version="[1.8.0,2.0.0)",
- com.mysql.jdbc.jdbc2.optional;version="5.1.6"
+ org.hsqldb.jdbc;version="[1.8.0,2.0.0)"
Eclipse-BuddyPolicy: dependent
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/TestClient.java b/plugins/org.eclipse.emf.cdo.tests/src/TestClient.java
new file mode 100644
index 0000000000..fd72bf8a73
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/TestClient.java
@@ -0,0 +1,81 @@
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
+import org.eclipse.emf.cdo.net4j.CDOSession;
+import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.log.PrintLogHandler;
+import org.eclipse.net4j.util.om.trace.PrintTraceHandler;
+
+import junit.framework.Assert;
+
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * @author Eike Stepper
+ */
+public class TestClient extends Assert implements Runnable
+{
+ public static void main(String[] args) throws Exception
+ {
+ EMFUtil.registerPackage(Model1Package.eINSTANCE);
+ PrintTraceHandler.CONSOLE.setShortContext(true);
+ OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);
+ OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
+ OMPlatform.INSTANCE.setDebugging(true);
+ new TestClient().run();
+ // new TestServer()
+ // {
+ // @Override
+ // protected void runInside() throws Exception
+ // {
+ // new TestClient().run();
+ // }
+ // }.run();
+ }
+
+ public void run()
+ {
+ IManagedContainer container = ContainerUtil.createContainer();
+ Net4jUtil.prepareContainer(container);
+ TCPUtil.prepareContainer(container);
+ CDOUtil.prepareContainer(container);
+ LifecycleUtil.activate(container);
+
+ IConnector connector = (IConnector)container.getElement("org.eclipse.net4j.connectors", "tcp", "localhost");
+
+ CDOSessionConfiguration sessionConfiguration = CDONet4jUtil.createSessionConfiguration();
+ sessionConfiguration.setRepositoryName(TestServer.REPOSITORY_NAME);
+ sessionConfiguration.setConnector(connector);
+ CDOSession session = sessionConfiguration.openSession();
+
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource resource = transaction.getOrCreateResource("res");
+ resource.getContents().add(Model1Factory.eINSTANCE.createCompany());
+ transaction.commit();
+
+ LifecycleUtil.deactivate(session);
+ LifecycleUtil.deactivate(connector);
+ LifecycleUtil.deactivate(container);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/TestClient2.java b/plugins/org.eclipse.emf.cdo.tests/src/TestClient2.java
new file mode 100644
index 0000000000..1c5f410b09
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/TestClient2.java
@@ -0,0 +1,73 @@
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
+import org.eclipse.emf.cdo.net4j.CDOSession;
+import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.log.PrintLogHandler;
+import org.eclipse.net4j.util.om.trace.PrintTraceHandler;
+
+import org.eclipse.emf.ecore.EObject;
+
+import junit.framework.Assert;
+
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * @author Eike Stepper
+ */
+public class TestClient2 extends Assert
+{
+ public static void main(String[] args) throws Exception
+ {
+ EMFUtil.registerPackage(Model1Package.eINSTANCE);
+ PrintTraceHandler.CONSOLE.setShortContext(true);
+ OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);
+ OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
+ OMPlatform.INSTANCE.setDebugging(true);
+
+ IManagedContainer container = ContainerUtil.createContainer();
+ Net4jUtil.prepareContainer(container);
+ TCPUtil.prepareContainer(container);
+ CDOUtil.prepareContainer(container);
+ LifecycleUtil.activate(container);
+
+ IConnector connector = (IConnector)container.getElement("org.eclipse.net4j.connectors", "tcp", "localhost");
+
+ CDOSessionConfiguration sessionConfiguration = CDONet4jUtil.createSessionConfiguration();
+ sessionConfiguration.setRepositoryName(TestServer.REPOSITORY_NAME);
+ sessionConfiguration.setConnector(connector);
+ CDOSession session = sessionConfiguration.openSession();
+
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource resource = transaction.getResource("res");
+ for (EObject object : resource.getContents())
+ {
+ System.out.println(object);
+ }
+
+ OMPlatform.INSTANCE.setDebugging(false);
+ LifecycleUtil.deactivate(session);
+ LifecycleUtil.deactivate(connector);
+ LifecycleUtil.deactivate(container);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/TestServer.java b/plugins/org.eclipse.emf.cdo.tests/src/TestServer.java
new file mode 100644
index 0000000000..093059b880
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/TestServer.java
@@ -0,0 +1,95 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.server.CDOServerUtil;
+import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.server.mem.MEMStoreUtil;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.acceptor.IAcceptor;
+import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.container.ContainerUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.log.PrintLogHandler;
+import org.eclipse.net4j.util.om.trace.PrintTraceHandler;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class TestServer implements Runnable
+{
+ public static final String REPOSITORY_NAME = "repo1";
+
+ public static final boolean REGISTER_MODEL_ON_SERVER = false;
+
+ public static void main(String[] args)
+ {
+ EMFUtil.registerPackage(Model1Package.eINSTANCE);
+ PrintTraceHandler.CONSOLE.setShortContext(true);
+ OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);
+ OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
+ OMPlatform.INSTANCE.setDebugging(true);
+ new TestServer().run();
+ }
+
+ public void run()
+ {
+ IManagedContainer container = ContainerUtil.createContainer();
+ Net4jUtil.prepareContainer(container);
+ TCPUtil.prepareContainer(container);
+ CDOServerUtil.prepareContainer(container);
+ LifecycleUtil.activate(container);
+
+ IStore store = MEMStoreUtil.createMEMStore();
+ Map<String, String> props = new HashMap<String, String>();
+ IRepository repository = CDOServerUtil.createRepository(REPOSITORY_NAME, store, props);
+ CDOServerUtil.addRepository(container, repository);
+ EMFUtil.registerPackage(EresourcePackage.eINSTANCE, repository.getPackageRegistry()); // XXX FAKE!
+ if (REGISTER_MODEL_ON_SERVER)
+ {
+ EMFUtil.registerPackage(Model1Package.eINSTANCE, repository.getPackageRegistry());
+ }
+
+ IAcceptor acceptor = (IAcceptor)container.getElement("org.eclipse.net4j.acceptors", "tcp", null);
+
+ try
+ {
+ runInside();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+
+ LifecycleUtil.deactivate(acceptor);
+ LifecycleUtil.deactivate(repository);
+ LifecycleUtil.deactivate(container);
+ }
+
+ protected void runInside() throws Exception
+ {
+ System.out.println("Press any key to shutdown");
+ while (IOUtil.IN().read() == -1)
+ {
+ Thread.sleep(200);
+ }
+ }
+}
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 5a2de5541c..3570b1f9b3 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
@@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.CDOState;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
@@ -34,10 +35,16 @@ import java.util.concurrent.locks.Lock;
*/
public abstract class AbstractCDOTest extends ConfigTest
{
+ @SuppressWarnings("restriction")
@Override
protected void doSetUp() throws Exception
{
super.doSetUp();
+ org.eclipse.emf.internal.cdo.bundle.OM.PREF_COMMIT_MONITOR_PROGRESS_SECONDS.setValue(60);
+ org.eclipse.emf.internal.cdo.bundle.OM.PREF_COMMIT_MONITOR_TIMEOUT_SECONDS.setValue(60 * 60);
+ org.eclipse.internal.net4j.bundle.OM.DEBUG.setEnabled(false);
+ org.eclipse.net4j.internal.tcp.bundle.OM.DEBUG.setEnabled(false);
+ CDOPackageTypeRegistry.INSTANCE.reset();
startTransport();
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbNonAudit.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbNonAudit.java
new file mode 100644
index 0000000000..751b35c9e5
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbNonAudit.java
@@ -0,0 +1,53 @@
+/**
+ * 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:
+ * Stefan Winkler - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_252214_Test;
+import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
+import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
+
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Stefan Winkler
+ */
+public class AllTestsDBHsqldbNonAudit extends AllTestsAllConfigs
+{
+
+ public static Test suite()
+ {
+ return new AllTestsDBHsqldbNonAudit().getTestSuite("CDO Tests (DB Hsql Horizontal Non-audit)");
+ }
+
+ @Override
+ protected void initConfigSuites(TestSuite parent)
+ {
+ addScenario(parent, COMBINED, DB_HSQL_HORIZONTAL_NONAUDIT, TCP, NATIVE);
+ }
+
+ @Override
+ protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses)
+ {
+ super.initTestClasses(testClasses);
+
+ // non-audit mode - remove audit tests
+ testClasses.remove(AuditTest.class);
+ testClasses.remove(AuditTest.LocalAuditTest.class);
+ testClasses.remove(Bugzilla_252214_Test.class);
+
+ // this takes ages - so for now, we disable it
+ testClasses.remove(Bugzilla_261218_Test.class);
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbPrepStmtNonAudit.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbPrepStmtNonAudit.java
new file mode 100644
index 0000000000..412d9c9a5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsDBHsqldbPrepStmtNonAudit.java
@@ -0,0 +1,51 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_252214_Test;
+import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
+import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
+
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Stefan Winkler
+ */
+public class AllTestsDBHsqldbPrepStmtNonAudit extends AllTestsAllConfigs
+{
+ public static Test suite()
+ {
+ return new AllTestsDBHsqldbPrepStmtNonAudit().getTestSuite("CDO Tests (DB Hsql Horizontal PrepStmt Non-Audit)");
+ }
+
+ @Override
+ protected void initConfigSuites(TestSuite parent)
+ {
+ addScenario(parent, COMBINED, DB_HSQL_HORIZONTAL_PREPSTMT_NONAUDIT, TCP, NATIVE);
+ }
+
+ @Override
+ protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses)
+ {
+ super.initTestClasses(testClasses);
+
+ // non-audit mode - remove audit tests
+ testClasses.remove(AuditTest.class);
+ testClasses.remove(AuditTest.LocalAuditTest.class);
+ testClasses.remove(Bugzilla_252214_Test.class);
+
+ // this takes ages - so for now, we disable it
+ testClasses.remove(Bugzilla_261218_Test.class);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
index bd9f4a3238..bf96b8ea32 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
@@ -89,9 +89,10 @@ public class AttributeTest extends AbstractCDOTest
public void testByteArray() throws Exception
{
- EPackage packageBytes = createDynamicEPackageWithByte();
byte saveByteArray[] = new byte[] { 0, 1, 2, 3, 0, 1, 0, 100 };
+
{
+ EPackage packageBytes = createDynamicEPackageWithByte();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(packageBytes);
CDOTransaction transaction = session.openTransaction();
@@ -142,8 +143,8 @@ public class AttributeTest extends AbstractCDOTest
// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
- schoolPackage.setName("CDOPackageTest");
- schoolPackage.setNsPrefix("CDOPackageTest");
+ schoolPackage.setName("EPackageTest");
+ schoolPackage.setNsPrefix("EPackageTest");
schoolPackage.setNsURI("http:///www.cdo.org/testcase");
schoolPackage.getEClassifiers().add(schoolBookEClass);
return schoolPackage;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java
index 72ced852d0..5f49851ea2 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AuditTest.java
@@ -68,21 +68,21 @@ public class AuditTest extends AbstractCDOTest
resource.getContents().add(company);
transaction.commit();
long commitTime1 = transaction.getLastCommitTime();
- assertTrue(session.repository().getCreationTime() < commitTime1);
+ assertEquals(true, session.repository().getCreationTime() < commitTime1);
assertEquals("ESC", company.getName());
company.setName("Sympedia");
transaction.commit();
long commitTime2 = transaction.getLastCommitTime();
- assertTrue(commitTime1 < commitTime2);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime1 < commitTime2);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Sympedia", company.getName());
company.setName("Eclipse");
transaction.commit();
long commitTime3 = transaction.getLastCommitTime();
- assertTrue(commitTime2 < commitTime3);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime2 < commitTime3);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Eclipse", company.getName());
closeSession1();
@@ -111,21 +111,21 @@ public class AuditTest extends AbstractCDOTest
resource.getContents().add(company);
transaction.commit();
long commitTime1 = transaction.getLastCommitTime();
- assertTrue(session.repository().getCreationTime() < commitTime1);
+ assertEquals(true, session.repository().getCreationTime() < commitTime1);
assertEquals("ESC", company.getName());
company.setName("Sympedia");
transaction.commit();
long commitTime2 = transaction.getLastCommitTime();
- assertTrue(commitTime1 < commitTime2);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime1 < commitTime2);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Sympedia", company.getName());
company.setName("Eclipse");
transaction.commit();
long commitTime3 = transaction.getLastCommitTime();
- assertTrue(commitTime2 < commitTime3);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime2 < commitTime3);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Eclipse", company.getName());
closeSession1();
@@ -166,21 +166,21 @@ public class AuditTest extends AbstractCDOTest
resource.getContents().add(company);
transaction.commit();
long commitTime1 = transaction.getLastCommitTime();
- assertTrue(session.repository().getCreationTime() < commitTime1);
+ assertEquals(true, session.repository().getCreationTime() < commitTime1);
assertEquals("ESC", company.getName());
company.setName("Sympedia");
transaction.commit();
long commitTime2 = transaction.getLastCommitTime();
- assertTrue(commitTime1 < commitTime2);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime1 < commitTime2);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Sympedia", company.getName());
company.setName("Eclipse");
transaction.commit();
long commitTime3 = transaction.getLastCommitTime();
- assertTrue(commitTime2 < commitTime3);
- assertTrue(session.repository().getCreationTime() < commitTime2);
+ assertEquals(true, commitTime2 < commitTime3);
+ assertEquals(true, session.repository().getCreationTime() < commitTime2);
assertEquals("Eclipse", company.getName());
closeSession1();
@@ -472,7 +472,7 @@ public class AuditTest extends AbstractCDOTest
{
CDOSession session = openSession();
long repositoryTime = session.repository().getCurrentTime();
- assertTrue(Math.abs(System.currentTimeMillis() - repositoryTime) < 500);
+ assertEquals(true, Math.abs(System.currentTimeMillis() - repositoryTime) < 500);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingTest.java
index ebfa137ebe..79be96a5a2 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingTest.java
@@ -31,9 +31,7 @@ public class ChunkingTest extends AbstractCDOTest
{
{
CDOSession session = openModel1Session();
-
CDOTransaction transaction = session.openTransaction();
-
CDOResource resource = transaction.createResource("/test1");
Customer customer = getModel1Factory().createCustomer();
@@ -76,9 +74,7 @@ public class ChunkingTest extends AbstractCDOTest
{
{
CDOSession session = openModel1Session();
-
CDOTransaction transaction = session.openTransaction();
-
CDOResource resource = transaction.createResource("/test1");
Customer customer = getModel1Factory().createCustomer();
@@ -122,11 +118,8 @@ public class ChunkingTest extends AbstractCDOTest
public void testChunkWithTemporaryObject() throws Exception
{
{
-
CDOSession session = openModel1Session();
-
CDOTransaction transaction = session.openTransaction();
-
CDOResource resource = transaction.createResource("/test1");
Customer customer = getModel1Factory().createCustomer();
@@ -135,15 +128,14 @@ public class ChunkingTest extends AbstractCDOTest
transaction.commit();
}
+
clearCache(getRepository().getRevisionManager());
// ************************************************************* //
CDOSession session = openModel1Session();
-
CDOTransaction transaction = session.openTransaction();
transaction.options().setRevisionPrefetchingPolicy(CDOUtil.createRevisionPrefetchingPolicy(10));
-
CDOResource resource = transaction.getResource("/test1");
Customer customer = getModel1Factory().createCustomer();
@@ -217,6 +209,7 @@ public class ChunkingTest extends AbstractCDOTest
transaction.commit();
}
+
clearCache(getRepository().getRevisionManager());
// ************************************************************* //
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 5095df1a7f..fe8849d006 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
@@ -43,14 +43,12 @@ import org.eclipse.emf.cdo.tests.model4.RefSingleNonContainedNPL;
import org.eclipse.emf.cdo.tests.model4.SingleContainedElement;
import org.eclipse.emf.cdo.tests.model4.SingleNonContainedElement;
import org.eclipse.emf.cdo.tests.model4.model4Factory;
-import org.eclipse.emf.cdo.tests.model4.model4Package;
import org.eclipse.emf.cdo.tests.model4interfaces.IContainedElementNoParentLink;
import org.eclipse.emf.cdo.tests.model4interfaces.IMultiRefContainedElement;
import org.eclipse.emf.cdo.tests.model4interfaces.IMultiRefNonContainedElement;
import org.eclipse.emf.cdo.tests.model4interfaces.INamedElement;
import org.eclipse.emf.cdo.tests.model4interfaces.ISingleRefContainedElement;
import org.eclipse.emf.cdo.tests.model4interfaces.ISingleRefNonContainedElement;
-import org.eclipse.emf.cdo.tests.model4interfaces.model4interfacesPackage;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
@@ -84,8 +82,8 @@ public class ComplexTest extends AbstractCDOTest
factory = getModel4Factory();
session = openSession();
- session.getPackageRegistry().putEPackage(model4interfacesPackage.eINSTANCE);
- session.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
+ session.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ session.getPackageRegistry().putEPackage(getModel4Package());
transaction = session.openTransaction();
@@ -119,8 +117,8 @@ public class ComplexTest extends AbstractCDOTest
clearCache(getRepository().getRevisionManager());
session = openSession();
- session.getPackageRegistry().putEPackage(model4interfacesPackage.eINSTANCE);
- session.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
+ session.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ session.getPackageRegistry().putEPackage(getModel4Package());
transaction = session.openTransaction();
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 8cbdd57f49..81cf34fa93 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
@@ -441,8 +441,6 @@ public class ContainmentTest extends AbstractCDOTest
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction(resourceSet);
- EPackage packageObject = createDynamicEPackage();
- session.getPackageRegistry().putEPackage(packageObject);
Resource resource1 = transaction.getResource("testA");
Resource resource2 = transaction.getResource("testB");
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
index 378a3b3b97..1d618455d2 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
@@ -19,10 +19,12 @@ import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import java.io.IOException;
@@ -70,7 +72,7 @@ public class DymamicUmlTest extends AbstractCDOTest
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
- CDOObject company = transaction.newInstance(companyClass);
+ EObject company = EcoreUtil.create(companyClass);
company.eSet(nameAttribute, "Eike");
res.getContents().add(company);
transaction.commit();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
index b388b9cbb4..5b918bc5fd 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
@@ -10,7 +10,7 @@
*/
package org.eclipse.emf.cdo.tests;
-import org.eclipse.emf.cdo.util.EMFUtil;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.net4j.tests.AbstractOMTest;
import org.eclipse.net4j.util.io.IOUtil;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ExternalReferenceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ExternalReferenceTest.java
index 3dcabe5dcb..3a471bda67 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ExternalReferenceTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ExternalReferenceTest.java
@@ -18,7 +18,6 @@ import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
import org.eclipse.emf.cdo.tests.model1.Supplier;
import org.eclipse.emf.cdo.tests.model2.Model2Package;
import org.eclipse.emf.cdo.tests.model4.GenRefSingleNonContained;
-import org.eclipse.emf.cdo.tests.model4.model4Package;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.transaction.CDOXATransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
@@ -38,6 +37,7 @@ import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import java.io.ByteArrayInputStream;
@@ -53,27 +53,28 @@ public class ExternalReferenceTest extends AbstractCDOTest
public void testExternalWithDynamicEObject() throws Exception
{
{
- CDOSession sessionA = openSession();
-
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put("test", new XMIResourceFactoryImpl());
- EPackage schoolPackage = createDynamicEPackage();
- EClass classifier = (EClass)schoolPackage.getEClassifier("SchoolBook");
-
- EObject schoolbook = schoolPackage.getEFactoryInstance().create(classifier);
- sessionA.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
+ CDOSession sessionA = openSession();
+ sessionA.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionA.getPackageRegistry().putEPackage(getModel4Package());
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
CDOResource resA = transactionA1.createResource("/resA");
Resource resD = resourceSet.createResource(URI.createURI("test://1"));
+ EPackage schoolPackage = createDynamicEPackage();
+ resourceSet.getPackageRegistry().put(schoolPackage.getNsURI(), schoolPackage);
+
+ EClass eClass = (EClass)schoolPackage.getEClassifier("SchoolBook");
+ EObject schoolbook = EcoreUtil.create(eClass);
+
GenRefSingleNonContained objectFromResA = getModel4Factory().createGenRefSingleNonContained();
objectFromResA.setElement(schoolbook);
resD.getContents().add(schoolbook);
resA.getContents().add(objectFromResA);
-
transactionA1.commit();
}
}
@@ -81,23 +82,24 @@ public class ExternalReferenceTest extends AbstractCDOTest
public void testExternalWithEClass() throws Exception
{
{
- CDOSession sessionA = openSession();
-
ResourceSet resourceSet = new ResourceSetImpl();
- sessionA.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
-
+ CDOSession sessionA = openSession();
+ sessionA.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionA.getPackageRegistry().putEPackage(getModel4Package());
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
+
CDOResource resA = transactionA1.createResource("/resA");
GenRefSingleNonContained objectFromResA = getModel4Factory().createGenRefSingleNonContained();
objectFromResA.setElement(getModel1Package().getAddress());
resA.getContents().add(objectFromResA);
transactionA1.commit();
}
+
clearCache(getRepository().getRevisionManager());
+
{
CDOSession sessionA = openSession();
-
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getPackageRegistry().put(getModel1Package().getNsURI(), getModel1Package());
@@ -117,7 +119,8 @@ public class ExternalReferenceTest extends AbstractCDOTest
ResourceSet resourceSet = new ResourceSetImpl();
- sessionA.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
+ sessionA.getPackageRegistry().putEPackage(getModel4Package());
+ sessionA.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
CDOResource resA = transactionA1.createResource("/resA");
@@ -252,13 +255,11 @@ public class ExternalReferenceTest extends AbstractCDOTest
{
CDOSession sessionA = openSession();
+ sessionA.getPackageRegistry().putEPackage(getModel1Package());
+
CDOSession sessionB = openSession(REPOSITORY2_NAME);
ResourceSet resourceSet = new ResourceSetImpl();
-
- sessionA.getPackageRegistry().putEPackage(getModel1Package());
- sessionB.getPackageRegistry().putEPackage(getModel1Package());
-
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
CDOTransaction transactionB1 = sessionB.openTransaction(resourceSet);
@@ -277,7 +278,9 @@ public class ExternalReferenceTest extends AbstractCDOTest
transactionA1.commit();
}
+
clearCache(getRepository().getRevisionManager());
+
{
ResourceSet resourceSet = new ResourceSetImpl();
CDOSession sessionA = openSession();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java
index 5c6a60c2cd..fe366870e9 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java
@@ -25,7 +25,6 @@ import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.internal.cdo.analyzer.CDOFeatureAnalyzerModelBased;
import org.eclipse.emf.internal.cdo.analyzer.CDOFetchRuleManagerThreadLocal;
import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
@@ -117,13 +116,13 @@ public class FetchRuleAnalyzerTest extends AbstractCDOTest
assertEquals(2, fetchRules.size());
CDOFetchRule fetchRule1 = fetchRules.get(0);
- EClass eClass = ModelUtil.getEClass(fetchRule1.getCDOClass(), session.getPackageRegistry());
+ EClass eClass = fetchRule1.getEClass();
assertEquals(getModel1Package().getCompany(), eClass);
assertEquals(1, fetchRule1.getFeatures().size());
assertEquals(getModel1Package().getCompany_PurchaseOrders().getName(), fetchRule1.getFeatures().get(0).getName());
CDOFetchRule fetchRule2 = fetchRules.get(1);
- EClass ePurchaseOrder = ModelUtil.getEClass(fetchRule2.getCDOClass(), session.getPackageRegistry());
+ EClass ePurchaseOrder = fetchRule2.getEClass();
assertEquals(getModel1Package().getPurchaseOrder(), ePurchaseOrder);
assertEquals(1, fetchRule2.getFeatures().size());
assertEquals(getModel1Package().getPurchaseOrder_Supplier().getName(), fetchRule2.getFeatures().get(0).getName());
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
index ecfaa6a4db..f3e481d107 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
@@ -10,11 +10,11 @@
*/
package org.eclipse.emf.cdo.tests;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.cdo.util.EMFUtil;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ImportXML.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ImportXML.java
index b4b1ff84dc..71e1cc2cfe 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ImportXML.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ImportXML.java
@@ -15,8 +15,8 @@ import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
import org.eclipse.emf.cdo.server.CDOServerUtil;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.StoreUtil;
import org.eclipse.emf.cdo.server.IRepository.Props;
+import org.eclipse.emf.cdo.server.mem.MEMStoreUtil;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.model1.Category;
import org.eclipse.emf.cdo.tests.model1.Model1Factory;
@@ -88,7 +88,7 @@ public class ImportXML
private static IStore createStore()
{
// You might want to create an IDBStore here instead if memory is an issue!
- return StoreUtil.createMEMStore();
+ return MEMStoreUtil.createMEMStore();
}
private static EObject getInputModel()
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/IndexReconstructionTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/IndexReconstructionTest.java
index f30d0d69ed..b7a03a0ede 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/IndexReconstructionTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/IndexReconstructionTest.java
@@ -11,7 +11,6 @@
package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
@@ -434,7 +433,7 @@ public class IndexReconstructionTest extends AbstractCDOTest
{
System.out.print(revisionDelta.getID());
System.out.print(": ");
- System.out.print(featureDelta.getFeature().getContainingClass().getName());
+ System.out.print(featureDelta.getFeature().getEContainingClass().getName());
System.out.print(".");
System.out.print(featureDelta.getFeature().getName());
System.out.print("=");
@@ -452,8 +451,7 @@ public class IndexReconstructionTest extends AbstractCDOTest
private void expectIndex(CDOID id, EStructuralFeature eFeature, int index)
{
- CDOFeature feature = transaction.getSession().getPackageManager().convert(eFeature);
- ReconstructedIndex expectedIndex = new ReconstructedIndex(id, feature, index);
+ ReconstructedIndex expectedIndex = new ReconstructedIndex(id, eFeature, index);
if (!expectedIndices.add(expectedIndex))
{
fail("Duplicate expected ids: " + expectedIndex);
@@ -504,11 +502,11 @@ public class IndexReconstructionTest extends AbstractCDOTest
{
private CDOID id;
- private CDOFeature feature;
+ private EStructuralFeature feature;
private int index;
- public ReconstructedIndex(CDOID id, CDOFeature feature, int index)
+ public ReconstructedIndex(CDOID id, EStructuralFeature feature, int index)
{
this.feature = feature;
this.id = id;
@@ -536,7 +534,7 @@ public class IndexReconstructionTest extends AbstractCDOTest
@Override
public String toString()
{
- return MessageFormat.format("{0}: {1}.{2}={3}", id, feature.getContainingClass().getName(), feature.getName(),
+ return MessageFormat.format("{0}: {1}.{2}={3}", id, feature.getEContainingClass().getName(), feature.getName(),
index);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
index d419b1814f..869bf8717a 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
@@ -11,26 +11,23 @@
package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.bundle.OM;
import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
import org.eclipse.emf.cdo.tests.mango.Value;
import org.eclipse.emf.cdo.tests.model1.Company;
import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
-import org.eclipse.emf.cdo.tests.model2.Model2Package;
import org.eclipse.emf.cdo.tests.model2.SpecialPurchaseOrder;
import org.eclipse.emf.cdo.tests.model3.Class1;
import org.eclipse.emf.cdo.tests.model3.Model3Package;
import org.eclipse.emf.cdo.tests.model3.subpackage.Class2;
import org.eclipse.emf.cdo.tests.model3.subpackage.SubpackageFactory;
-import org.eclipse.emf.cdo.tests.model3.subpackage.SubpackagePackage;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.EMFUtil;
+
+import org.eclipse.emf.internal.cdo.CDOFactoryImpl;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
@@ -40,6 +37,7 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
@@ -78,7 +76,7 @@ public class PackageRegistryTest extends AbstractCDOTest
{
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(getModel1Package());
- session.getPackageRegistry().putEPackage(Model2Package.eINSTANCE);
+ session.getPackageRegistry().putEPackage(getModel2Package());
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
@@ -125,16 +123,10 @@ public class PackageRegistryTest extends AbstractCDOTest
public void testCommitNestedPackages() throws Exception
{
CDOSession session = openSession();
- assertEquals(0, session.getPackageRegistry().size());
+ assertEquals(2, session.getPackageRegistry().size());
- try
- {
- session.getPackageRegistry().putEPackage(SubpackagePackage.eINSTANCE);
- fail("IllegalArgumentException expected");
- }
- catch (IllegalArgumentException success)
- {
- }
+ session.getPackageRegistry().putEPackage(getModel3SubpackagePackage());
+ assertEquals(4, session.getPackageRegistry().size());
session.close();
}
@@ -142,11 +134,11 @@ public class PackageRegistryTest extends AbstractCDOTest
public void testCommitTopLevelPackages() throws Exception
{
CDOSession session = openSession();
- assertEquals(0, session.getPackageRegistry().size());
-
- session.getPackageRegistry().putEPackage(Model3Package.eINSTANCE);
assertEquals(2, session.getPackageRegistry().size());
+ session.getPackageRegistry().putEPackage(getModel3Package());
+ assertEquals(4, session.getPackageRegistry().size());
+
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
@@ -154,13 +146,8 @@ public class PackageRegistryTest extends AbstractCDOTest
res.getContents().add(class1);
transaction.commit();
- CDOPackage model3Package = session.getPackageManager().lookupPackage(Model3Package.eINSTANCE.getNsURI());
- assertEquals(11, model3Package.getMetaIDRange().size());
- assertNotNull(model3Package.getEcore());
-
- CDOPackage subPackage = session.getPackageManager().lookupPackage(SubpackagePackage.eINSTANCE.getNsURI());
- assertNull(subPackage.getMetaIDRange());
- assertNull(subPackage.getEcore());
+ EPackage model3Package = session.getPackageRegistry().getEPackage(getModel3Package().getNsURI());
+ assertNotNull(model3Package);
session.close();
}
@@ -168,7 +155,7 @@ public class PackageRegistryTest extends AbstractCDOTest
{
{
CDOSession session = openSession();
- session.getPackageRegistry().putEPackage(Model3Package.eINSTANCE);
+ session.getPackageRegistry().putEPackage(getModel3Package());
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
@@ -180,13 +167,11 @@ public class PackageRegistryTest extends AbstractCDOTest
}
CDOSession session = openSession();
- CDOPackage model3Package = session.getPackageManager().lookupPackage(Model3Package.eINSTANCE.getNsURI());
- assertEquals(11, model3Package.getMetaIDRange().size());
- assertNotNull(model3Package.getEcore());
+ EPackage model3Package = session.getPackageRegistry().getEPackage(getModel3Package().getNsURI());
+ assertNotNull(model3Package);
- CDOPackage subPackage = session.getPackageManager().lookupPackage(SubpackagePackage.eINSTANCE.getNsURI());
- assertNull(subPackage.getMetaIDRange());
- assertNull(subPackage.getEcore());
+ EPackage subPackage = session.getPackageRegistry().getEPackage(getModel3SubpackagePackage().getNsURI());
+ assertNotNull(subPackage);
session.close();
}
@@ -232,38 +217,29 @@ public class PackageRegistryTest extends AbstractCDOTest
public void testEagerPackageRegistry() throws Exception
{
- CDOPackageTypeRegistry.INSTANCE.register(getModel1Package());
- try
{
- {
- // Create resource in session 1
- CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
- configuration.setConnector(getConnector());
- configuration.setRepositoryName(IRepositoryConfig.REPOSITORY_NAME);
- configuration.setEagerPackageRegistry();
-
- CDOSession session = configuration.openSession();
- CDOTransaction transaction = session.openTransaction();
- CDOResource res = transaction.createResource("/res");
-
- Company company = getModel1Factory().createCompany();
- company.setName("Eike");
- res.getContents().add(company);
- transaction.commit();
- }
-
- // Load resource in session 2
- CDOSession session = openSession();
+ // Create resource in session 1
+ CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
+ configuration.setConnector(getConnector());
+ configuration.setRepositoryName(IRepositoryConfig.REPOSITORY_NAME);
+
+ CDOSession session = configuration.openSession();
CDOTransaction transaction = session.openTransaction();
- CDOResource res = transaction.getResource("/res");
+ CDOResource res = transaction.createResource("/res");
- Company company = (Company)res.getContents().get(0);
- assertEquals("Eike", company.getName());
- }
- finally
- {
- CDOPackageTypeRegistry.INSTANCE.clear();
+ Company company = getModel1Factory().createCompany();
+ company.setName("Eike");
+ res.getContents().add(company);
+ transaction.commit();
}
+
+ // Load resource in session 2
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ Company company = (Company)res.getContents().get(0);
+ assertEquals("Eike", company.getName());
}
public void testLazyPackageRegistry() throws Exception
@@ -273,7 +249,6 @@ public class PackageRegistryTest extends AbstractCDOTest
CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
configuration.setConnector(getConnector());
configuration.setRepositoryName(IRepositoryConfig.REPOSITORY_NAME);
- configuration.setLazyPackageRegistry();
CDOSession session = configuration.openSession();
CDOTransaction transaction = session.openTransaction();
@@ -298,7 +273,7 @@ public class PackageRegistryTest extends AbstractCDOTest
* Bug 249383: Dynamic models in the global EPackage.Registry are not committed
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=249383
*/
- public void testGlobalDynamicPackageEager() throws Exception
+ public void _testGlobalDynamicPackageEager() throws Exception
{
EPackage p = EcoreFactory.eINSTANCE.createEPackage();
p.setName("dynamic");
@@ -310,9 +285,8 @@ public class PackageRegistryTest extends AbstractCDOTest
p.getEClassifiers().add(c);
EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
- CDOPackageTypeRegistry.INSTANCE.registerNative(p.getNsURI());
- CDOSession session = openEagerSession();
+ CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
@@ -339,10 +313,10 @@ public class PackageRegistryTest extends AbstractCDOTest
c.setName("DClass");
p.getEClassifiers().add(c);
- EMFUtil.prepareDynamicEPackage(p);
+ CDOFactoryImpl.prepareDynamicEPackage(p);
EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
@@ -356,7 +330,7 @@ public class PackageRegistryTest extends AbstractCDOTest
public void testDynamicPackageFactory() throws Exception
{
- // -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
+ // -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.CDOPackageRegistryImpl
{
EPackage model1 = loadModel("model1.ecore");
@@ -406,7 +380,7 @@ public class PackageRegistryTest extends AbstractCDOTest
CDOTransaction transaction = session.openTransaction();
CDOResource res = transaction.createResource("/res");
- CDOObject company = transaction.newInstance(companyClass);
+ CDOObject company = (CDOObject)EcoreUtil.create(companyClass);
company.eSet(nameAttribute, "Eike");
res.getContents().add(company);
transaction.commit();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RepositoryTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RepositoryTest.java
index a7266e05f7..ace3f5943a 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RepositoryTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RepositoryTest.java
@@ -10,9 +10,6 @@
*/
package org.eclipse.emf.cdo.tests;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.server.CDOServerUtil;
@@ -29,7 +26,10 @@ import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.transaction.TransactionException;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Eike Stepper
@@ -62,11 +62,11 @@ public class RepositoryTest extends AbstractCDOTest
getRepository().addHandler(new IRepository.WriteAccessHandler()
{
- CDOPackage model1Package = getRepository().getPackageManager().lookupPackage(getModel1Package().getNsURI());
+ EPackage model1Package = getRepository().getPackageRegistry().getEPackage(getModel1Package().getNsURI());
- CDOClass customerClass = model1Package.lookupClass(getModel1Package().getCustomer().getClassifierID());
+ EClass customerClass = (EClass)model1Package.getEClassifier("Customer");
- CDOFeature nameFeature = customerClass.lookupFeature("name");
+ EStructuralFeature nameFeature = customerClass.getEStructuralFeature("name");
public void handleTransactionBeforeCommitting(ITransaction transaction,
IStoreAccessor.CommitContext commitContext, OMMonitor monitor) throws RuntimeException
@@ -74,7 +74,7 @@ public class RepositoryTest extends AbstractCDOTest
CDORevision[] newObjects = commitContext.getNewObjects();
for (CDORevision revision : newObjects)
{
- if (revision.getCDOClass() == customerClass)
+ if (revision.getEClass() == customerClass)
{
String name = (String)revision.data().get(nameFeature, 0);
if ("Admin".equals(name))
@@ -125,16 +125,16 @@ public class RepositoryTest extends AbstractCDOTest
getRepository().addHandler(new CDOServerUtil.RepositoryReadAccessValidator()
{
- CDOPackage model1Package = getRepository().getPackageManager().lookupPackage(getModel1Package().getNsURI());
+ EPackage model1Package = getRepository().getPackageRegistry().getEPackage(getModel1Package().getNsURI());
- CDOClass customerClass = model1Package.lookupClass(getModel1Package().getCustomer().getClassifierID());
+ EClass customerClass = (EClass)model1Package.getEClassifier("Customer");
- CDOFeature nameFeature = customerClass.lookupFeature("name");
+ EStructuralFeature nameFeature = customerClass.getEStructuralFeature("name");
@Override
protected String validate(ISession session, CDORevision revision)
{
- if (revision.getCDOClass() == customerClass)
+ if (revision.getEClass() == customerClass)
{
String name = (String)revision.data().get(nameFeature, 0);
if ("Admin".equals(name))
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java
index 18bd9b1516..0230f49709 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java
@@ -13,7 +13,6 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOClearFeatureDelta;
@@ -31,6 +30,7 @@ import org.eclipse.emf.cdo.tests.model1.SalesOrder;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.InternalCDOTransaction;
import junit.framework.Assert;
@@ -125,7 +125,7 @@ public abstract class RevisionDeltaTest extends AbstractCDOTest
CDOTransaction transaction2 = session.openTransaction();
SalesOrder salesOrder2 = (SalesOrder)transaction2.getObject(CDOUtil.getCDOObject(salesOrder).cdoID(), true);
CDORevision salesRevision = CDOUtil.getCDOObject(salesOrder2).cdoRevision();
- CDOFeature customerFeature = session.getPackageManager().convert(getModel1Package().getSalesOrder_Customer());
+ EStructuralFeature customerFeature = getModel1Package().getSalesOrder_Customer();
Object value = salesRevision.data().get(customerFeature, 0);
Assert.assertEquals(true, value instanceof CDOID);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
index 2273b98d12..2306fa720e 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
@@ -13,8 +13,6 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -28,6 +26,9 @@ import org.eclipse.emf.cdo.internal.common.revision.cache.lru.RevisionHolder;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
@@ -333,7 +334,7 @@ public class RevisionHolderTest extends AbstractCDOTest
return (revised == UNSPECIFIED_DATE || revised >= timeStamp) && timeStamp >= created;
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
throw new UnsupportedOperationException();
}
@@ -378,7 +379,7 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public void add(CDOFeature feature, int index, Object value)
+ public void add(EStructuralFeature feature, int index, Object value)
{
throw new UnsupportedOperationException();
}
@@ -388,17 +389,17 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public void clear(CDOFeature feature)
+ public void clear(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public boolean contains(CDOFeature feature, Object value)
+ public boolean contains(EStructuralFeature feature, Object value)
{
throw new UnsupportedOperationException();
}
- public Object get(CDOFeature feature, int index)
+ public Object get(EStructuralFeature feature, int index)
{
throw new UnsupportedOperationException();
}
@@ -413,12 +414,12 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public CDOList getList(CDOFeature feature, int size)
+ public CDOList getList(EStructuralFeature feature, int size)
{
throw new UnsupportedOperationException();
}
- public CDOList getList(CDOFeature feature)
+ public CDOList getList(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
@@ -433,47 +434,47 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public Object getValue(CDOFeature feature)
+ public Object getValue(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public int hashCode(CDOFeature feature)
+ public int hashCode(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public int indexOf(CDOFeature feature, Object value)
+ public int indexOf(EStructuralFeature feature, Object value)
{
throw new UnsupportedOperationException();
}
- public boolean isEmpty(CDOFeature feature)
+ public boolean isEmpty(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public boolean isSet(CDOFeature feature)
+ public boolean isSet(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public int lastIndexOf(CDOFeature feature, Object value)
+ public int lastIndexOf(EStructuralFeature feature, Object value)
{
throw new UnsupportedOperationException();
}
- public Object move(CDOFeature feature, int targetIndex, int sourceIndex)
+ public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex)
{
throw new UnsupportedOperationException();
}
- public Object remove(CDOFeature feature, int index)
+ public Object remove(EStructuralFeature feature, int index)
{
throw new UnsupportedOperationException();
}
- public Object set(CDOFeature feature, int index, Object value)
+ public Object set(EStructuralFeature feature, int index, Object value)
{
throw new UnsupportedOperationException();
}
@@ -488,7 +489,7 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public void setListSize(CDOFeature feature, int size)
+ public void setListSize(EStructuralFeature feature, int size)
{
throw new UnsupportedOperationException();
}
@@ -508,42 +509,42 @@ public class RevisionHolderTest extends AbstractCDOTest
throw new UnsupportedOperationException();
}
- public Object setValue(CDOFeature feature, Object value)
+ public Object setValue(EStructuralFeature feature, Object value)
{
throw new UnsupportedOperationException();
}
- public int size(CDOFeature feature)
+ public int size(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public <T> T[] toArray(CDOFeature feature, T[] array)
+ public <T> T[] toArray(EStructuralFeature feature, T[] array)
{
throw new UnsupportedOperationException();
}
- public Object[] toArray(CDOFeature feature)
+ public Object[] toArray(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public void unset(CDOFeature feature)
+ public void unset(EStructuralFeature feature)
{
throw new UnsupportedOperationException();
}
- public void setList(CDOFeature feature, InternalCDOList list)
+ public void setList(EStructuralFeature feature, InternalCDOList list)
{
throw new UnsupportedOperationException();
}
- public Object basicGet(CDOFeature feature, int index)
+ public Object basicGet(EStructuralFeature feature, int index)
{
throw new UnsupportedOperationException();
}
- public Object basicSet(CDOFeature feature, int index, Object value)
+ public Object basicSet(EStructuralFeature feature, int index, Object value)
{
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java
index 692d7e572f..b3fa10fb82 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java
@@ -11,7 +11,6 @@
package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.model1.Category;
@@ -22,6 +21,8 @@ import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.net4j.util.transaction.TransactionException;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
*/
@@ -50,11 +51,9 @@ public class RollbackTest extends AbstractCDOTest
protected void flow1(CDOTransaction transaction1, CDOTransaction transaction2)
{
- CDOFeature category_Products1 = transaction1.getSession().getPackageManager().convert(
- getModel1Package().getCategory_Products());
+ EStructuralFeature category_Products1 = getModel1Package().getCategory_Products();
- CDOFeature category_Products2 = transaction2.getSession().getPackageManager().convert(
- getModel1Package().getCategory_Products());
+ EStructuralFeature category_Products2 = getModel1Package().getCategory_Products();
// Client1
CDOResource resource1 = transaction1.createResource("/test1");
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StoreRepositoryProvider.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StoreRepositoryProvider.java
index 25a5cc390c..d350d524c4 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StoreRepositoryProvider.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StoreRepositoryProvider.java
@@ -13,8 +13,8 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.server.CDOServerUtil;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.StoreUtil;
import org.eclipse.emf.cdo.server.IRepository.Props;
+import org.eclipse.emf.cdo.server.mem.MEMStoreUtil;
import java.util.HashMap;
import java.util.Map;
@@ -39,7 +39,7 @@ public class StoreRepositoryProvider
protected IStore createStore()
{
- return StoreUtil.createMEMStore();
+ return MEMStoreUtil.createMEMStore();
}
protected IRepository createRepository(String name, Map<String, String> testProperties)
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java
index 499ff89d9d..2655c380f2 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java
@@ -10,10 +10,9 @@
*/
package org.eclipse.emf.cdo.tests;
-import org.eclipse.emf.cdo.common.model.resource.CDOContentsFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.model1.Company;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
@@ -26,6 +25,7 @@ import org.eclipse.net4j.util.ref.ReferenceType;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
@@ -112,8 +112,7 @@ public class ViewTest extends AbstractCDOTest
}
CDORevisionData revision = resource.cdoRevision().data();
- CDOResourcePackage resourcePackage = session.getPackageManager().getCDOResourcePackage();
- CDOContentsFeature contentsFeature = resourcePackage.getCDOResourceClass().getCDOContentsFeature();
+ EStructuralFeature contentsFeature = EresourcePackage.eINSTANCE.getCDOResource_Contents();
assertEquals(true, revision.get(contentsFeature, 99) instanceof CDOElementProxy);
assertEquals(false, revision.get(contentsFeature, 100) instanceof CDOElementProxy);
session.close();
@@ -152,8 +151,7 @@ public class ViewTest extends AbstractCDOTest
}
CDORevisionData revision = resource.cdoRevision().data();
- CDOResourcePackage resourcePackage = session.getPackageManager().getCDOResourcePackage();
- CDOContentsFeature contentsFeature = resourcePackage.getCDOResourceClass().getCDOContentsFeature();
+ EStructuralFeature contentsFeature = EresourcePackage.eINSTANCE.getCDOResource_Contents();
assertEquals(false, revision.get(contentsFeature, 0) instanceof CDOElementProxy);
assertEquals(false, revision.get(contentsFeature, 1) instanceof CDOElementProxy);
assertEquals(true, revision.get(contentsFeature, 2) instanceof CDOElementProxy);
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 2e17342339..a0d79c4f99 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
@@ -17,7 +17,6 @@ import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
import org.eclipse.emf.cdo.tests.model1.Supplier;
import org.eclipse.emf.cdo.tests.model2.SpecialPurchaseOrder;
import org.eclipse.emf.cdo.tests.model4.GenRefSingleNonContained;
-import org.eclipse.emf.cdo.tests.model4.model4Package;
import org.eclipse.emf.cdo.transaction.CDOSavepoint;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.transaction.CDOXATransaction;
@@ -137,11 +136,9 @@ public class XATransactionTest extends AbstractCDOTest
}
catch (Exception ex)
{
-
}
xaTransaction.commit();
-
}
public void testCommitFromTransactionDisabled() throws Exception
@@ -150,10 +147,14 @@ public class XATransactionTest extends AbstractCDOTest
{
CDOSession sessionA = openSession();
+ sessionA.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionA.getPackageRegistry().putEPackage(getModel4Package());
+
CDOSession sessionB = openSession(REPOSITORY2_NAME);
+ sessionB.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionB.getPackageRegistry().putEPackage(getModel4Package());
+
ResourceSet resourceSet = new ResourceSetImpl();
- sessionA.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
- sessionB.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
CDOTransaction transactionB1 = sessionB.openTransaction(resourceSet);
@@ -169,9 +170,7 @@ public class XATransactionTest extends AbstractCDOTest
resB.getContents().add(objectFromResB);
CDOXATransaction transSet = CDOUtil.createXATransaction();
-
transSet.setAllowRequestFromTransactionEnabled(false);
-
transSet.add(CDOUtil.getViewSet(resourceSet));
try
@@ -193,10 +192,14 @@ public class XATransactionTest extends AbstractCDOTest
{
CDOSession sessionA = openSession();
+ sessionA.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionA.getPackageRegistry().putEPackage(getModel4Package());
+
CDOSession sessionB = openSession(REPOSITORY2_NAME);
+ sessionB.getPackageRegistry().putEPackage(getModel4InterfacesPackage());
+ sessionB.getPackageRegistry().putEPackage(getModel4Package());
+
ResourceSet resourceSet = new ResourceSetImpl();
- sessionA.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
- sessionB.getPackageRegistry().putEPackage(model4Package.eINSTANCE);
CDOTransaction transactionA1 = sessionA.openTransaction(resourceSet);
CDOTransaction transactionB1 = sessionB.openTransaction(resourceSet);
@@ -312,6 +315,7 @@ public class XATransactionTest extends AbstractCDOTest
resC.getContents().add(purchaseOrder3);
supplier.getPurchaseOrders().add(purchaseOrder3);
purchaseOrder.setDate(new Date());
+
try
{
@@ -321,6 +325,7 @@ public class XATransactionTest extends AbstractCDOTest
catch (Exception ignore)
{
}
+
Assert.assertEquals(false, CDOUtil.getCDOObject(supplier).cdoWriteLock().isLocked());
Assert.assertEquals(false, CDOUtil.getCDOObject(purchaseOrder).cdoWriteLock().isLocked());
@@ -329,5 +334,4 @@ public class XATransactionTest extends AbstractCDOTest
assertEquals(null, purchaseOrder.getDate());
assertEquals(1, supplier.getPurchaseOrders().size());
}
-
}
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
index d1fd0c0212..b4afd423b6 100644
--- 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
@@ -13,25 +13,21 @@ package org.eclipse.emf.cdo.tests.bugzilla;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.internal.cdo.session.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.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
/**
- * ArrayIndexOutOfBoundsException when importing resoruces.
+ * ArrayIndexOutOfBoundsException when importing resources.
* <p>
*
* @see https://bugs.eclipse.org/246442
@@ -50,14 +46,11 @@ public class Bugzilla_246442_Test extends AbstractCDOTest
EClass class1Class = (EClass)subpackage1.getEClassifier("class1");
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);
+ CDOObject instance = (CDOObject)EcoreUtil.create(class1Class);
+
CDOResource resource = transaction.createResource("/test1");
resource.getContents().add(instance);
transaction.commit();
@@ -76,27 +69,28 @@ public class Bugzilla_246442_Test extends AbstractCDOTest
transaction.getObject(lookupObject);
}
- public void testBugzilla_246442_lookupEClass() throws Exception
- {
- EPackage topPackage = createDynamicEPackage();
-
- EPackage subpackage1 = topPackage.getESubpackages().get(0);
- EClass class1Class = (EClass)subpackage1.getEClassifier("class1");
- EClass class2Class = (EClass)subpackage1.getEClassifier("class2");
- EClass class3Class = (EClass)subpackage1.getEClassifier("class3");
-
- CDOSession session = openSession();
-
- session.getPackageRegistry().putEPackage(topPackage);
-
- CDOClass cdoClass1 = ModelUtil.getCDOClass(class1Class, (CDOSessionPackageManagerImpl)session.getPackageManager());
- CDOClass cdoClass2 = ModelUtil.getCDOClass(class2Class, (CDOSessionPackageManagerImpl)session.getPackageManager());
- CDOClass cdoClass3 = ModelUtil.getCDOClass(class3Class, (CDOSessionPackageManagerImpl)session.getPackageManager());
-
- assertEquals(class1Class.getName(), cdoClass1.getName());
- assertEquals(class2Class.getName(), cdoClass2.getName());
- assertEquals(class3Class.getName(), cdoClass3.getName());
- }
+ // public void testBugzilla_246442_lookupEClass() throws Exception
+ // {
+ // EPackage topPackage = createDynamicEPackage();
+ // EPackage subpackage1 = topPackage.getESubpackages().get(0);
+ // EClass class1Class = (EClass)subpackage1.getEClassifier("class1");
+ // EClass class2Class = (EClass)subpackage1.getEClassifier("class2");
+ // EClass class3Class = (EClass)subpackage1.getEClassifier("class3");
+ //
+ // CDOSession session = openSession();
+ // session.getPackageRegistry().putEPackage(topPackage);
+ //
+ // EClass eClass1 = ModelUtil.getEClass(class1Class,
+ // (_CDOSessionPackageManagerImpl)session.getPackageUnitManager());
+ // EClass eClass2 = ModelUtil.getEClass(class2Class,
+ // (_CDOSessionPackageManagerImpl)session.getPackageUnitManager());
+ // EClass eClass3 = ModelUtil.getEClass(class3Class,
+ // (_CDOSessionPackageManagerImpl)session.getPackageUnitManager());
+ //
+ // assertEquals(class1Class.getName(), eClass1.getName());
+ // assertEquals(class2Class.getName(), eClass2.getName());
+ // assertEquals(class3Class.getName(), eClass3.getName());
+ // }
private EPackage createDynamicEPackage()
{
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 07c7cd84ea..18d85d4eca 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
@@ -11,7 +11,6 @@
*/
package org.eclipse.emf.cdo.tests.bugzilla;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
@@ -22,6 +21,8 @@ import org.eclipse.emf.cdo.tests.model1.Supplier;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* 246622: CDOStore.set doesn't affect variable correctly - Could cause memory retention
* <p>
@@ -42,8 +43,7 @@ public class Bugzilla_246622_Test extends AbstractCDOTest
res.getContents().add(order);
order.getOrderDetails().add(orderDetail);
- CDOFeature order_OrderDetailFeature = session.getPackageManager().convert(
- getModel1Package().getOrder_OrderDetails());
+ EStructuralFeature order_OrderDetailFeature = getModel1Package().getOrder_OrderDetails();
assertEquals(orderDetail, CDOUtil.getCDOObject(order).cdoRevision().data().get(order_OrderDetailFeature, 0));
assertEquals(order, CDOUtil.getCDOObject(orderDetail).cdoRevision().data().getContainerID());
@@ -99,10 +99,8 @@ public class Bugzilla_246622_Test extends AbstractCDOTest
res.getContents().add(purchaseOrder);
res.getContents().add(supplier);
- CDOFeature supplier_PurchaseOrder = session.getPackageManager().convert(
- getModel1Package().getSupplier_PurchaseOrders());
- CDOFeature purchaseOrder_Supplier = session.getPackageManager().convert(
- getModel1Package().getPurchaseOrder_Supplier());
+ EStructuralFeature supplier_PurchaseOrder = getModel1Package().getSupplier_PurchaseOrders();
+ EStructuralFeature purchaseOrder_Supplier = getModel1Package().getPurchaseOrder_Supplier();
assertEquals(supplier, CDOUtil.getCDOObject(purchaseOrder).cdoRevision().data().get(purchaseOrder_Supplier, 0));
assertEquals(purchaseOrder, CDOUtil.getCDOObject(supplier).cdoRevision().data().get(supplier_PurchaseOrder, 0));
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_251752_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_251752_Test.java
index e902632f44..8ea6944453 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_251752_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_251752_Test.java
@@ -35,6 +35,12 @@ public class Bugzilla_251752_Test extends AbstractCDOTest
CDOTransaction transaction1 = session.openTransaction();
CDOResource res = transaction1.createResource("/test1");
res.getContents().add(getModel1Factory().createCompany());
+ transaction1.commit();
+ CDOTransaction transaction2 = session.openTransaction();
+ CDOResource res2 = transaction2.getResource("/test1");
+ res.getContents().add(getModel1Factory().createCompany());
+ res2.getContents().add(getModel1Factory().createCompany());
+ transaction2.commit();
try
{
transaction1.commit();
@@ -52,9 +58,15 @@ public class Bugzilla_251752_Test extends AbstractCDOTest
CDOTransaction transaction1 = session.openTransaction();
CDOXATransaction xaTransaction = CDOUtil.createXATransaction();
xaTransaction.add(CDOUtil.getViewSet(transaction1.getResourceSet()));
-
CDOResource res = transaction1.createResource("/test1");
res.getContents().add(getModel1Factory().createCompany());
+ transaction1.commit();
+ CDOTransaction transaction2 = session.openTransaction();
+ CDOResource res2 = transaction2.getResource("/test1");
+ res.getContents().add(getModel1Factory().createCompany());
+ res2.getContents().add(getModel1Factory().createCompany());
+ transaction2.commit();
+
try
{
transaction1.commit();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_256141_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_256141_Test.java
index acfe1eb8dd..9646e79788 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_256141_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_256141_Test.java
@@ -26,7 +26,7 @@ public class Bugzilla_256141_Test extends AbstractCDOTest
{
public void testBugzilla_256141() throws InterruptedException
{
- CDOSession session = openLazySession();
+ CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource1 = transaction.createResource("test1");
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_258933_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_258933_Test.java
index 0c193e970e..bad0dbf7c1 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_258933_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_258933_Test.java
@@ -12,22 +12,20 @@
package org.eclipse.emf.cdo.tests.bugzilla;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
import org.eclipse.emf.cdo.tests.model1.Order;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.internal.cdo.session.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.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
/**
* CDORevisionImpl.eIsSet() works incorrectly
@@ -38,6 +36,10 @@ import org.eclipse.emf.ecore.EcorePackage;
*/
public class Bugzilla_258933_Test extends AbstractCDOTest
{
+ private static final String TOP_PACKAGE_URI = "http:///www.elver.org/toppackage";
+
+ private static final String SUB_PACKAGE_URI = "http:///www.elver.org/subPackage1";
+
private static final Object NIL = new Object();
public void testBugzilla_258933() throws Exception
@@ -91,12 +93,9 @@ public class Bugzilla_258933_Test extends AbstractCDOTest
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);
+ EObject instance = EcoreUtil.create(class1Class);
if (NIL != initializeValue)
{
instance.eSet(feature, initializeValue);
@@ -116,19 +115,17 @@ public class Bugzilla_258933_Test extends AbstractCDOTest
}
clearCache(getRepository().getRevisionManager());
- EPackage topPackage = createDynamicEPackage();
-
- EPackage subpackage1 = topPackage.getESubpackages().get(0);
- EClass class1Class = (EClass)subpackage1.getEClassifier("class1");
- EStructuralFeature feature = class1Class.getEStructuralFeature(featureName);
CDOSession session = openSession();
- session.getPackageRegistry().putEPackage(topPackage);
if (session instanceof org.eclipse.emf.cdo.net4j.CDOSession)
{
((org.eclipse.emf.cdo.net4j.CDOSession)session).options().getProtocol().setTimeout(2000L);
}
+ EPackage subpackage1 = session.getPackageRegistry().getEPackage(SUB_PACKAGE_URI);
+ EClass class1Class = (EClass)subpackage1.getEClassifier("class1");
+ EStructuralFeature feature = class1Class.getEStructuralFeature(featureName);
+
CDOTransaction transaction = session.openTransaction();
CDOObject instance = (CDOObject)transaction.getResource("/test1").getContents().get(0);
assertEquals(isSet, instance.eIsSet(feature));
@@ -182,12 +179,12 @@ public class Bugzilla_258933_Test extends AbstractCDOTest
EPackage topPackage = efactory.createEPackage();
topPackage.setName("toppackage");
topPackage.setNsPrefix("toppackage");
- topPackage.setNsURI("http:///www.elver.org/toppackage");
+ topPackage.setNsURI(TOP_PACKAGE_URI);
EPackage subPackage1 = efactory.createEPackage();
subPackage1.setName("subPackage1");
subPackage1.setNsPrefix("subPackage1");
- subPackage1.setNsURI("http:///www.elver.org/subPackage1");
+ subPackage1.setNsURI(SUB_PACKAGE_URI);
{
EClass schoolBookEClass = efactory.createEClass();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_260764_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_260764_Test.java
index 19d5d8e36a..b91a936273 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_260764_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_260764_Test.java
@@ -36,30 +36,23 @@ import java.util.List;
*/
public class Bugzilla_260764_Test extends AbstractCDOTest
{
-
public void testBugzilla_260764() throws Exception
{
msg("Opening session");
final CDOSession session = openModel1Session();
-
session.options().setPassiveUpdateEnabled(false);
// ************************************************************* //
msg("Opening transaction");
final CDOTransaction transaction = session.openTransaction();
-
final CDOResource resourceA = transaction.createResource("/test1");
final OrderAddress orderAddress = getModel1Factory().createOrderAddress();
-
resourceA.getContents().add(orderAddress);
-
transaction.commit();
transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
-
final TestAdapter adapter = new TestAdapter();
-
orderAddress.eAdapters().add(adapter);
// ************************************************************* //
@@ -69,12 +62,10 @@ public class Bugzilla_260764_Test extends AbstractCDOTest
session2.options().setPassiveUpdateEnabled(false);
final CDOTransaction transaction2 = session2.openTransaction();
-
final OrderAddress orderAddress2 = (OrderAddress)transaction2.getObject(CDOUtil.getCDOObject(orderAddress).cdoID(),
true);
OrderDetail orderDetail = getModel1Factory().createOrderDetail();
-
orderAddress2.getOrderDetails().add(orderDetail);
assertEquals(0, adapter.getNotifications().size());
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_261218_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_261218_Test.java
index 0e1c95dab8..4e8f39251e 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_261218_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_261218_Test.java
@@ -16,11 +16,8 @@ import org.eclipse.emf.cdo.tests.model1.Category;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.util.EcoreUtil;
/**
- * [CDO] Remove poor performance
- * <p>
* See https://bugs.eclipse.org/261218
*
* @author Simon McDuff
@@ -51,10 +48,12 @@ public class Bugzilla_261218_Test extends AbstractCDOTest
long start = System.currentTimeMillis();
for (int i = 9999; i >= 0; --i)
{
- EcoreUtil.remove(folder.getCategories().get(i));
+ // EcoreUtil.remove(folder.getCategories().get(i));
+ folder.getCategories().remove(i);
}
// =>90 seconds
transaction.commit();
+ // TODO: SIMON BETTER ASSERTION
assertTrue(System.currentTimeMillis() - start < 10000);
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/IConstants.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/IConstants.java
index ec1c97bc71..6dd2f4a221 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/IConstants.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/IConstants.java
@@ -35,8 +35,12 @@ public interface IConstants
public static final RepositoryConfig DB_HSQL_HORIZONTAL = RepositoryConfig.DB.Hsqldb.Stmt.INSTANCE;
+ public static final RepositoryConfig DB_HSQL_HORIZONTAL_NONAUDIT = RepositoryConfig.DB.Hsqldb.StmtNonAudit.INSTANCE;
+
public static final RepositoryConfig DB_HSQL_HORIZONTAL_PREPSTMT = RepositoryConfig.DB.Hsqldb.PrepStmt.INSTANCE;
+ public static final RepositoryConfig DB_HSQL_HORIZONTAL_PREPSTMT_NONAUDIT = RepositoryConfig.DB.Hsqldb.PrepStmtNonAudit.INSTANCE;
+
public static final RepositoryConfig DB_DERBY_HORIZONTAL = RepositoryConfig.DB.Derby.Stmt.INSTANCE;
public static final RepositoryConfig DB_DERBY_HORIZONTAL_PREPSTMT = RepositoryConfig.DB.Derby.PrepStmt.INSTANCE;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ISessionConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ISessionConfig.java
index 7148cdfff5..557f4661b4 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ISessionConfig.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ISessionConfig.java
@@ -38,10 +38,6 @@ public interface ISessionConfig extends IConfig
public CDOSession openModel3Session();
- public CDOSession openEagerSession();
-
- public CDOSession openLazySession();
-
public CDOSession openSession(EPackage ePackage);
public CDOSession openSession(String repositoryName);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/ConfigTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/ConfigTest.java
index 0695858d41..8a8f55e118 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/ConfigTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/ConfigTest.java
@@ -278,22 +278,6 @@ public abstract class ConfigTest extends AbstractOMTest implements IConstants
/**
*@category Session
*/
- public CDOSession openEagerSession()
- {
- return getSessionConfig().openEagerSession();
- }
-
- /**
- *@category Session
- */
- public CDOSession openLazySession()
- {
- return getSessionConfig().openLazySession();
- }
-
- /**
- *@category Session
- */
public CDOSession openSession(EPackage ePackage)
{
return getSessionConfig().openSession(ePackage);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
index 1f0355f9b9..ba155546d5 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
@@ -7,6 +7,7 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Stefan Winkler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=259402
*/
package org.eclipse.emf.cdo.tests.config.impl;
@@ -16,13 +17,15 @@ import org.eclipse.emf.cdo.server.CDOServerUtil;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IRepositoryProvider;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.StoreUtil;
import org.eclipse.emf.cdo.server.IRepository.Props;
import org.eclipse.emf.cdo.server.db.CDODBUtil;
import org.eclipse.emf.cdo.server.db.IJDBCDelegateProvider;
-import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.server.mem.MEMStoreUtil;
import org.eclipse.emf.cdo.tests.bundle.OM;
import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
+import org.eclipse.emf.cdo.tests.store.verifier.AuditDBStoreIntegrityVerifier;
+import org.eclipse.emf.cdo.tests.store.verifier.NonAuditDBStoreIntegrityVerifier;
import org.eclipse.net4j.db.DBUtil;
import org.eclipse.net4j.db.IDBAdapter;
@@ -210,7 +213,7 @@ public abstract class RepositoryConfig extends Config implements IRepositoryConf
@Override
protected IStore createStore()
{
- return StoreUtil.createMEMStore();
+ return MEMStoreUtil.createMEMStore();
}
}
@@ -337,6 +340,45 @@ public abstract class RepositoryConfig extends Config implements IRepositoryConf
}
}
+ public static class StmtNonAudit extends Hsqldb
+ {
+ private static final long serialVersionUID = 1L;
+
+ public static final StmtNonAudit INSTANCE = new StmtNonAudit("HsqldbHorizontalNonAudit");
+
+ public StmtNonAudit(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected void initRepositoryProperties(Map<String, String> props)
+ {
+ super.initRepositoryProperties(props);
+ props.put(IRepository.Props.SUPPORTING_AUDITS, "false");
+ }
+
+ @Override
+ protected IJDBCDelegateProvider createDelegateProvider()
+ {
+ return CDODBUtil.createStatementJDBCDelegateProvider();
+ }
+
+ @Override
+ public void tearDown() throws Exception
+ {
+ try
+ {
+ // verify DB integrity
+ new NonAuditDBStoreIntegrityVerifier(getRepository(REPOSITORY_NAME)).verify();
+ }
+ finally
+ {
+ super.tearDown();
+ }
+ }
+ }
+
public static class PrepStmt extends Hsqldb
{
private static final long serialVersionUID = 1L;
@@ -349,10 +391,63 @@ public abstract class RepositoryConfig extends Config implements IRepositoryConf
}
@Override
+ public void tearDown() throws Exception
+ {
+ try
+ {
+ // verify DB integrity
+ new AuditDBStoreIntegrityVerifier(getRepository(REPOSITORY_NAME)).verify();
+ }
+ finally
+ {
+ super.tearDown();
+ }
+ }
+
+ @Override
+ protected IJDBCDelegateProvider createDelegateProvider()
+ {
+ return CDODBUtil.createPreparedStatementJDBCDelegateProvider();
+ }
+ }
+
+ public static class PrepStmtNonAudit extends Hsqldb
+ {
+ private static final long serialVersionUID = 1L;
+
+ public static final PrepStmtNonAudit INSTANCE = new PrepStmtNonAudit("HsqldbHorizontalPrepStmtNonAudit");
+
+ public PrepStmtNonAudit(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected void initRepositoryProperties(Map<String, String> props)
+ {
+ super.initRepositoryProperties(props);
+ props.put(IRepository.Props.SUPPORTING_AUDITS, "false");
+ }
+
+ @Override
protected IJDBCDelegateProvider createDelegateProvider()
{
return CDODBUtil.createPreparedStatementJDBCDelegateProvider();
}
+
+ @Override
+ public void tearDown() throws Exception
+ {
+ try
+ {
+ // verify DB integrity
+ new NonAuditDBStoreIntegrityVerifier(getRepository(REPOSITORY_NAME)).verify();
+ }
+ finally
+ {
+ super.tearDown();
+ }
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java
index 8600dda89f..b64be0a821 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java
@@ -17,17 +17,19 @@ import org.eclipse.emf.cdo.tests.config.IConfig;
import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
import org.eclipse.emf.cdo.tests.config.ISessionConfig;
-import org.eclipse.emf.internal.cdo.session.CDOPackageTypeRegistryImpl;
-
import org.eclipse.net4j.acceptor.IAcceptor;
import org.eclipse.net4j.connector.IConnector;
import org.eclipse.net4j.jvm.JVMUtil;
import org.eclipse.net4j.tcp.TCPUtil;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.lifecycle.ILifecycle;
+import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EPackageImpl;
+import java.util.HashSet;
import java.util.Set;
/**
@@ -39,6 +41,10 @@ public abstract class SessionConfig extends Config implements ISessionConfig
private static final long serialVersionUID = 1L;
+ private transient Set<CDOSession> sessions;
+
+ private transient IListener sessionListener;
+
public SessionConfig(String name)
{
super(name);
@@ -91,20 +97,6 @@ public abstract class SessionConfig extends Config implements ISessionConfig
return openSession(getCurrentTest().getModel3Package());
}
- public CDOSession openEagerSession()
- {
- CDOSessionConfiguration configuration = createSessionConfiguration(IRepositoryConfig.REPOSITORY_NAME);
- configuration.setEagerPackageRegistry();
- return configuration.openSession();
- }
-
- public CDOSession openLazySession()
- {
- CDOSessionConfiguration configuration = createSessionConfiguration(IRepositoryConfig.REPOSITORY_NAME);
- configuration.setLazyPackageRegistry();
- return configuration.openSession();
- }
-
public CDOSession openSession(EPackage ePackage)
{
CDOSession session = openSession();
@@ -112,22 +104,33 @@ public abstract class SessionConfig extends Config implements ISessionConfig
return session;
}
- public CDOSession openSession(String repositoryName)
+ public CDOSession openSession()
{
- CDOSessionConfiguration configuration = createSessionConfiguration(repositoryName);
- return configuration.openSession();
+ return openSession(IRepositoryConfig.REPOSITORY_NAME);
}
- public CDOSession openSession()
+ public CDOSession openSession(String repositoryName)
{
- return openSession(IRepositoryConfig.REPOSITORY_NAME);
+ CDOSessionConfiguration configuration = createSessionConfiguration(repositoryName);
+ CDOSession session = configuration.openSession();
+ session.addListener(sessionListener);
+ sessions.add(session);
+ return session;
}
@Override
public void setUp() throws Exception
{
super.setUp();
- CDOPackageTypeRegistryImpl.INSTANCE.activate();
+ sessions = new HashSet<CDOSession>();
+ sessionListener = new LifecycleEventAdapter()
+ {
+ @Override
+ protected void onDeactivated(ILifecycle session)
+ {
+ sessions.remove(session);
+ }
+ };
}
@Override
@@ -135,12 +138,21 @@ public abstract class SessionConfig extends Config implements ISessionConfig
{
try
{
+ for (CDOSession session : sessions)
+ {
+ session.removeListener(sessionListener);
+ LifecycleUtil.deactivate(session);
+ }
+
+ sessionListener = null;
+ sessions.clear();
+ sessions = null;
+
stopTransport();
super.tearDown();
}
finally
{
- CDOPackageTypeRegistryImpl.INSTANCE.deactivate();
removeDynamicPackagesFromGlobalRegistry();
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java
index e675b0599c..26eda7bbfa 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java
@@ -14,12 +14,8 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl;
@@ -27,7 +23,7 @@ import org.eclipse.emf.cdo.internal.server.Repository;
import org.eclipse.emf.cdo.internal.server.Session;
import org.eclipse.emf.cdo.internal.server.Transaction;
import org.eclipse.emf.cdo.internal.server.Transaction.InternalCommitContext;
-import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl.TransactionPackageManager;
+import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl.TransactionPackageRegistry;
import org.eclipse.emf.cdo.internal.server.protocol.CDOServerProtocol;
import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IRepository.Props;
@@ -35,16 +31,16 @@ import org.eclipse.emf.cdo.tests.mango.MangoPackage;
import org.eclipse.emf.cdo.tests.model1.Model1Package;
import org.eclipse.emf.cdo.tests.model2.Model2Package;
import org.eclipse.emf.cdo.tests.model3.Model3Package;
-import org.eclipse.emf.cdo.util.EMFUtil;
+import org.eclipse.emf.cdo.util.ModelUtil;
import org.eclipse.emf.internal.cdo.session.SessionUtil;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.net4j.tests.AbstractOMTest;
import org.eclipse.net4j.util.om.monitor.Monitor;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
import java.util.ArrayList;
@@ -190,7 +186,7 @@ public abstract class TestLogic extends AbstractOMTest
private InternalCommitContext transactionCommitContext;
- private List<CDOPackage> newPackages = new ArrayList<CDOPackage>();
+ private List<EPackage> newPackages = new ArrayList<EPackage>();
private List<CDORevision> newObjects = new ArrayList<CDORevision>();
@@ -236,10 +232,10 @@ public abstract class TestLogic extends AbstractOMTest
protocol.deactivate();
}
- public CDOPackage addNewPackage(EPackage ePackage)
+ public EPackage addNewPackage(EPackage ePackage)
{
String uri = ePackage.getNsURI();
- String parentURI = ModelUtil.getParentURI(ePackage);
+ String parentURI = EMFUtil.getParentURI(ePackage);
String name = ePackage.getName();
boolean dynamic = EMFUtil.isDynamicEPackage(ePackage);
String ecore = null;
@@ -255,9 +251,9 @@ public abstract class TestLogic extends AbstractOMTest
idRange = SessionUtil.registerEPackage(ePackage, 1, null, null);
}
- TransactionPackageManager packageManager = transactionCommitContext.getPackageManager();
- CDOPackage newPackage = CDOModelUtil.createPackage(packageManager, uri, name, ecore, dynamic, idRange, parentURI);
- ModelUtil.initializeCDOPackage(ePackage, newPackage);
+ TransactionPackageRegistry packageManager = transactionCommitContext.getPackageRegistry();
+ EPackage newPackage = CDOModelUtil.createPackage(packageManager, uri, name, ecore, dynamic, idRange, parentURI);
+ ModelUtil.initializeEPackage(ePackage, newPackage);
packageManager.addPackage(newPackage);
newPackages.add(newPackage);
return newPackage;
@@ -265,7 +261,7 @@ public abstract class TestLogic extends AbstractOMTest
public TestRevision addNewResource(int id)
{
- CDOResourcePackage resourcePackage = repository.getPackageManager().getCDOResourcePackage();
+ CDOResourcePackage resourcePackage = repository.getPackageRegistry().getCDOResourcePackage();
CDOResourceClass resourceClass = resourcePackage.getCDOResourceClass();
return addRevision(id, resourceClass);
}
@@ -275,15 +271,15 @@ public abstract class TestLogic extends AbstractOMTest
String uri = eClass.getEPackage().getNsURI();
- CDOPackage cdoPackage = transactionCommitContext.getPackageManager().lookupPackage(uri);
- CDOClass cdoClass = cdoPackage.lookupClass(eClass.getClassifierID());
- return addRevision(id, cdoClass);
+ EPackage ePackage = transactionCommitContext.getPackageRegistry().lookupPackage(uri);
+ EClass eClass = ePackage.lookupClass(eClass.getClassifierID());
+ return addRevision(id, eClass);
}
- private TestRevision addRevision(int id, CDOClass cdoClass)
+ private TestRevision addRevision(int id, EClass eClass)
{
CDOIDTemp tempID = CDOIDUtil.createTempObject(id);
- TestRevision newObject = new TestRevision(cdoClass, tempID);
+ TestRevision newObject = new TestRevision(eClass, tempID);
newObjects.add(newObject);
return newObject;
}
@@ -303,9 +299,9 @@ public abstract class TestLogic extends AbstractOMTest
return (Transaction)session.openTransaction(viewID);
}
- private CDOPackage[] getNewPackages()
+ private EPackage[] getNewPackages()
{
- return newPackages.toArray(new CDOPackage[newPackages.size()]);
+ return newPackages.toArray(new EPackage[newPackages.size()]);
}
private CDORevision[] getNewObjects()
@@ -329,9 +325,9 @@ public abstract class TestLogic extends AbstractOMTest
*/
protected class TestRevision extends CDORevisionImpl
{
- public TestRevision(CDOClass cdoClass, CDOID id)
+ public TestRevision(EClass eClass, CDOID id)
{
- super(cdoClass, id);
+ super(eClass, id);
}
public void set(String featureName, Object value)
@@ -341,8 +337,8 @@ public abstract class TestLogic extends AbstractOMTest
public void set(String featureName, int index, Object value)
{
- CDOFeature cdoFeature = getCDOClass().lookupFeature(featureName);
- set(cdoFeature, index, value);
+ EStructuralFeature feature = getEClass().lookupFeature(featureName);
+ set(feature, index, value);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AbstractDBStoreVerifier.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AbstractDBStoreVerifier.java
index 790fa65733..87f2babdb8 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AbstractDBStoreVerifier.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AbstractDBStoreVerifier.java
@@ -12,16 +12,19 @@ package org.eclipse.emf.cdo.tests.store.verifier;
import static junit.framework.Assert.assertTrue;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.server.IRepository;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
import org.eclipse.emf.cdo.server.db.IDBStore;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.tests.bundle.OM;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@@ -68,17 +71,16 @@ public abstract class AbstractDBStoreVerifier
protected List<IClassMapping> getClassMappings()
{
ArrayList<IClassMapping> result = new ArrayList<IClassMapping>();
- for (CDOPackage pkg : repository.getPackageManager().getPackages())
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)repository.getPackageRegistry();
+ for (InternalCDOPackageInfo packageInfo : packageRegistry.getPackageInfos())
{
// CDO core package is not mapped in horizontal mapping
- if (pkg.equals(repository.getPackageManager().getCDOCorePackage()))
- {
- continue;
- }
-
- for (CDOClass cls : pkg.getClasses())
+ if (!packageInfo.isCorePackage())
{
- result.add(getStore().getMappingStrategy().getClassMapping(cls));
+ for (EClass cls : EMFUtil.getPersistentClasses(packageInfo.getEPackage()))
+ {
+ result.add(getStore().getMappingStrategy().getClassMapping(cls));
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AuditDBStoreIntegrityVerifier.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AuditDBStoreIntegrityVerifier.java
index 6ad910159b..06edaf44b4 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AuditDBStoreIntegrityVerifier.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/AuditDBStoreIntegrityVerifier.java
@@ -15,10 +15,10 @@ import static junit.framework.Assert.assertTrue;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
-import org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.mapping.HorizontalMappingStrategy;
import org.eclipse.net4j.util.collection.Pair;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/NonAuditDBStoreIntegrityVerifier.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/NonAuditDBStoreIntegrityVerifier.java
index 40fb092bad..09e30a5128 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/NonAuditDBStoreIntegrityVerifier.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/verifier/NonAuditDBStoreIntegrityVerifier.java
@@ -15,10 +15,10 @@ import static junit.framework.Assert.assertTrue;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.IStore;
-import org.eclipse.emf.cdo.server.db.IClassMapping;
-import org.eclipse.emf.cdo.server.db.IReferenceMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
+import org.eclipse.emf.cdo.server.db.mapping.IReferenceMapping;
import org.eclipse.emf.cdo.server.internal.db.CDODBSchema;
-import org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.mapping.HorizontalMappingStrategy;
import org.eclipse.net4j.util.collection.Pair;
diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/Node.java b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/Node.java
index 141451a3e7..7ed3bb52bd 100644
--- a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/Node.java
+++ b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/Node.java
@@ -11,8 +11,8 @@
package org.eclipse.emf.cdo.ui.ide;
import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.eresource.CDOResourceNode;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.team.IRepositoryProject;
import org.eclipse.emf.cdo.ui.internal.ide.bundle.OM;
import org.eclipse.emf.cdo.view.CDOView;
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
index b7cc8a48c9..1b26fe196f 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
@@ -23,8 +23,8 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu,com.jcraft.jsch,com.springsource.org.apache.commons.logging,javax.servlet,javax.servlet.jsp,org.apache.ant,org.apache.commons.el,org.apache.commons.logging,org.apache.jasper,org.apache.lucene,org.apache.lucene.analysis,org.eclipse.ant.core,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.compare.core,org.eclipse.core.boot,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.expressions,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.net.win32.x86,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32.x86,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.cvs,org.eclipse.cvs.source,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.ecf,org.eclipse.ecf.filetransfer,org.eclipse.ecf.identity,org.eclipse.ecf.ssl,org.eclipse.emf.ant,org.eclipse.emf.cheatsheets,org.eclipse.emf.codegen,org.eclipse.emf.codegen.ecore,org.eclipse.emf.codegen.ecore.ui,org.eclipse.emf.codegen.ui,org.eclipse.emf.common,org.eclipse.emf.common.ui,org.eclipse.emf.converter,org.eclipse.emf.doc,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org.eclipse.emf.ecore.change.edit,org.eclipse.emf.ecore.edit,org.eclipse.emf.ecore.editor,org.eclipse.emf.ecore.xmi,org.eclipse.emf.edit,org.eclipse.emf.edit.ui,org.eclipse.emf.exporter,org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.emf.importer.java,org.eclipse.emf.importer.rose,org.eclipse.emf.mapping,org.eclipse.emf.mapping.ecore2ecore,org.eclipse.emf.mapping.ecore2ecore.editor,org.eclipse.emf.mapping.ecore2xml,org.eclipse.emf.mapping.ecore2xml.ui,org.eclipse.emf.mapping.ui,org.eclipse.emf.mapping.xsd2ecore,org.eclipse.emf.mapping.xsd2ecore.editor,org.eclipse.emf.source,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.director,org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.jarprocessor,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.ui,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.equinox.security,org.eclipse.equinox.security.ui,org.eclipse.equinox.security.win32.x86,org.eclipse.equinox.simpleconfigurator,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.help,org.eclipse.help.appserver,org.eclipse.help.base,org.eclipse.help.ui,org.eclipse.help.webapp,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.doc.isv,org.eclipse.jdt.doc.user,org.eclipse.jdt.junit,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.junit4.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.source,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.jsch.core,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.pde.doc.user,org.eclipse.pde.junit.runtime,org.eclipse.pde.runtime,org.eclipse.pde.source,org.eclipse.pde.ui,org.eclipse.pde.ui.templates,org.eclipse.platform,org.eclipse.platform.doc.isv,org.eclipse.platform.source,org.eclipse.rcp.source,org.eclipse.sdk,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.team.core,org.eclipse.team.cvs.core,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui,org.eclipse.team.ui,org.eclipse.text,org.eclipse.ui,org.eclipse.ui.browser,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.intro.universal,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.presentations.r21,org.eclipse.ui.views,org.eclipse.ui.views.log,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.win32,org.eclipse.ui.workbench,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.workbench.texteditor,org.eclipse.update.configurator,org.eclipse.update.core,org.eclipse.update.core.win32,org.eclipse.update.scheduler,org.eclipse.update.ui,org.eclipse.xsd,org.eclipse.xsd.cheatsheets,org.eclipse.xsd.doc,org.eclipse.xsd.ecore.exporter,org.eclipse.xsd.ecore.importer,org.eclipse.xsd.edit,org.eclipse.xsd.editor,org.eclipse.xsd.source,org.junit,org.junit4,org.mortbay.jetty.server,org.mortbay.jetty.util,org.sat4j.core,org.sat4j.pb"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.tests.mango.edit,org.eclipse.emf.examples.library,org.eclipse.emf.cdo.examples,org.eclipse.emf.cdo.tests.model1.edit,org.eclipse.emf.cdo.common,org.eclipse.net4j.util.ui,org.eclipse.emf.cdo.tests.mango,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.emf.cdo.ui.ide,org.eclipse.emf.cdo.tests.model3,org.eclipse.emf.cdo.team,org.eclipse.emf.cdo.tests.model2,org.eclipse.emf.cdo.efs,org.eclipse.net4j.util,org.eclipse.emf.cdo.ui,org.eclipse.emf.cdo.edit,org.eclipse.emf.cdo,org.eclipse.emf.cdo.tests.model2.edit,org.eclipse.net4j,org.eclipse.emf.cdo.tests.model1"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.http.servlet@default:default,org.eclipse.text@default:default,org.mortbay.jetty.util@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.sdk@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.team.core@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.security@default:default,org.mortbay.jetty.server@default:default,org.eclipse.emf.ant@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.help@default:default,org.eclipse.emf.importer.java@default:default,org.eclipse.ui.navigator@default:default,javax.servlet@default:default,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.xsd.editor@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt.doc.isv@default:default,org.eclipse.update.core@default:default,org.eclipse.ui.console@default:default,org.eclipse.team.ui@default:default,org.eclipse.ui.forms@default:default,org.eclipse.pde@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.eclipse.jface@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.core.expressions@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.xsd.source@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.help.base@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.xsd.edit@default:default,org.eclipse.team.cvs.ssh@default:default,org.eclipse.emf.source@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.emf.converter@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.eclipse.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.platform@default:default,org.eclipse.pde.ui@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.ecf@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.compare.core@default:default,org.apache.commons.logging@default:default,javax.servlet.jsp@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.osgi@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.emf.codegen.ui@default:default,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.core.commands@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ltk.core.refactoring@default:default,org.junit@default:default,org.eclipse.emf.importer@default:default,org.eclipse.ant.ui@default:default,org.eclipse.ui.browser@default:default,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.emf.mapping.ui@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.team.cvs.ui@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.search@default:default,org.eclipse.pde.source@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.resources.compatibility@default:false,org.eclipse.debug.core@default:default,org.apache.lucene@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.core.databinding@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.xsd.ecore.importer@default:default,org.eclipse.emf.mapping@default:default,org.apache.ant@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.cvs@default:default,org.eclipse.xsd.ecore.exporter@default:default,org.eclipse.emf.doc@default:default,org.eclipse.update.ui@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.emf.ecore.change@default:default,org.sat4j.pb@default:default,org.eclipse.core.resources@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.jdt.core@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.xsd.doc@default:default,org.eclipse.ui.editors@default:default,org.eclipse.osgi.services@default:default,org.eclipse.emf.edit@default:default,org.eclipse.core.boot@default:default,org.eclipse.ui.intro@default:default,org.eclipse.update.configurator@default:default,org.eclipse.jface.text@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.ui.win32@default:false,org.eclipse.jface.databinding@default:default,org.eclipse.ant.core@default:default,org.eclipse.help.webapp@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.emf.common@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.cvs.source@default:default,org.eclipse.jsch.core@default:default,org.eclipse.equinox.http.jetty@default:default,org.apache.lucene.analysis@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.debug.ui@default:default,org.eclipse.equinox.p2.director@default:default,org.junit4@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.emf.exporter@default:default,org.eclipse.ui.ide@default:default,org.sat4j.core@default:default,org.eclipse.emf.importer.ecore@default:default,com.ibm.icu@default:default,org.eclipse.core.variables@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.xsd.cheatsheets@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.jdt.source@default:default,org.eclipse.core.net.win32.x86@default:false,org.apache.commons.el@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.osgi.util@default:default,org.eclipse.equinox.common@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.emf.mapping.xsd2ecore.editor@default:default,org.eclipse.core.jobs@default:default,org.eclipse.emf.importer.rose@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.net@default:default,org.eclipse.equinox.security.win32.x86@default:false,com.jcraft.jsch@default:default,org.eclipse.emf.mapping.xsd2ecore@default:default,org.eclipse.core.runtime@default:true,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.platform.source@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.help.appserver@default:default,org.apache.jasper@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.eclipse.help.ui@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.pde.build@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.debug@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.equinox.simpleconfigurator@default:default,org.eclipse.rcp.source@default:default,org.eclipse.xsd@default:default,org.eclipse.equinox.app@default:default,org.eclipse.compare@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,com.springsource.org.apache.commons.logging@default:default,org.eclipse.pde.core@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.examples@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.efs@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.util@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.tests.model2.edit@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.tests.model1.edit@default:default,org.eclipse.emf.cdo.tests.mango.edit@default:default,org.eclipse.emf.cdo.tests.model1@default:default,org.eclipse.emf.cdo.tests.mango@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.tests.model2@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.emf.cdo.tests.model3@default:default,org.eclipse.net4j.ui@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="tracing" value="true"/>
@@ -41,27 +41,27 @@
<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.net4j.pop/perf" value="false"/>
-<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.net4j.util/debug.lifecycle.dump" value="true"/>
+<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.net4j.pop.ui/perf" value="false"/>
-<mapEntry key="org.eclipse.net4j.pop/debug" 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.net4j.pop/debug" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/>
<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
<mapEntry key="org.eclipse.net4j.db.postgresql/debug" value="true"/>
<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" 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.jface.text/debug/AbstractInformationControlManager" 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"/>
@@ -71,8 +71,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.jdt.apt.core/debug/generatedFileMaps" value="false"/>
@@ -88,14 +88,14 @@
<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" 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"/>
@@ -103,14 +103,14 @@
<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.types" value="true"/>
<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"/>
@@ -124,78 +124,78 @@
<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
<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"/>
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
<mapEntry key="org.eclipse.net4j.pop.repository/perf" value="false"/>
+<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="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.transaction" 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.apt.core/debug" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
<mapEntry key="org.eclipse.emf.cdo.server.hibernate.id/debug" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/perf.revision" value="true"/>
-<mapEntry key="org.eclipse.net4j/set.signal.thread.name" value="false"/>
<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
+<mapEntry key="org.eclipse.net4j/set.signal.thread.name" value="false"/>
<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.session" value="true"/>
<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.ui/debug/swtdebugglobal" 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.net4j.http.server/debug" 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.osgi/resolver/uses" value="false"/>
<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/uses" 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"/>
@@ -203,11 +203,11 @@
<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" 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.jdt.ui/perf/explorer/makeActions" value="1000"/>
<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
@@ -230,8 +230,8 @@
<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
<mapEntry key="org.eclipse.net4j.db.postgresql/debug.sql" value="true"/>
@@ -239,8 +239,8 @@
<mapEntry key="org.eclipse.help/debug/context" value="false"/>
<mapEntry key="org.eclipse.net4j.template.ui/debug" value="true"/>
<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.jdt.apt.core/debug/generatedFiles" value="false"/>
@@ -256,12 +256,12 @@
<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
<mapEntry key="org.eclipse.net4j/open.channel.timeout" value="10000"/>
-<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"/>
@@ -278,18 +278,18 @@
<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.ui/test" value="true"/>
<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"/>
@@ -305,21 +305,21 @@
<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.emf.cdo.ui/test.bulk_add" value="true"/>
+<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"/>
@@ -337,16 +337,16 @@
<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.net4j.pop.repository.ccvs/perf" value="false"/>
-<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.net4j.pop.repository.ccvs/perf" 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"/>
@@ -355,14 +355,14 @@
<mapEntry key="org.eclipse.emf.cdo/perf.revision.loading" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.revision" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.view" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
+<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.net4j.http.common/debug" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/>
@@ -385,8 +385,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.ui/icons/full/obj16/EPackageDynamic.gif b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageDynamic.gif
new file mode 100644
index 0000000000..0b60dcc395
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageDynamic.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageLegacy.gif b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageLegacy.gif
index 30c5c10cc4..ffd66cfcbe 100644
--- a/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageLegacy.gif
+++ b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageLegacy.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageUnknown.gif b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageUnknown.gif
new file mode 100644
index 0000000000..459efb43ce
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.ui/icons/full/obj16/EPackageUnknown.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/SharedIcons.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/SharedIcons.java
index 0696d95e72..f094e88890 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/SharedIcons.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/SharedIcons.java
@@ -56,6 +56,10 @@ public class SharedIcons
public static final String OBJ_EPACKAGE_NATIVE = OBJ + "EPackageNative";
+ public static final String OBJ_EPACKAGE_DYNAMIC = OBJ + "EPackageDynamic";
+
+ public static final String OBJ_EPACKAGE_UNKNOWN = OBJ + "EPackageUnknown";
+
public static final String OBJ_ECLASS = OBJ + "EClass";
public static final String VIEW_SESSIONS = VIEW + "cdo_sessions";
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ExportResourceAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ExportResourceAction.java
index a25a899336..6edaaaf394 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ExportResourceAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ExportResourceAction.java
@@ -11,8 +11,8 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.internal.ui.dialogs.ExportResourceDialog;
-import org.eclipse.emf.cdo.util.EMFUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.common.util.URI;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ImportRootsAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ImportRootsAction.java
index c89596028b..df390311c1 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ImportRootsAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ImportRootsAction.java
@@ -10,8 +10,8 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.view.CDOView;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ManagePackagesAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ManagePackagesAction.java
index 99d53da3ef..a189320969 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ManagePackagesAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ManagePackagesAction.java
@@ -10,7 +10,7 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
-import org.eclipse.emf.cdo.internal.ui.dialogs.PackageManagerDialog;
+import org.eclipse.emf.cdo.internal.ui.dialogs.PackageRegistryDialog;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -21,9 +21,9 @@ import org.eclipse.ui.IWorkbenchPage;
*/
public class ManagePackagesAction extends SessionAction
{
- private static final String TITLE = "Package Manager";
+ private static final String TITLE = "Package Registry";
- private static final String TOOL_TIP = "Browse and install model packages";
+ private static final String TOOL_TIP = "Browse and register model packages";
public ManagePackagesAction(IWorkbenchPage page, CDOSession session)
{
@@ -33,7 +33,7 @@ public class ManagePackagesAction extends SessionAction
@Override
protected void preRun() throws Exception
{
- PackageManagerDialog dialog = new PackageManagerDialog(getPage(), getSession());
+ PackageRegistryDialog dialog = new PackageRegistryDialog(getPage(), getSession());
dialog.open();
cancel();
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
index b43d52c5ba..d5226f8ddb 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
@@ -7,9 +7,11 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistryPopulator;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
import org.eclipse.emf.cdo.internal.ui.dialogs.OpenSessionDialog;
import org.eclipse.emf.cdo.internal.ui.views.CDOSessionsView;
@@ -18,6 +20,8 @@ import org.eclipse.emf.cdo.ui.widgets.SessionComposite;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.ui.actions.LongRunningAction;
+import org.eclipse.emf.spi.cdo.InternalCDOSession;
+
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.IWorkbenchPage;
@@ -59,7 +63,13 @@ public final class OpenSessionAction extends LongRunningAction
try
{
String description = sessionComposite.getSessionDescription();
- getContainer().getElement("org.eclipse.emf.cdo.sessions", "cdo", description);
+ final InternalCDOSession session = (InternalCDOSession)getContainer().getElement("org.eclipse.emf.cdo.sessions",
+ "cdo", description);
+
+ if (sessionComposite.isAutomaticRegistry())
+ {
+ CDOPackageRegistryPopulator.populate(session.getPackageRegistry());
+ }
}
catch (final RuntimeException ex)
{
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterFilesystemPackagesAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterFilesystemPackagesAction.java
index 4faf90c9c1..93522bdda5 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterFilesystemPackagesAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterFilesystemPackagesAction.java
@@ -10,8 +10,8 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.util.EMFUtil;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterGeneratedPackagesAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterGeneratedPackagesAction.java
index 612b51fac9..e75b253ef9 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterGeneratedPackagesAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterGeneratedPackagesAction.java
@@ -7,6 +7,7 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.internal.ui.actions;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterPackagesAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterPackagesAction.java
index b2bee3f06e..29cdd1ece9 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterPackagesAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterPackagesAction.java
@@ -10,8 +10,8 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.common.util.URI;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterSinglePackageAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterSinglePackageAction.java
index 8eea84812c..8daeccd859 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterSinglePackageAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterSinglePackageAction.java
@@ -7,11 +7,13 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit.Type;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
-import org.eclipse.emf.cdo.session.CDOPackageType;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.ecore.EPackage;
@@ -31,10 +33,9 @@ public class RegisterSinglePackageAction extends RegisterPackagesAction
private EPackage.Registry registry = EPackage.Registry.INSTANCE;
- public RegisterSinglePackageAction(IWorkbenchPage page, CDOSession session, String packageURI,
- CDOPackageType packageType)
+ public RegisterSinglePackageAction(IWorkbenchPage page, CDOSession session, String packageURI)
{
- super(page, packageURI, "Register the package " + packageURI, getDescriptor(packageType), session);
+ super(page, packageURI, "Register the package " + packageURI, getDescriptor(packageURI), session);
this.packageURI = packageURI;
}
@@ -50,9 +51,10 @@ public class RegisterSinglePackageAction extends RegisterPackagesAction
return Collections.emptyList();
}
- private static ImageDescriptor getDescriptor(CDOPackageType packageType)
+ private static ImageDescriptor getDescriptor(String nsURI)
{
- switch (packageType)
+ Type type = CDOPackageTypeRegistry.INSTANCE.lookup(nsURI);
+ switch (type)
{
case LEGACY:
return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_LEGACY);
@@ -60,6 +62,12 @@ public class RegisterSinglePackageAction extends RegisterPackagesAction
case NATIVE:
return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_NATIVE);
+ case DYNAMIC:
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_DYNAMIC);
+
+ case UNKNOWN:
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_UNKNOWN);
+
default:
return null;
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterWorkspacePackagesAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterWorkspacePackagesAction.java
index 3384ce11af..30fcb0fc30 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterWorkspacePackagesAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RegisterWorkspacePackagesAction.java
@@ -10,9 +10,9 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.internal.ui.dialogs.OpenResourcesDialog;
import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.util.EMFUtil;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveAllContainerItemAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveAllContainerItemAction.java
index 3815257a68..238977413a 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveAllContainerItemAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveAllContainerItemAction.java
@@ -36,7 +36,7 @@ public class RemoveAllContainerItemAction<E> extends AbstractContainerAction<E>
{
elementsToRemove.add(element);
}
-
+
container.removeAllElements(elementsToRemove);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageManagerDialog.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageRegistryDialog.java
index 7db99d03eb..af49661447 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageManagerDialog.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/PackageRegistryDialog.java
@@ -7,17 +7,18 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.internal.ui.dialogs;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit.Type;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
import org.eclipse.emf.cdo.internal.ui.actions.RegisterFilesystemPackagesAction;
import org.eclipse.emf.cdo.internal.ui.actions.RegisterGeneratedPackagesAction;
import org.eclipse.emf.cdo.internal.ui.actions.RegisterWorkspacePackagesAction;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
-import org.eclipse.emf.cdo.session.CDOPackageType;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.ui.CDOItemProvider;
@@ -25,18 +26,19 @@ import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.BaseLabelProvider;
+import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
@@ -44,17 +46,18 @@ import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IWorkbenchPage;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
+import javax.swing.text.AbstractDocument.Content;
+
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Map.Entry;
/**
* @author Eike Stepper
*/
-public class PackageManagerDialog extends TitleAreaDialog
+public class PackageRegistryDialog extends TitleAreaDialog
{
private static final int REGISTER_GENERATED_PACKAGES_ID = IDialogConstants.CLIENT_ID + 1;
@@ -62,9 +65,9 @@ public class PackageManagerDialog extends TitleAreaDialog
private static final int REGISTER_FILESYSTEM_PACKAGES_ID = IDialogConstants.CLIENT_ID + 3;
- private static final String TITLE = "CDO Package Manager";
+ private static final String TITLE = "CDO Package Registry";
- private static final String EMPTY = "";
+ private static final Color GRAY = UIUtil.getDisplay().getSystemColor(SWT.COLOR_GRAY);
private IWorkbenchPage page;
@@ -72,7 +75,7 @@ public class PackageManagerDialog extends TitleAreaDialog
private TableViewer viewer;
- public PackageManagerDialog(IWorkbenchPage page, CDOSession session)
+ public PackageRegistryDialog(IWorkbenchPage page, CDOSession session)
{
super(new Shell(page.getWorkbenchWindow().getShell()));
this.page = page;
@@ -99,12 +102,13 @@ public class PackageManagerDialog extends TitleAreaDialog
table.setHeaderVisible(true);
table.setLayoutData(UIUtil.createGridData());
- addColumn(table, "Package", 400, SWT.LEFT);
- addColumn(table, "Registry", 80, SWT.CENTER);
- addColumn(table, "Repository", 80, SWT.CENTER);
+ addColumn(table, "Package", 450, SWT.LEFT);
+ addColumn(table, "State", 80, SWT.CENTER);
+ addColumn(table, "Type", 80, SWT.CENTER);
+ addColumn(table, "Original", 80, SWT.CENTER);
- viewer.setContentProvider(new ContentProvider());
- viewer.setLabelProvider(new LabelProvider());
+ viewer.setContentProvider(new EPackageContentProvider());
+ viewer.setLabelProvider(new EPackageLabelProvider());
viewer.setInput(session);
return composite;
@@ -113,12 +117,21 @@ public class PackageManagerDialog extends TitleAreaDialog
@Override
protected void createButtonsForButtonBar(Composite parent)
{
- createButton(parent, REGISTER_GENERATED_PACKAGES_ID, "Generated...", false);
+ Button button = createButton(parent, REGISTER_GENERATED_PACKAGES_ID, "Generated...", false);
+ button.setEnabled(isGlobalPackageAvaliable());
+
createButton(parent, REGISTER_WORKSPACE_PACKAGES_ID, "Workspace...", false);
createButton(parent, REGISTER_FILESYSTEM_PACKAGES_ID, "Filesystem...", false);
createButton(parent, IDialogConstants.CLOSE_ID, IDialogConstants.CLOSE_LABEL, false);
}
+ private boolean isGlobalPackageAvaliable()
+ {
+ Set<String> uris = new HashSet<String>(EPackage.Registry.INSTANCE.keySet());
+ uris.removeAll(session.getPackageRegistry().keySet());
+ return !uris.isEmpty();
+ }
+
@Override
protected void buttonPressed(int buttonId)
{
@@ -163,65 +176,6 @@ public class PackageManagerDialog extends TitleAreaDialog
}
}
- protected Image getContentIcon(Content content)
- {
- return null;
- }
-
- protected String getEPackageText(Object ePackage)
- {
- if (ePackage == EcorePackage.eINSTANCE)
- {
- return "ECORE";
- }
-
- if (ePackage.getClass() == EPackageImpl.class)
- {
- return "DYNAMIC";
- }
-
- String uri = EMPTY;
- if (ePackage instanceof EPackage.Descriptor)
- {
- CDOPackageRegistry registry = session.getPackageRegistry();
- for (Map.Entry<String, Object> entry : registry.entrySet())
- {
- if (entry.getValue() == ePackage)
- {
- uri = entry.getKey();
- break;
- }
- }
- }
- else
- {
- uri = ((EPackage)ePackage).getNsURI();
- }
-
- CDOPackageType packageType = CDOPackageTypeRegistry.INSTANCE.get(uri);
- if (packageType == null)
- {
- return "?";
- }
-
- return packageType.toString();
- }
-
- protected String getCDOPackageText(CDOPackage cdoPackage)
- {
- if (cdoPackage.isSystem())
- {
- return "SYSTEM";
- }
-
- if (!cdoPackage.isPersistent())
- {
- return EMPTY;
- }
-
- return cdoPackage.isDynamic() ? "DYNAMIC" : "STATIC";
- }
-
private void addColumn(Table table, String title, int width, int alignment)
{
TableColumn column = new TableColumn(table, alignment);
@@ -229,6 +183,11 @@ public class PackageManagerDialog extends TitleAreaDialog
column.setWidth(width);
}
+ protected Image getContentIcon(Content content)
+ {
+ return null;
+ }
+
protected void refreshViewer()
{
page.getWorkbenchWindow().getShell().getDisplay().syncExec(new Runnable()
@@ -249,56 +208,107 @@ public class PackageManagerDialog extends TitleAreaDialog
/**
* @author Eike Stepper
*/
- public class LabelProvider extends BaseLabelProvider implements ITableLabelProvider
+ public class EPackageLabelProvider extends BaseLabelProvider implements ITableLabelProvider, IColorProvider
{
- public LabelProvider()
+ public EPackageLabelProvider()
{
}
public String getColumnText(Object element, int columnIndex)
{
- if (element instanceof Content)
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, Object> entry = (Entry<String, Object>)element;
+ CDOPackageInfo packageInfo = CDOModelUtil.getPackageInfo(entry.getValue(), session.getPackageRegistry());
+ if (packageInfo != null)
{
- Content content = (Content)element;
switch (columnIndex)
{
case 0:
- return content.getPackageURI();
+ return packageInfo.getPackageURI();
+
case 1:
- return content.getEPackage() == null ? EMPTY : getEPackageText(content.getEPackage());
+ return packageInfo.getPackageUnit().getState().toString();
+
case 2:
- return content.getCDOPackage() == null ? EMPTY : getCDOPackageText(content.getCDOPackage());
+ if (packageInfo.getPackageUnit().getType() == Type.UNKNOWN)
+ {
+ return "?";
+ }
+
+ return packageInfo.getPackageUnit().getType().toString();
+
+ case 3:
+ return packageInfo.getPackageUnit().getOriginalType().toString();
}
}
- return element.toString();
+ switch (columnIndex)
+ {
+ case 0:
+ return entry.getKey();
+
+ default:
+ return "";
+ }
}
public Image getColumnImage(Object element, int columnIndex)
{
- if (element instanceof Content)
+ if (columnIndex == 0)
{
- Content content = (Content)element;
- if (columnIndex == 0)
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, Object> entry = (Entry<String, Object>)element;
+ CDOPackageInfo packageInfo = CDOModelUtil.getPackageInfo(entry.getValue(), session.getPackageRegistry());
+ if (packageInfo != null)
{
- return getContentIcon(content);
+ switch (packageInfo.getPackageUnit().getType())
+ {
+ case LEGACY:
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_LEGACY).createImage();
+
+ case NATIVE:
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_NATIVE).createImage();
+
+ case DYNAMIC:
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_DYNAMIC).createImage();
+ }
}
+
+ return SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE_UNKNOWN).createImage();
}
return null;
}
+
+ public Color getBackground(Object element)
+ {
+ return null;
+ }
+
+ public Color getForeground(Object element)
+ {
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, Object> entry = (Entry<String, Object>)element;
+ CDOPackageInfo packageInfo = CDOModelUtil.getPackageInfo(entry.getValue(), session.getPackageRegistry());
+ if (packageInfo != null)
+ {
+ return null;
+ }
+
+ return GRAY;
+ }
}
/**
* @author Eike Stepper
*/
- public static class ContentProvider implements IStructuredContentProvider
+ public static class EPackageContentProvider implements IStructuredContentProvider
{
private static final Object[] NO_ELEMENTS = {};
private CDOSession session;
- public ContentProvider()
+ public EPackageContentProvider()
{
}
@@ -324,107 +334,7 @@ public class PackageManagerDialog extends TitleAreaDialog
return NO_ELEMENTS;
}
- Map<String, Content> map = new HashMap<String, Content>();
- for (Entry<String, Object> entry : session.getPackageRegistry().entrySet())
- {
- String packageURI = entry.getKey();
- Content content = new Content(packageURI);
- map.put(packageURI, content);
- content.setEPackage(entry.getValue());
- }
-
- for (CDOPackage cdoPackage : session.getPackageManager().getPackages())
- {
- String packageURI = cdoPackage.getPackageURI();
- Content content = map.get(packageURI);
- if (content == null)
- {
- content = new Content(packageURI);
- map.put(packageURI, content);
- }
-
- content.setCDOPackage(cdoPackage);
- }
-
- ArrayList<Content> list = new ArrayList<Content>(map.values());
- Collections.sort(list);
- return list.toArray(new Content[list.size()]);
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static final class Content implements Comparable<Content>
- {
- private String packageURI;
-
- private Object ePackage;
-
- private CDOPackage cdoPackage;
-
- public Content(String packageURI)
- {
- this.packageURI = packageURI;
- }
-
- public String getPackageURI()
- {
- return packageURI;
- }
-
- public Object getEPackage()
- {
- return ePackage;
- }
-
- public void setEPackage(Object ePackage)
- {
- this.ePackage = ePackage;
- }
-
- public CDOPackage getCDOPackage()
- {
- return cdoPackage;
- }
-
- public void setCDOPackage(CDOPackage cdoPackage)
- {
- this.cdoPackage = cdoPackage;
- }
-
- public int compareTo(Content content)
- {
- return packageURI.compareTo(content.packageURI);
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if (obj == this)
- {
- return true;
- }
-
- if (obj instanceof Content)
- {
- Content that = (Content)obj;
- return ObjectUtil.equals(packageURI, that.packageURI);
- }
-
- return false;
- }
-
- @Override
- public int hashCode()
- {
- return ObjectUtil.hashCode(packageURI);
- }
-
- @Override
- public String toString()
- {
- return packageURI;
+ return EMFUtil.getSortedRegistryEntries(session.getPackageRegistry());
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/SelectPackageDialog.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/SelectPackageDialog.java
index 74248460ce..d795f40904 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/SelectPackageDialog.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/SelectPackageDialog.java
@@ -7,17 +7,19 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.internal.ui.dialogs;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit.Type;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
-import org.eclipse.emf.cdo.session.CDOPackageType;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.net4j.util.ui.widgets.BaseDialog;
+import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.jface.viewers.CheckboxTableViewer;
@@ -73,7 +75,7 @@ public class SelectPackageDialog extends BaseDialog<CheckboxTableViewer>
viewer.getTable().setLayoutData(UIUtil.createGridData());
viewer.setContentProvider(new PackageContentProvider());
viewer.setLabelProvider(new PackageLabelProvider());
- viewer.setInput(CDOPackageTypeRegistry.INSTANCE);
+ viewer.setInput(EPackage.Registry.INSTANCE);
String[] uris = OM.PREF_HISTORY_SELECT_PACKAGES.getValue();
if (uris != null)
@@ -116,7 +118,7 @@ public class SelectPackageDialog extends BaseDialog<CheckboxTableViewer>
public Object[] getElements(Object inputElement)
{
- Set<String> uris = new HashSet<String>(CDOPackageTypeRegistry.INSTANCE.keySet());
+ Set<String> uris = new HashSet<String>(EPackage.Registry.INSTANCE.keySet());
uris.removeAll(excludedURIs);
List<String> elements = new ArrayList<String>(uris);
@@ -147,14 +149,20 @@ public class SelectPackageDialog extends BaseDialog<CheckboxTableViewer>
{
if (element instanceof String)
{
- CDOPackageType packageType = CDOPackageTypeRegistry.INSTANCE.get(element);
- switch (packageType)
+ Type type = CDOPackageTypeRegistry.INSTANCE.lookup((String)element);
+ switch (type)
{
case LEGACY:
return SharedIcons.getImage(SharedIcons.OBJ_EPACKAGE_LEGACY);
case NATIVE:
return SharedIcons.getImage(SharedIcons.OBJ_EPACKAGE_NATIVE);
+
+ case DYNAMIC:
+ return SharedIcons.getImage(SharedIcons.OBJ_EPACKAGE_DYNAMIC);
+
+ case UNKNOWN:
+ return SharedIcons.getImage(SharedIcons.OBJ_EPACKAGE_UNKNOWN);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dnd/CDOObjectDropAdapter.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dnd/CDOObjectDropAdapter.java
index 34232c7f3b..3ef81cbc18 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dnd/CDOObjectDropAdapter.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dnd/CDOObjectDropAdapter.java
@@ -54,7 +54,7 @@ public class CDOObjectDropAdapter extends DNDDropAdapter<TreeSelection>
elementsToAdd.add((CDOObject)obj);
}
}
-
+
objectContainer.addAllElements(elementsToAdd);
return true;
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
index 9f851b89dd..b71b8a8569 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
@@ -12,14 +12,15 @@
package org.eclipse.emf.cdo.internal.ui.editor;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
import org.eclipse.emf.cdo.internal.ui.dialogs.BulkAddDialog;
import org.eclipse.emf.cdo.internal.ui.dialogs.RollbackTransactionDialog;
-import org.eclipse.emf.cdo.session.CDOSessionPackageManager;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.ui.CDOEditorInput;
import org.eclipse.emf.cdo.ui.CDOEventHandler;
@@ -50,7 +51,10 @@ import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.resource.Resource;
@@ -77,7 +81,6 @@ import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
import org.eclipse.emf.edit.ui.util.EditUIUtil;
import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
-import org.eclipse.emf.spi.cdo.InternalCDOTransaction;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
@@ -91,6 +94,8 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
@@ -100,6 +105,7 @@ import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
@@ -152,9 +158,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.EventObject;
import java.util.HashMap;
import java.util.Iterator;
@@ -2075,45 +2081,88 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv
protected boolean populateNewRoot(MenuManager menuManager)
{
boolean populated = false;
- CDOSessionPackageManager packageManager = view.getSession().getPackageManager();
- List<CDOPackage> cdoPackages = Arrays.asList(packageManager.getPackages());
- Collections.sort(cdoPackages);
+ CDOPackageRegistry packageRegistry = view.getSession().getPackageRegistry();
+ for (Map.Entry<String, Object> entry : EMFUtil.getSortedRegistryEntries(packageRegistry))
+ {
+ IContributionItem item = populateSubMenu(entry.getKey(), entry.getValue(), packageRegistry);
+ if (item != null)
+ {
+ menuManager.add(item);
+ populated = true;
+ }
+ }
+
+ return populated;
+ }
- for (CDOPackage cdoPackage : cdoPackages)
+ private IContributionItem populateSubMenu(String nsURI, Object value, final CDOPackageRegistry packageRegistry)
+ {
+ ImageDescriptor imageDescriptor = SharedIcons.getDescriptor(SharedIcons.OBJ_EPACKAGE);
+ final MenuManager submenuManager = new MenuManager(nsURI, imageDescriptor, nsURI);
+ if (value instanceof EPackage)
{
- if (!cdoPackage.isSystem())
+ EPackage ePackage = (EPackage)value;
+ CDOPackageInfo packageInfo = packageRegistry.getPackageInfo(ePackage);
+ CDOPackageUnit packageUnit = packageInfo.getPackageUnit();
+ if (packageUnit.isSystem())
{
- try
- {
- packageManager.convert(cdoPackage);
- }
- catch (Exception ex)
- {
- continue;
- }
+ return null;
+ }
- List<CDOClass> cdoClasses = Arrays.asList(cdoPackage.getConcreteClasses());
- Collections.sort(cdoClasses);
- // TODO Sorting by class name may not have the desired effect if the labels are computed by an ItemProvider!
+ populateSubMenu(ePackage, submenuManager);
+ }
+ else
+ {
+ submenuManager.add(new Action("Calculating...")
+ {
+ });
- if (!cdoClasses.isEmpty())
+ submenuManager.addMenuListener(new IMenuListener()
+ {
+ public void menuAboutToShow(IMenuManager manager)
{
- MenuManager submenuManager = new MenuManager(cdoPackage.getPackageURI());
+ String nsURI = submenuManager.getMenuText();
+ EPackage ePackage = packageRegistry.getEPackage(nsURI);
+ submenuManager.removeAll();
+ populateSubMenu(ePackage, submenuManager);
+ }
+ });
+ }
- for (CDOClass cdoClass : cdoClasses)
- {
- // TODO Optimize/cache this?
- CreateRootAction action = new CreateRootAction(cdoClass);
- submenuManager.add(action);
- populated = true;
- }
+ return submenuManager;
+ }
- menuManager.add(submenuManager);
+ private void populateSubMenu(EPackage ePackage, final MenuManager submenuManager)
+ {
+ List<EClass> eClasses = new ArrayList<EClass>();
+ for (EClassifier eClassifier : ePackage.getEClassifiers())
+ {
+ if (eClassifier instanceof EClass)
+ {
+ EClass eClass = (EClass)eClassifier;
+ if (!eClass.isAbstract() && !eClass.isInterface())
+ {
+ eClasses.add(eClass);
}
}
}
- return populated;
+ if (!eClasses.isEmpty())
+ {
+ Collections.sort(eClasses, new Comparator<EClass>()
+ {
+ public int compare(EClass o1, EClass o2)
+ {
+ return o1.getName().compareTo(o2.getName());
+ }
+ });
+
+ for (EClass eClass : eClasses)
+ {
+ CreateRootAction action = new CreateRootAction(eClass);
+ submenuManager.add(action);
+ }
+ }
}
/**
@@ -2345,12 +2394,12 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv
*/
private final class CreateRootAction extends LongRunningAction
{
- private CDOClass cdoClass;
+ private EClass eClass;
- private CreateRootAction(CDOClass cdoClass)
+ private CreateRootAction(EClass eClass)
{
- super(getEditorSite().getPage(), cdoClass.getName(), SharedIcons.getDescriptor(SharedIcons.OBJ_ECLASS));
- this.cdoClass = cdoClass;
+ super(getEditorSite().getPage(), eClass.getName(), SharedIcons.getDescriptor(SharedIcons.OBJ_ECLASS));
+ this.eClass = eClass;
}
@Override
@@ -2380,7 +2429,7 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv
if (resource != null)
{
- InternalCDOObject object = (InternalCDOObject)((InternalCDOTransaction)view).newInstance(cdoClass);
+ InternalCDOObject object = (InternalCDOObject)EcoreUtil.create(eClass);
resource.getContents().add(object.cdoInternalInstance());
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOEditorInput.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOEditorInput.java
index b12002f357..be6f590a7a 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOEditorInput.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOEditorInput.java
@@ -226,7 +226,7 @@ public class CDOEditorInput extends PlatformObject implements IEditorInput
OM.LOG.error(ex);
}
}
-
+
return result.toArray(new IEditorReference[result.size()]);
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java
index 0d13a43aea..28bdb169b9 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java
@@ -7,10 +7,13 @@
*
* Contributors:
* Eike Stepper - initial API and implementation
- * Victor Roldan Betancort - http://bugs.eclipse.org/244801
+ * Victor Roldan Betancort - maintenance
*/
package org.eclipse.emf.cdo.ui;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit.Type;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
import org.eclipse.emf.cdo.internal.ui.actions.CloseSessionAction;
import org.eclipse.emf.cdo.internal.ui.actions.CloseViewAction;
@@ -29,8 +32,6 @@ import org.eclipse.emf.cdo.internal.ui.actions.RegisterSinglePackageAction;
import org.eclipse.emf.cdo.internal.ui.actions.RegisterWorkspacePackagesAction;
import org.eclipse.emf.cdo.internal.ui.actions.ReloadViewAction;
import org.eclipse.emf.cdo.internal.ui.actions.RollbackTransactionAction;
-import org.eclipse.emf.cdo.session.CDOPackageType;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.view.CDOAudit;
@@ -41,6 +42,8 @@ import org.eclipse.net4j.util.ui.actions.SafeAction;
import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
import org.eclipse.net4j.util.ui.views.IElementFilter;
+import org.eclipse.emf.ecore.EPackage;
+
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
@@ -53,10 +56,7 @@ import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
/**
* @author Eike Stepper
@@ -232,25 +232,36 @@ public class CDOItemProvider extends ContainerItemProvider<IContainer<Object>>
*/
protected boolean fillGenerated(MenuManager manager, CDOSession session)
{
- Set<Map.Entry<String, CDOPackageType>> entrySet = CDOPackageTypeRegistry.INSTANCE.entrySet();
- List<Map.Entry<String, CDOPackageType>> entryList = new ArrayList<Map.Entry<String, CDOPackageType>>(entrySet);
- Collections.sort(entryList, new Comparator<Map.Entry<String, CDOPackageType>>()
+ List<String> registeredURIs = new ArrayList<String>(EPackage.Registry.INSTANCE.keySet());
+ Collections.sort(registeredURIs, new Comparator<String>()
{
- public int compare(Map.Entry<String, CDOPackageType> e1, Map.Entry<String, CDOPackageType> e2)
+ public int compare(String o1, String o2)
{
- return e1.getKey().compareTo(e2.getKey());
+ return o1.compareTo(o2);
}
});
- Set<String> registeredURIs = new HashSet<String>(session.getPackageRegistry().keySet());
boolean added = false;
- for (Map.Entry<String, CDOPackageType> entry : entryList)
+ CDOPackageRegistry packageRegistry = session.getPackageRegistry();
+ for (String packageURI : registeredURIs)
{
- String packageURI = entry.getKey();
- if (!registeredURIs.contains(packageURI))
+ if (!packageRegistry.containsKey(packageURI))
{
- manager.add(new RegisterSinglePackageAction(page, session, packageURI, entry.getValue()));
- added = true;
+ Type type = CDOPackageTypeRegistry.INSTANCE.lookup(packageURI);
+ if (type == Type.NATIVE)
+ {
+ EPackage ePackage = packageRegistry.getEPackage(packageURI);
+ if (ePackage == null)
+ {
+ ePackage = EPackage.Registry.INSTANCE.getEPackage(packageURI);
+ }
+
+ if (ePackage != null)
+ {
+ manager.add(new RegisterSinglePackageAction(page, session, packageURI));
+ added = true;
+ }
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
index 4e82505864..57a615f8d3 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
@@ -158,6 +158,11 @@ public class SessionComposite extends Composite
return automaticButton;
}
+ public boolean isAutomaticRegistry()
+ {
+ return automaticRegistry;
+ }
+
public String getSessionDescription()
{
StringBuilder builder = new StringBuilder();
diff --git a/plugins/org.eclipse.emf.cdo/.classpath b/plugins/org.eclipse.emf.cdo/.classpath
index 64c5e31b7a..25fcb46b8e 100644
--- a/plugins/org.eclipse.emf.cdo/.classpath
+++ b/plugins/org.eclipse.emf.cdo/.classpath
@@ -2,6 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry excluding="org/eclipse/emf/internal/cdo/session/_CDOPackageRegistryImpl.java|org/eclipse/emf/internal/cdo/session/_CDOSessionPackageManagerImpl.java|org/eclipse/emf/cdo/session/_CDOPackageRegistry.java" kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/plugins/org.eclipse.emf.cdo/.settings/.api_filters b/plugins/org.eclipse.emf.cdo/.settings/.api_filters
deleted file mode 100644
index 77aa9a2d76..0000000000
--- a/plugins/org.eclipse.emf.cdo/.settings/.api_filters
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.emf.cdo" version="2">
- <resource path="src/org/eclipse/emf/internal/cdo/CDOSessionImpl.java" type="org.eclipse.emf.internal.cdo.session.CDOSessionImpl">
- <filter id="643842064">
- <message_arguments>
- <message_argument value="CDOClientProtocol"/>
- <message_argument value="CDOSessionImpl"/>
- <message_argument value="getProtocol()"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/CDOStateMachine.java" type="org.eclipse.emf.internal.cdo.CDOStateMachine">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOStateMachine"/>
- <message_argument value="commit(InternalCDOObject, CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/InternalCDOCommitContext.java" type="org.eclipse.emf.spi.cdo.InternalCDOCommitContext">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="InternalCDOCommitContext"/>
- <message_argument value="postCommit(CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/CDOXATransactionCommitContext.java" type="org.eclipse.emf.internal.cdo.transaction.CDOXACommitContextImpl">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOXATransactionCommitContext"/>
- <message_argument value="setResult(CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- <filter id="643842064">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOXATransactionCommitContext"/>
- <message_argument value="getResult()"/>
- </message_arguments>
- </filter>
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOXATransactionCommitContext"/>
- <message_argument value="postCommit(CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/CDOXATransactionImpl.java" type="org.eclipse.emf.internal.cdo.CDOXATransactionImpl$CDOXAState">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOXAState"/>
- <message_argument value="check_result(CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/InternalCDOObject.java" type="org.eclipse.emf.spi.cdo.InternalCDOObject">
- <filter id="1211105284">
- <message_arguments>
- <message_argument value="cdoInternalCleanup()"/>
- </message_arguments>
- </filter>
- <filter id="1211105284">
- <message_arguments>
- <message_argument value="cdoInternalPostLoad(boolean)"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/internal/cdo/CDOCommitContext.java" type="org.eclipse.emf.internal.cdo.CDOCommitContext">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="CommitTransactionResult"/>
- <message_argument value="CDOCommitContext"/>
- <message_argument value="postCommit(CommitTransactionResult)"/>
- </message_arguments>
- </filter>
- </resource>
-</component>
diff --git a/plugins/org.eclipse.emf.cdo/about.ini b/plugins/org.eclipse.emf.cdo/about.ini
index b7e87ca285..32006ae5d6 100644
--- a/plugins/org.eclipse.emf.cdo/about.ini
+++ b/plugins/org.eclipse.emf.cdo/about.ini
@@ -5,7 +5,7 @@
# This file does not need to be translated.
# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%featureText
+aboutText=%featureText
# Property "featureImage" contains path to feature image (32x32)
featureImage=modeling32.png
diff --git a/plugins/org.eclipse.emf.cdo/model/eresource.ecore b/plugins/org.eclipse.emf.cdo/model/eresource.ecore
index 95b5a102ba..49b93de853 100644
--- a/plugins/org.eclipse.emf.cdo/model/eresource.ecore
+++ b/plugins/org.eclipse.emf.cdo/model/eresource.ecore
@@ -2,7 +2,7 @@
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="eresource"
- nsURI="http://www.eclipse.org/emf/CDO/resource/2.0.0" nsPrefix="eresource">
+ nsURI="http://www.eclipse.org/emf/CDO/Eresource/2.0.0" nsPrefix="eresource">
<eClassifiers xsi:type="ecore:EClass" name="CDOResourceNode" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" name="folder" eType="#//CDOResourceFolder"
eOpposite="#//CDOResourceFolder/nodes"/>
diff --git a/plugins/org.eclipse.emf.cdo/model/resource.genmodel b/plugins/org.eclipse.emf.cdo/model/eresource.genmodel
index 9472bf48ee..9472bf48ee 100644
--- a/plugins/org.eclipse.emf.cdo/model/resource.genmodel
+++ b/plugins/org.eclipse.emf.cdo/model/eresource.genmodel
diff --git a/plugins/org.eclipse.emf.cdo/plugin.xml b/plugins/org.eclipse.emf.cdo/plugin.xml
index 20663468e5..a9476075a2 100644
--- a/plugins/org.eclipse.emf.cdo/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo/plugin.xml
@@ -37,7 +37,7 @@
<extension
point="org.eclipse.emf.ecore.generated_package">
<package
- uri="http://www.eclipse.org/emf/CDO/resource/2.0.0"
+ uri="http://www.eclipse.org/emf/CDO/Eresource/2.0.0"
class="org.eclipse.emf.cdo.eresource.EresourcePackage"
genModel="model/resource.genmodel"/>
</extension>
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOObject.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOObject.java
index 59452e7cb9..dc1c6618f3 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOObject.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOObject.java
@@ -12,7 +12,6 @@ package org.eclipse.emf.cdo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.view.CDOView;
@@ -44,14 +43,6 @@ public interface CDOObject extends EObject
public CDOID cdoID();
/**
- * Returns the immutable {@link CDOClass class} of this object. This method must only be called if this object is
- * properly associated with a {@link CDOView view}, i.e. if {@link #cdoView()} does not return <code>null</code> .
- *
- * @return Never <code>null</code>.
- */
- public CDOClass cdoClass();
-
- /**
* Returns the local {@link CDOState state} of this object.
*/
public CDOState cdoState();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
index f2b4b9292e..5105f5df69 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
@@ -43,6 +43,13 @@ import org.eclipse.core.runtime.IProgressMonitor;
public interface CDOResource extends CDOResourceNode, Resource
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* @ADDED
* @since 2.0
*/
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java
index 9fdca62ee0..2fabd49262 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java
@@ -30,6 +30,13 @@ import org.eclipse.emf.common.util.EList;
public interface CDOResourceFolder extends CDOResourceNode
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* Returns the value of the '<em><b>Nodes</b></em>' containment reference list. The list contents are of type
* {@link org.eclipse.emf.cdo.eresource.CDOResourceNode}. It is bidirectional and its opposite is '
* {@link org.eclipse.emf.cdo.eresource.CDOResourceNode#getFolder <em>Folder</em>}'. <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceNode.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceNode.java
index d72ea31141..3f731d76b0 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceNode.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceNode.java
@@ -32,6 +32,13 @@ import org.eclipse.emf.cdo.CDOObject;
public interface CDOResourceNode extends CDOObject
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* @ADDED
* @since 2.0
*/
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourceFactory.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourceFactory.java
index 03a306cf66..b67610dccd 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourceFactory.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourceFactory.java
@@ -22,6 +22,13 @@ import org.eclipse.emf.ecore.EFactory;
public interface EresourceFactory extends EFactory
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* The singleton instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourcePackage.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourcePackage.java
index 6140166998..9dde53858a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourcePackage.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/EresourcePackage.java
@@ -33,6 +33,13 @@ import org.eclipse.emf.ecore.EReference;
public interface EresourcePackage extends EPackage
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
@@ -44,7 +51,7 @@ public interface EresourcePackage extends EPackage
*
* @generated
*/
- String eNS_URI = "http://www.eclipse.org/emf/CDO/resource/2.0.0";
+ String eNS_URI = "http://www.eclipse.org/emf/CDO/Eresource/2.0.0";
/**
* The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java
index d713966926..e07eb4735a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java
@@ -36,6 +36,13 @@ public class CDOResourceFolderImpl extends CDOResourceNodeImpl implements CDORes
*
* @generated
*/
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
protected CDOResourceFolderImpl()
{
super();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
index afc3422dc6..47d38f5b7f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.eresource.impl;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
@@ -82,6 +83,13 @@ import java.util.Map;
*/
public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource, Resource.Internal
{
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
private static final EReference CDO_RESOURCE_CONTENTS = EresourcePackage.eINSTANCE.getCDOResource_Contents();
/**
@@ -511,7 +519,8 @@ public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource,
return null;
}
- CDOID cdoID = CDOIDUtil.read(uriFragment, cdoView().getSession().getPackageManager().getCDOIDObjectFactory());
+ CDOIDObjectFactory cdoidObjectFactory = cdoView().getSession();
+ CDOID cdoID = CDOIDUtil.read(uriFragment, cdoidObjectFactory);
if (CDOIDUtil.isNull(cdoID) || cdoID.isTemporary() && !cdoView().isObjectRegistered(cdoID))
{
return null;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceNodeImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceNodeImpl.java
index eadc14498f..8f97dbbeff 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceNodeImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceNodeImpl.java
@@ -47,6 +47,13 @@ public abstract class CDOResourceNodeImpl extends CDOObjectImpl implements CDORe
*
* @generated
*/
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
protected CDOResourceNodeImpl()
{
super();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java
index 23738ff774..ad35ec04b4 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java
@@ -31,6 +31,13 @@ import org.eclipse.emf.ecore.plugin.EcorePlugin;
public class EresourceFactoryImpl extends EFactoryImpl implements EresourceFactory
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
@@ -40,7 +47,7 @@ public class EresourceFactoryImpl extends EFactoryImpl implements EresourceFacto
try
{
EresourceFactory theEresourceFactory = (EresourceFactory)EPackage.Registry.INSTANCE
- .getEFactory("http://www.eclipse.org/emf/CDO/resource/2.0.0");
+ .getEFactory("http://www.eclipse.org/emf/CDO/Eresource/2.0.0");
if (theEresourceFactory != null)
{
return theEresourceFactory;
@@ -74,9 +81,9 @@ public class EresourceFactoryImpl extends EFactoryImpl implements EresourceFacto
switch (eClass.getClassifierID())
{
case EresourcePackage.CDO_RESOURCE_FOLDER:
- return createCDOResourceFolder();
+ return (EObject)createCDOResourceFolder();
case EresourcePackage.CDO_RESOURCE:
- return createCDOResource();
+ return (EObject)createCDOResource();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java
index f9f0673191..3076394110 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java
@@ -38,6 +38,13 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
*
* @generated
*/
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
private EClass cdoResourceNodeEClass = null;
/**
@@ -121,9 +128,7 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
public static EresourcePackage init()
{
if (isInited)
- {
return (EresourcePackage)EPackage.Registry.INSTANCE.getEPackage(EresourcePackage.eNS_URI);
- }
// Obtain or create and register package
EresourcePackageImpl theEresourcePackage = (EresourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof EresourcePackageImpl ? EPackage.Registry.INSTANCE
@@ -369,9 +374,7 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
public void createPackageContents()
{
if (isCreated)
- {
return;
- }
isCreated = true;
// Create classes and their features
@@ -416,9 +419,7 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
public void initializePackageContents()
{
if (isInitialized)
- {
return;
- }
isInitialized = true;
// Initialize package
@@ -434,15 +435,15 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
// Set bounds for type parameters
// Add supertypes to classes
- cdoResourceFolderEClass.getESuperTypes().add(getCDOResourceNode());
- cdoResourceEClass.getESuperTypes().add(getCDOResourceNode());
+ cdoResourceFolderEClass.getESuperTypes().add(this.getCDOResourceNode());
+ cdoResourceEClass.getESuperTypes().add(this.getCDOResourceNode());
// Initialize classes and features; add operations and parameters
initEClass(cdoResourceNodeEClass, CDOResourceNode.class, "CDOResourceNode", IS_ABSTRACT, !IS_INTERFACE,
IS_GENERATED_INSTANCE_CLASS);
- initEReference(getCDOResourceNode_Folder(), getCDOResourceFolder(), getCDOResourceFolder_Nodes(), "folder", null,
- 0, 1, CDOResourceNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
- !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCDOResourceNode_Folder(), this.getCDOResourceFolder(), this.getCDOResourceFolder_Nodes(),
+ "folder", null, 0, 1, CDOResourceNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCDOResourceNode_Name(), ecorePackage.getEString(), "name", null, 0, 1, CDOResourceNode.class,
!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCDOResourceNode_Path(), ecorePackage.getEString(), "path", null, 0, 1, CDOResourceNode.class,
@@ -450,16 +451,16 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
initEClass(cdoResourceFolderEClass, CDOResourceFolder.class, "CDOResourceFolder", !IS_ABSTRACT, !IS_INTERFACE,
IS_GENERATED_INSTANCE_CLASS);
- initEReference(getCDOResourceFolder_Nodes(), getCDOResourceNode(), getCDOResourceNode_Folder(), "nodes", null, 0,
- -1, CDOResourceFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
- !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCDOResourceFolder_Nodes(), this.getCDOResourceNode(), this.getCDOResourceNode_Folder(), "nodes",
+ null, 0, -1, CDOResourceFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(cdoResourceEClass, CDOResource.class, "CDOResource", !IS_ABSTRACT, !IS_INTERFACE,
IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getCDOResource_ResourceSet(), getResourceSet(), "resourceSet", null, 0, 1, CDOResource.class,
+ initEAttribute(getCDOResource_ResourceSet(), this.getResourceSet(), "resourceSet", null, 0, 1, CDOResource.class,
IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getCDOResource_URI(), getURI(), "uRI", null, 0, 1, CDOResource.class, IS_TRANSIENT, IS_VOLATILE,
- IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCDOResource_URI(), this.getURI(), "uRI", null, 0, 1, CDOResource.class, IS_TRANSIENT,
+ IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEReference(getCDOResource_Contents(), theEcorePackage.getEObject(), null, "contents", null, 0, -1,
CDOResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -470,9 +471,9 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka
initEAttribute(getCDOResource_TrackingModification(), ecorePackage.getEBoolean(), "trackingModification", null, 0,
1, CDOResource.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
!IS_DERIVED, IS_ORDERED);
- initEAttribute(getCDOResource_Errors(), getDiagnostic(), "errors", null, 0, -1, CDOResource.class, IS_TRANSIENT,
- IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
- initEAttribute(getCDOResource_Warnings(), getDiagnostic(), "warnings", null, 0, -1, CDOResource.class,
+ initEAttribute(getCDOResource_Errors(), this.getDiagnostic(), "errors", null, 0, -1, CDOResource.class,
+ IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCDOResource_Warnings(), this.getDiagnostic(), "warnings", null, 0, -1, CDOResource.class,
IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getCDOResource_TimeStamp(), theEcorePackage.getELong(), "timeStamp", null, 0, 1, CDOResource.class,
IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceAdapterFactory.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceAdapterFactory.java
index bcaaedd8ee..b7bc30df6e 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceAdapterFactory.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceAdapterFactory.java
@@ -30,6 +30,13 @@ import org.eclipse.emf.ecore.EObject;
public class EresourceAdapterFactory extends AdapterFactoryImpl
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java
index 9bcd26876f..ef766ec6c1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java
@@ -32,6 +32,13 @@ import java.util.List;
public class EresourceSwitch<T>
{
/**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String copyright = "Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Eike Stepper - initial API and implementation";
+
+ /**
* The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
@@ -99,9 +106,7 @@ public class EresourceSwitch<T>
CDOResourceNode cdoResourceNode = (CDOResourceNode)theEObject;
T result = caseCDOResourceNode(cdoResourceNode);
if (result == null)
- {
result = defaultCase(theEObject);
- }
return result;
}
case EresourcePackage.CDO_RESOURCE_FOLDER:
@@ -109,13 +114,9 @@ public class EresourceSwitch<T>
CDOResourceFolder cdoResourceFolder = (CDOResourceFolder)theEObject;
T result = caseCDOResourceFolder(cdoResourceFolder);
if (result == null)
- {
result = caseCDOResourceNode(cdoResourceFolder);
- }
if (result == null)
- {
result = defaultCase(theEObject);
- }
return result;
}
case EresourcePackage.CDO_RESOURCE:
@@ -123,13 +124,9 @@ public class EresourceSwitch<T>
CDOResource cdoResource = (CDOResource)theEObject;
T result = caseCDOResource(cdoResource);
if (result == null)
- {
result = caseCDOResourceNode(cdoResource);
- }
if (result == null)
- {
result = defaultCase(theEObject);
- }
return result;
}
default:
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOCollectionLoadingPolicy.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOCollectionLoadingPolicy.java
index ba2ff3f645..bad1db2911 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOCollectionLoadingPolicy.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOCollectionLoadingPolicy.java
@@ -12,9 +12,10 @@
package org.eclipse.emf.cdo.session;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* A strategy that specifies which list elememts must be present (loaded) in a {@link CDOID} list of a
* {@link CDORevision revision} when a certain list index is accessed. Implementations of this interface can control the
@@ -39,7 +40,7 @@ public interface CDOCollectionLoadingPolicy
return CDORevision.UNCHUNKED;
}
- public Object resolveProxy(CDORevisionManager revisionManager, CDORevision revision, CDOFeature feature,
+ public Object resolveProxy(CDORevisionManager revisionManager, CDORevision revision, EStructuralFeature feature,
int accessIndex, int serverIndex)
{
return revisionManager.loadChunkByRange(revision, feature, accessIndex, serverIndex, accessIndex, accessIndex);
@@ -54,9 +55,9 @@ public interface CDOCollectionLoadingPolicy
/**
* Defines a strategy to be used when the collection needs to resolve one element.
- * {@link CDORevisionManager#loadChunkByRange(CDORevision, CDOFeature, int, int, int, int)} should be used to resolve
- * them.
+ * {@link CDORevisionManager#loadChunkByRange(CDORevision, EStructuralFeature, int, int, int, int)} should be used to
+ * resolve them.
*/
- public Object resolveProxy(CDORevisionManager revisionManager, CDORevision revision, CDOFeature feature,
+ public Object resolveProxy(CDORevisionManager revisionManager, CDORevision revision, EStructuralFeature feature,
int accessIndex, int serverIndex);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageRegistry.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageRegistry.java
deleted file mode 100644
index ed65a896d9..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageRegistry.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.session;
-
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-
-import org.eclipse.emf.ecore.EPackage;
-
-/**
- * @author Eike Stepper
- * @since 2.0
- */
-public interface CDOPackageRegistry extends EPackage.Registry
-{
- /**
- * Registers a top level {@link EPackage} <b>and</b> its sub packages with this package registry.
- *
- * @param ePackage
- * a top level EPackage (i.e. a package with <code>eSuperPackage == null</code>).
- * @return the package that is registered under the <code>nsURI</code> of the top level package or <code>null</code>.
- * @throws IllegalArgumentException
- * if the given EPackage is not a top level package.
- */
- public EPackage putEPackage(EPackage ePackage) throws IllegalArgumentException;
-
- public void putPackageDescriptor(CDOPackage proxy);
-
- public CDOSession getSession();
-
- public void setSession(CDOSession session);
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageType.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageType.java
deleted file mode 100644
index ad0d58da8e..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.session;
-
-import org.eclipse.emf.internal.cdo.CDOObjectImpl;
-import org.eclipse.emf.internal.cdo.CDOStateMachine;
-
-/**
- * @author Eike Stepper
- * @since 2.0
- */
-public enum CDOPackageType
-{
- /**
- * The type of <code>EPackages</code> that have been dedicatedly generated for CDO. Instances of <code>EClasses</code>
- * of these packages are represented by {@link CDOObjectImpl} to the {@link CDOStateMachine}.
- */
- NATIVE,
-
- /**
- * The type of <code>EPackages</code> that have been normally generated for EMF. Instances of <code>EClasses</code> of
- * these packages are represented by {@link CDOAdapterImpl} to the {@link CDOStateMachine}.
- */
- LEGACY
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageTypeRegistry.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageTypeRegistry.java
deleted file mode 100644
index 852d38b42a..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOPackageTypeRegistry.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.session;
-
-import org.eclipse.net4j.util.registry.IRegistry;
-
-import org.eclipse.emf.ecore.EPackage;
-
-/**
- * Can only be used with Eclipse running!
- *
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOPackageTypeRegistry extends IRegistry<String, CDOPackageType>
-{
- public static final CDOPackageTypeRegistry INSTANCE = org.eclipse.emf.internal.cdo.session.CDOPackageTypeRegistryImpl.INSTANCE;
-
- public void register(EPackage ePackage);
-
- public void registerLegacy(String packageURI);
-
- public void registerNative(String packageURI);
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDORevisionManager.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDORevisionManager.java
index db195b3a6a..3262850dc7 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDORevisionManager.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDORevisionManager.java
@@ -11,10 +11,11 @@
*/
package org.eclipse.emf.cdo.session;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
@@ -36,6 +37,6 @@ public interface CDORevisionManager extends CDORevisionResolver
* @param toIndex
* Load objects at the client to toIndex (inclusive)
*/
- public Object loadChunkByRange(CDORevision revision, CDOFeature feature, int accessIndex, int fetchIndex,
+ public Object loadChunkByRange(CDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
int fromIndex, int toIndex);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
index 846ef66c4d..2675b583e5 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
@@ -13,7 +13,8 @@
package org.eclipse.emf.cdo.session;
import org.eclipse.emf.cdo.common.CDOCommonSession;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionManager;
@@ -39,9 +40,8 @@ import java.util.Collection;
* A session has the following responsibilities:
* <ul>
* <li> {@link CDOSession#repository() Repository information}
- * <li> {@link CDOSession#getProtocol() Connection management}
- * <li> {@link CDOSession#getPackageRegistry() Package management}
- * <li> {@link CDOSession#getPackageManager() Package information}
+ * <li> {@link CDOSession#getPackageRegistry() Package registry}
+ * <li> {@link CDOSession#getPackageUnitManager() Package unit management}
* <li> {@link CDOSession#getRevisionManager() Data management}
* <li> {@link CDOSession#getViews() View management}
* </ul>
@@ -59,23 +59,16 @@ public interface CDOSession extends CDOCommonSession, IContainer<CDOView>, IOpti
* Returns the EMF {@link EPackage.Registry package registry} that is used by all {@link EObject objects} of all
* {@link CDOView views} of this session.
* <p>
- * This registry is managed by the {@link CDOSessionPackageManager package manager} of this session. All
- * {@link EPackage packages} that are already persisted in the repository of this session are automatically registered
- * with this registry. New packages can be locally registered with this registry and are committed to the repository
- * through a {@link CDOTransaction transaction} if needed.
+ * This registry is managed by the {@link CDOPackageUnit package unit manager} of this session. All {@link EPackage
+ * packages} that are already persisted in the repository of this session are automatically registered with this
+ * registry. New packages can be locally registered with this registry and are committed to the repository through a
+ * {@link CDOTransaction transaction}, if needed.
*
- * @see #getPackageManager()
+ * @see #getPackageUnitManager()
*/
public CDOPackageRegistry getPackageRegistry();
/**
- * Returns the CDO {@link CDOSessionPackageManager package manager} that represents the CDO {@link CDOPackage
- * packages} currently stored in the repository of this session. The package manager can be used to query information
- * about the packages in the repository as well as convert between the EMF and CDO instances of these packages.
- */
- public CDOSessionPackageManager getPackageManager();
-
- /**
* Returns the CDO {@link CDORevisionManager revision manager} that manages the {@link CDORevision revisions} of the
* repository of this session.
*/
@@ -170,6 +163,11 @@ public interface CDOSession extends CDOCommonSession, IContainer<CDOView>, IOpti
*/
public interface Options extends CDOCommonSession.Options
{
+
+ public boolean isGeneratedPackageEmulationEnabled();
+
+ public void setGeneratedPackageEmulationEnabled(boolean generatedPackageEmulationEnabled);
+
/**
* Specifies whether objects will be invalidated due by other users changes.
* <p>
@@ -221,14 +219,30 @@ public interface CDOSession extends CDOCommonSession, IContainer<CDOView>, IOpti
*/
public void setRevisionFactory(CDORevisionFactory factory);
+ /**
+ * @author Eike Stepper
+ */
+ public interface GeneratedPackageEmulationEvent extends IOptionsEvent, CDOEvent
+ {
+ }
+
+ /**
+ * @author Eike Stepper
+ */
public interface PassiveUpdateEvent extends IOptionsEvent, CDOEvent
{
}
+ /**
+ * @author Eike Stepper
+ */
public interface CollectionLoadingPolicyEvent extends IOptionsEvent, CDOEvent
{
}
+ /**
+ * @author Eike Stepper
+ */
public interface RevisionFactoryEvent extends IOptionsEvent, CDOEvent
{
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionConfiguration.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionConfiguration.java
index d08f62cf77..e1237c4342 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionConfiguration.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionConfiguration.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.cdo.session;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
@@ -44,20 +45,6 @@ public interface CDOSessionConfiguration
public void setPackageRegistry(CDOPackageRegistry packageRegistry);
/**
- * The package registry must be set <b>before</b> the session is opened and can not be changed thereafter.
- *
- * @see CDOSession#getPackageRegistry()
- */
- public void setEagerPackageRegistry();
-
- /**
- * The package registry must be set <b>before</b> the session is opened and can not be changed thereafter.
- *
- * @see CDOSession#getPackageRegistry()
- */
- public void setLazyPackageRegistry();
-
- /**
* @see CDORevisionManagerImpl#getCache()
*/
public CDORevisionCache getRevisionCache();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionPackageManager.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionPackageManager.java
deleted file mode 100644
index 46d2686ced..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSessionPackageManager.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.session;
-
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-
-/**
- * Represents the CDO {@link CDOPackage packages} currently stored in the {@link CDOSession.Repository repository} of a
- * {@link CDOSession session}. A package manager can be used to query information about the CDO {@link CDOPackage
- * packages} in the repository as well as convert between the EMF and CDO instances of these packages.
- *
- * @author Eike Stepper
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 2.0
- */
-public interface CDOSessionPackageManager extends CDOPackageManager
-{
- /**
- * Returns the session this package manager is associated with.
- */
- public CDOSession getSession();
-
- /**
- * Returns the CDO instance of the given EMF package.
- */
- public CDOPackage convert(EPackage ePackage);
-
- /**
- * Returns the CDO instance of the given EMF class.
- */
- public CDOClass convert(EClass eClass);
-
- /**
- * Returns the CDO instance of the given EMF feature.
- */
- public CDOFeature convert(EStructuralFeature eFeature);
-
- /**
- * Returns the EMF instance of the given CDO package.
- */
- public EPackage convert(CDOPackage cdoPackage);
-
- /**
- * Returns the EMF instance of the given CDO class.
- */
- public EClass convert(CDOClass cdoClass);
-
- /**
- * Returns the EMF instance of the given CDO feature.
- */
- public EStructuralFeature convert(CDOFeature cdoFeature);
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
index 7aaabeed89..bcaf0be3ea 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
@@ -13,7 +13,7 @@ package org.eclipse.emf.cdo.transaction;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
@@ -34,9 +34,9 @@ public interface CDOCommitContext
public CDOTransaction getTransaction();
/**
- * Returns a list of the new {@link CDOPackage packages} that are to be committed with this commit context.
+ * Returns a list of the new {@link CDOPackageUnit package units} that are to be committed with this commit context.
*/
- public List<CDOPackage> getNewPackages();
+ public List<CDOPackageUnit> getNewPackageUnits();
/**
* Returns a map of the new {@link CDOResource resources} that are to be committed with this commit context.
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
index 1e4e6c2647..79d0ae5f58 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
@@ -16,7 +16,6 @@ package org.eclipse.emf.cdo.transaction;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.util.CDOEvent;
@@ -25,7 +24,6 @@ import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.options.IOptionsEvent;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.resource.ResourceSet;
import java.util.Map;
@@ -65,10 +63,6 @@ public interface CDOTransaction extends CDOView, CDOUserTransaction
public CDOResource getOrCreateResource(String path);
- public CDOObject newInstance(EClass eClass);
-
- public CDOObject newInstance(CDOClass cdoClass);
-
public void addHandler(CDOTransactionHandler handler);
public void removeHandler(CDOTransactionHandler handler);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
index 72c33e6335..7f780db20a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
@@ -18,7 +18,6 @@ import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
import org.eclipse.emf.cdo.session.CDOCollectionLoadingPolicy;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.transaction.CDOXATransaction;
@@ -28,7 +27,6 @@ import org.eclipse.emf.cdo.view.CDOViewSet;
import org.eclipse.emf.internal.cdo.CDOStateMachine;
import org.eclipse.emf.internal.cdo.session.CDOCollectionLoadingPolicyImpl;
-import org.eclipse.emf.internal.cdo.session.CDOPackageRegistryImpl;
import org.eclipse.emf.internal.cdo.transaction.CDOXATransactionImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
import org.eclipse.emf.internal.cdo.view.CDORevisionPrefetchingPolicyImpl;
@@ -106,22 +104,6 @@ public final class CDOUtil
/**
* @since 2.0
*/
- public static CDOPackageRegistry createEagerPackageRegistry()
- {
- return new CDOPackageRegistryImpl.Eager();
- }
-
- /**
- * @since 2.0
- */
- public static CDOPackageRegistry createLazyPackageRegistry()
- {
- return new CDOPackageRegistryImpl.Lazy();
- }
-
- /**
- * @since 2.0
- */
public static CDOXATransaction createXATransaction(CDOViewSet viewSet)
{
CDOXATransaction xaTransaction = new CDOXATransactionImpl();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/ModelUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/ModelUtil.java
new file mode 100644
index 0000000000..4576208598
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/ModelUtil.java
@@ -0,0 +1,58 @@
+/**
+ * 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:
+ * Eike Stepper - initial API and implementation
+ * Simon McDuff - maintenance
+ */
+package org.eclipse.emf.cdo.util;
+
+import org.eclipse.emf.internal.cdo.CDOFactoryImpl;
+
+import org.eclipse.net4j.util.ObjectUtil;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * @author Eike Stepper
+ */
+public final class ModelUtil
+{
+ private ModelUtil()
+ {
+ }
+
+ public static EPackage getGeneratedEPackage(EPackage ePackage)
+ {
+ String packageURI = ePackage.getNsURI();
+ if (packageURI.equals(EcorePackage.eINSTANCE.getNsURI()))
+ {
+ return EcorePackage.eINSTANCE;
+ }
+
+ EPackage.Registry registry = EPackage.Registry.INSTANCE;
+ return registry.getEPackage(packageURI);
+ }
+
+ public static EPackageImpl prepareDynamicEPackage(EPackageImpl ePackage, String nsURI)
+ {
+ CDOFactoryImpl.prepareDynamicEPackage(ePackage);
+ EPackageImpl result = ObjectUtil.equals(ePackage.getNsURI(), nsURI) ? ePackage : null;
+ for (EPackage subPackage : ePackage.getESubpackages())
+ {
+ EPackageImpl p = prepareDynamicEPackage((EPackageImpl)subPackage, nsURI);
+ if (p != null && result == null)
+ {
+ result = p;
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOFeatureAnalyzer.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOFeatureAnalyzer.java
index 39963b2e19..9d49714f40 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOFeatureAnalyzer.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOFeatureAnalyzer.java
@@ -12,10 +12,11 @@
package org.eclipse.emf.cdo.view;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.internal.cdo.analyzer.NOOPFeatureAnalyzer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* TODO Simon: JavaDoc
*
@@ -34,12 +35,12 @@ public interface CDOFeatureAnalyzer
*
* @since 2.0
*/
- public void preTraverseFeature(CDOObject revision, CDOFeature feature, int index);
+ public void preTraverseFeature(CDOObject revision, EStructuralFeature feature, int index);
/**
* TODO Simon: JavaDoc
*
* @since 2.0
*/
- public void postTraverseFeature(CDOObject revision, CDOFeature feature, int index, Object value);
+ public void postTraverseFeature(CDOObject revision, EStructuralFeature feature, int index, Object value);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOFactoryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOFactoryImpl.java
index 2668cd0047..7dc455460e 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOFactoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOFactoryImpl.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.emf.internal.cdo;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.util.CDOFactory;
import org.eclipse.emf.ecore.EClass;
@@ -32,4 +33,22 @@ public class CDOFactoryImpl extends EFactoryImpl implements CDOFactory
{
return new DynamicCDOObjectImpl(eClass);
}
+
+ /**
+ * @since 2.0
+ */
+ public static boolean prepareDynamicEPackage(Object value)
+ {
+ if (EMFUtil.isDynamicEPackage(value))
+ {
+ EPackage ePackage = (EPackage)value;
+ if (!(ePackage.getEFactoryInstance() instanceof CDOFactory))
+ {
+ ePackage.setEFactoryInstance(new CDOFactoryImpl(ePackage));
+ return true;
+ }
+ }
+
+ return false;
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
index 7744f578a9..e8f00e51e3 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
@@ -13,21 +13,18 @@ package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOType;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
+import org.eclipse.emf.cdo.internal.common.model.GenUtil;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
-import org.eclipse.emf.internal.cdo.util.GenUtil;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.ReflectUtil;
@@ -36,9 +33,12 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.impl.NotifyingListImpl;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.EAttributeImpl;
import org.eclipse.emf.ecore.impl.EClassImpl;
@@ -94,11 +94,6 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
state = CDOState.TRANSIENT;
}
- public CDOClass cdoClass()
- {
- return CDOObjectImpl.getCDOClass(this);
- }
-
public CDOState cdoState()
{
return state;
@@ -264,8 +259,8 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
// Handle values
CDOPackageRegistry packageRegistry = cdoView().getSession().getPackageRegistry();
- CDOClass cdoClass = revision.getCDOClass();
- for (CDOFeature feature : cdoClass.getAllFeatures())
+ EClass eClass = revision.getEClass();
+ for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(eClass))
{
instanceToRevisionFeature(feature, packageRegistry);
}
@@ -290,7 +285,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
}
}
- private void instanceToRevisionFeature(CDOFeature feature, CDOPackageRegistry packageRegistry)
+ private void instanceToRevisionFeature(EStructuralFeature feature, CDOPackageRegistry packageRegistry)
{
Object instanceValue = getInstanceValue(instance, feature, packageRegistry);
if (feature.isMany())
@@ -306,7 +301,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
for (Iterator<?> it = instanceList.basicIterator(); it.hasNext();)
{
Object instanceElement = it.next();
- if (instanceElement != null && feature.isReference())
+ if (instanceElement != null && feature instanceof EReference)
{
instanceElement = view.convertObjectToID(instanceElement);
}
@@ -318,7 +313,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
}
else
{
- if (instanceValue != null && feature.isReference())
+ if (instanceValue != null && feature instanceof EReference)
{
instanceValue = view.convertObjectToID(instanceValue);
}
@@ -350,8 +345,8 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
// Handle values
CDOPackageRegistry packageRegistry = cdoView().getSession().getPackageRegistry();
- CDOClass cdoClass = revision.getCDOClass();
- for (CDOFeature feature : cdoClass.getAllFeatures())
+ EClass eClass = revision.getEClass();
+ for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(eClass))
{
revisionToInstanceFeature(feature, packageRegistry);
}
@@ -377,7 +372,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
}
@SuppressWarnings("unchecked")
- private void revisionToInstanceFeature(CDOFeature feature, CDOPackageRegistry packageRegistry)
+ private void revisionToInstanceFeature(EStructuralFeature feature, CDOPackageRegistry packageRegistry)
{
Object value = revision.getValue(feature);
if (feature.isMany())
@@ -389,7 +384,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
if (value != null)
{
List<?> revisionList = (List<?>)value;
- if (feature.isReference())
+ if (feature instanceof EReference)
{
for (Object element : revisionList)
{
@@ -410,7 +405,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
}
else
{
- if (feature.isReference())
+ if (feature instanceof EReference)
{
value = getEObjectFromPotentialID(view, feature, value);
}
@@ -434,10 +429,10 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
return instance.eContainerFeatureID();
}
- private Object getInstanceValue(InternalEObject instance, CDOFeature feature, CDOPackageRegistry packageRegistry)
+ private Object getInstanceValue(InternalEObject instance, EStructuralFeature feature,
+ CDOPackageRegistry packageRegistry)
{
- EStructuralFeature eFeature = ModelUtil.getEFeature(feature, packageRegistry);
- return instance.eGet(eFeature);
+ return instance.eGet(feature);
}
private void setInstanceResource(Resource.Internal resource)
@@ -453,7 +448,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
/**
* TODO Ed: Help to fix whole mess (avoid inverse updates)
*/
- private void setInstanceValue(InternalEObject instance, CDOFeature feature, Object value)
+ private void setInstanceValue(InternalEObject instance, EStructuralFeature feature, Object value)
{
// TODO Consider EStoreEObjectImpl based objects as well!
// TODO Don't use Java reflection
@@ -461,7 +456,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
String featureName = feature.getName();
String fieldName = featureName;// TODO safeName()
Field field = ReflectUtil.getField(instanceClass, fieldName);
- if (field == null && feature.getType() == CDOType.BOOLEAN)
+ if (field == null && feature.getEType() == EcorePackage.eINSTANCE.getEBoolean())
{
if (instanceClass.isAssignableFrom(EAttributeImpl.class) || instanceClass.isAssignableFrom(EClassImpl.class)
|| instanceClass.isAssignableFrom(EDataTypeImpl.class)
@@ -524,7 +519,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
* that will be used later to resolve the proxy. <code>null</code> indicates that proxy creation will be
* avoided!
*/
- private InternalEObject getEObjectFromPotentialID(InternalCDOView view, CDOFeature feature, Object potentialID)
+ private InternalEObject getEObjectFromPotentialID(InternalCDOView view, EStructuralFeature feature, Object potentialID)
{
if (potentialID instanceof CDOID)
{
@@ -565,11 +560,9 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
* <p>
* TODO {@link InternalEObject#eResolveProxy(InternalEObject)
*/
- private InternalEObject createProxy(InternalCDOView view, CDOFeature feature, CDOID id)
+ private InternalEObject createProxy(InternalCDOView view, EStructuralFeature feature, CDOID id)
{
- CDOPackageRegistry packageRegistry = view.getSession().getPackageRegistry();
- EStructuralFeature eFeature = ModelUtil.getEFeature(feature, packageRegistry);
- EClassifier eType = eFeature.getEType();
+ EClassifier eType = feature.getEType();
Class<?> instanceClass = eType.getInstanceClass();
Class<?>[] interfaces = { instanceClass, InternalEObject.class, LegacyProxy.class };
@@ -586,10 +579,10 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
// if (!allProxiesResolved)
{
CDOPackageRegistry packageRegistry = cdoView().getSession().getPackageRegistry();
- CDOClass cdoClass = revision.getCDOClass();
- for (CDOFeature feature : cdoClass.getAllFeatures())
+ EClass eClass = revision.getEClass();
+ for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(eClass))
{
- if (feature.isReference())
+ if (feature instanceof EReference)
{
resolveProxies(feature, packageRegistry);
}
@@ -604,7 +597,7 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
* EMF with fixed bug #247130. These compile errors do not affect native models!
*/
@SuppressWarnings("unchecked")
- private void resolveProxies(CDOFeature feature, CDOPackageRegistry packageRegistry)
+ private void resolveProxies(EStructuralFeature feature, CDOPackageRegistry packageRegistry)
{
Object value = getInstanceValue(instance, feature, packageRegistry);
if (value != null)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
index dff5aded57..fdda3570b9 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
@@ -12,11 +12,11 @@ package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.spi.cdo.InternalCDOView;
@@ -55,7 +55,7 @@ public class CDOMetaWrapper extends CDOObjectWrapper
throw new UnsupportedOperationException();
}
- public CDOClass cdoClass()
+ public EClass eClass()
{
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDONotificationBuilder.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDONotificationBuilder.java
index 0bb52f550c..0afea782a9 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDONotificationBuilder.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDONotificationBuilder.java
@@ -11,7 +11,6 @@
*/
package org.eclipse.emf.internal.cdo;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOClearFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOContainerFeatureDelta;
@@ -23,9 +22,6 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORemoveFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOUnsetFeatureDelta;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
-
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -44,11 +40,8 @@ public class CDONotificationBuilder implements CDOFeatureDeltaVisitor
private InternalEObject internalObject;
- private CDOPackageRegistry packageRegistry;
-
- public CDONotificationBuilder(CDOPackageRegistry packageRegistry)
+ public CDONotificationBuilder()
{
- this.packageRegistry = packageRegistry;
}
public synchronized NotificationImpl buildNotification(InternalEObject internalObject, CDORevisionDelta delta)
@@ -125,9 +118,8 @@ public class CDONotificationBuilder implements CDOFeatureDeltaVisitor
}
}
- private int getEFeatureID(CDOFeature cdoFeature)
+ private int getEFeatureID(EStructuralFeature eFeature)
{
- EStructuralFeature eFeature = ModelUtil.getEFeature(cdoFeature, packageRegistry);
return internalObject.eClass().getFeatureID(eFeature);
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
index 473fab7faa..0ccb4a3a9c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
@@ -14,8 +14,6 @@ package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.CDOLock;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
@@ -24,9 +22,7 @@ import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.WrappedException;
@@ -139,11 +135,6 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
return cdoSettings;
}
- public CDOClass cdoClass()
- {
- return getCDOClass(this);
- }
-
/**
* @since 2.0
*/
@@ -368,21 +359,19 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
}
@SuppressWarnings("unchecked")
- private void populateRevisionFeature(InternalCDOView view, InternalCDORevision revision, EStructuralFeature eFeature,
+ private void populateRevisionFeature(InternalCDOView view, InternalCDORevision revision, EStructuralFeature feature,
Object[] eSettings, int i)
{
- CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)view.getSession().getPackageManager();
- CDOFeature cdoFeature = packageManager.getCDOFeature(eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("Populating feature {0}", cdoFeature);
+ TRACER.format("Populating feature {0}", feature);
}
Object setting = cdoBasicSettings() != null ? cdoSettings()[i] : null;
CDOStore cdoStore = cdoStore();
- if (cdoFeature.isMany())
+ if (feature.isMany())
{
if (setting != null)
{
@@ -390,15 +379,15 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
EList<Object> list = (EList<Object>)setting;
for (Object value : list)
{
- value = cdoStore.convertToCDO(cdoView(), eFeature, cdoFeature, value);
- revision.add(cdoFeature, index++, value);
+ value = cdoStore.convertToCDO(cdoView(), feature, value);
+ revision.add(feature, index++, value);
}
}
}
else
{
- setting = cdoStore.convertToCDO(cdoView(), eFeature, cdoFeature, setting);
- revision.set(cdoFeature, 0, setting);
+ setting = cdoStore.convertToCDO(cdoView(), feature, setting);
+ revision.set(feature, 0, setting);
}
}
@@ -1041,13 +1030,6 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
return eClass().getName() + "@" + id;
}
- static CDOClass getCDOClass(InternalCDOObject cdoObject)
- {
- InternalCDOView view = cdoObject.cdoView();
- CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)view.getSession().getPackageManager();
- return ModelUtil.getCDOClass(cdoObject.eClass(), packageManager);
- }
-
private CDOStore cdoStore()
{
return cdoView().getStore();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
index 1f9d7a0bbb..bd8740168e 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
@@ -13,7 +13,7 @@ package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionMerger;
+import org.eclipse.emf.cdo.spi.common.revision.CDORevisionMerger;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
index ddf034b55b..da9e1682a2 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
@@ -14,7 +14,6 @@ package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.model.CDOClass;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
@@ -32,6 +31,7 @@ import org.eclipse.net4j.util.fsm.FiniteStateMachine;
import org.eclipse.net4j.util.fsm.ITransition;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.EStoreEObjectImpl;
@@ -460,9 +460,9 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent
changeState(object, CDOState.PREPARED);
// Create new revision
- CDOClass cdoClass = object.cdoClass();
+ EClass eClass = object.eClass();
CDORevisionFactory factory = transaction.getSession().options().getRevisionFactory();
- InternalCDORevision revision = (InternalCDORevision)factory.createRevision(cdoClass, id);
+ InternalCDORevision revision = (InternalCDORevision)factory.createRevision(eClass, id);
revision.setVersion(-1);
object.cdoInternalSetRevision(revision);
@@ -693,7 +693,7 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent
* @author Eike Stepper
* @since 2.0
*/
- protected class ConflictTransition extends InvalidateTransition
+ private class ConflictTransition extends InvalidateTransition
{
@Override
public void execute(InternalCDOObject object, CDOState state, CDOEvent event, Integer version)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
index df4a284328..44cf2e9033 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStore.java
@@ -15,13 +15,11 @@
package org.eclipse.emf.internal.cdo;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
-import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.internal.common.model.core.CDOFeatureMapEntryDataTypeImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOAddFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOClearFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOContainerFeatureDeltaImpl;
@@ -34,23 +32,20 @@ import org.eclipse.emf.cdo.view.CDORevisionPrefetchingPolicy;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.om.trace.ContextTracer;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.InternalEObject.EStore;
import org.eclipse.emf.ecore.impl.EStoreEObjectImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.util.FeatureMap;
-import org.eclipse.emf.ecore.util.FeatureMapUtil;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
import org.eclipse.emf.spi.cdo.InternalCDOView;
@@ -74,12 +69,12 @@ public final class CDOStore implements EStore
private InternalCDOView view;
- // Used for optimization. Multiple call to CDStore will be sent like size and than add.
- private EStructuralFeature lastLookupEFeature;
-
- private CDOFeature lastLookupCDOFeature;
-
- private Object lock = new Object();
+ // // Used for optimization. Multiple call to CDStore will be sent like size and than add.
+ // private EStructuralFeature lastLookupEFeature;
+ //
+ // private EStructuralFeature lastLookupEStructuralFeature;
+ //
+ // private Object lock = new Object();
/**
* @since 2.0
@@ -165,141 +160,133 @@ public final class CDOStore implements EStore
throw new UnsupportedOperationException("Use getContainingFeatureID() instead");
}
- public Object get(InternalEObject eObject, EStructuralFeature eFeature, int index)
+ public Object get(InternalEObject eObject, EStructuralFeature feature, int index)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("get({0}, {1}, {2})", cdoObject, cdoFeature, index);
+ TRACER.format("get({0}, {1}, {2})", cdoObject, feature, index);
}
- view.getFeatureAnalyzer().preTraverseFeature(cdoObject, cdoFeature, index);
+ view.getFeatureAnalyzer().preTraverseFeature(cdoObject, feature, index);
InternalCDORevision revision = getRevisionForReading(cdoObject);
- Object value = revision.basicGet(cdoFeature, index);
- value = convertToEMF(view, eObject, revision, eFeature, cdoFeature, index, value);
+ Object value = revision.basicGet(feature, index);
+ value = convertToEMF(view, eObject, revision, feature, index, value);
- view.getFeatureAnalyzer().postTraverseFeature(cdoObject, cdoFeature, index, value);
+ view.getFeatureAnalyzer().postTraverseFeature(cdoObject, feature, index, value);
return value;
}
@Deprecated
- public boolean isSet(InternalEObject eObject, EStructuralFeature eFeature)
+ public boolean isSet(InternalEObject eObject, EStructuralFeature feature)
{
// Should not be called
throw new ImplementationError();
}
- public int size(InternalEObject eObject, EStructuralFeature eFeature)
+ public int size(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("size({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("size({0}, {1})", cdoObject, feature);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.size(cdoFeature);
+ return revision.size(feature);
}
- public boolean isEmpty(InternalEObject eObject, EStructuralFeature eFeature)
+ public boolean isEmpty(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("isEmpty({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("isEmpty({0}, {1})", cdoObject, feature);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.isEmpty(cdoFeature);
+ return revision.isEmpty(feature);
}
- public boolean contains(InternalEObject eObject, EStructuralFeature eFeature, Object value)
+ public boolean contains(InternalEObject eObject, EStructuralFeature feature, Object value)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("contains({0}, {1}, {2})", cdoObject, cdoFeature, value);
+ TRACER.format("contains({0}, {1}, {2})", cdoObject, feature, value);
}
- if (cdoFeature.isReference())
+ if (feature instanceof EReference)
{
value = cdoObject.cdoView().convertObjectToID(value, true);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.contains(cdoFeature, value);
+ return revision.contains(feature, value);
}
- public int indexOf(InternalEObject eObject, EStructuralFeature eFeature, Object value)
+ public int indexOf(InternalEObject eObject, EStructuralFeature feature, Object value)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("indexOf({0}, {1}, {2})", cdoObject, cdoFeature, value);
+ TRACER.format("indexOf({0}, {1}, {2})", cdoObject, feature, value);
}
- if (cdoFeature.isReference())
+ if (feature instanceof EReference)
{
value = cdoObject.cdoView().convertObjectToID(value, true);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.indexOf(cdoFeature, value);
+ return revision.indexOf(feature, value);
}
- public int lastIndexOf(InternalEObject eObject, EStructuralFeature eFeature, Object value)
+ public int lastIndexOf(InternalEObject eObject, EStructuralFeature feature, Object value)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("lastIndexOf({0}, {1}, {2})", cdoObject, cdoFeature, value);
+ TRACER.format("lastIndexOf({0}, {1}, {2})", cdoObject, feature, value);
}
- if (cdoFeature.isReference())
+ if (feature instanceof EReference)
{
value = cdoObject.cdoView().convertObjectToID(value, true);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.lastIndexOf(cdoFeature, value);
+ return revision.lastIndexOf(feature, value);
}
- public int hashCode(InternalEObject eObject, EStructuralFeature eFeature)
+ public int hashCode(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("hashCode({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("hashCode({0}, {1})", cdoObject, feature);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- return revision.hashCode(cdoFeature);
+ return revision.hashCode(feature);
}
- public Object[] toArray(InternalEObject eObject, EStructuralFeature eFeature)
+ public Object[] toArray(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("toArray({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("toArray({0}, {1})", cdoObject, feature);
}
InternalCDORevision revision = getRevisionForReading(cdoObject);
- Object[] result = revision.toArray(cdoFeature);
- if (cdoFeature.isReference())
+ Object[] result = revision.toArray(feature);
+ if (feature instanceof EReference)
{
for (int i = 0; i < result.length; i++)
{
- result[i] = resolveProxy(revision, cdoFeature, i, result[i]);
+ result[i] = resolveProxy(revision, feature, i, result[i]);
result[i] = cdoObject.cdoView().convertIDToObject(result[i]);
}
}
@@ -308,9 +295,9 @@ public final class CDOStore implements EStore
}
@SuppressWarnings("unchecked")
- public <T> T[] toArray(InternalEObject eObject, EStructuralFeature eFeature, T[] a)
+ public <T> T[] toArray(InternalEObject eObject, EStructuralFeature feature, T[] a)
{
- Object[] array = toArray(eObject, eFeature);
+ Object[] array = toArray(eObject, feature);
int size = array.length;
if (a.length < size)
@@ -327,28 +314,27 @@ public final class CDOStore implements EStore
return a;
}
- public Object set(InternalEObject eObject, EStructuralFeature eFeature, int index, Object value)
+ public Object set(InternalEObject eObject, EStructuralFeature feature, int index, Object value)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("set({0}, {1}, {2}, {3})", cdoObject, cdoFeature, index, value);
+ TRACER.format("set({0}, {1}, {2}, {3})", cdoObject, feature, index, value);
}
- value = convertToCDO(getView(), eFeature, cdoFeature, value);
+ value = convertToCDO(getView(), feature, value);
- CDOFeatureDelta delta = new CDOSetFeatureDeltaImpl(cdoFeature, index, value);
+ CDOFeatureDelta delta = new CDOSetFeatureDeltaImpl(feature, index, value);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
- if (cdoFeature.isReference())
+ if (feature instanceof EReference)
{
- Object oldValue = revision.basicGet(cdoFeature, index);
- oldValue = resolveProxy(revision, cdoFeature, index, oldValue);
+ Object oldValue = revision.basicGet(feature, index);
+ oldValue = resolveProxy(revision, feature, index, oldValue);
value = cdoObject.cdoView().convertObjectToID(value, true);
}
- Object oldValue = revision.basicSet(cdoFeature, index, value);
- oldValue = convertToEMF(cdoObject.cdoView(), eObject, revision, eFeature, cdoFeature, index, oldValue);
+ Object oldValue = revision.basicSet(feature, index, value);
+ oldValue = convertToEMF(cdoObject.cdoView(), eObject, revision, feature, index, oldValue);
return oldValue;
}
@@ -356,7 +342,7 @@ public final class CDOStore implements EStore
* @since 2.0
*/
public Object convertToEMF(InternalCDOView view, EObject eObject, InternalCDORevision revision,
- EStructuralFeature eFeature, CDOFeature cdoFeature, int index, Object value)
+ EStructuralFeature feature, int index, Object value)
{
if (value != null)
{
@@ -365,16 +351,16 @@ public final class CDOStore implements EStore
return EStoreEObjectImpl.NIL;
}
- if (cdoFeature.isMany() && EStore.NO_INDEX != index)
+ if (feature.isMany() && EStore.NO_INDEX != index)
{
- value = resolveProxy(revision, cdoFeature, index, value);
- if (cdoFeature.isMany() && value instanceof CDOID)
+ value = resolveProxy(revision, feature, index, value);
+ if (feature.isMany() && value instanceof CDOID)
{
CDOID id = (CDOID)value;
- CDOList list = revision.getList(cdoFeature);
+ CDOList list = revision.getList(feature);
CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)view.getSession().getRevisionManager();
CDORevisionPrefetchingPolicy policy = view.options().getRevisionPrefetchingPolicy();
- Collection<CDOID> listOfIDs = policy.loadAhead(revisionManager, eObject, eFeature, list, index, id);
+ Collection<CDOID> listOfIDs = policy.loadAhead(revisionManager, eObject, feature, list, index, id);
if (!listOfIDs.isEmpty())
{
revisionManager.getRevisions(listOfIDs, view.getSession().options().getCollectionLoadingPolicy()
@@ -383,22 +369,27 @@ public final class CDOStore implements EStore
}
}
- if (cdoFeature.isReference())
+ if (feature instanceof EReference)
{
value = view.convertIDToObject(value);
}
- else if (cdoFeature.getType() == CDOType.CUSTOM)
- {
- value = EcoreUtil.createFromString((EDataType)eFeature.getEType(), (String)value);
- }
- else if (cdoFeature.getType() == CDOType.FEATURE_MAP_ENTRY)
+ else if (feature.getEType() instanceof EDataType)
{
- CDOFeatureMapEntryDataTypeImpl entry = (CDOFeatureMapEntryDataTypeImpl)value;
- EStructuralFeature feature = (EStructuralFeature)view.getResourceSet().getEObject(
- URI.createURI(entry.getURI()), true);
- Object object = view.convertIDToObject(entry.getObject());
- value = FeatureMapUtil.createEntry(feature, object);
+ EDataType eType = (EDataType)feature.getEType();
+ CDOType type = CDOModelUtil.getCoreType(eType);
+ if (type == null)
+ {
+ value = EcoreUtil.createFromString(eType, (String)value);
+ }
}
+ // TODO Handle feature maps! else if (feature.getType() == CDOType.FEATURE_MAP_ENTRY)
+ // {
+ // EStructuralFeatureMapEntryDataTypeImpl entry = (EStructuralFeatureMapEntryDataTypeImpl)value;
+ // EStructuralFeature feature = (EStructuralFeature)view.getResourceSet().getEObject(
+ // URI.createURI(entry.getURI()), true);
+ // Object object = view.convertIDToObject(entry.getObject());
+ // value = FeatureMapUtil.createEntry(feature, object);
+ // }
}
return value;
@@ -407,7 +398,7 @@ public final class CDOStore implements EStore
/**
* @since 2.0
*/
- public Object convertToCDO(InternalCDOView view, EStructuralFeature eFeature, CDOFeature cdoFeature, Object value)
+ public Object convertToCDO(InternalCDOView view, EStructuralFeature feature, Object value)
{
if (value != null)
{
@@ -415,104 +406,104 @@ public final class CDOStore implements EStore
{
value = InternalCDORevision.NIL;
}
- else if (cdoFeature.isReference())
+ else if (feature instanceof EReference)
{
value = view.convertObjectToID(value, true);
}
- else if (cdoFeature.getType() == CDOType.FEATURE_MAP_ENTRY)
+ // TODO Handle feature maps! else if (feature.getType() == CDOType.FEATURE_MAP_ENTRY)
+ // {
+ // FeatureMap.Entry entry = (FeatureMap.Entry)value;
+ // String uri = EcoreUtil.getURI(entry.getEStructuralFeature()).toString();
+ // value = CDORevisionUtil.createFeatureMapEntry(uri, entry.getValue());
+ // }
+ else if (feature.getEType() instanceof EDataType)
{
- FeatureMap.Entry entry = (FeatureMap.Entry)value;
- String uri = EcoreUtil.getURI(entry.getEStructuralFeature()).toString();
- value = CDORevisionUtil.createFeatureMapEntry(uri, entry.getValue());
- }
- else if (cdoFeature.getType() == CDOType.CUSTOM)
- {
- value = EcoreUtil.convertToString((EDataType)eFeature.getEType(), value);
+ EDataType eType = (EDataType)feature.getEType();
+ CDOType type = CDOModelUtil.getCoreType(eType);
+ if (type == null)
+ {
+ value = EcoreUtil.convertToString(eType, value);
+ }
}
}
return value;
}
- public void unset(InternalEObject eObject, EStructuralFeature eFeature)
+ public void unset(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("unset({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("unset({0}, {1})", cdoObject, feature);
}
- CDOFeatureDelta delta = new CDOUnsetFeatureDeltaImpl(cdoFeature);
+ CDOFeatureDelta delta = new CDOUnsetFeatureDeltaImpl(feature);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
// TODO Handle containment remove!!!
- revision.set(cdoFeature, 0, null);
+ revision.set(feature, 0, null);
}
- public void add(InternalEObject eObject, EStructuralFeature eFeature, int index, Object value)
+ public void add(InternalEObject eObject, EStructuralFeature feature, int index, Object value)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("add({0}, {1}, {2}, {3})", cdoObject, cdoFeature, index, value);
+ TRACER.format("add({0}, {1}, {2}, {3})", cdoObject, feature, index, value);
}
- value = convertToCDO(cdoObject.cdoView(), eFeature, cdoFeature, value);
+ value = convertToCDO(cdoObject.cdoView(), feature, value);
- CDOFeatureDelta delta = new CDOAddFeatureDeltaImpl(cdoFeature, index, value);
+ CDOFeatureDelta delta = new CDOAddFeatureDeltaImpl(feature, index, value);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
- revision.add(cdoFeature, index, value);
+ revision.add(feature, index, value);
}
- public Object remove(InternalEObject eObject, EStructuralFeature eFeature, int index)
+ public Object remove(InternalEObject eObject, EStructuralFeature feature, int index)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("remove({0}, {1}, {2})", cdoObject, cdoFeature, index);
+ TRACER.format("remove({0}, {1}, {2})", cdoObject, feature, index);
}
- CDOFeatureDelta delta = new CDORemoveFeatureDeltaImpl(cdoFeature, index);
+ CDOFeatureDelta delta = new CDORemoveFeatureDeltaImpl(feature, index);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
- Object result = revision.remove(cdoFeature, index);
+ Object result = revision.remove(feature, index);
- result = convertToEMF(cdoObject.cdoView(), eObject, revision, eFeature, cdoFeature, index, result);
+ result = convertToEMF(cdoObject.cdoView(), eObject, revision, feature, index, result);
return result;
}
- public void clear(InternalEObject eObject, EStructuralFeature eFeature)
+ public void clear(InternalEObject eObject, EStructuralFeature feature)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("clear({0}, {1})", cdoObject, cdoFeature);
+ TRACER.format("clear({0}, {1})", cdoObject, feature);
}
- CDOFeatureDelta delta = new CDOClearFeatureDeltaImpl(cdoFeature);
+ CDOFeatureDelta delta = new CDOClearFeatureDeltaImpl(feature);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
// TODO Handle containment remove!!!
- revision.clear(cdoFeature);
+ revision.clear(feature);
}
- public Object move(InternalEObject eObject, EStructuralFeature eFeature, int target, int source)
+ public Object move(InternalEObject eObject, EStructuralFeature feature, int target, int source)
{
InternalCDOObject cdoObject = getCDOObject(eObject);
- CDOFeature cdoFeature = getCDOFeature(cdoObject, eFeature);
if (TRACER.isEnabled())
{
- TRACER.format("move({0}, {1}, {2}, {3})", cdoObject, cdoFeature, target, source);
+ TRACER.format("move({0}, {1}, {2}, {3})", cdoObject, feature, target, source);
}
- CDOFeatureDelta delta = new CDOMoveFeatureDeltaImpl(cdoFeature, target, source);
+ CDOFeatureDelta delta = new CDOMoveFeatureDeltaImpl(feature, target, source);
InternalCDORevision revision = getRevisionForWriting(cdoObject, delta);
- Object result = revision.move(cdoFeature, target, source);
+ Object result = revision.move(feature, target, source);
- result = convertToEMF(cdoObject.cdoView(), eObject, revision, eFeature, cdoFeature, EStore.NO_INDEX, result);
+ result = convertToEMF(cdoObject.cdoView(), eObject, revision, feature, EStore.NO_INDEX, result);
return result;
}
@@ -535,44 +526,43 @@ public final class CDOStore implements EStore
/**
* @since 2.0
*/
- public Object resolveProxy(InternalCDORevision revision, CDOFeature cdoFeature, int index, Object value)
+ public Object resolveProxy(InternalCDORevision revision, EStructuralFeature feature, int index, Object value)
{
if (value instanceof CDOElementProxy)
{
- value = ((CDOElementProxy)value)
- .resolve(getView().getSession().getRevisionManager(), revision, cdoFeature, index);
+ value = ((CDOElementProxy)value).resolve(getView().getSession().getRevisionManager(), revision, feature, index);
}
return value;
}
- private CDOFeature getCDOFeature(InternalCDOObject cdoObject, EStructuralFeature eFeature)
- {
- synchronized (lock)
- {
- if (eFeature == lastLookupEFeature)
- {
- return lastLookupCDOFeature;
- }
- }
-
- InternalCDOView view = cdoObject.cdoView();
- if (view == null)
- {
- throw new IllegalStateException("view == null");
- }
-
- CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)view.getSession().getPackageManager();
- CDOFeature cdoFeature = packageManager.getCDOFeature(eFeature);
-
- synchronized (lock)
- {
- lastLookupEFeature = eFeature;
- lastLookupCDOFeature = cdoFeature;
- }
-
- return cdoFeature;
- }
+ // private EStructuralFeature getEStructuralFeature(InternalCDOObject cdoObject, EStructuralFeature feature)
+ // {
+ // synchronized (lock)
+ // {
+ // if (feature == lastLookupEFeature)
+ // {
+ // return lastLookupEStructuralFeature;
+ // }
+ // }
+ //
+ // InternalCDOView view = cdoObject.cdoView();
+ // if (view == null)
+ // {
+ // throw new IllegalStateException("view == null");
+ // }
+ //
+ // CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)view.getSession().getPackageManager();
+ // EStructuralFeature feature = packageManager.getEStructuralFeature(feature);
+ //
+ // synchronized (lock)
+ // {
+ // lastLookupEFeature = feature;
+ // lastLookupEStructuralFeature = feature;
+ // }
+ //
+ // return feature;
+ // }
private static InternalCDORevision getRevisionForReading(InternalCDOObject cdoObject)
{
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java
index c7b9a09c71..310ceec434 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java
@@ -12,7 +12,6 @@
package org.eclipse.emf.internal.cdo.analyzer;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.session.CDOCollectionLoadingPolicy;
import org.eclipse.emf.cdo.view.CDOFeatureAnalyzer;
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
@@ -21,6 +20,8 @@ import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Simon McDuff
*/
@@ -28,7 +29,7 @@ public abstract class CDOAbstractFeatureRuleAnalyzer implements CDOFeatureAnalyz
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOAbstractFeatureRuleAnalyzer.class);
- protected CDOFeature lastTraverseFeature;
+ protected EStructuralFeature lastTraverseFeature;
protected int lastTraverseIndex;
@@ -60,11 +61,11 @@ public abstract class CDOAbstractFeatureRuleAnalyzer implements CDOFeatureAnalyz
return loadCollectionPolicy;
}
- public void preTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index)
+ public void preTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index)
{
if (TRACER.isEnabled())
{
- TRACER.format("preTraverseFeature : {0}.{1}", cdoObject.cdoClass(), feature.getName());
+ TRACER.format("preTraverseFeature : {0}.{1}", cdoObject.eClass(), feature.getName());
}
loadCollectionPolicy = cdoObject.cdoView().getSession().options().getCollectionLoadingPolicy();
@@ -79,11 +80,11 @@ public abstract class CDOAbstractFeatureRuleAnalyzer implements CDOFeatureAnalyz
doPreTraverseFeature(cdoObject, feature, index);
}
- public void postTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index, Object value)
+ public void postTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index, Object value)
{
if (TRACER.isEnabled())
{
- TRACER.format("postTraverseFeature : {0}.{1}", cdoObject.cdoClass(), feature.getName());
+ TRACER.format("postTraverseFeature : {0}.{1}", cdoObject.eClass(), feature.getName());
}
try
@@ -97,11 +98,11 @@ public abstract class CDOAbstractFeatureRuleAnalyzer implements CDOFeatureAnalyz
}
}
- protected void doPreTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index)
+ protected void doPreTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index)
{
}
- protected void doPostTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index, Object value)
+ protected void doPostTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index, Object value)
{
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAnalyzerFeatureInfo.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAnalyzerFeatureInfo.java
index 2d6d4a6527..d42e5e30a5 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAnalyzerFeatureInfo.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOAnalyzerFeatureInfo.java
@@ -13,13 +13,14 @@
package org.eclipse.emf.internal.cdo.analyzer;
import org.eclipse.emf.cdo.common.CDOFetchRule;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -33,20 +34,20 @@ public class CDOAnalyzerFeatureInfo
private Map<CDOFetchFeatureInfo, CDOFetchFeatureInfo> featureStats = new HashMap<CDOFetchFeatureInfo, CDOFetchFeatureInfo>();
- private Map<CDOClass, CDOFetchRule> fetchRules = new HashMap<CDOClass, CDOFetchRule>();
+ private Map<EClass, CDOFetchRule> fetchRules = new HashMap<EClass, CDOFetchRule>();
public CDOAnalyzerFeatureInfo()
{
}
- public Collection<CDOFetchRule> getRules(CDOClass cdoClass, CDOFeature cdoFeature)
+ public Collection<CDOFetchRule> getRules(EClass eClass, EStructuralFeature feature)
{
return fetchRules.values();
}
- public synchronized CDOFetchFeatureInfo getFeatureStat(CDOClass cdoClass, CDOFeature cdoFeature)
+ public synchronized CDOFetchFeatureInfo getFeatureStat(EClass eClass, EStructuralFeature feature)
{
- CDOFetchFeatureInfo search = new CDOFetchFeatureInfo(cdoClass, cdoFeature);
+ CDOFetchFeatureInfo search = new CDOFetchFeatureInfo(eClass, feature);
CDOFetchFeatureInfo featureRule = featureStats.get(search);
if (featureRule == null)
{
@@ -57,63 +58,63 @@ public class CDOAnalyzerFeatureInfo
return featureRule;
}
- public boolean isActive(CDOClass cdoClass, CDOFeature cdoFeature)
+ public boolean isActive(EClass eClass, EStructuralFeature feature)
{
- CDOFetchFeatureInfo search = new CDOFetchFeatureInfo(cdoClass, cdoFeature);
+ CDOFetchFeatureInfo search = new CDOFetchFeatureInfo(eClass, feature);
CDOFetchFeatureInfo featureRule = featureStats.get(search);
return featureRule != null && featureRule.isActive();
}
- public void activate(CDOClass cdoClass, CDOFeature cdoFeature)
+ public void activate(EClass eClass, EStructuralFeature feature)
{
- CDOFetchFeatureInfo info = getFeatureStat(cdoClass, cdoFeature);
+ CDOFetchFeatureInfo info = getFeatureStat(eClass, feature);
if (!info.isActive())
{
info.setActive(true);
- addRule(cdoClass, cdoFeature);
+ addRule(eClass, feature);
}
}
- public void deactivate(CDOClass cdoClass, CDOFeature cdoFeature)
+ public void deactivate(EClass eClass, EStructuralFeature feature)
{
- CDOFetchFeatureInfo info = getFeatureStat(cdoClass, cdoFeature);
+ CDOFetchFeatureInfo info = getFeatureStat(eClass, feature);
if (info.isActive())
{
info.setActive(false);
- removeRule(cdoClass, cdoFeature);
+ removeRule(eClass, feature);
}
}
- private void addRule(CDOClass cdoClass, CDOFeature cdoFeature)
+ private void addRule(EClass eClass, EStructuralFeature feature)
{
if (TRACER.isEnabled())
{
- TRACER.format("Adding rule : {0}.{1}", cdoClass.getName(), cdoFeature.getName());
+ TRACER.format("Adding rule : {0}.{1}", eClass.getName(), feature.getName());
}
- CDOFetchRule fetchRule = fetchRules.get(cdoClass);
+ CDOFetchRule fetchRule = fetchRules.get(eClass);
if (fetchRule == null)
{
- fetchRule = new CDOFetchRule(cdoClass);
- fetchRules.put(cdoClass, fetchRule);
+ fetchRule = new CDOFetchRule(eClass);
+ fetchRules.put(eClass, fetchRule);
}
- fetchRule.addFeature(cdoFeature);
+ fetchRule.addFeature(feature);
}
- private void removeRule(CDOClass cdoClass, CDOFeature cdoFeature)
+ private void removeRule(EClass eClass, EStructuralFeature feature)
{
if (TRACER.isEnabled())
{
- TRACER.format("Removing rule : {0}.{1}", cdoClass.getName(), cdoFeature.getName());
+ TRACER.format("Removing rule : {0}.{1}", eClass.getName(), feature.getName());
}
- CDOFetchRule fetchRule = fetchRules.get(cdoClass);
+ CDOFetchRule fetchRule = fetchRules.get(eClass);
if (fetchRule == null)
{
return;
}
- fetchRule.removeFeature(cdoFeature);
+ fetchRule.removeFeature(feature);
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java
index ebeebee531..1e44411d21 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java
@@ -11,8 +11,8 @@
*/
package org.eclipse.emf.internal.cdo.analyzer;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Simon McDuff
@@ -21,20 +21,20 @@ public class CDOClusterOfFetchRule
{
private CDOAnalyzerFeatureInfo featureInfo = new CDOAnalyzerFeatureInfo();
- private CDOFeature rootFeature;
+ private EStructuralFeature rootFeature;
- private CDOClass rootClass;
+ private EClass rootClass;
private long lastUpdate;
- public CDOClusterOfFetchRule(CDOClass rootClass, CDOFeature rootFeature)
+ public CDOClusterOfFetchRule(EClass rootClass, EStructuralFeature rootFeature)
{
this.rootFeature = rootFeature;
this.rootClass = rootClass;
lastUpdate = System.currentTimeMillis();
}
- public CDOFeature getRootFeature()
+ public EStructuralFeature getRootFeature()
{
return rootFeature;
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java
index 5b0fb5559b..91722e5864 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java
@@ -14,7 +14,8 @@ package org.eclipse.emf.internal.cdo.analyzer;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.CDOFetchRule;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.ArrayList;
import java.util.Collection;
@@ -32,16 +33,16 @@ public class CDOFeatureAnalyzerModelBased extends CDOAbstractFeatureRuleAnalyzer
}
@Override
- public void doPreTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index)
+ public void doPreTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index)
{
}
@Override
- public void doPostTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index, Object value)
+ public void doPostTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index, Object value)
{
if (didFetch())
{
- featureInfos.activate(cdoObject.cdoClass(), feature);
+ featureInfos.activate(cdoObject.eClass(), feature);
}
}
@@ -54,7 +55,7 @@ public class CDOFeatureAnalyzerModelBased extends CDOAbstractFeatureRuleAnalyzer
{
fetchData();
List<CDOFetchRule> rules = new ArrayList<CDOFetchRule>();
- rules.addAll(featureInfos.getRules(lastTraverseCDOObject.cdoClass(), lastTraverseFeature));
+ rules.addAll(featureInfos.getRules(lastTraverseCDOObject.eClass(), lastTraverseFeature));
return rules;
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerUI.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerUI.java
index 762e34ecb0..2225a1d106 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerUI.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerUI.java
@@ -14,8 +14,10 @@ package org.eclipse.emf.internal.cdo.analyzer;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.CDOFetchRule;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.ArrayList;
import java.util.Collection;
@@ -56,9 +58,9 @@ public class CDOFeatureAnalyzerUI extends CDOAbstractFeatureRuleAnalyzer
return lastTraverseCDOObject.cdoID();
}
- public synchronized CDOClusterOfFetchRule getFeatureRule(CDOClass cdoClass, CDOFeature cdoFeature)
+ public synchronized CDOClusterOfFetchRule getFeatureRule(EClass eClass, EStructuralFeature feature)
{
- CDOClusterOfFetchRule search = new CDOClusterOfFetchRule(cdoClass, cdoFeature);
+ CDOClusterOfFetchRule search = new CDOClusterOfFetchRule(eClass, feature);
CDOClusterOfFetchRule featureRule = featureRules.get(search);
if (featureRule == null)
{
@@ -79,7 +81,7 @@ public class CDOFeatureAnalyzerUI extends CDOAbstractFeatureRuleAnalyzer
addRootFeature = false;
}
- CDOClusterOfFetchRule search = new CDOClusterOfFetchRule(lastTraverseCDOObject.cdoClass(), lastTraverseFeature);
+ CDOClusterOfFetchRule search = new CDOClusterOfFetchRule(lastTraverseCDOObject.eClass(), lastTraverseFeature);
CDOClusterOfFetchRule fetchOfRule = featureRules.get(search);
if (fetchOfRule == null)
{
@@ -90,7 +92,7 @@ public class CDOFeatureAnalyzerUI extends CDOAbstractFeatureRuleAnalyzer
List<CDOFetchRule> list = new ArrayList<CDOFetchRule>();
for (CDOFetchRule fetchRule : fetchRules)
{
- if (addRootFeature == true || lastTraverseCDOObject.cdoClass() != fetchRule.getCDOClass())
+ if (addRootFeature == true || lastTraverseCDOObject.eClass() != fetchRule.getEClass())
{
list.add(fetchRule);
}
@@ -100,27 +102,25 @@ public class CDOFeatureAnalyzerUI extends CDOAbstractFeatureRuleAnalyzer
}
@Override
- protected void doPreTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index)
+ protected void doPreTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index)
{
- // Don`t handle containment relationship
- if (!feature.isReference())
- {
- return;
- }
-
- if (lastElapseTimeBetweenOperations > maxTimeBetweenOperation || currentClusterOfFetchRule == null)
+ // Don`t handle containment relationship TODO Simon: Do yu really mean containment here? The check is different...
+ if (feature instanceof EReference)
{
- // The user interacted with the UI. Restart a new ClusterOfFetchRule
- currentClusterOfFetchRule = getFeatureRule(cdoObject.cdoClass(), feature);
+ if (lastElapseTimeBetweenOperations > maxTimeBetweenOperation || currentClusterOfFetchRule == null)
+ {
+ // The user interacted with the UI. Restart a new ClusterOfFetchRule
+ currentClusterOfFetchRule = getFeatureRule(cdoObject.eClass(), feature);
+ }
}
}
@Override
- protected void doPostTraverseFeature(CDOObject cdoObject, CDOFeature feature, int index, Object object)
+ protected void doPostTraverseFeature(CDOObject cdoObject, EStructuralFeature feature, int index, Object object)
{
if (didFetch())
{
- currentClusterOfFetchRule.getFeatureInfo().activate(cdoObject.cdoClass(), feature);
+ currentClusterOfFetchRule.getFeatureInfo().activate(cdoObject.eClass(), feature);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java
index c2e036ead1..f61b0f9322 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java
@@ -11,8 +11,8 @@
*/
package org.eclipse.emf.internal.cdo.analyzer;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
/**
* @author Simon McDuff
@@ -25,26 +25,26 @@ public class CDOFetchFeatureInfo
private boolean active;
- private CDOClass cdoClass;
+ private EClass eClass;
- private CDOFeature cdoFeature;
+ private EStructuralFeature feature;
- public CDOFetchFeatureInfo(CDOClass cdoClass, CDOFeature cdoFeature)
+ public CDOFetchFeatureInfo(EClass eClass, EStructuralFeature feature)
{
- this.cdoClass = cdoClass;
- this.cdoFeature = cdoFeature;
+ this.eClass = eClass;
+ this.feature = feature;
active = false;
latencyTime = -1;
}
- public CDOClass getCDOClass()
+ public EClass getEClass()
{
- return cdoClass;
+ return eClass;
}
- public CDOFeature getCDOFeature()
+ public EStructuralFeature getEStructuralFeature()
{
- return cdoFeature;
+ return feature;
}
public boolean isActive()
@@ -104,7 +104,7 @@ public class CDOFetchFeatureInfo
@Override
public int hashCode()
{
- return cdoClass.hashCode() ^ cdoFeature.hashCode();
+ return eClass.hashCode() ^ feature.hashCode();
}
@Override
@@ -118,7 +118,7 @@ public class CDOFetchFeatureInfo
if (obj instanceof CDOFetchFeatureInfo)
{
CDOFetchFeatureInfo featureInfo = (CDOFetchFeatureInfo)obj;
- return featureInfo.cdoClass == cdoClass && featureInfo.cdoFeature == cdoFeature;
+ return featureInfo.eClass == eClass && featureInfo.feature == feature;
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFeatureAnalyzer.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFeatureAnalyzer.java
index 94e67e24fc..642aa6716d 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFeatureAnalyzer.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFeatureAnalyzer.java
@@ -12,9 +12,10 @@
package org.eclipse.emf.internal.cdo.analyzer;
import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.view.CDOFeatureAnalyzer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Simon McDuff
*/
@@ -24,11 +25,11 @@ public class NOOPFeatureAnalyzer implements CDOFeatureAnalyzer
{
}
- public void preTraverseFeature(CDOObject cdoClass, CDOFeature feature, int index)
+ public void preTraverseFeature(CDOObject eClass, EStructuralFeature feature, int index)
{
}
- public void postTraverseFeature(CDOObject cdoClass, CDOFeature feature, int index, Object value)
+ public void postTraverseFeature(CDOObject eClass, EStructuralFeature feature, int index, Object value)
{
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFetchRuleManager.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFetchRuleManager.java
index 6da4c0a03b..2bedf202b8 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFetchRuleManager.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/analyzer/NOOPFetchRuleManager.java
@@ -42,4 +42,10 @@ public class NOOPFetchRuleManager implements CDOFetchRuleManager
{
return CDOCollectionLoadingPolicy.DEFAULT;
}
+
+ @Override
+ public String toString()
+ {
+ return "NOOP";
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/Activator.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/Activator.java
index 59ebd730ad..52ea29e181 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/Activator.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/Activator.java
@@ -10,7 +10,6 @@
*/
package org.eclipse.emf.internal.cdo.bundle;
-import org.eclipse.emf.internal.cdo.session.CDOPackageTypeRegistryImpl;
import org.eclipse.emf.internal.cdo.view.CDOViewProviderRegistryImpl;
import org.eclipse.net4j.util.om.OSGiActivator;
@@ -125,7 +124,7 @@ public final class Activator extends EMFPlugin
protected void doStop() throws Exception
{
CDOViewProviderRegistryImpl.INSTANCE.deactivate();
- CDOPackageTypeRegistryImpl.INSTANCE.deactivate();
+ // CDOPackageTypeRegistryImpl.INSTANCE.deactivate();
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/OM.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/OM.java
index 466966be8e..7b1f2d3f16 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/OM.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/bundle/OM.java
@@ -13,6 +13,8 @@ package org.eclipse.emf.internal.cdo.bundle;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.internal.cdo.net4j.protocol.CommitTransactionRequest;
+
import org.eclipse.net4j.util.om.OMBundle;
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.net4j.util.om.log.OMLogger;
@@ -84,4 +86,10 @@ public abstract class OM
public static final OMPreference<Integer> PREF_REVISION_LOADING_CHUNK_SIZE = //
PREFS.init("PREF_REVISION_LOADING_CHUNK_SIZE", CDOView.Options.NO_REVISION_PREFETCHING); //$NON-NLS-1$
+
+ public static final OMPreference<Integer> PREF_COMMIT_MONITOR_PROGRESS_SECONDS = //
+ PREFS.init("PREF_COMMIT_MONITOR_PROGRESS_SECONDS", CommitTransactionRequest.DEFAULT_MONITOR_PROGRESS_SECONDS); //$NON-NLS-1$
+
+ public static final OMPreference<Integer> PREF_COMMIT_MONITOR_TIMEOUT_SECONDS = //
+ PREFS.init("PREF_COMMIT_MONITOR_TIMEOUT_SECONDS", CommitTransactionRequest.DEFAULT_MONITOR_TIMEOUT_SECONDS); //$NON-NLS-1$
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/CDONet4jSessionFactory.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/CDONet4jSessionFactory.java
index 4e1168081e..eb58a21aa4 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/CDONet4jSessionFactory.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/CDONet4jSessionFactory.java
@@ -14,7 +14,6 @@ import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
import org.eclipse.emf.cdo.net4j.CDOSessionConfiguration;
import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.internal.cdo.session.CDOPackageRegistryImpl;
import org.eclipse.emf.internal.cdo.session.CDOSessionFactory;
import org.eclipse.net4j.util.container.IManagedContainer;
@@ -51,10 +50,10 @@ public class CDONet4jSessionFactory extends CDOSessionFactory
// The session will be activated by the container
configuration.setActivateOnOpen(false);
configuration.setRepositoryName(repositoryName);
- if (automaticPackageRegistry)
- {
- configuration.setPackageRegistry(new CDOPackageRegistryImpl.Eager());
- }
+ // if (automaticPackageRegistry)
+ // {
+ // configuration.setPackageRegistry(new CDOPackageRegistryImpl.Eager());
+ // }
return (InternalCDOSession)configuration.openSession();
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientIndication.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientIndication.java
index 4d5ae358cc..e1376949f0 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientIndication.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientIndication.java
@@ -13,20 +13,16 @@ package org.eclipse.emf.internal.cdo.net4j.protocol;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
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.common.revision.CDORevisionResolver;
import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl;
-import org.eclipse.emf.cdo.session.CDORevisionManager;
-import org.eclipse.emf.cdo.session.CDOSessionPackageManager;
import org.eclipse.emf.internal.cdo.revision.CDOListWithElementProxiesImpl;
import org.eclipse.net4j.signal.Indication;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
@@ -50,27 +46,7 @@ public abstract class CDOClientIndication extends Indication
protected InternalCDOSession getSession()
{
- return (InternalCDOSession)getProtocol().getInfraStructure();
- }
-
- protected CDORevisionManager getRevisionManager()
- {
- return getSession().getRevisionManager();
- }
-
- protected CDOSessionPackageManager getPackageManager()
- {
- return getSession().getPackageManager();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
- }
-
- protected CDOIDObjectFactory getIDFactory()
- {
- return getSession();
+ return (InternalCDOSession)getProtocol().getSession();
}
@Override
@@ -79,41 +55,35 @@ public abstract class CDOClientIndication extends Indication
indicating(new CDODataInputImpl(in)
{
@Override
- protected CDORevision readCDORevisionData() throws IOException
+ protected CDOIDObjectFactory getIDFactory()
{
- CDORevisionFactory factory = getSession().options().getRevisionFactory();
- return factory.createRevision(this);
+ return getSession();
}
@Override
- protected CDORevisionResolver getRevisionResolver()
+ protected StringIO getPackageURICompressor()
{
- return CDOClientIndication.this.getRevisionManager();
+ return getProtocol().getPackageURICompressor();
}
@Override
- protected CDOPackageManager getPackageManager()
+ protected CDOListFactory getListFactory()
{
- return CDOClientIndication.this.getPackageManager();
+ return CDOListWithElementProxiesImpl.FACTORY;
}
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected CDOPackageRegistry getPackageRegistry()
{
- return CDOClientIndication.this.getPackageURICompressor();
+ return getSession().getPackageRegistry();
}
@Override
- protected CDOIDObjectFactory getIDFactory()
+ protected CDORevisionResolver getRevisionResolver()
{
- return CDOClientIndication.this.getIDFactory();
+ return getSession().getRevisionManager();
}
- @Override
- protected CDOListFactory getListFactory()
- {
- return CDOListWithElementProxiesImpl.FACTORY;
- }
});
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientProtocol.java
index 7141432a04..94f0cf18fc 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientProtocol.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientProtocol.java
@@ -12,14 +12,14 @@ package org.eclipse.emf.internal.cdo.net4j.protocol;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.util.TransportException;
import org.eclipse.emf.cdo.internal.common.protocol.CDOProtocolImpl;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.transaction.CDOTimeStampContext;
import org.eclipse.emf.cdo.view.CDOView;
@@ -32,9 +32,13 @@ import org.eclipse.net4j.signal.RequestWithConfirmation;
import org.eclipse.net4j.signal.SignalReactor;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.concurrent.RWLockManager.LockType;
+import org.eclipse.net4j.util.io.StringCompressor;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.PerfTracer;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.AbstractQueryIterator;
import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
@@ -56,14 +60,15 @@ public class CDOClientProtocol extends CDOProtocolImpl implements CDOSessionProt
private static final PerfTracer REVISION_LOADING = new PerfTracer(OM.PERF_REVISION_LOADING,
CDORevisionManagerImpl.class);
+ private StringCompressor packageURICompressor = new StringCompressor(true);
+
public CDOClientProtocol()
{
}
- @Override
- public CDOSession getSession()
+ public StringIO getPackageURICompressor()
{
- return (CDOSession)super.getSession();
+ return packageURICompressor;
}
public OpenSessionResult openSession(String repositoryName, boolean passiveUpdateEnabled)
@@ -87,12 +92,12 @@ public class CDOClientProtocol extends CDOProtocolImpl implements CDOSessionProt
return send(new RepositoryTimeRequest(this));
}
- public void loadPackage(CDOPackage cdoPackage, boolean onlyEcore)
+ public EPackage[] loadPackages(CDOPackageUnit packageUnit)
{
- send(new LoadPackageRequest(this, cdoPackage, onlyEcore));
+ return send(new LoadPackagesRequest(this, (InternalCDOPackageUnit)packageUnit));
}
- public Object loadChunk(InternalCDORevision revision, CDOFeature feature, int accessIndex, int fetchIndex,
+ public Object loadChunk(InternalCDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
int fromIndex, int toIndex)
{
return send(new LoadChunkRequest(this, revision, feature, accessIndex, fetchIndex, fromIndex, toIndex));
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientRequest.java
index 84f8c1e5ca..714973e61c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOClientRequest.java
@@ -15,20 +15,18 @@ import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl;
import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl;
-import org.eclipse.emf.cdo.session.CDORevisionManager;
-import org.eclipse.emf.cdo.session.CDOSessionPackageManager;
import org.eclipse.emf.internal.cdo.revision.CDOListWithElementProxiesImpl;
import org.eclipse.net4j.signal.RequestWithConfirmation;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
@@ -52,32 +50,7 @@ public abstract class CDOClientRequest<RESULT> extends RequestWithConfirmation<R
protected InternalCDOSession getSession()
{
- return (InternalCDOSession)getProtocol().getInfraStructure();
- }
-
- protected CDORevisionManager getRevisionManager()
- {
- return getSession().getRevisionManager();
- }
-
- protected CDOSessionPackageManager getPackageManager()
- {
- return getSession().getPackageManager();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
- }
-
- protected CDOIDProvider getIDProvider()
- {
- throw new UnsupportedOperationException();
- }
-
- protected CDOIDObjectFactory getIDFactory()
- {
- return getSession();
+ return (InternalCDOSession)getProtocol().getSession();
}
@Override
@@ -85,15 +58,15 @@ public abstract class CDOClientRequest<RESULT> extends RequestWithConfirmation<R
{
requesting(new CDODataOutputImpl(out)
{
- @Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ public CDOIDProvider getIDProvider()
{
- return CDOClientRequest.this.getPackageURICompressor();
+ throw new UnsupportedOperationException();
}
- public CDOIDProvider getIDProvider()
+ @Override
+ protected StringIO getPackageURICompressor()
{
- return CDOClientRequest.this.getIDProvider();
+ return getProtocol().getPackageURICompressor();
}
});
}
@@ -104,33 +77,33 @@ public abstract class CDOClientRequest<RESULT> extends RequestWithConfirmation<R
return confirming(new CDODataInputImpl(in)
{
@Override
- protected CDORevisionResolver getRevisionResolver()
+ protected CDOIDObjectFactory getIDFactory()
{
- return CDOClientRequest.this.getRevisionManager();
+ return getSession();
}
@Override
- protected CDOPackageManager getPackageManager()
+ protected CDOListFactory getListFactory()
{
- return CDOClientRequest.this.getPackageManager();
+ return CDOListWithElementProxiesImpl.FACTORY;
}
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected CDOPackageRegistry getPackageRegistry()
{
- return CDOClientRequest.this.getPackageURICompressor();
+ return getSession().getPackageRegistry();
}
@Override
- protected CDOIDObjectFactory getIDFactory()
+ protected StringIO getPackageURICompressor()
{
- return CDOClientRequest.this.getIDFactory();
+ return getProtocol().getPackageURICompressor();
}
@Override
- protected CDOListFactory getListFactory()
+ protected CDORevisionResolver getRevisionResolver()
{
- return CDOListWithElementProxiesImpl.FACTORY;
+ return getSession().getRevisionManager();
}
});
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOTimeRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOTimeRequest.java
index 275d037ceb..45b0528921 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOTimeRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CDOTimeRequest.java
@@ -26,7 +26,7 @@ import java.io.IOException;
*/
public abstract class CDOTimeRequest<RESULT> extends CDOClientRequest<RESULT>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOTimeRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CDOTimeRequest.class);
private RepositoryTimeResult repositoryTimeResult = new RepositoryTimeResult();
@@ -44,9 +44,9 @@ public abstract class CDOTimeRequest<RESULT> extends CDOClientRequest<RESULT>
protected void requesting(CDODataOutput out) throws IOException
{
repositoryTimeResult.setRequested(System.currentTimeMillis());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Requested: {0,date} {0,time}", repositoryTimeResult.getRequested());
+ TRACER.format("Requested: {0,date} {0,time}", repositoryTimeResult.getRequested());
}
}
@@ -54,21 +54,21 @@ public abstract class CDOTimeRequest<RESULT> extends CDOClientRequest<RESULT>
protected RESULT confirming(CDODataInput in) throws IOException
{
repositoryTimeResult.setConfirmed(System.currentTimeMillis());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Confirmed: {0,date} {0,time}", repositoryTimeResult.getConfirmed());
+ TRACER.format("Confirmed: {0,date} {0,time}", repositoryTimeResult.getConfirmed());
}
repositoryTimeResult.setIndicated(in.readLong());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read indicated: {0,date} {0,time}", repositoryTimeResult.getIndicated());
+ TRACER.format("Read indicated: {0,date} {0,time}", repositoryTimeResult.getIndicated());
}
repositoryTimeResult.setResponded(in.readLong());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read responded: {0,date} {0,time}", repositoryTimeResult.getResponded());
+ TRACER.format("Read responded: {0,date} {0,time}", repositoryTimeResult.getResponded());
}
return null;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ChangeSubscriptionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ChangeSubscriptionRequest.java
index 85163bfca9..1c6e60c08a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ChangeSubscriptionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ChangeSubscriptionRequest.java
@@ -29,8 +29,7 @@ import java.util.List;
*/
public class ChangeSubscriptionRequest extends CDOClientRequest<Boolean>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- ChangeSubscriptionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ChangeSubscriptionRequest.class);
private int viewID;
@@ -57,9 +56,9 @@ public class ChangeSubscriptionRequest extends CDOClientRequest<Boolean>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("View " + viewID + " subscribing to " + cdoIDs.size());
+ TRACER.trace("View " + viewID + " subscribing to " + cdoIDs.size());
}
out.writeInt(viewID);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java
index 45aaeb5b52..1d503bb412 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java
@@ -14,8 +14,11 @@ package org.eclipse.emf.internal.cdo.net4j.protocol;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.internal.cdo.bundle.OM;
@@ -34,8 +37,7 @@ import java.util.Set;
*/
public class CommitNotificationIndication extends CDOClientIndication
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- CommitNotificationIndication.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationIndication.class);
public CommitNotificationIndication(CDOClientProtocol protocol)
{
@@ -46,15 +48,22 @@ public class CommitNotificationIndication extends CDOClientIndication
protected void indicating(CDODataInput in) throws IOException
{
long timeStamp = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
+ TRACER.format("Read timeStamp: {0,date} {0,time}", timeStamp);
+ }
+
+ CDOPackageUnit[] packageUnits = in.readCDOPackageUnits(null);
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)getSession().getPackageRegistry();
+ for (int i = 0; i < packageUnits.length; i++)
+ {
+ packageRegistry.putPackageUnit((InternalCDOPackageUnit)packageUnits[i]);
}
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} dirty IDs", size);
+ TRACER.format("Reading {0} dirty IDs", size);
}
InternalCDOSession session = getSession();
@@ -62,18 +71,18 @@ public class CommitNotificationIndication extends CDOClientIndication
for (int i = 0; i < size; i++)
{
CDOIDAndVersion dirtyOID = in.readCDOIDAndVersion();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read dirty ID: {0}", dirtyOID);
+ TRACER.format("Read dirty ID: {0}", dirtyOID);
}
dirtyOIDs.add(dirtyOID);
}
size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} Deltas", size);
+ TRACER.format("Reading {0} Deltas", size);
}
List<CDORevisionDelta> deltas = new ArrayList<CDORevisionDelta>();
@@ -84,9 +93,9 @@ public class CommitNotificationIndication extends CDOClientIndication
}
size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} Detach Objects", size);
+ TRACER.format("Reading {0} Detach Objects", size);
}
List<CDOID> detachedObjects = new ArrayList<CDOID>();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitTransactionRequest.java
index adecc57212..876fa6e56b 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitTransactionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitTransactionRequest.java
@@ -22,9 +22,9 @@ import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -33,9 +33,8 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.internal.common.io.CDODataInputImpl;
import org.eclipse.emf.cdo.internal.common.io.CDODataOutputImpl;
-import org.eclipse.emf.cdo.session.CDORevisionManager;
-import org.eclipse.emf.cdo.session.CDOSessionPackageManager;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.revision.CDOListWithElementProxiesImpl;
@@ -43,6 +42,7 @@ import org.eclipse.emf.internal.cdo.revision.CDOListWithElementProxiesImpl;
import org.eclipse.net4j.signal.RequestWithMonitoring;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.io.StringIO;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.net4j.util.om.trace.ContextTracer;
@@ -60,8 +60,7 @@ import java.util.List;
*/
public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransactionResult>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- CommitTransactionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitTransactionRequest.class);
protected InternalCDOCommitContext commitContext;
@@ -89,22 +88,7 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
protected InternalCDOSession getSession()
{
- return (InternalCDOSession)getProtocol().getInfraStructure();
- }
-
- protected CDORevisionManager getRevisionManager()
- {
- return getSession().getRevisionManager();
- }
-
- protected CDOSessionPackageManager getPackageManager()
- {
- return getSession().getPackageManager();
- }
-
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- return getSession();
+ return (InternalCDOSession)getProtocol().getSession();
}
protected CDOIDProvider getIDProvider()
@@ -112,20 +96,15 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
return commitContext.getTransaction();
}
- protected CDOIDObjectFactory getIDFactory()
- {
- return getSession();
- }
-
@Override
protected final void requesting(ExtendedDataOutputStream out, OMMonitor monitor) throws Exception
{
requesting(new CDODataOutputImpl(out)
{
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected StringIO getPackageURICompressor()
{
- return CommitTransactionRequest.this.getPackageURICompressor();
+ return getProtocol().getPackageURICompressor();
}
public CDOIDProvider getIDProvider()
@@ -141,27 +120,27 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
return confirming(new CDODataInputImpl(in)
{
@Override
- protected CDORevisionResolver getRevisionResolver()
+ protected StringIO getPackageURICompressor()
{
- return CommitTransactionRequest.this.getRevisionManager();
+ return getProtocol().getPackageURICompressor();
}
@Override
- protected CDOPackageManager getPackageManager()
+ protected CDOPackageRegistry getPackageRegistry()
{
- return CommitTransactionRequest.this.getPackageManager();
+ return getSession().getPackageRegistry();
}
@Override
- protected CDOPackageURICompressor getPackageURICompressor()
+ protected CDORevisionResolver getRevisionResolver()
{
- return CommitTransactionRequest.this.getPackageURICompressor();
+ return getSession().getRevisionManager();
}
@Override
protected CDOIDObjectFactory getIDFactory()
{
- return CommitTransactionRequest.this.getIDFactory();
+ return getSession();
}
@Override
@@ -199,45 +178,39 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
protected void requestingCommit(CDODataOutput out) throws IOException
{
- List<CDOPackage> newPackages = commitContext.getNewPackages();
+ List<CDOPackageUnit> newPackageUnits = commitContext.getNewPackageUnits();
Collection<CDOResource> newResources = commitContext.getNewResources().values();
Collection<CDOObject> newObjects = commitContext.getNewObjects().values();
Collection<CDORevisionDelta> revisionDeltas = commitContext.getRevisionDeltas().values();
Collection<CDOID> detachedObjects = commitContext.getDetachedObjects().keySet();
out.writeBoolean(commitContext.getTransaction().options().isAutoReleaseLocksEnabled());
- out.writeInt(newPackages.size());
+ out.writeInt(newPackageUnits.size());
out.writeInt(newResources.size() + newObjects.size());
out.writeInt(revisionDeltas.size());
out.writeInt(detachedObjects.size());
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} new packages", newPackages.size());
+ TRACER.format("Writing {0} new package units", newPackageUnits.size());
}
- for (CDOPackage newPackage : newPackages)
+ for (CDOPackageUnit newPackageUnit : newPackageUnits)
{
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Writing package {0}", newPackage);
- }
-
- out.writeCDOPackage(newPackage);
- out.writeString(((InternalCDOPackage)newPackage).basicGetEcore());
+ out.writeCDOPackageUnit(newPackageUnit, true);
}
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} new objects", newResources.size() + newObjects.size());
+ TRACER.format("Writing {0} new objects", newResources.size() + newObjects.size());
}
writeRevisions(out, newResources);
writeRevisions(out, newObjects);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} dirty objects", revisionDeltas.size());
+ TRACER.format("Writing {0} dirty objects", revisionDeltas.size());
}
for (CDORevisionDelta revisionDelta : revisionDeltas)
@@ -268,26 +241,24 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
protected CommitTransactionResult confirmingTransactionResult(CDODataInput in) throws IOException
{
long timeStamp = in.readLong();
- CommitTransactionResult result = new CommitTransactionResult(commitContext, timeStamp);
- return result;
+ return new CommitTransactionResult(commitContext, timeStamp);
}
protected void confirmingNewPackage(CDODataInput in, CommitTransactionResult result) throws IOException
{
- InternalCDOSession session = commitContext.getTransaction().getSession();
- List<CDOPackage> newPackages = commitContext.getNewPackages();
- for (CDOPackage newPackage : newPackages)
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)getSession().getPackageRegistry();
+ for (CDOPackageUnit newPackageUnit : commitContext.getNewPackageUnits())
{
- if (newPackage.getParentURI() == null)
+ for (CDOPackageInfo packageInfo : newPackageUnit.getPackageInfos())
{
- CDOIDMetaRange oldRange = newPackage.getMetaIDRange();
+ CDOIDMetaRange oldRange = packageInfo.getMetaIDRange();
CDOIDMetaRange newRange = in.readCDOIDMetaRange();
- ((InternalCDOPackage)newPackage).setMetaIDRange(newRange);
+ ((InternalCDOPackageInfo)packageInfo).setMetaIDRange(newRange);
for (int i = 0; i < oldRange.size(); i++)
{
CDOIDTemp oldID = (CDOIDTemp)oldRange.get(i);
CDOID newID = newRange.get(i);
- session.remapMetaInstance(oldID, newID);
+ packageRegistry.getMetaInstanceMapper().remapMetaInstanceID(oldID, newID);
result.addIDMapping(oldID, newID);
}
}
@@ -297,7 +268,7 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
/*
* Write ids that are needed
*/
- public void confirmingIdMapping(CDODataInput in, CommitTransactionResult result) throws IOException
+ protected void confirmingIdMapping(CDODataInput in, CommitTransactionResult result) throws IOException
{
for (;;)
{
@@ -312,6 +283,18 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
}
}
+ @Override
+ protected int getMonitorProgressSeconds()
+ {
+ return OM.PREF_COMMIT_MONITOR_PROGRESS_SECONDS.getValue();
+ }
+
+ @Override
+ protected int getMonitorTimeoutSeconds()
+ {
+ return OM.PREF_COMMIT_MONITOR_TIMEOUT_SECONDS.getValue();
+ }
+
private void writeRevisions(CDODataOutput out, Collection<?> objects) throws IOException
{
for (Iterator<?> it = objects.iterator(); it.hasNext();)
@@ -321,5 +304,4 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
out.writeCDORevision(revision, CDORevision.UNCHUNKED);
}
}
-
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/GetRemoteSessionsRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/GetRemoteSessionsRequest.java
index 718aac382e..7656b44c91 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/GetRemoteSessionsRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/GetRemoteSessionsRequest.java
@@ -30,8 +30,7 @@ import java.util.List;
*/
public class GetRemoteSessionsRequest extends CDOClientRequest<List<CDORemoteSession>>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- GetRemoteSessionsRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, GetRemoteSessionsRequest.class);
private InternalCDORemoteSessionManager manager;
@@ -47,9 +46,9 @@ public class GetRemoteSessionsRequest extends CDOClientRequest<List<CDORemoteSes
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing subscribe: {0}", subscribe);
+ TRACER.format("Writing subscribe: {0}", subscribe);
}
out.writeBoolean(subscribe);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadChunkRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadChunkRequest.java
index 0a87f07363..50b30dfb5d 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadChunkRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadChunkRequest.java
@@ -13,7 +13,8 @@ package org.eclipse.emf.internal.cdo.net4j.protocol;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -22,6 +23,8 @@ import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.net4j.util.collection.MoveableList;
import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
import java.io.IOException;
/**
@@ -29,11 +32,11 @@ import java.io.IOException;
*/
public class LoadChunkRequest extends CDOClientRequest<Object>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadChunkRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadChunkRequest.class);
private InternalCDORevision revision;
- private CDOFeature feature;
+ private EStructuralFeature feature;
private int accessIndex;
@@ -43,7 +46,7 @@ public class LoadChunkRequest extends CDOClientRequest<Object>
private int fetchIndex;
- public LoadChunkRequest(CDOClientProtocol protocol, InternalCDORevision revision, CDOFeature feature,
+ public LoadChunkRequest(CDOClientProtocol protocol, InternalCDORevision revision, EStructuralFeature feature,
int accessIndex, int fetchIndex, int fromIndex, int toIndex)
{
super(protocol, CDOProtocolConstants.SIGNAL_LOAD_CHUNK);
@@ -59,9 +62,9 @@ public class LoadChunkRequest extends CDOClientRequest<Object>
protected void requesting(CDODataOutput out) throws IOException
{
CDOID id = revision.getID();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing revision ID: {0}", id);
+ TRACER.format("Writing revision ID: {0}", id);
}
out.writeCDOID(id);
@@ -71,28 +74,28 @@ public class LoadChunkRequest extends CDOClientRequest<Object>
--version;
}
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing revision version: {0}", version);
+ TRACER.format("Writing revision version: {0}", version);
}
out.writeInt(version);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing feature: {0}", feature);
+ TRACER.format("Writing feature: {0}", feature);
}
- out.writeCDOClassRef(feature.getContainingClass());
- out.writeInt(feature.getFeatureIndex());
- if (PROTOCOL_TRACER.isEnabled())
+ out.writeCDOClassifierRef(feature.getEContainingClass());
+ out.writeInt(feature.getFeatureID());
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing fromIndex: {0}", fromIndex);
+ TRACER.format("Writing fromIndex: {0}", fromIndex);
}
int diffIndex = accessIndex - fetchIndex;
out.writeInt(fromIndex - diffIndex);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing toIndex: {0}", toIndex);
+ TRACER.format("Writing toIndex: {0}", toIndex);
}
out.writeInt(toIndex - diffIndex);
@@ -101,11 +104,12 @@ public class LoadChunkRequest extends CDOClientRequest<Object>
@Override
protected Object confirming(CDODataInput in) throws IOException
{
+ CDOType type = CDOModelUtil.getType(feature.getEType());
Object accessID = null;
MoveableList<Object> list = revision.getList(feature);
for (int i = fromIndex; i <= toIndex; i++)
{
- Object value = feature.getType().readValue(in);
+ Object value = type.readValue(in);
list.set(i, value);
if (i == accessIndex)
{
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadLibrariesRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadLibrariesRequest.java
index 2218310147..162bbec6a8 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadLibrariesRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadLibrariesRequest.java
@@ -29,7 +29,7 @@ import java.util.Collection;
*/
public class LoadLibrariesRequest extends RequestWithConfirmation<Integer>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadLibrariesRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadLibrariesRequest.class);
private Collection<String> libraryNames;
@@ -46,17 +46,17 @@ public class LoadLibrariesRequest extends RequestWithConfirmation<Integer>
protected void requesting(ExtendedDataOutputStream out) throws Exception
{
int size = libraryNames.size();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} library names", size);
+ TRACER.format("Writing {0} library names", size);
}
out.writeInt(size);
for (String libraryName : libraryNames)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing library name: {0}", libraryName);
+ TRACER.format("Writing library name: {0}", libraryName);
}
out.writeString(libraryName);
@@ -71,9 +71,9 @@ public class LoadLibrariesRequest extends RequestWithConfirmation<Integer>
for (String libraryName : libraryNames)
{
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading library {0}: {1} bytes", libraryName, size);
+ TRACER.format("Reading library {0}: {1} bytes", libraryName, size);
}
File file = new File(cacheFolder, libraryName);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackageRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackageRequest.java
deleted file mode 100644
index 00ad4ad316..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackageRequest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- * 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:
- * Eike Stepper - initial API and implementation
- **************************************************************************/
-package org.eclipse.emf.internal.cdo.net4j.protocol;
-
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-
-import java.io.IOException;
-
-/**
- * @author Eike Stepper
- */
-public class LoadPackageRequest extends CDOClientRequest<Object>
-{
- private CDOPackage cdoPackage;
-
- private boolean onlyEcore;
-
- public LoadPackageRequest(CDOClientProtocol protocol, CDOPackage cdoPackage, boolean onlyEcore)
- {
- super(protocol, CDOProtocolConstants.SIGNAL_LOAD_PACKAGE);
- this.cdoPackage = cdoPackage;
- this.onlyEcore = onlyEcore;
- }
-
- @Override
- protected void requesting(CDODataOutput out) throws IOException
- {
- out.writeCDOPackageURI(cdoPackage.getPackageURI());
- out.writeBoolean(onlyEcore);
- }
-
- @Override
- protected Object confirming(CDODataInput in) throws IOException
- {
- if (onlyEcore)
- {
- String ecore = in.readString();
- ((InternalCDOPackage)cdoPackage).setEcore(ecore);
- }
- else
- {
- in.readCDOPackage(cdoPackage);
- }
-
- return null;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackagesRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackagesRequest.java
new file mode 100644
index 0000000000..e3eee6a65b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadPackagesRequest.java
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * 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:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.internal.cdo.net4j.protocol;
+
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+
+import org.eclipse.emf.internal.cdo.bundle.OM;
+
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class LoadPackagesRequest extends CDOClientRequest<EPackage[]>
+{
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadPackagesRequest.class);
+
+ private InternalCDOPackageUnit packageUnit;
+
+ public LoadPackagesRequest(CDOClientProtocol protocol, InternalCDOPackageUnit packageUnit)
+ {
+ super(protocol, CDOProtocolConstants.SIGNAL_LOAD_PACKAGES);
+ this.packageUnit = packageUnit;
+ }
+
+ @Override
+ protected void requesting(CDODataOutput out) throws IOException
+ {
+ String packageUnitID = packageUnit.getID();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing packageUnitID: {0}", packageUnitID);
+ }
+
+ out.writeCDOPackageURI(packageUnitID);
+ }
+
+ @Override
+ protected EPackage[] confirming(CDODataInput in) throws IOException
+ {
+ EPackage ePackage = CDOModelUtil.readPackage(in, packageUnit.getPackageRegistry());
+ return EMFUtil.getAllPackages(ePackage);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByTimeRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByTimeRequest.java
index 02c34b1975..ccfcacf6ba 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByTimeRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByTimeRequest.java
@@ -27,8 +27,7 @@ import java.util.Collection;
*/
public class LoadRevisionByTimeRequest extends LoadRevisionRequest
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- LoadRevisionByTimeRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionByTimeRequest.class);
private long timeStamp;
@@ -42,9 +41,9 @@ public class LoadRevisionByTimeRequest extends LoadRevisionRequest
protected void requesting(CDODataOutput out) throws IOException
{
super.requesting(out);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing timeStamp: {0}", timeStamp);
+ TRACER.format("Writing timeStamp: {0}", timeStamp);
}
out.writeLong(timeStamp);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByVersionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByVersionRequest.java
index 55a4428786..16dfcbc779 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByVersionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionByVersionRequest.java
@@ -27,8 +27,7 @@ import java.util.Collections;
*/
public class LoadRevisionByVersionRequest extends LoadRevisionRequest
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- LoadRevisionByVersionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionByVersionRequest.class);
private int version;
@@ -42,9 +41,9 @@ public class LoadRevisionByVersionRequest extends LoadRevisionRequest
protected void requesting(CDODataOutput out) throws IOException
{
super.requesting(out);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing version: {0}", version);
+ TRACER.format("Writing version: {0}", version);
}
out.writeInt(version);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionRequest.java
index 17b5f8fefc..69638a96df 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LoadRevisionRequest.java
@@ -34,7 +34,7 @@ import java.util.List;
*/
public class LoadRevisionRequest extends CDOClientRequest<List<InternalCDORevision>>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LoadRevisionRequest.class);
private Collection<CDOID> ids;
@@ -55,29 +55,29 @@ public class LoadRevisionRequest extends CDOClientRequest<List<InternalCDORevisi
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing referenceChunk: {0}", referenceChunk);
+ TRACER.format("Writing referenceChunk: {0}", referenceChunk);
}
out.writeInt(referenceChunk);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} IDs", ids.size());
+ TRACER.format("Writing {0} IDs", ids.size());
}
out.writeInt(ids.size());
for (CDOID id : ids)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing ID: {0}", id);
+ TRACER.format("Writing ID: {0}", id);
}
out.writeCDOID(id);
}
- CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getRevisionManager();
+ CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getSession().getRevisionManager();
CDOFetchRuleManager ruleManager = revisionManager.getRuleManager();
List<CDOFetchRule> fetchRules = ruleManager.getFetchRules(ids);
if (fetchRules == null || fetchRules.size() <= 0)
@@ -106,9 +106,9 @@ public class LoadRevisionRequest extends CDOClientRequest<List<InternalCDORevisi
{
int idSize = ids.size();
ArrayList<InternalCDORevision> revisions = new ArrayList<InternalCDORevision>(idSize);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} revisions", idSize);
+ TRACER.format("Reading {0} revisions", idSize);
}
for (int i = 0; i < idSize; i++)
@@ -120,12 +120,12 @@ public class LoadRevisionRequest extends CDOClientRequest<List<InternalCDORevisi
int additionalSize = in.readInt();
if (additionalSize != 0)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} additional revisions", additionalSize);
+ TRACER.format("Reading {0} additional revisions", additionalSize);
}
- CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getRevisionManager();
+ CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getSession().getRevisionManager();
for (int i = 0; i < additionalSize; i++)
{
InternalCDORevision revision = (InternalCDORevision)in.readCDORevision();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LockObjectsRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LockObjectsRequest.java
index ac62f2112c..93dab154e6 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LockObjectsRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/LockObjectsRequest.java
@@ -29,7 +29,7 @@ import java.util.Collection;
*/
public class LockObjectsRequest extends CDOClientRequest<Object>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LockObjectsRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LockObjectsRequest.class);
private CDOView view;
@@ -56,18 +56,18 @@ public class LockObjectsRequest extends CDOClientRequest<Object>
out.writeCDOLockType(lockType);
out.writeLong(timeout);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Locking of type {0} requested for view {1} with timeout {2}",
+ TRACER.format("Locking of type {0} requested for view {1} with timeout {2}",
lockType == RWLockManager.LockType.READ ? "read" : "write", view.getViewID(), timeout);
}
out.writeInt(objects.size());
for (CDOObject object : objects)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Locking requested for objects {0}", object.cdoID());
+ TRACER.format("Locking requested for objects {0}", object.cdoID());
}
out.writeCDOID(object.cdoID());
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ObjectLockedRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ObjectLockedRequest.java
index 5f67a7238d..e5dbe17eec 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ObjectLockedRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ObjectLockedRequest.java
@@ -28,7 +28,7 @@ import java.io.IOException;
*/
public class ObjectLockedRequest extends CDOClientRequest<Boolean>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ObjectLockedRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ObjectLockedRequest.class);
private CDOView view;
@@ -47,9 +47,9 @@ public class ObjectLockedRequest extends CDOClientRequest<Boolean>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Requesting if object {0} has of lock for object {1}", object.cdoID(),
+ TRACER.format("Requesting if object {0} has of lock for object {1}", object.cdoID(),
lockType == RWLockManager.LockType.READ ? "read" : "write");
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/OpenSessionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/OpenSessionRequest.java
index 6f524fe599..3ca4a4814e 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/OpenSessionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/OpenSessionRequest.java
@@ -12,22 +12,18 @@
package org.eclipse.emf.internal.cdo.net4j.protocol;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.util.ServerException;
import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
import org.eclipse.net4j.util.om.trace.ContextTracer;
-import org.eclipse.emf.spi.cdo.InternalCDOSession;
import org.eclipse.emf.spi.cdo.CDOSessionProtocol.OpenSessionResult;
import java.io.IOException;
@@ -38,7 +34,7 @@ import java.text.MessageFormat;
*/
public class OpenSessionRequest extends CDOTimeRequest<OpenSessionResult>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, OpenSessionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, OpenSessionRequest.class);
private String repositoryName;
@@ -54,54 +50,19 @@ public class OpenSessionRequest extends CDOTimeRequest<OpenSessionResult>
}
@Override
- protected InternalCDOSession getSession()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected CDORevisionManagerImpl getRevisionManager()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected CDOSessionPackageManagerImpl getPackageManager()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected CDOPackageURICompressor getPackageURICompressor()
- {
- if (result == null)
- {
- throw new IllegalStateException("result == null");
- }
-
- return result;
- }
-
- @Override
- protected CDOIDObjectFactory getIDFactory()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
protected void requesting(CDODataOutput out) throws IOException
{
super.requesting(out);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing repositoryName: {0}", repositoryName);
+ TRACER.format("Writing repositoryName: {0}", repositoryName);
}
out.writeString(repositoryName);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing passiveUpdateEnabled: {0}", passiveUpdateEnabled);
+ TRACER.format("Writing passiveUpdateEnabled: {0}", passiveUpdateEnabled);
}
out.writeBoolean(passiveUpdateEnabled);
@@ -123,57 +84,42 @@ public class OpenSessionRequest extends CDOTimeRequest<OpenSessionResult>
throw new ServerException(msg);
}
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read sessionID: {0}", sessionID);
+ TRACER.format("Read sessionID: {0}", sessionID);
}
String repositoryUUID = in.readString();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read repositoryUUID: {0}", repositoryUUID);
+ TRACER.format("Read repositoryUUID: {0}", repositoryUUID);
}
long repositoryCreationTime = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read repositoryCreationTime: {0,date} {0,time}", repositoryCreationTime);
+ TRACER.format("Read repositoryCreationTime: {0,date} {0,time}", repositoryCreationTime);
}
boolean repositorySupportingAudits = in.readBoolean();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read repositorySupportingAudits: {0}", repositorySupportingAudits);
+ TRACER.format("Read repositorySupportingAudits: {0}", repositorySupportingAudits);
}
CDOIDLibraryDescriptor libraryDescriptor = CDOIDUtil.readLibraryDescriptor(in);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read libraryDescriptor: {0}", libraryDescriptor);
+ TRACER.format("Read libraryDescriptor: {0}", libraryDescriptor);
}
result = new OpenSessionResult(sessionID, repositoryUUID, repositoryCreationTime, repositorySupportingAudits,
libraryDescriptor);
- for (;;)
+ CDOPackageUnit[] packageUnits = in.readCDOPackageUnits(null);
+ for (int i = 0; i < packageUnits.length; i++)
{
- boolean readInfo = in.readBoolean();
- if (!readInfo)
- {
- break;
- }
-
- String packageURI = in.readCDOPackageURI();
- boolean dynamic = in.readBoolean();
- CDOIDMetaRange metaIDRange = in.readCDOIDMetaRange();
- String parentURI = in.readCDOPackageURI();
- if (PROTOCOL_TRACER.isEnabled())
- {
- PROTOCOL_TRACER.format("Read package info: uri={0}, dynamic={1}, metaIDRange={2}, parentURI={3}", packageURI,
- dynamic, metaIDRange, parentURI);
- }
-
- result.addPackageInfo(packageURI, dynamic, metaIDRange, parentURI);
+ result.getPackageUnits().add((InternalCDOPackageUnit)packageUnits[i]);
}
super.confirming(in);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryCancelRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryCancelRequest.java
index cad541d4c5..aa77ff354f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryCancelRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryCancelRequest.java
@@ -26,7 +26,7 @@ import java.io.IOException;
*/
public class QueryCancelRequest extends CDOClientRequest<Boolean>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryCancelRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryCancelRequest.class);
private int queryID;
@@ -39,9 +39,9 @@ public class QueryCancelRequest extends CDOClientRequest<Boolean>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Cancel query " + queryID);
+ TRACER.trace("Cancel query " + queryID);
}
out.writeInt(queryID);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryRequest.java
index a68c8a9927..d9752e46d1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/QueryRequest.java
@@ -32,7 +32,7 @@ import java.util.List;
*/
public class QueryRequest extends CDOClientRequest<List<Object>>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, QueryRequest.class);
private int viewID;
@@ -73,9 +73,9 @@ public class QueryRequest extends CDOClientRequest<List<Object>>
numberOfObjectsReceived++;
}
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Query executed [{0} elements received]", numberOfObjectsReceived);
+ TRACER.format("Query executed [{0} elements received]", numberOfObjectsReceived);
}
}
catch (RuntimeException ex)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ResourceIDRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ResourceIDRequest.java
index ac00447092..42d5ae513f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ResourceIDRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/ResourceIDRequest.java
@@ -26,7 +26,7 @@ import java.io.IOException;
*/
public class ResourceIDRequest extends CDOClientRequest<CDOID>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ResourceIDRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, ResourceIDRequest.class);
private int viewID;
@@ -42,15 +42,15 @@ public class ResourceIDRequest extends CDOClientRequest<CDOID>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing viewID: {0}", viewID);
+ TRACER.format("Writing viewID: {0}", viewID);
}
out.writeInt(viewID);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing path: {0}", path);
+ TRACER.format("Writing path: {0}", path);
}
out.writeString(path);
@@ -60,9 +60,9 @@ public class ResourceIDRequest extends CDOClientRequest<CDOID>
protected CDOID confirming(CDODataInput in) throws IOException
{
CDOID id = in.readCDOID();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read ID: {0}", id);
+ TRACER.format("Read ID: {0}", id);
}
return id;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetAuditRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetAuditRequest.java
index 9f157eeb02..9095430692 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetAuditRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetAuditRequest.java
@@ -28,7 +28,7 @@ import java.util.List;
*/
public class SetAuditRequest extends CDOClientRequest<boolean[]>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetAuditRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetAuditRequest.class);
private int viewID;
@@ -47,31 +47,31 @@ public class SetAuditRequest extends CDOClientRequest<boolean[]>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing viewID: {0}", viewID);
+ TRACER.format("Writing viewID: {0}", viewID);
}
out.writeInt(viewID);
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp);
+ TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp);
}
out.writeLong(timeStamp);
int size = invalidObjects.size();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} IDs", size);
+ TRACER.format("Writing {0} IDs", size);
}
out.writeInt(size);
for (InternalCDOObject object : invalidObjects)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing ID: {0}", object.cdoID());
+ TRACER.format("Writing ID: {0}", object.cdoID());
}
out.writeCDOID(object.cdoID());
@@ -82,9 +82,9 @@ public class SetAuditRequest extends CDOClientRequest<boolean[]>
protected boolean[] confirming(CDODataInput in) throws IOException
{
int size = in.readInt();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} existanceFlags", size);
+ TRACER.format("Reading {0} existanceFlags", size);
}
boolean[] existanceFlags = new boolean[size];
@@ -92,9 +92,9 @@ public class SetAuditRequest extends CDOClientRequest<boolean[]>
{
boolean existanceFlag = in.readBoolean();
existanceFlags[i] = existanceFlag;
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Read existanceFlag: {0}", existanceFlag);
+ TRACER.format("Read existanceFlag: {0}", existanceFlag);
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetPassiveUpdateRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetPassiveUpdateRequest.java
index 0454f46e12..fa4977d4da 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetPassiveUpdateRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SetPassiveUpdateRequest.java
@@ -29,8 +29,7 @@ import java.util.Map;
*/
public class SetPassiveUpdateRequest extends SyncRevisionsRequest
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
- SetPassiveUpdateRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SetPassiveUpdateRequest.class);
private boolean passiveUpdateEnabled;
@@ -44,9 +43,9 @@ public class SetPassiveUpdateRequest extends SyncRevisionsRequest
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Turning " + (passiveUpdateEnabled ? "on" : "off") + " passive update");
+ TRACER.trace("Turning " + (passiveUpdateEnabled ? "on" : "off") + " passive update");
}
super.requesting(out);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java
index dc9d4bfe67..065eda635a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java
@@ -40,7 +40,7 @@ import java.util.TreeMap;
*/
public class SyncRevisionsRequest extends CDOClientRequest<Collection<CDOTimeStampContext>>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SyncRevisionsRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, SyncRevisionsRequest.class);
private Map<CDOID, CDORevision> revisions;
@@ -62,9 +62,9 @@ public class SyncRevisionsRequest extends CDOClientRequest<Collection<CDOTimeSta
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Synchronization " + revisions.size() + " objects");
+ TRACER.trace("Synchronization " + revisions.size() + " objects");
}
out.writeInt(referenceChunk);
@@ -79,7 +79,7 @@ public class SyncRevisionsRequest extends CDOClientRequest<Collection<CDOTimeSta
@Override
protected Collection<CDOTimeStampContext> confirming(CDODataInput in) throws IOException
{
- CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getRevisionManager();
+ CDORevisionManagerImpl revisionManager = (CDORevisionManagerImpl)getSession().getRevisionManager();
TreeMap<Long, CDOTimeStampContext> mapofContext = new TreeMap<Long, CDOTimeStampContext>();
int size = in.readInt();
@@ -99,9 +99,9 @@ public class SyncRevisionsRequest extends CDOClientRequest<Collection<CDOTimeSta
revisionManager.addCachedRevision((InternalCDORevision)revision);
}
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Synchronization received " + size + " dirty objects");
+ TRACER.trace("Synchronization received " + size + " dirty objects");
}
size = in.readInt();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnlockObjectsRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnlockObjectsRequest.java
index 80df6d4fd6..5fc6e4ecd1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnlockObjectsRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnlockObjectsRequest.java
@@ -29,7 +29,7 @@ import java.util.Collection;
*/
public class UnlockObjectsRequest extends CDOClientRequest<Boolean>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, UnlockObjectsRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, UnlockObjectsRequest.class);
private CDOView view;
@@ -53,27 +53,27 @@ public class UnlockObjectsRequest extends CDOClientRequest<Boolean>
out.writeCDOLockType(lockType);
if (objects == null)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Unlocking all objects for view {0}", view.getViewID());
+ TRACER.format("Unlocking all objects for view {0}", view.getViewID());
}
out.writeInt(CDOProtocolConstants.RELEASE_ALL_LOCKS);
}
else
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Unlocking of type {0} requested for view {1}",
- lockType == RWLockManager.LockType.READ ? "read" : "write", view.getViewID());
+ TRACER.format("Unlocking of type {0} requested for view {1}", lockType == RWLockManager.LockType.READ ? "read"
+ : "write", view.getViewID());
}
out.writeInt(objects.size());
for (CDOObject object : objects)
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Unlocking requested for objects {0}", object.cdoID());
+ TRACER.format("Unlocking requested for objects {0}", object.cdoID());
}
out.writeCDOID(object.cdoID());
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnsubscribeRemoteSessionsRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnsubscribeRemoteSessionsRequest.java
index 7eaa622f7c..17722b2ec2 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnsubscribeRemoteSessionsRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/UnsubscribeRemoteSessionsRequest.java
@@ -25,7 +25,7 @@ import java.io.IOException;
*/
public class UnsubscribeRemoteSessionsRequest extends CDOClientRequest<Boolean>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL,
UnsubscribeRemoteSessionsRequest.class);
public UnsubscribeRemoteSessionsRequest(CDOClientProtocol protocol)
@@ -36,9 +36,9 @@ public class UnsubscribeRemoteSessionsRequest extends CDOClientRequest<Boolean>
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.trace("Unsubscribing");
+ TRACER.trace("Unsubscribing");
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/VerifyRevisionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/VerifyRevisionRequest.java
index c2f64a529e..71f9471490 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/VerifyRevisionRequest.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/net4j/protocol/VerifyRevisionRequest.java
@@ -32,7 +32,7 @@ import java.util.List;
*/
public class VerifyRevisionRequest extends CDOClientRequest<List<InternalCDORevision>>
{
- private static final ContextTracer PROTOCOL_TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, VerifyRevisionRequest.class);
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, VerifyRevisionRequest.class);
private Collection<InternalCDORevision> revisions;
@@ -50,9 +50,9 @@ public class VerifyRevisionRequest extends CDOClientRequest<List<InternalCDORevi
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing {0} IDs and versions", revisions.size());
+ TRACER.format("Writing {0} IDs and versions", revisions.size());
}
out.writeInt(revisions.size());
@@ -60,9 +60,9 @@ public class VerifyRevisionRequest extends CDOClientRequest<List<InternalCDORevi
{
CDOID id = revision.getID();
int version = revision.getVersion();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Writing ID and version: {0}v{1}", id, version);
+ TRACER.format("Writing ID and version: {0}v{1}", id, version);
}
out.writeCDOID(id);
@@ -74,17 +74,17 @@ public class VerifyRevisionRequest extends CDOClientRequest<List<InternalCDORevi
protected List<InternalCDORevision> confirming(CDODataInput in) throws IOException
{
ArrayList<InternalCDORevision> result = new ArrayList<InternalCDORevision>();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading {0} timeStamps", revisions.size());
+ TRACER.format("Reading {0} timeStamps", revisions.size());
}
for (InternalCDORevision revision : revisions)
{
long revised = in.readLong();
- if (PROTOCOL_TRACER.isEnabled())
+ if (TRACER.isEnabled())
{
- PROTOCOL_TRACER.format("Reading timeStamp: {0}", revised);
+ TRACER.format("Reading timeStamp: {0}", revised);
}
if (revised != CDORevision.UNSPECIFIED_DATE)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryImpl.java
index 843dbc4dd5..afbbbe1cf0 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryImpl.java
@@ -16,13 +16,10 @@ import org.eclipse.emf.cdo.common.util.BlockingCloseableIterator;
import org.eclipse.emf.cdo.internal.common.CDOQueryInfoImpl;
import org.eclipse.emf.cdo.view.CDOQuery;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.net4j.util.WrappedException;
-import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.spi.cdo.AbstractQueryIterator;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
import org.eclipse.emf.spi.cdo.InternalCDOView;
@@ -136,12 +133,7 @@ public class CDOQueryImpl extends CDOQueryInfoImpl implements CDOQuery
protected Object adapt(Object object)
{
- if (object instanceof EClass)
- {
- EClass eClass = (EClass)object;
- return ModelUtil.getCDOClass(eClass, (CDOSessionPackageManagerImpl)view.getSession().getPackageManager());
- }
- else if (object instanceof InternalCDOObject)
+ if (object instanceof InternalCDOObject)
{
InternalCDOObject internalCDOObject = FSMUtil.adapt(object, view);
if (internalCDOObject.cdoID() == null)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOElementProxyImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOElementProxyImpl.java
index 6c08863ee4..3f61de4900 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOElementProxyImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOElementProxyImpl.java
@@ -11,12 +11,12 @@
*/
package org.eclipse.emf.internal.cdo.revision;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.session.CDORevisionManager;
import org.eclipse.emf.internal.cdo.session.CDORevisionManagerImpl;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
import java.text.MessageFormat;
@@ -43,7 +43,7 @@ public final class CDOElementProxyImpl implements CDOElementProxy
this.index = index;
}
- public Object resolve(CDORevisionManager revisionManager, CDORevision revision, CDOFeature feature, int index)
+ public Object resolve(CDORevisionManager revisionManager, CDORevision revision, EStructuralFeature feature, int index)
{
return ((CDORevisionManagerImpl)revisionManager).resolveElementProxy(revision, feature, index, getIndex());
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOListWithElementProxiesImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOListWithElementProxiesImpl.java
index 8f1904db74..5456bbf85a 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOListWithElementProxiesImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/revision/CDOListWithElementProxiesImpl.java
@@ -11,6 +11,7 @@
*/
package org.eclipse.emf.internal.cdo.revision;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
@@ -18,6 +19,7 @@ import org.eclipse.emf.cdo.internal.common.revision.CDOListImpl;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
/**
@@ -68,8 +70,9 @@ public class CDOListWithElementProxiesImpl extends CDOListImpl
}
@Override
- public InternalCDOList clone(CDOType type)
+ public InternalCDOList clone(EClassifier classifier)
{
+ CDOType type = CDOModelUtil.getType(classifier);
int size = size();
InternalCDOList list = new CDOListWithElementProxiesImpl(size, 0, 0);
for (int j = 0; j < size; j++)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOCollectionLoadingPolicyImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOCollectionLoadingPolicyImpl.java
index ace75f2d0f..47de988d6c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOCollectionLoadingPolicyImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOCollectionLoadingPolicyImpl.java
@@ -11,7 +11,6 @@
*/
package org.eclipse.emf.internal.cdo.session;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.session.CDOCollectionLoadingPolicy;
import org.eclipse.emf.cdo.session.CDORevisionManager;
@@ -19,6 +18,7 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.collection.MoveableList;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
/**
@@ -47,8 +47,8 @@ public class CDOCollectionLoadingPolicyImpl implements CDOCollectionLoadingPolic
return resolveChunkSize;
}
- public Object resolveProxy(CDORevisionManager revisionManager, CDORevision rev, CDOFeature feature, int accessIndex,
- int serverIndex)
+ public Object resolveProxy(CDORevisionManager revisionManager, CDORevision rev, EStructuralFeature feature,
+ int accessIndex, int serverIndex)
{
// Get proxy values
InternalCDORevision revision = (InternalCDORevision)rev;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageRegistryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageRegistryImpl.java
deleted file mode 100644
index 71ffca3ff0..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageRegistryImpl.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- * Eike Stepper - maintenance
- */
-package org.eclipse.emf.internal.cdo.session;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
-import org.eclipse.emf.cdo.session.CDOPackageType;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-import org.eclipse.emf.cdo.transaction.CDOCommitContext;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.transaction.CDOTransactionHandler;
-import org.eclipse.emf.cdo.util.EMFUtil;
-import org.eclipse.emf.cdo.view.CDOView;
-
-import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
-
-import org.eclipse.net4j.util.container.ContainerEventAdapter;
-import org.eclipse.net4j.util.container.IContainer;
-import org.eclipse.net4j.util.event.IListener;
-import org.eclipse.net4j.util.lifecycle.ILifecycle;
-import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EFactory;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
-import org.eclipse.emf.spi.cdo.InternalCDOSession;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Eike Stepper
- */
-public class CDOPackageRegistryImpl extends EPackageRegistryImpl implements CDOPackageRegistry
-{
- private static final long serialVersionUID = 1L;
-
- private final ContextTracer tracer = new ContextTracer(OM.DEBUG_MODEL, CDOPackageRegistryImpl.class);
-
- private InternalCDOSession session;
-
- public CDOPackageRegistryImpl()
- {
- }
-
- public InternalCDOSession getSession()
- {
- return session;
- }
-
- public void setSession(CDOSession session)
- {
- this.session = (InternalCDOSession)session;
- }
-
- public void putPackageDescriptor(CDOPackage cdoPackage)
- {
- checkSession();
- EPackage.Descriptor descriptor = new RemotePackageDescriptor(cdoPackage);
- String uri = cdoPackage.getPackageURI();
- if (tracer.isEnabled())
- {
- tracer.format("Registering package descriptor for {0}", uri);
- }
-
- put(uri, descriptor);
- }
-
- /**
- * Insert the topPackage and its sub-packages by their URI
- */
- public EPackage putEPackage(EPackage ePackage) throws IllegalArgumentException
- {
- checkSession();
- String uri = ePackage.getNsURI();
- if (ePackage.getESuperPackage() != null)
- {
- throw new IllegalArgumentException("Not a top level package: " + uri);
- }
-
- putEPackage(uri, ePackage);
- return getEPackage(uri);
- }
-
- private void putEPackage(String uri, EPackage ePackage)
- {
- if (uri != null)
- {
- put(uri, ePackage);
- }
-
- for (EPackage subPackage : ePackage.getESubpackages())
- {
- putEPackage(subPackage.getNsURI(), subPackage);
- }
- }
-
- @Override
- public Object put(String key, Object value)
- {
- checkSession();
- if (value instanceof EPackage)
- {
- if (tracer.isEnabled())
- {
- tracer.format("Registering package for {0}", key);
- }
-
- EPackage ePackage = (EPackage)value;
- EMFUtil.prepareDynamicEPackage(ePackage);
-
- CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)session.getPackageManager();
- CDOPackage cdoPackage = ModelUtil.getCDOPackage(ePackage, packageManager);
- CDOIDMetaRange metaIDRange = cdoPackage.getTopLevelPackage().getMetaIDRange();
- ((InternalCDOPackage)cdoPackage).setPersistent(metaIDRange != null && !metaIDRange.isTemporary());
- }
-
- return super.put(key, value);
- }
-
- @Override
- public void putAll(Map<? extends String, ? extends Object> m)
- {
- throw new UnsupportedOperationException();
- }
-
- private void checkSession()
- {
- if (session == null)
- {
- throw new IllegalStateException("session == null");
- }
- }
-
- /**
- * @author Eike Stepper
- */
- private final class RemotePackageDescriptor implements EPackage.Descriptor
- {
- private CDOPackage cdoPackage;
-
- private RemotePackageDescriptor(CDOPackage cdoPackage)
- {
- this.cdoPackage = cdoPackage;
- }
-
- public CDOPackage getCDOPackage()
- {
- return cdoPackage;
- }
-
- public EFactory getEFactory()
- {
- // TODO Implement method RemotePackageDescriptor.getEFactory()
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public EPackage getEPackage()
- {
- EPackage ePackage = ModelUtil.createEPackage(cdoPackage);
- CDOIDMetaRange idRange = cdoPackage.getMetaIDRange();
- if (idRange != null)
- {
- session.registerEPackage(ePackage, idRange);
- }
-
- return ePackage;
- }
-
- @Override
- public String toString()
- {
- return MessageFormat.format("RemotePackageDescriptor[{0}]", cdoPackage.getPackageURI());
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static abstract class SessionBound extends CDOPackageRegistryImpl
- {
- private static final long serialVersionUID = 1L;
-
- private IListener sessionLifecycleListener = new LifecycleEventAdapter()
- {
- @Override
- protected void onActivated(ILifecycle lifecycle)
- {
- sessionActivated();
- }
-
- @Override
- protected void onAboutToDeactivate(ILifecycle lifecycle)
- {
- getSession().removeListener(this);
- sessionAboutToDeactivate();
- }
- };
-
- public SessionBound()
- {
- }
-
- @Override
- public void setSession(CDOSession session)
- {
- super.setSession(session);
- session.addListener(sessionLifecycleListener);
- }
-
- protected abstract void sessionActivated();
-
- protected abstract void sessionAboutToDeactivate();
- }
-
- /**
- * @author Eike Stepper
- */
- public static class Eager extends SessionBound
- {
- private static final long serialVersionUID = 1L;
-
- private IListener typeListener = new ContainerEventAdapter<Map.Entry<String, CDOPackageType>>()
- {
- @Override
- protected void onAdded(IContainer<java.util.Map.Entry<String, CDOPackageType>> container,
- java.util.Map.Entry<String, CDOPackageType> entry)
- {
- addEntry(entry);
- }
- };
-
- public Eager()
- {
- }
-
- @Override
- protected void sessionActivated()
- {
- for (Map.Entry<String, CDOPackageType> entry : CDOPackageTypeRegistry.INSTANCE.entrySet())
- {
- addEntry(entry);
- }
-
- CDOPackageTypeRegistry.INSTANCE.addListener(typeListener);
- }
-
- @Override
- protected void sessionAboutToDeactivate()
- {
- CDOPackageTypeRegistry.INSTANCE.removeListener(typeListener);
- }
-
- protected void addEntry(Map.Entry<String, CDOPackageType> entry)
- {
- CDOPackageType packageType = entry.getValue();
- // TODO LEGACY
- if (packageType != CDOPackageType.LEGACY)
- {
- String uri = entry.getKey();
- if (!containsKey(uri))
- {
- try
- {
- EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(uri);
- if (ePackage.getESuperPackage() == null)
- {
- putEPackage(ePackage);
- }
- }
- catch (RuntimeException ex)
- {
- OM.LOG.error(ex);
- }
- }
- }
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static class TransactionBound extends SessionBound implements CDOTransactionHandler
- {
- private static final long serialVersionUID = 1L;
-
- private List<CDOTransaction> transactions = new ArrayList<CDOTransaction>();
-
- private IListener sessionContainerListener = new ContainerEventAdapter<CDOView>()
- {
- @Override
- protected void onAdded(IContainer<CDOView> session, CDOView view)
- {
- if (view instanceof CDOTransaction)
- {
- CDOTransaction transaction = (CDOTransaction)view;
- transaction.addHandler(TransactionBound.this);
- synchronized (transactions)
- {
- transactions.add(transaction);
- }
- }
- }
-
- @Override
- protected void onRemoved(IContainer<CDOView> session, CDOView view)
- {
- if (view instanceof CDOTransaction)
- {
- CDOTransaction transaction = (CDOTransaction)view;
- transaction.removeHandler(TransactionBound.this);
- synchronized (transactions)
- {
- transactions.remove(transaction);
- }
- }
- }
- };
-
- public TransactionBound()
- {
- }
-
- @Override
- protected void sessionActivated()
- {
- getSession().addListener(sessionContainerListener);
- }
-
- @Override
- protected void sessionAboutToDeactivate()
- {
- getSession().removeListener(sessionContainerListener);
- synchronized (transactions)
- {
- for (CDOTransaction transaction : transactions)
- {
- transaction.removeHandler(this);
- }
-
- transactions.clear();
- }
- }
-
- public void attachingObject(CDOTransaction transaction, CDOObject object)
- {
- }
-
- public void modifyingObject(CDOTransaction transaction, CDOObject object, CDOFeatureDelta featureDelta)
- {
- }
-
- public void committingTransaction(CDOTransaction transaction, CDOCommitContext commitContext)
- {
- }
-
- public void rolledBackTransaction(CDOTransaction transaction)
- {
- }
-
- public void detachingObject(CDOTransaction transaction, CDOObject object)
- {
- }
-
- public void committedTransaction(CDOTransaction transaction, CDOCommitContext commitContext)
- {
- }
- }
-
- /**
- * @author Eike Stepper
- */
- public static class Lazy extends TransactionBound
- {
- private static final long serialVersionUID = 1L;
-
- private Set<EClass> usedClasses = new HashSet<EClass>();
-
- public Lazy()
- {
- }
-
- @Override
- public void attachingObject(CDOTransaction transaction, CDOObject object)
- {
- EClass usedClass = object.eClass();
- addAllEPackages(usedClass);
- }
-
- private void addAllEPackages(EClass eClass)
- {
- if (usedClasses.add(eClass))
- {
- addPackage(eClass.getEPackage());
- for (EClass superType : eClass.getEAllSuperTypes())
- {
- addAllEPackages(superType);
- }
-
- for (EReference eReference : eClass.getEAllReferences())
- {
- addAllEPackages(eReference.getEReferenceType());
- }
- }
- }
-
- @Override
- protected void sessionAboutToDeactivate()
- {
- usedClasses.clear();
- super.sessionAboutToDeactivate();
- }
-
- private void addPackage(EPackage ePackage)
- {
- if (!containsKey(ePackage.getNsURI()))
- {
- EPackage topLevelPackage = ModelUtil.getTopLevelPackage(ePackage);
- // PutEPackage
- putEPackage(topLevelPackage);
- }
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageTypeRegistryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageTypeRegistryImpl.java
deleted file mode 100644
index 38423ec660..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOPackageTypeRegistryImpl.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.internal.cdo.session;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.eresource.EresourcePackage;
-import org.eclipse.emf.cdo.session.CDOPackageType;
-import org.eclipse.emf.cdo.session.CDOPackageTypeRegistry;
-import org.eclipse.emf.cdo.util.CDOFactory;
-
-import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
-
-import org.eclipse.net4j.util.StringUtil;
-import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
-import org.eclipse.net4j.util.om.OMPlatform;
-import org.eclipse.net4j.util.registry.HashMapRegistry;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EFactory;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.impl.EPackageImpl;
-import org.eclipse.emf.ecore.plugin.EcorePlugin;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.dynamichelpers.ExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionChangeHandler;
-import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
-import org.eclipse.core.runtime.dynamichelpers.IFilter;
-
-import org.osgi.framework.Bundle;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Eike Stepper
- */
-public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CDOPackageType> implements
- CDOPackageTypeRegistry
-{
- public static final CDOPackageTypeRegistryImpl INSTANCE = new CDOPackageTypeRegistryImpl();
-
- private static final String ECORE_ID = "org.eclipse.emf.ecore";
-
- @ExcludeFromDump
- private transient Object extensionTracker;
-
- private CDOPackageTypeRegistryImpl()
- {
- activate();
- }
-
- public void register(EPackage ePackage)
- {
- put(ePackage.getNsURI(), getPackageType(ePackage));
- }
-
- public void registerLegacy(String packageURI)
- {
- put(packageURI, CDOPackageType.LEGACY);
- }
-
- public void registerNative(String packageURI)
- {
- put(packageURI, CDOPackageType.NATIVE);
- }
-
- public void reset()
- {
- deactivate();
- activate();
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- initPackageTypes();
- if (OMPlatform.INSTANCE.isOSGiRunning())
- {
- try
- {
- connectExtensionTracker();
- }
- catch (Throwable t)
- {
- OM.LOG.error(t);
- }
- }
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- if (OMPlatform.INSTANCE.isOSGiRunning())
- {
- try
- {
- disconnectExtensionTracker();
- }
- catch (Throwable t)
- {
- OM.LOG.error(t);
- }
- }
-
- clear();
- super.doDeactivate();
- }
-
- private void initPackageTypes()
- {
- for (Object object : EPackage.Registry.INSTANCE.values())
- {
- if (object instanceof EPackage)
- {
- EPackage ePackage = (EPackage)object;
- register(ePackage);
- }
- }
-
- if (OMPlatform.INSTANCE.isOSGiRunning())
- {
- IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(ECORE_ID,
- EcorePlugin.GENERATED_PACKAGE_PPID);
- addPackageTypes(elements);
- }
- }
-
- private void addPackageTypes(IConfigurationElement[] elements)
- {
- Map<String, CDOPackageType> bundles = new HashMap<String, CDOPackageType>();
- for (IConfigurationElement element : elements)
- {
- String uri = element.getAttribute("uri");
- if (!StringUtil.isEmpty(uri) && !uri.equals(EresourcePackage.eINSTANCE.getNsURI()) && !containsKey(uri))
- {
- String bundleName = element.getContributor().getName();
- CDOPackageType packageType = bundles.get(bundleName);
- if (packageType == null)
- {
- Bundle bundle = Platform.getBundle(bundleName);
- packageType = getBundleType(bundle);
- bundles.put(bundleName, packageType);
- }
-
- put(uri, packageType);
- }
- }
- }
-
- private CDOPackageType getBundleType(Bundle bundle)
- {
- if (bundle.getEntry("META-INF/CDO.MF") != null)
- {
- return CDOPackageType.NATIVE;
- }
-
- return CDOPackageType.LEGACY;
- }
-
- private void connectExtensionTracker()
- {
- ExtensionTracker extensionTracker = new ExtensionTracker();
- extensionTracker.registerHandler(new IExtensionChangeHandler()
- {
- public void addExtension(IExtensionTracker tracker, IExtension extension)
- {
- IConfigurationElement[] elements = extension.getConfigurationElements();
- addPackageTypes(elements);
- }
-
- public void removeExtension(IExtension extension, Object[] objects)
- {
- }
- }, createExtensionPointFilter());
-
- this.extensionTracker = extensionTracker;
- }
-
- private void disconnectExtensionTracker()
- {
- ExtensionTracker extensionTracker = (ExtensionTracker)this.extensionTracker;
- extensionTracker.close();
- }
-
- private IFilter createExtensionPointFilter()
- {
- final IExtensionPoint xpt = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.emf.ecore",
- EcorePlugin.GENERATED_PACKAGE_PPID);
- return new IFilter()
- {
- public boolean matches(IExtensionPoint target)
- {
- return xpt.equals(target);
- }
- };
- }
-
- public static CDOPackageType getPackageType(EPackage ePackage)
- {
- if (ePackage.getClass() == EPackageImpl.class)
- {
- EFactory factory = ePackage.getEFactoryInstance();
- if (factory instanceof CDOFactory)
- {
- return CDOPackageType.NATIVE;
- }
-
- return CDOPackageType.LEGACY;
- }
-
- EPackage topLevelPackage = ModelUtil.getTopLevelPackage(ePackage);
- EClass eClass = getAnyConcreteEClass(topLevelPackage);
- if (eClass == null)
- {
- return CDOPackageType.LEGACY;
- }
-
- EObject testObject = EcoreUtil.create(eClass);
- if (testObject instanceof CDOObject)
- {
- return CDOPackageType.NATIVE;
- }
-
- return CDOPackageType.LEGACY;
- }
-
- private static EClass getAnyConcreteEClass(EPackage ePackage)
- {
- for (EClassifier classifier : ePackage.getEClassifiers())
- {
- if (classifier instanceof EClass)
- {
- EClass eClass = (EClass)classifier;
- if (!(eClass.isAbstract() || eClass.isInterface()))
- {
- return eClass;
- }
- }
- }
-
- for (EPackage subpackage : ePackage.getESubpackages())
- {
- EClass eClass = getAnyConcreteEClass(subpackage);
- if (eClass != null)
- {
- return eClass;
- }
- }
-
- return null;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDORevisionManagerImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDORevisionManagerImpl.java
index 07f792e708..69d6ede7e6 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDORevisionManagerImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDORevisionManagerImpl.java
@@ -13,14 +13,13 @@ package org.eclipse.emf.internal.cdo.session;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.internal.common.revision.CDORevisionResolverImpl;
import org.eclipse.emf.cdo.session.CDORevisionManager;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
import java.util.Collection;
@@ -76,7 +75,7 @@ public class CDORevisionManagerImpl extends CDORevisionResolverImpl implements C
/**
* @since 2.0
*/
- public Object resolveElementProxy(CDORevision revision, CDOFeature feature, int accessIndex, int serverIndex)
+ public Object resolveElementProxy(CDORevision revision, EStructuralFeature feature, int accessIndex, int serverIndex)
{
return session.options().getCollectionLoadingPolicy().resolveProxy(this, revision, feature, accessIndex,
serverIndex);
@@ -85,7 +84,7 @@ public class CDORevisionManagerImpl extends CDORevisionResolverImpl implements C
/**
* @since 2.0
*/
- public Object loadChunkByRange(CDORevision revision, CDOFeature feature, int accessIndex, int fetchIndex,
+ public Object loadChunkByRange(CDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
int fromIndex, int toIndex)
{
return session.getSessionProtocol().loadChunk((InternalCDORevision)revision, feature, accessIndex, fetchIndex,
@@ -121,13 +120,4 @@ public class CDORevisionManagerImpl extends CDORevisionResolverImpl implements C
{
return session.getSessionProtocol().loadRevisionsByTime(ids, referenceChunk, timeStamp);
}
-
- /**
- * @since 2.0
- */
- @Override
- protected CDOPackageManager getPackageManager()
- {
- return session.getPackageManager();
- }
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionConfigurationImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionConfigurationImpl.java
index 4bd38d7b06..f410106d09 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionConfigurationImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionConfigurationImpl.java
@@ -10,11 +10,10 @@
*/
package org.eclipse.emf.internal.cdo.session;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCache;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.CDOSessionConfiguration;
-import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
@@ -68,22 +67,6 @@ public abstract class CDOSessionConfigurationImpl implements CDOSessionConfigura
/**
* @since 2.0
*/
- public void setEagerPackageRegistry()
- {
- setPackageRegistry(CDOUtil.createEagerPackageRegistry());
- }
-
- /**
- * @since 2.0
- */
- public void setLazyPackageRegistry()
- {
- setPackageRegistry(CDOUtil.createLazyPackageRegistry());
- }
-
- /**
- * @since 2.0
- */
public CDORevisionCache getRevisionCache()
{
return revisionCache;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index ef89740c5b..9a8838b44b 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -19,33 +19,33 @@ import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDObject;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.id.CDOIDTempMeta;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.io.CDODataInput;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.common.util.CDOException;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl;
import org.eclipse.emf.cdo.session.CDOCollectionLoadingPolicy;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
-import org.eclipse.emf.cdo.session.CDOSession.Repository;
+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.transaction.CDOTimeStampContext;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.internal.cdo.CDOFactoryImpl;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.session.remote.CDORemoteSessionManagerImpl;
import org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.emf.internal.cdo.view.CDOAuditImpl;
import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
@@ -56,17 +56,15 @@ import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.event.Event;
import org.eclipse.net4j.util.event.Notifier;
import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataOutput;
import org.eclipse.net4j.util.io.IOUtil;
-import org.eclipse.net4j.util.io.StringCompressor;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
-import org.eclipse.net4j.util.options.IOptions;
import org.eclipse.net4j.util.options.IOptionsContainer;
import org.eclipse.net4j.util.options.OptionsEvent;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
@@ -93,25 +91,17 @@ import java.util.Set;
/**
* @author Eike Stepper
*/
-public abstract class CDOSessionImpl extends Container<CDOView> implements InternalCDOSession, Repository
+public abstract class CDOSessionImpl extends Container<CDOView> implements InternalCDOSession
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, CDOSessionImpl.class);
private int sessionID;
- private String repositoryName;
+ private CDOSession.Options options;
- private String repositoryUUID;
+ private CDOSession.Repository repository;
- private long repositoryCreationTime;
-
- private RepositoryTimeResult repositoryTimeResult;
-
- private boolean repositorySupportingAudits;
-
- private CDOPackageRegistry packageRegistry;
-
- private CDOSessionPackageManagerImpl packageManager;
+ private InternalCDOPackageRegistry packageRegistry;
private CDORevisionManagerImpl revisionManager;
@@ -119,37 +109,21 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
private Set<InternalCDOView> views = new HashSet<InternalCDOView>();
- private QueueRunner invalidationRunner;
-
- private Object invalidationRunnerLock = new Object();
-
@ExcludeFromDump
- private transient Map<CDOID, InternalEObject> idToMetaInstanceMap = new HashMap<CDOID, InternalEObject>();
-
- @ExcludeFromDump
- private transient Map<InternalEObject, CDOID> metaInstanceToIDMap = new HashMap<InternalEObject, CDOID>();
-
- @ExcludeFromDump
- private transient int lastViewID;
+ private CDOIDObjectFactory cdoidObjectFactory;
@ExcludeFromDump
- private transient int lastTempMetaID;
+ private transient QueueRunner invalidationRunner;
@ExcludeFromDump
- private transient StringCompressor packageURICompressor;
+ private transient Object invalidationRunnerLock = new Object();
@ExcludeFromDump
- private CDOIDObjectFactory cdoidObjectFactory;
-
- /**
- * @since 2.0
- */
- protected IOptions options;
+ private transient int lastViewID;
public CDOSessionImpl()
{
options = createOptions();
- packageManager = createPackageManager();
revisionManager = createRevisionManager();
remoteSessionManager = createRemoteSessionManager();
}
@@ -162,15 +136,15 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
/**
* @since 2.0
*/
- public OptionsImpl options()
+ public CDOSession.Options options()
{
- return (OptionsImpl)options;
+ return options;
}
/**
* @since 2.0
*/
- protected OptionsImpl createOptions()
+ protected CDOSession.Options createOptions()
{
return new OptionsImpl();
}
@@ -178,118 +152,81 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
/**
* @since 2.0
*/
- public Repository repository()
- {
- return this;
- }
-
- public CDOIDObject createCDOIDObject(ExtendedDataInput in)
- {
- return cdoidObjectFactory.createCDOIDObject(in);
- }
-
- /**
- * @since 2.0
- */
- public CDOIDObject createCDOIDObject(String in)
+ public CDOSession.Repository repository()
{
- return cdoidObjectFactory.createCDOIDObject(in);
+ return repository;
}
/**
+ * @param result
* @since 2.0
*/
- public String getName()
- {
- return repositoryName;
- }
-
- public void setRepositoryName(String repositoryName)
+ protected CDOSession.Repository createRepository(OpenSessionResult result)
{
- this.repositoryName = repositoryName;
+ return new RepositoryImpl(repository.getName(), result);
}
- /**
- * @since 2.0
- */
- public String getUUID()
+ public CDOIDObject createCDOIDObject(ExtendedDataInput in)
{
- return repositoryUUID;
+ return cdoidObjectFactory.createCDOIDObject(in);
}
/**
* @since 2.0
*/
- public long getCreationTime()
+ public CDOIDObject createCDOIDObject(String in)
{
- checkActive();
- return repositoryCreationTime;
+ return cdoidObjectFactory.createCDOIDObject(in);
}
- /**
- * @since 2.0
- */
- public long getCurrentTime()
+ public void close()
{
- return getCurrentTime(false);
+ deactivate();
}
/**
* @since 2.0
*/
- public long getCurrentTime(boolean forceRefresh)
+ public boolean isClosed()
{
- checkActive();
- if (repositoryTimeResult == null || forceRefresh)
- {
- repositoryTimeResult = sendRepositoryTimeRequest();
- }
-
- return repositoryTimeResult.getAproximateRepositoryTime();
+ return !isActive();
}
- private RepositoryTimeResult sendRepositoryTimeRequest()
+ public void setRepositoryName(String repositoryName)
{
- return getSessionProtocol().getRepositoryTime();
+ repository = new TemporaryRepositoryName(repositoryName);
}
/**
* @since 2.0
*/
- public boolean isSupportingAudits()
+ public void setPackageRegistry(CDOPackageRegistry packageRegistry)
{
- return repositorySupportingAudits;
+ this.packageRegistry = (InternalCDOPackageRegistry)packageRegistry;
}
- public void close()
+ public InternalCDOPackageRegistry getPackageRegistry()
{
- deactivate();
- }
-
- /**
- * @since 2.0
- */
- public boolean isClosed()
- {
- return !isActive();
+ return packageRegistry;
}
- /**
- * @since 2.0
- */
- public void setPackageRegistry(CDOPackageRegistry packageRegistry)
+ public Object processPackage(Object value)
{
- this.packageRegistry = packageRegistry;
+ CDOFactoryImpl.prepareDynamicEPackage(value);
+ return value;
}
- public CDOPackageRegistry getPackageRegistry()
+ public EPackage[] loadPackages(CDOPackageUnit packageUnit)
{
- return packageRegistry;
- }
+ if (packageUnit.getOriginalType().isGenerated())
+ {
+ if (!options().isGeneratedPackageEmulationEnabled())
+ {
+ throw new CDOException("Generated packages locally not available: " + packageUnit);
+ }
+ }
- public CDOSessionPackageManagerImpl getPackageManager()
- {
- return packageManager;
+ return getSessionProtocol().loadPackages(packageUnit);
}
public CDORevisionManagerImpl getRevisionManager()
@@ -397,8 +334,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
try
{
LifecycleUtil.deactivate(view);
- // new ViewsChangedRequest(protocol, view.getViewID(), CDOProtocolConstants.VIEW_CLOSED,
- // CDOCommonView.UNSPECIFIED_DATE).send();
}
catch (Exception ex)
{
@@ -447,81 +382,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
return views.isEmpty();
}
- public synchronized CDOIDMetaRange getTempMetaIDRange(int count)
- {
- CDOIDTemp lowerBound = CDOIDUtil.createTempMeta(lastTempMetaID + 1);
- lastTempMetaID += count;
- return CDOIDUtil.createMetaRange(lowerBound, count);
- }
-
- public InternalEObject lookupMetaInstance(CDOID id)
- {
- InternalEObject metaInstance = idToMetaInstanceMap.get(id);
- if (metaInstance == null)
- {
- CDOPackage[] cdoPackages = packageManager.getPackages();
- for (CDOPackage cdoPackage : cdoPackages)
- {
- CDOIDMetaRange metaIDRange = cdoPackage.getMetaIDRange();
- if (metaIDRange != null && metaIDRange.contains(id))
- {
- EPackage ePackage = ModelUtil.getEPackage(cdoPackage, packageRegistry);
- registerEPackage(ePackage);
- metaInstance = idToMetaInstanceMap.get(id);
- break;
- }
- }
- }
-
- return metaInstance;
- }
-
- public CDOID lookupMetaInstanceID(InternalEObject metaInstance)
- {
- return metaInstanceToIDMap.get(metaInstance);
- }
-
- public void registerEPackage(EPackage ePackage, CDOIDMetaRange metaIDRange)
- {
- if (metaIDRange.isTemporary())
- {
- throw new IllegalArgumentException("metaIDRange.isTemporary()");
- }
-
- CDOIDMetaRange range = CDOIDUtil.createMetaRange(metaIDRange.getLowerBound(), 0);
- range = SessionUtil
- .registerMetaInstance((InternalEObject)ePackage, range, idToMetaInstanceMap, metaInstanceToIDMap);
- if (range.size() != metaIDRange.size())
- {
- throw new IllegalStateException("range.size() != metaIDRange.size()");
- }
- }
-
- public CDOIDMetaRange registerEPackage(EPackage ePackage)
- {
- CDOIDMetaRange range = SessionUtil.registerEPackage(ePackage, lastTempMetaID + 1, idToMetaInstanceMap,
- metaInstanceToIDMap);
- lastTempMetaID = ((CDOIDTempMeta)range.getUpperBound()).getIntValue();
- return range;
- }
-
- public void remapMetaInstance(CDOID oldID, CDOID newID)
- {
- InternalEObject metaInstance = idToMetaInstanceMap.remove(oldID);
- if (metaInstance == null)
- {
- throw new IllegalArgumentException("Unknown meta instance id: " + oldID);
- }
-
- if (TRACER.isEnabled())
- {
- TRACER.format("Remapping meta instance: {0} --> {1} <-> {2}", oldID, newID, metaInstance);
- }
-
- idToMetaInstanceMap.put(newID, metaInstance);
- metaInstanceToIDMap.put(metaInstance, newID);
- }
-
/**
* @since 2.0
*/
@@ -662,41 +522,20 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
fireEvent(new InvalidationEvent(excludedView, timeStamp, dirtyOIDs, detachedObjects));
}
- /**
- * @since 2.0
- */
- public void writePackageURI(ExtendedDataOutput out, String uri) throws IOException
- {
- packageURICompressor.write(out, uri);
- }
-
- /**
- * @since 2.0
- */
- public String readPackageURI(ExtendedDataInput in) throws IOException
- {
- return packageURICompressor.read(in);
- }
-
@Override
public String toString()
{
- return MessageFormat.format("CDOSession[{0}, {1}]", repositoryName, sessionID);
+ return MessageFormat.format("CDOSession[{0}, {1}]", repository().getName(), sessionID);
}
/**
* @since 2.0
*/
- protected CDOPackageRegistry createPackageRegistry()
+ protected InternalCDOPackageRegistry createPackageRegistry()
{
return new CDOPackageRegistryImpl();
}
- protected CDOSessionPackageManagerImpl createPackageManager()
- {
- return new CDOSessionPackageManagerImpl(this);
- }
-
protected CDORevisionManagerImpl createRevisionManager()
{
return new CDORevisionManagerImpl(this);
@@ -751,31 +590,49 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
{
super.doBeforeActivate();
checkState(getSessionProtocol(), "sessionProtocol");
- checkState(repositoryName, "repositoryName");
+ checkState(repository().getName(), "repository().getName()");
}
@Override
protected void doActivate() throws Exception
{
super.doActivate();
+ revisionManager.activate();
+ remoteSessionManager.activate();
if (packageRegistry == null)
{
packageRegistry = createPackageRegistry();
}
- packageRegistry.setSession(this);
+ packageRegistry.setPackageProcessor(this);
+ packageRegistry.setPackageLoader(this);
+ packageRegistry.activate();
+ // EMFUtil.registerPackage(EcorePackage.eINSTANCE, packageRegistry);
+ // EMFUtil.registerPackage(EresourcePackage.eINSTANCE, packageRegistry);
+
+ String name = repository().getName();
+ boolean passiveUpdateEnabled = options().isPassiveUpdateEnabled();
+ OpenSessionResult result = getSessionProtocol().openSession(name, passiveUpdateEnabled);
- OpenSessionResult result = getSessionProtocol().openSession(repositoryName, options().isPassiveUpdateEnabled());
sessionID = result.getSessionID();
- repositoryUUID = result.getRepositoryUUID();
- repositoryCreationTime = result.getRepositoryCreationTime();
- repositoryTimeResult = result.getRepositoryTimeResult();
- repositorySupportingAudits = result.isRepositorySupportingAudits();
+ repository = createRepository(result);
handleLibraryDescriptor(result.getLibraryDescriptor());
- packageURICompressor = result.getCompressor();
- packageManager.addPackageProxies(result.getPackageInfos());
- packageManager.activate();
- revisionManager.activate();
+
+ for (InternalCDOPackageUnit packageUnit : result.getPackageUnits())
+ {
+ if (EcorePackage.eINSTANCE.getNsURI().equals(packageUnit.getID()))
+ {
+ EMFUtil.addAdapter(EcorePackage.eINSTANCE, packageUnit.getTopLevelPackageInfo());
+ packageUnit.setState(CDOPackageUnit.State.LOADED);
+ }
+ else if (EresourcePackage.eINSTANCE.getNsURI().equals(packageUnit.getID()))
+ {
+ EMFUtil.addAdapter(EresourcePackage.eINSTANCE, packageUnit.getTopLevelPackageInfo());
+ packageUnit.setState(CDOPackageUnit.State.LOADED);
+ }
+
+ packageRegistry.putPackageUnit(packageUnit);
+ }
}
@Override
@@ -804,8 +661,8 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
revisionManager.deactivate();
revisionManager = null;
- packageManager.deactivate();
- packageManager = null;
+ packageRegistry.deactivate();
+ packageRegistry = null;
super.doDeactivate();
}
@@ -856,7 +713,7 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
{
String stateLocation = OM.BUNDLE.getStateLocation();
File repos = new File(stateLocation, "repos");
- return new File(repos, repositoryUUID);
+ return new File(repos, repository().getUUID());
}
private Set<String> createSet(String[] fileNames)
@@ -932,67 +789,12 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
/**
* @author Eike Stepper
- */
- private final class InvalidationEvent extends Event implements CDOSessionInvalidationEvent
- {
- private static final long serialVersionUID = 1L;
-
- private InternalCDOView view;
-
- private long timeStamp;
-
- private Set<CDOIDAndVersion> dirtyOIDs;
-
- private Collection<CDOID> detachedObjects;
-
- public InvalidationEvent(InternalCDOView view, long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
- Collection<CDOID> detachedObjects)
- {
- super(CDOSessionImpl.this);
- this.view = view;
- this.timeStamp = timeStamp;
- this.dirtyOIDs = dirtyOIDs;
- this.detachedObjects = detachedObjects;
- }
-
- public CDOSession getSession()
- {
- return (CDOSession)getSource();
- }
-
- public InternalCDOView getView()
- {
- return view;
- }
-
- public long getTimeStamp()
- {
- return timeStamp;
- }
-
- public Set<CDOIDAndVersion> getDirtyOIDs()
- {
- return dirtyOIDs;
- }
-
- public Collection<CDOID> getDetachedObjects()
- {
- return detachedObjects;
- }
-
- @Override
- public String toString()
- {
- return "CDOSessionInvalidationEvent: " + dirtyOIDs;
- }
- }
-
- /**
- * @author Eike Stepper
* @since 2.0
*/
protected class OptionsImpl extends Notifier implements Options
{
+ private boolean generatedPackageEmulationEnabled = false;
+
private boolean passiveUpdateEnabled = true;
private CDOCollectionLoadingPolicy collectionLoadingPolicy;
@@ -1011,6 +813,28 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
return CDOSessionImpl.this;
}
+ public boolean isGeneratedPackageEmulationEnabled()
+ {
+ return generatedPackageEmulationEnabled;
+ }
+
+ public void setGeneratedPackageEmulationEnabled(boolean generatedPackageEmulationEnabled)
+ {
+ this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
+ if (this.generatedPackageEmulationEnabled != generatedPackageEmulationEnabled)
+ {
+ this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
+ // TODO Check inconsistent state if switching off?
+
+ fireEvent(new GeneratedPackageEmulationEventImpl());
+ }
+ }
+
+ public boolean isPassiveUpdateEnabled()
+ {
+ return passiveUpdateEnabled;
+ }
+
public void setPassiveUpdateEnabled(boolean passiveUpdateEnabled)
{
if (this.passiveUpdateEnabled != passiveUpdateEnabled)
@@ -1029,11 +853,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
}
}
- public boolean isPassiveUpdateEnabled()
- {
- return passiveUpdateEnabled;
- }
-
public CDOCollectionLoadingPolicy getCollectionLoadingPolicy()
{
return collectionLoadingPolicy;
@@ -1059,9 +878,9 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
{
revisionFactory = new CDORevisionFactory()
{
- public CDORevision createRevision(CDOClass cdoClass, CDOID id)
+ public CDORevision createRevision(EClass eClass, CDOID id)
{
- return CDORevisionUtil.create(cdoClass, id);
+ return CDORevisionUtil.create(eClass, id);
}
public CDORevision createRevision(CDODataInput in) throws IOException
@@ -1092,6 +911,20 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
/**
* @author Eike Stepper
*/
+ private final class GeneratedPackageEmulationEventImpl extends OptionsEvent implements
+ GeneratedPackageEmulationEvent
+ {
+ private static final long serialVersionUID = 1L;
+
+ public GeneratedPackageEmulationEventImpl()
+ {
+ super(OptionsImpl.this);
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
private final class PassiveUpdateEventImpl extends OptionsEvent implements PassiveUpdateEvent
{
private static final long serialVersionUID = 1L;
@@ -1128,4 +961,174 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
}
}
}
+
+ /**
+ * @author Eike Stepper
+ */
+ protected class RepositoryImpl implements CDOSession.Repository
+ {
+ private String name;
+
+ private String uuid;
+
+ private long creationTime;
+
+ private RepositoryTimeResult timeResult;
+
+ private boolean supportingAudits;
+
+ public RepositoryImpl(String name, OpenSessionResult result)
+ {
+ this.name = name;
+ uuid = result.getRepositoryUUID();
+ creationTime = result.getRepositoryCreationTime();
+ timeResult = result.getRepositoryTimeResult();
+ supportingAudits = result.isRepositorySupportingAudits();
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Must be callable before session activation has finished!
+ */
+ public String getUUID()
+ {
+ return uuid;
+ }
+
+ public long getCreationTime()
+ {
+ checkActive();
+ return creationTime;
+ }
+
+ public long getCurrentTime()
+ {
+ return getCurrentTime(false);
+ }
+
+ public long getCurrentTime(boolean forceRefresh)
+ {
+ checkActive();
+ if (timeResult == null || forceRefresh)
+ {
+ timeResult = refreshTime();
+ }
+
+ return timeResult.getAproximateRepositoryTime();
+ }
+
+ public boolean isSupportingAudits()
+ {
+ return supportingAudits;
+ }
+
+ private RepositoryTimeResult refreshTime()
+ {
+ return getSessionProtocol().getRepositoryTime();
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private static final class TemporaryRepositoryName implements CDOSession.Repository
+ {
+ private String name;
+
+ public TemporaryRepositoryName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public long getCreationTime()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public long getCurrentTime()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public long getCurrentTime(boolean forceRefresh)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getUUID()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean isSupportingAudits()
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private final class InvalidationEvent extends Event implements CDOSessionInvalidationEvent
+ {
+ private static final long serialVersionUID = 1L;
+
+ private InternalCDOView view;
+
+ private long timeStamp;
+
+ private Set<CDOIDAndVersion> dirtyOIDs;
+
+ private Collection<CDOID> detachedObjects;
+
+ public InvalidationEvent(InternalCDOView view, long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
+ Collection<CDOID> detachedObjects)
+ {
+ super(CDOSessionImpl.this);
+ this.view = view;
+ this.timeStamp = timeStamp;
+ this.dirtyOIDs = dirtyOIDs;
+ this.detachedObjects = detachedObjects;
+ }
+
+ public CDOSession getSession()
+ {
+ return (CDOSession)getSource();
+ }
+
+ public InternalCDOView getView()
+ {
+ return view;
+ }
+
+ public long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public Set<CDOIDAndVersion> getDirtyOIDs()
+ {
+ return dirtyOIDs;
+ }
+
+ public Collection<CDOID> getDetachedObjects()
+ {
+ return detachedObjects;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "CDOSessionInvalidationEvent: " + dirtyOIDs;
+ }
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionPackageManagerImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionPackageManagerImpl.java
deleted file mode 100644
index fcf99fce92..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionPackageManagerImpl.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- * Simon McDuff - maintenance
- */
-package org.eclipse.emf.internal.cdo.session;
-
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.internal.common.model.CDOPackageManagerImpl;
-import org.eclipse.emf.cdo.session.CDOSessionPackageManager;
-
-import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.spi.cdo.InternalCDOSession;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * @author Eike Stepper
- */
-public class CDOSessionPackageManagerImpl extends CDOPackageManagerImpl implements CDOSessionPackageManager
-{
- private InternalCDOSession session;
-
- /**
- * For optimization only. Instead of doing 3 lookups we are doing only one.
- * <p>
- * We could apply the same strategy for CDOClass and CDOPackage, because this is an optimization it will be good to do
- * it only if it proof to make a difference. CDOPackage doesn't need to do it since we will do one lookup anyway...
- * otherwise we need to proof it is more efficient.
- * <p>
- * TODO Should we have a cache for CDOClass(to save 1 lookup), CDOPackage (doesn'T save any lookup) ? TODO A reverse
- * lookup cache is it worth it ?
- */
- private Map<EStructuralFeature, CDOFeature> featureCache = new ConcurrentHashMap<EStructuralFeature, CDOFeature>();
-
- /**
- * @since 2.0
- */
- public CDOSessionPackageManagerImpl(InternalCDOSession session)
- {
- this.session = session;
- ModelUtil.addModelInfos(this);
- }
-
- /**
- * @since 2.0
- */
- public InternalCDOSession getSession()
- {
- return session;
- }
-
- public CDOIDObjectFactory getCDOIDObjectFactory()
- {
- return session;
- }
-
- public CDOPackage convert(EPackage ePackage)
- {
- return ModelUtil.getCDOPackage(ePackage, this);
- }
-
- public CDOClass convert(EClass eClass)
- {
- return ModelUtil.getCDOClass(eClass, this);
- }
-
- public CDOFeature convert(EStructuralFeature eFeature)
- {
- return ModelUtil.getCDOFeature(eFeature, this);
- }
-
- public EPackage convert(CDOPackage cdoPackage)
- {
- return ModelUtil.getEPackage(cdoPackage, session.getPackageRegistry());
- }
-
- public EClass convert(CDOClass cdoClass)
- {
- return ModelUtil.getEClass(cdoClass, session.getPackageRegistry());
- }
-
- public EStructuralFeature convert(CDOFeature cdoFeature)
- {
- return ModelUtil.getEFeature(cdoFeature, session.getPackageRegistry());
- }
-
- /**
- * TODO Simon: If we enhance all these convert methods like getCDOFeature I suggest to do it directly in convert and
- * remove the corresdonding static methods from ModelUtil. Then always call through the interface.
- *
- * @since 2.0
- */
- public CDOFeature getCDOFeature(EStructuralFeature eFeature)
- {
- // Do not synchronized since we don't mind putting the same CDOFeeature twice in the Map.
- CDOFeature feature = featureCache.get(eFeature);
- if (feature == null)
- {
- feature = ModelUtil.getCDOFeature(eFeature, this);
- featureCache.put(eFeature, feature);
- }
-
- return feature;
- }
-
- public void addPackageProxies(Collection<CDOPackageInfo> packageInfos)
- {
- for (CDOPackageInfo info : packageInfos)
- {
- String packageURI = info.getPackageURI();
- boolean dynamic = info.isDynamic();
- CDOIDMetaRange metaIDRange = info.getMetaIDRange();
- String parentURI = info.getParentURI();
-
- CDOPackage proxy = CDOModelUtil.createProxyPackage(this, packageURI, dynamic, metaIDRange, parentURI);
- addPackage(proxy);
- session.getPackageRegistry().putPackageDescriptor(proxy);
- }
- }
-
- /**
- * @since 2.0
- */
- public void loadPackage(CDOPackage cdoPackage)
- {
- if (!cdoPackage.isDynamic())
- {
- String uri = cdoPackage.getPackageURI();
- EPackage ePackage = session.getPackageRegistry().getEPackage(uri);
- if (ePackage != null)
- {
- ModelUtil.initializeCDOPackage(ePackage, cdoPackage);
- return;
- }
- }
-
- session.getSessionProtocol().loadPackage(cdoPackage, false);
- if (!cdoPackage.isDynamic())
- {
- OM.LOG.info("Dynamic package created for " + cdoPackage.getPackageURI());
- }
- }
-
- /**
- * @since 2.0
- */
- public void loadPackageEcore(CDOPackage cdoPackage)
- {
- session.getSessionProtocol().loadPackage(cdoPackage, true);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/SessionUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/SessionUtil.java
index 573b3efff6..1ddd197ddc 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/SessionUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/SessionUtil.java
@@ -10,79 +10,22 @@
*/
package org.eclipse.emf.internal.cdo.session;
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.view.CDOViewSetImpl;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.spi.cdo.InternalCDOViewSet;
-import java.util.Map;
-
/**
* @author Eike Stepper
*/
public final class SessionUtil
{
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, SessionUtil.class);
-
private SessionUtil()
{
}
- public static CDOIDMetaRange registerEPackage(EPackage ePackage, int firstMetaID,
- Map<CDOID, InternalEObject> idToMetaInstances, Map<InternalEObject, CDOID> metaInstanceToIDs)
- {
- CDOIDTemp lowerBound = CDOIDUtil.createTempMeta(firstMetaID);
- CDOIDMetaRange range = CDOIDUtil.createMetaRange(lowerBound, 0);
- range = registerMetaInstance((InternalEObject)ePackage, range, idToMetaInstances, metaInstanceToIDs);
- return range;
- }
-
- public static CDOIDMetaRange registerMetaInstance(InternalEObject metaInstance, CDOIDMetaRange range,
- Map<CDOID, InternalEObject> idToMetaInstances, Map<InternalEObject, CDOID> metaInstanceToIDs)
- {
- range = range.increase();
- CDOID id = range.getUpperBound();
- if (TRACER.isEnabled())
- {
- TRACER.format("Registering meta instance: {0} <-> {1}", id, metaInstance);
- }
-
- if (idToMetaInstances != null)
- {
- if (idToMetaInstances.put(id, metaInstance) != null)
- {
- throw new IllegalStateException("Duplicate meta ID: " + id + " --> " + metaInstance);
- }
- }
-
- if (metaInstanceToIDs != null)
- {
- if (metaInstanceToIDs.put(metaInstance, id) != null)
- {
- throw new IllegalStateException("Duplicate metaInstance: " + metaInstance + " --> " + id);
- }
- }
-
- for (EObject content : metaInstance.eContents())
- {
- range = registerMetaInstance((InternalEObject)content, range, idToMetaInstances, metaInstanceToIDs);
- }
-
- return range;
- }
-
/**
* @since 2.0
*/
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
index f2929fe496..9c6e9bd542 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
@@ -18,7 +18,10 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
@@ -30,7 +33,7 @@ import org.eclipse.emf.cdo.eresource.CDOResourceNode;
import org.eclipse.emf.cdo.eresource.EresourceFactory;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceNodeImpl;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.emf.cdo.transaction.CDOConflictResolver;
import org.eclipse.emf.cdo.transaction.CDOSavepoint;
@@ -45,11 +48,9 @@ import org.eclipse.emf.cdo.view.CDOViewResourcesEvent;
import org.eclipse.emf.internal.cdo.CDOObjectMerger;
import org.eclipse.emf.internal.cdo.CDOStateMachine;
import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
import org.eclipse.emf.internal.cdo.util.CompletePackageClosure;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
import org.eclipse.emf.internal.cdo.util.IPackageClosure;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
import org.eclipse.net4j.util.ImplementationError;
@@ -927,6 +928,8 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
TRACER.format("Registering new object {0}", object);
}
+ registerNewPackage(object.eClass().getEPackage());
+
for (CDOTransactionHandler handler : getHandlers())
{
handler.attachingObject(this, object);
@@ -942,6 +945,15 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
}
}
+ private void registerNewPackage(EPackage ePackage)
+ {
+ CDOPackageRegistry packageRegistry = getSession().getPackageRegistry();
+ if (!packageRegistry.containsKey(ePackage.getNsURI()))
+ {
+ packageRegistry.putEPackage(ePackage);
+ }
+ }
+
/**
* Receives notification for new and dirty objects
*/
@@ -1020,10 +1032,9 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
}
}
- @SuppressWarnings("unchecked")
- private List<CDOPackage> analyzeNewPackages()
+ private List<CDOPackageUnit> analyzeNewPackages()
{
- CDOSessionPackageManagerImpl packageManager = (CDOSessionPackageManagerImpl)getSession().getPackageManager();
+ CDOPackageRegistry packageRegistry = getSession().getPackageRegistry();
Set<EPackage> usedPackages = new HashSet<EPackage>();
Set<EPackage> usedNewPackages = new HashSet<EPackage>();
for (CDOObject object : getNewObjects().values())
@@ -1031,13 +1042,16 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
EPackage ePackage = object.eClass().getEPackage();
if (usedPackages.add(ePackage))
{
- EPackage topLevelPackage = ModelUtil.getTopLevelPackage(ePackage);
+ EPackage topLevelPackage = EMFUtil.getTopLevelPackage(ePackage);
if (ePackage == topLevelPackage || usedPackages.add(topLevelPackage))
{
- CDOPackage cdoPackage = ModelUtil.getCDOPackage(topLevelPackage, packageManager);
- if (!cdoPackage.isPersistent() && !cdoPackage.isSystem())
+ if (!CDOModelUtil.isSystemPackage(topLevelPackage))
{
- usedNewPackages.add(topLevelPackage);
+ CDOPackageUnit packageUnit = packageRegistry.getPackageUnit(topLevelPackage);
+ if (packageUnit.getState() == CDOPackageUnit.State.NEW)
+ {
+ usedNewPackages.add(topLevelPackage);
+ }
}
}
}
@@ -1045,32 +1059,42 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
if (usedNewPackages.size() > 0)
{
- return analyzeNewPackages(usedNewPackages, packageManager);
+ Set<CDOPackageUnit> result = new HashSet<CDOPackageUnit>();
+ for (EPackage usedNewPackage : analyzeNewPackages(usedNewPackages, packageRegistry))
+ {
+ CDOPackageUnit packageUnit = packageRegistry.getPackageUnit(usedNewPackage);
+ result.add(packageUnit);
+ }
+
+ return new ArrayList<CDOPackageUnit>(result);
}
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
}
- private static List<CDOPackage> analyzeNewPackages(Collection<EPackage> usedTopLevelPackages,
- CDOSessionPackageManagerImpl packageManager)
+ private static List<EPackage> analyzeNewPackages(Collection<EPackage> usedTopLevelPackages,
+ CDOPackageRegistry packageRegistry)
{
- // Determine which of the corresdonding CDOPackages are new
- List<CDOPackage> newPackages = new ArrayList<CDOPackage>();
+ // Determine which of the corresdonding EPackages are new
+ List<EPackage> newPackages = new ArrayList<EPackage>();
IPackageClosure closure = new CompletePackageClosure();
usedTopLevelPackages = closure.calculate(usedTopLevelPackages);
for (EPackage usedPackage : usedTopLevelPackages)
{
- CDOPackage cdoPackage = ModelUtil.getCDOPackage(usedPackage, packageManager);
- if (cdoPackage == null)
+ if (!CDOModelUtil.isSystemPackage(usedPackage))
{
- throw new IllegalStateException("Missing CDO package: " + usedPackage.getNsURI());
- }
+ CDOPackageUnit packageUnit = packageRegistry.getPackageUnit(usedPackage);
+ if (packageUnit == null)
+ {
+ throw new CDOException("No package unit for " + usedPackage);
+ }
- if (!(cdoPackage.isPersistent() || cdoPackage.isSystem()))
- {
- newPackages.add(cdoPackage);
+ if (packageUnit.getState() == CDOPackageUnit.State.NEW)
+ {
+ newPackages.add(usedPackage);
+ }
}
}
@@ -1158,7 +1182,7 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
private Map<CDOID, CDOObject> detachedObjects;
- private List<CDOPackage> newPackages;
+ private List<CDOPackageUnit> newPackageUnits;
public CDOCommitContextImpl()
{
@@ -1168,7 +1192,7 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
dirtyObjects = transaction.getDirtyObjects();
detachedObjects = transaction.getDetachedObjects();
revisionDeltas = transaction.getRevisionDeltas();
- newPackages = transaction.analyzeNewPackages();
+ newPackageUnits = transaction.analyzeNewPackages();
}
public CDOTransactionImpl getTransaction()
@@ -1186,9 +1210,9 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
return newObjects;
}
- public List<CDOPackage> getNewPackages()
+ public List<CDOPackageUnit> getNewPackageUnits()
{
- return newPackages;
+ return newPackageUnits;
}
public Map<CDOID, CDOResource> getNewResources()
@@ -1254,9 +1278,9 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
}
InternalCDOSession session = getSession();
- for (CDOPackage newPackage : newPackages)
+ for (CDOPackageUnit newPackageUnit : newPackageUnits)
{
- ((InternalCDOPackage)newPackage).setPersistent(true);
+ ((InternalCDOPackageUnit)newPackageUnit).setState(CDOPackageUnit.State.LOADED);
}
long timeStamp = result.getTimeStamp();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
index 62d62eda7c..636fc9b1ad 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
@@ -12,7 +12,7 @@ package org.eclipse.emf.internal.cdo.transaction;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.eresource.CDOResource;
@@ -112,9 +112,9 @@ public class CDOXACommitContextImpl implements InternalCDOXACommitContext
return delegateCommitContext.getNewObjects();
}
- public List<CDOPackage> getNewPackages()
+ public List<CDOPackageUnit> getNewPackageUnits()
{
- return delegateCommitContext.getNewPackages();
+ return delegateCommitContext.getNewPackageUnits();
}
public Map<CDOID, CDOResource> getNewResources()
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
index 2144e6712b..d4515e90bd 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
@@ -15,6 +15,7 @@ import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.util.InvalidObjectException;
import org.eclipse.emf.cdo.util.ObjectNotFoundException;
import org.eclipse.emf.cdo.view.CDOView;
@@ -133,13 +134,16 @@ public final class FSMUtil
object = (InternalEObject)EcoreUtil.resolve(object, view.getResourceSet());
}
- CDOID id = ((InternalCDOView)view).getSession().lookupMetaInstanceID(object);
- if (id != null)
+ try
{
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)view.getSession().getPackageRegistry();
+ CDOID id = packageRegistry.getMetaInstanceMapper().lookupMetaInstanceID(object);
return new CDOMetaWrapper((InternalCDOView)view, object, id);
}
-
- return null;
+ catch (RuntimeException ex)
+ {
+ return null;
+ }
}
/*
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
deleted file mode 100644
index 5d0c9047bf..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/ModelUtil.java
+++ /dev/null
@@ -1,438 +0,0 @@
-/**
- * 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:
- * Eike Stepper - initial API and implementation
- * Simon McDuff - maintenance
- */
-package org.eclipse.emf.internal.cdo.util;
-
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOClassProxy;
-import org.eclipse.emf.cdo.common.model.CDOClassRef;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOModelUtil;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageManager;
-import org.eclipse.emf.cdo.common.model.CDOType;
-import org.eclipse.emf.cdo.common.model.core.CDOCorePackage;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceFolderClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
-import org.eclipse.emf.cdo.common.util.CDOException;
-import org.eclipse.emf.cdo.eresource.EresourcePackage;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOClass;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOFeature;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackage;
-import org.eclipse.emf.cdo.util.EMFUtil;
-
-import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.session.CDOSessionPackageManagerImpl;
-
-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;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.impl.EPackageImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.spi.cdo.InternalCDOSession;
-
-/**
- * @author Eike Stepper
- */
-public final class ModelUtil
-{
- private static final ContextTracer MODEL_TRACER = new ContextTracer(OM.DEBUG_MODEL, ModelUtil.class);
-
- private ModelUtil()
- {
- }
-
- public static String getParentURI(EPackage ePackage)
- {
- EPackage superPackage = ePackage.getESuperPackage();
- String parentURI = superPackage == null ? null : superPackage.getNsURI();
- return parentURI;
- }
-
- public static EPackage getTopLevelPackage(EPackage ePackage)
- {
- EPackage superPackage = ePackage.getESuperPackage();
- return superPackage == null ? ePackage : getTopLevelPackage(superPackage);
- }
-
- public static CDOType getCDOType(EStructuralFeature eFeature)
- {
- if (eFeature instanceof EReference)
- {
- throw new ImplementationError("Should only be called for attributes");
- // return CDOTypeImpl.OBJECT;
- }
-
- EClassifier classifier = eFeature.getEType();
- if (classifier.getEPackage() == EcorePackage.eINSTANCE)
- {
- int classifierID = classifier.getClassifierID();
- switch (classifierID)
- {
- case EcorePackage.EBOOLEAN:
- case EcorePackage.EBOOLEAN_OBJECT:
- case EcorePackage.EBYTE:
- case EcorePackage.EBYTE_OBJECT:
- case EcorePackage.ECHAR:
- case EcorePackage.ECHARACTER_OBJECT:
- case EcorePackage.EDATE:
- case EcorePackage.EDOUBLE:
- case EcorePackage.EDOUBLE_OBJECT:
- case EcorePackage.EFLOAT:
- case EcorePackage.EFLOAT_OBJECT:
- case EcorePackage.EINT:
- case EcorePackage.EINTEGER_OBJECT:
- case EcorePackage.ELONG:
- case EcorePackage.ELONG_OBJECT:
- case EcorePackage.ESHORT:
- case EcorePackage.ESHORT_OBJECT:
- case EcorePackage.EFEATURE_MAP_ENTRY:
- CDOType type = CDOModelUtil.getType(classifierID);
- if (type == CDOType.OBJECT)
- {
- throw new ImplementationError("Attributes can not be of type OBJECT");
- }
-
- return type;
-
- case EcorePackage.ESTRING:
- return CDOType.STRING;
- }
- }
-
- if (classifier instanceof EDataType)
- {
- return CDOType.CUSTOM;
- }
-
- throw new IllegalArgumentException("Invalid attribute type: " + classifier);
- }
-
- public static void initializeCDOPackage(EPackage ePackage, CDOPackage cdoPackage)
- {
- ((InternalCDOPackage)cdoPackage).setClientInfo(ePackage);
- for (EClass eClass : EMFUtil.getPersistentClasses(ePackage))
- {
- CDOClass cdoClass = createCDOClass(eClass, cdoPackage);
- ((InternalCDOPackage)cdoPackage).addClass(cdoClass);
- }
- }
-
- public static CDOPackage getCDOPackage(EPackage ePackage, CDOSessionPackageManagerImpl packageManager)
- {
- String packageURI = ePackage.getNsURI();
- CDOPackage cdoPackage = packageManager.lookupPackage(packageURI);
- if (cdoPackage == null)
- {
- EPackage topLevelPackage = getTopLevelPackage(ePackage);
- if (topLevelPackage != ePackage)
- {
- getCDOPackage(topLevelPackage, packageManager);
- cdoPackage = packageManager.lookupPackage(packageURI);
- }
- else
- {
- cdoPackage = addCDOPackage(topLevelPackage, packageManager);
- }
- }
-
- return cdoPackage;
- }
-
- public static CDOClass getCDOClass(EClass eClass, CDOSessionPackageManagerImpl packageManager)
- {
- CDOPackage cdoPackage = getCDOPackage(eClass.getEPackage(), packageManager);
- return cdoPackage.lookupClass(eClass.getClassifierID());
- }
-
- public static CDOFeature getCDOFeature(EStructuralFeature eFeature, CDOSessionPackageManagerImpl packageManager)
- {
- CDOClass cdoClass = getCDOClass(eFeature.getEContainingClass(), packageManager);
- return cdoClass.lookupFeature(eFeature.getFeatureID());
- }
-
- public static CDOPackage addCDOPackage(EPackage ePackage, CDOSessionPackageManagerImpl packageManager)
- {
- CDOPackage cdoPackage = createCDOPackage(ePackage, packageManager);
- packageManager.addPackage(cdoPackage);
-
- for (EPackage subPackage : ePackage.getESubpackages())
- {
- addCDOPackage(subPackage, packageManager);
- }
-
- return cdoPackage;
- }
-
- /**
- * @see EMFUtil#getPersistentFeatures(org.eclipse.emf.common.util.EList)
- * @see http://www.eclipse.org/newsportal/article.php?id=26780&group=eclipse.tools.emf#26780
- */
- public static CDOPackage createCDOPackage(EPackage ePackage, CDOSessionPackageManagerImpl packageManager)
- {
- InternalCDOSession session = packageManager.getSession();
- String uri = ePackage.getNsURI();
- String parentURI = getParentURI(ePackage);
- String name = ePackage.getName();
- boolean dynamic = EMFUtil.isDynamicEPackage(ePackage);
- String ecore = null;
- CDOIDMetaRange idRange = null;
-
- if (parentURI == null)
- {
- if (!EcorePackage.eINSTANCE.getNsURI().equals(uri))
- {
- ecore = EMFUtil.ePackageToString(ePackage, session.getPackageRegistry());
- }
-
- idRange = session.registerEPackage(ePackage);
- }
-
- CDOPackage cdoPackage = CDOModelUtil.createPackage(packageManager, uri, name, ecore, dynamic, idRange, parentURI);
- initializeCDOPackage(ePackage, cdoPackage);
- return cdoPackage;
- }
-
- public static CDOClass createCDOClass(EClass eClass, CDOPackage containingPackage)
- {
- InternalCDOClass cdoClass = (InternalCDOClass)CDOModelUtil.createClass(containingPackage, eClass.getClassifierID(),
- eClass.getName(), eClass.isAbstract());
- cdoClass.setClientInfo(eClass);
-
- for (EClass superType : eClass.getESuperTypes())
- {
- CDOClassRef classRef = createClassRef(superType);
- cdoClass.addSuperType(classRef);
- }
-
- // Bugs: 247978 Make sure featureIndex are properly set for dynamic classes
- eClass.getEAllStructuralFeatures();
-
- for (EStructuralFeature eFeature : EMFUtil.getPersistentFeatures(eClass.getEStructuralFeatures()))
- {
- CDOFeature cdoFeature = createCDOFeature(eFeature, cdoClass);
- cdoClass.addFeature(cdoFeature);
- }
-
- return cdoClass;
- }
-
- public static CDOFeature createCDOFeature(EStructuralFeature eFeature, CDOClass containingClass)
- {
- InternalCDOFeature cdoFeature = (InternalCDOFeature)(EMFUtil.isReference(eFeature) ? createCDOReference(
- (EReference)eFeature, containingClass) : createCDOAttribute((EAttribute)eFeature, containingClass));
- cdoFeature.setClientInfo(eFeature);
- return cdoFeature;
- }
-
- public static CDOFeature createCDOReference(EReference eFeature, CDOClass containingClass)
- {
- CDOPackageManager packageManager = containingClass.getPackageManager();
- int featureID = eFeature.getFeatureID();
- String name = eFeature.getName();
- CDOClassRef classRef = createClassRef(eFeature.getEType());
- boolean many = eFeature.isMany();
- boolean containment = EMFUtil.isContainment(eFeature);
- CDOFeature cdoFeature = CDOModelUtil.createReference(containingClass, featureID, name, new CDOClassProxy(classRef,
- packageManager), many, containment);
-
- EReference opposite = eFeature.getEOpposite();
- if (MODEL_TRACER.isEnabled() && opposite != null)
- {
- MODEL_TRACER.format("Opposite info: package={0}, class={1}, feature={2}", opposite.getEContainingClass()
- .getEPackage().getNsURI(), opposite.getEContainingClass().getName(), opposite.getName());
- }
-
- return cdoFeature;
- }
-
- public static CDOFeature createCDOAttribute(EAttribute eFeature, CDOClass containingClass)
- {
- int featureID = eFeature.getFeatureID();
- String name = eFeature.getName();
- CDOType type = getCDOType(eFeature);
- boolean many = EMFUtil.isMany(eFeature);
- Object defaultValue = eFeature.getDefaultValue();
- if (type == CDOType.CUSTOM)
- {
- try
- {
- defaultValue = EcoreUtil.convertToString((EDataType)eFeature.getEType(), defaultValue);
- }
- catch (RuntimeException ex)
- {
- if (defaultValue != null)
- {
- throw ex;
- }
- }
- }
-
- return CDOModelUtil.createAttribute(containingClass, featureID, name, type, defaultValue, many);
- }
-
- public static EPackage getEPackage(CDOPackage cdoPackage, CDOPackageRegistry packageRegistry)
- {
- EPackage ePackage = (EPackage)cdoPackage.getClientInfo();
- if (ePackage == null)
- {
- String uri = cdoPackage.getPackageURI();
- ePackage = packageRegistry.getEPackage(uri);
- if (ePackage == null)
- {
- ePackage = createEPackage(cdoPackage);
- packageRegistry.put(uri, ePackage);
- }
-
- ((InternalCDOPackage)cdoPackage).setClientInfo(ePackage);
- }
-
- return ePackage;
- }
-
- public static EClass getEClass(CDOClass cdoClass, CDOPackageRegistry packageRegistry)
- {
- EClass eClass = (EClass)cdoClass.getClientInfo();
- if (eClass == null)
- {
- EPackage ePackage = getEPackage(cdoClass.getContainingPackage(), packageRegistry);
- eClass = (EClass)ePackage.getEClassifier(cdoClass.getName());
- ((InternalCDOClass)cdoClass).setClientInfo(eClass);
- }
-
- return eClass;
- }
-
- public static EStructuralFeature getEFeature(CDOFeature cdoFeature, CDOPackageRegistry packageRegistry)
- {
- EStructuralFeature eFeature = (EStructuralFeature)cdoFeature.getClientInfo();
- if (eFeature == null)
- {
- EClass eClass = getEClass(cdoFeature.getContainingClass(), packageRegistry);
- eFeature = eClass.getEStructuralFeature(cdoFeature.getFeatureID());
- ((InternalCDOFeature)cdoFeature).setClientInfo(eFeature);
- }
-
- return eFeature;
- }
-
- public static EPackage createEPackage(CDOPackage cdoPackage)
- {
- if (cdoPackage.isDynamic())
- {
- return createDynamicEPackage(cdoPackage);
- }
-
- EPackage ePackage = getGeneratedEPackage(cdoPackage);
- if (ePackage == null)
- {
- throw new CDOException("Generated package locally not available: " + cdoPackage.getPackageURI());
- }
-
- return ePackage;
- }
-
- public static EPackage getGeneratedEPackage(CDOPackage cdoPackage)
- {
- String packageURI = cdoPackage.getPackageURI();
- if (packageURI.equals(EcorePackage.eINSTANCE.getNsURI()))
- {
- return EcorePackage.eINSTANCE;
- }
-
- EPackage.Registry registry = EPackage.Registry.INSTANCE;
- return registry.getEPackage(packageURI);
- }
-
- public static EPackage createDynamicEPackage(CDOPackage cdoPackage)
- {
- CDOPackage topLevelPackage = cdoPackage.getTopLevelPackage();
- String ecore = topLevelPackage.getEcore();
- EPackageImpl topLevelPackageEPackage = (EPackageImpl)EMFUtil.ePackageFromString(ecore);
- EPackageImpl ePackage = prepareDynamicEPackage(topLevelPackageEPackage, cdoPackage.getPackageURI());
- return ePackage;
- }
-
- public static EPackageImpl prepareDynamicEPackage(EPackageImpl ePackage, String nsURI)
- {
- EMFUtil.prepareDynamicEPackage(ePackage);
- EPackageImpl result = ObjectUtil.equals(ePackage.getNsURI(), nsURI) ? ePackage : null;
- for (EPackage subPackage : ePackage.getESubpackages())
- {
- EPackageImpl p = prepareDynamicEPackage((EPackageImpl)subPackage, nsURI);
- if (p != null && result == null)
- {
- result = p;
- }
- }
-
- return result;
- }
-
- public static CDOClassRef createClassRef(EClassifier classifier)
- {
- if (classifier instanceof EClass)
- {
- String packageURI = classifier.getEPackage().getNsURI();
- int classifierID = classifier.getClassifierID();
- return CDOModelUtil.createClassRef(packageURI, classifierID);
- }
-
- return null;
- }
-
- public static void addModelInfos(CDOSessionPackageManagerImpl packageManager)
- {
- // Ecore
- CDOCorePackage corePackage = packageManager.getCDOCorePackage();
- ((InternalCDOPackage)corePackage).setClientInfo(EcorePackage.eINSTANCE);
- ((InternalCDOClass)corePackage.getCDOObjectClass()).setClientInfo(EcorePackage.eINSTANCE.getEObject());
-
- // Eresource
- if (!ObjectUtil.equals(CDOResourcePackage.PACKAGE_URI, EresourcePackage.eNS_URI))
- {
- throw new ImplementationError();
- }
-
- CDOResourcePackage resourcePackage = packageManager.getCDOResourcePackage();
- ((InternalCDOPackage)resourcePackage).setClientInfo(EresourcePackage.eINSTANCE);
-
- CDOResourceNodeClass resourceNodeClass = resourcePackage.getCDOResourceNodeClass();
- ((InternalCDOClass)resourceNodeClass).setClientInfo(EresourcePackage.eINSTANCE.getCDOResourceNode());
- ((InternalCDOFeature)resourceNodeClass.getCDOFolderFeature()).setClientInfo(EresourcePackage.eINSTANCE
- .getCDOResourceNode_Folder());
- ((InternalCDOFeature)resourceNodeClass.getCDONameFeature()).setClientInfo(EresourcePackage.eINSTANCE
- .getCDOResourceNode_Name());
-
- CDOResourceFolderClass resourceFolderClass = resourcePackage.getCDOResourceFolderClass();
- ((InternalCDOClass)resourceFolderClass).setClientInfo(EresourcePackage.eINSTANCE.getCDOResourceFolder());
- ((InternalCDOFeature)resourceFolderClass.getCDONodesFeature()).setClientInfo(EresourcePackage.eINSTANCE
- .getCDOResourceFolder_Nodes());
-
- CDOResourceClass resourceClass = resourcePackage.getCDOResourceClass();
- ((InternalCDOClass)resourceClass).setClientInfo(EresourcePackage.eINSTANCE.getCDOResource());
- ((InternalCDOFeature)resourceClass.getCDOContentsFeature()).setClientInfo(EresourcePackage.eINSTANCE
- .getCDOResource_Contents());
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/RevisionAdjuster.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/RevisionAdjuster.java
index 8ee7ab0cb4..0b623e3df2 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/RevisionAdjuster.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/RevisionAdjuster.java
@@ -13,7 +13,6 @@
package org.eclipse.emf.internal.cdo.util;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.delta.CDOAddFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDOContainerFeatureDelta;
@@ -25,6 +24,8 @@ import org.eclipse.emf.cdo.internal.common.revision.delta.CDOListFeatureDeltaImp
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.spi.cdo.CDOElementProxy;
/**
@@ -65,9 +66,9 @@ public class RevisionAdjuster extends CDOFeatureDeltaVisitorImpl
@Override
public void visit(CDOSetFeatureDelta delta)
{
- CDOFeature feature = delta.getFeature();
+ EStructuralFeature feature = delta.getFeature();
Object value = delta.getValue();
- if (value != null && feature.isReference() && !(value instanceof CDOElementProxy))
+ if (value != null && feature instanceof EReference && !(value instanceof CDOElementProxy))
{
revision.setValue(feature, referenceAdjuster.adjustReference(value));
}
@@ -76,10 +77,10 @@ public class RevisionAdjuster extends CDOFeatureDeltaVisitorImpl
@Override
public void visit(CDOListFeatureDelta deltas)
{
- CDOFeature feature = deltas.getFeature();
+ EStructuralFeature feature = deltas.getFeature();
InternalCDOList list = (InternalCDOList)revision.getValue(feature);
- if (feature.isReference())
+ if (feature instanceof EReference)
{
int[] indices = ((CDOListFeatureDeltaImpl)deltas).reconstructAddedIndices().getElement2();
for (int i = 1; i <= indices[0]; i++)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
index cac2017419..a0004e3150 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
@@ -19,12 +19,7 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDMeta;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.model.CDOClass;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDONameFeature;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceFolderClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourceNodeClass;
-import org.eclipse.emf.cdo.common.model.resource.CDOResourcePackage;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionResolver;
@@ -33,7 +28,9 @@ import org.eclipse.emf.cdo.common.util.CDOException;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.transaction.CDOCommitContext;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
@@ -60,7 +57,6 @@ import org.eclipse.emf.internal.cdo.CDOURIHandler;
import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.query.CDOQueryImpl;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
-import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.StringUtil;
@@ -79,8 +75,10 @@ import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -449,15 +447,14 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
}
InternalCDORevision folderRevision = getLocalRevision(folderID);
- CDOResourcePackage resourcePackage = getSession().getPackageManager().getCDOResourcePackage();
- CDOResourceFolderClass resourceFolderClass = resourcePackage.getCDOResourceFolderClass();
- if (folderRevision.getCDOClass() != resourceFolderClass)
+ EClass resourceFolderClass = EresourcePackage.eINSTANCE.getCDOResourceFolder();
+ if (folderRevision.getEClass() != resourceFolderClass)
{
throw new CDOException("Expected folder for id = " + folderID);
}
- CDOFeature nodesFeature = resourceFolderClass.getCDONodesFeature();
- CDOFeature nameFeature = resourcePackage.getCDOResourceNodeClass().getCDONameFeature();
+ EReference nodesFeature = EresourcePackage.eINSTANCE.getCDOResourceFolder_Nodes();
+ EAttribute nameFeature = EresourcePackage.eINSTANCE.getCDOResourceNode_Name();
int size = folderRevision.data().size(nodesFeature);
for (int i = 0; i < size; i++)
@@ -630,17 +627,6 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
return (CDOResourceImpl)getObject(resourceID);
}
- public InternalCDOObject newInstance(CDOClass cdoClass)
- {
- EClass eClass = ModelUtil.getEClass(cdoClass, session.getPackageRegistry());
- if (eClass == null)
- {
- throw new IllegalStateException("No EClass for " + cdoClass);
- }
-
- return newInstance(eClass);
- }
-
public InternalCDOObject newInstance(EClass eClass)
{
EObject eObject = EcoreUtil.create(eClass);
@@ -698,7 +684,7 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
}
// CDOResource have a special way to register to the view.
- if (!localLookupObject.cdoClass().isResource())
+ if (!CDOModelUtil.isResource(localLookupObject.eClass()))
{
registerObject(localLookupObject);
}
@@ -774,12 +760,8 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
TRACER.trace("Creating meta object for " + id);
}
- InternalEObject metaInstance = session.lookupMetaInstance(id);
- if (metaInstance == null)
- {
- throw new ImplementationError("No metaInstance for " + id);
- }
-
+ InternalCDOPackageRegistry packageRegistry = (InternalCDOPackageRegistry)session.getPackageRegistry();
+ InternalEObject metaInstance = packageRegistry.getMetaInstanceMapper().lookupMetaInstance(id);
return new CDOMetaWrapper(this, metaInstance, id);
}
@@ -796,16 +778,16 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
InternalCDORevision revision = getRevision(id, true);
FSMUtil.validate(id, revision);
- CDOClass cdoClass = revision.getCDOClass();
+ EClass eClass = revision.getEClass();
InternalCDOObject object;
- if (cdoClass.isResource())
+ if (CDOModelUtil.isResource(eClass))
{
object = (InternalCDOObject)newResourceInstance(revision);
// object is PROXY
}
else
{
- object = newInstance(cdoClass);
+ object = newInstance(eClass);
// object is TRANSIENT
}
@@ -821,9 +803,7 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
private String getResourcePath(InternalCDORevision revision)
{
- CDOResourcePackage resourcePackage = session.getPackageManager().getCDOResourcePackage();
- CDOResourceNodeClass resourceNodeClass = resourcePackage.getCDOResourceNodeClass();
- CDONameFeature nameFeature = resourceNodeClass.getCDONameFeature();
+ EAttribute nameFeature = EresourcePackage.eINSTANCE.getCDOResourceNode_Name();
CDOID folderID = (CDOID)revision.data().getContainerID();
String name = (String)revision.data().get(nameFeature, 0);
@@ -1178,7 +1158,7 @@ public class CDOViewImpl extends Lifecycle implements InternalCDOView
if (deltas != null)
{
- CDONotificationBuilder builder = new CDONotificationBuilder(getSession().getPackageRegistry());
+ CDONotificationBuilder builder = new CDONotificationBuilder();
for (CDORevisionDelta delta : deltas)
{
InternalCDOObject object = changeSubscriptionManager.getSubcribeObject(delta.getID());
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
index e04dd7b0ee..5395adc862 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
@@ -179,25 +179,24 @@ public class CDOViewSetImpl extends NotifierImpl implements InternalCDOViewSet
public void setTarget(Notifier newTarget)
{
- if (resourceSet != null)
- {
- throw new IllegalStateException("Cannot associate more than 1 resourceset to this viewset");
- }
- if (isAdapterForType(newTarget))
+ if (!isAdapterForType(newTarget))
{
- resourceSet = (ResourceSet)newTarget;
- EPackage.Registry oldPackageRegistry = resourceSet.getPackageRegistry();
- packageRegistry = new CDOViewSetPackageRegistryImpl(this, oldPackageRegistry);
- resourceSet.setPackageRegistry(packageRegistry);
-
- Registry registry = resourceSet.getResourceFactoryRegistry();
- Map<String, Object> map = registry.getProtocolToFactoryMap();
- map.put(CDOProtocolConstants.PROTOCOL_NAME, getResourceFactory());
+ throw new IllegalArgumentException("Unsupported target: " + newTarget);
}
- else
+
+ if (resourceSet != null)
{
- throw new IllegalArgumentException("Doesn't support " + newTarget);
+ throw new IllegalStateException("Cannot associate more than 1 resource set with this view set");
}
+
+ resourceSet = (ResourceSet)newTarget;
+ EPackage.Registry oldPackageRegistry = resourceSet.getPackageRegistry();
+ packageRegistry = new CDOViewSetPackageRegistryImpl(this, oldPackageRegistry);
+ resourceSet.setPackageRegistry(packageRegistry);
+
+ Registry registry = resourceSet.getResourceFactoryRegistry();
+ Map<String, Object> map = registry.getProtocolToFactoryMap();
+ map.put(CDOProtocolConstants.PROTOCOL_NAME, getResourceFactory());
}
public boolean isAdapterForType(Object type)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java
index 724926c23a..96b1c8df18 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java
@@ -14,11 +14,10 @@ import org.eclipse.emf.cdo.CDODeltaNotification;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.util.CDOException;
-import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionMerger;
+import org.eclipse.emf.cdo.spi.common.revision.CDORevisionMerger;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import org.eclipse.emf.cdo.transaction.CDOCommitContext;
@@ -36,6 +35,7 @@ import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
import java.util.ArrayList;
import java.util.Collections;
@@ -346,7 +346,7 @@ public abstract class AbstractObjectConflictResolver implements CDOConflictResol
protected boolean hasFeatureConflicts(CDORevisionDelta localDelta, List<CDORevisionDelta> remoteDeltas)
{
- Set<CDOFeature> features = new HashSet<CDOFeature>();
+ Set<EStructuralFeature> features = new HashSet<EStructuralFeature>();
for (CDOFeatureDelta localFeatureDelta : localDelta.getFeatureDeltas())
{
features.add(localFeatureDelta.getFeature());
@@ -356,7 +356,7 @@ public abstract class AbstractObjectConflictResolver implements CDOConflictResol
{
for (CDOFeatureDelta remoteFeatureDelta : remoteDelta.getFeatureDeltas())
{
- CDOFeature feature = remoteFeatureDelta.getFeature();
+ EStructuralFeature feature = remoteFeatureDelta.getFeature();
if (features.contains(feature))
{
return true;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOElementProxy.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOElementProxy.java
index 879fdf4acd..e188c2d542 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOElementProxy.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOElementProxy.java
@@ -11,10 +11,11 @@
*/
package org.eclipse.emf.spi.cdo;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.session.CDORevisionManager;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
/**
* @author Eike Stepper
* @noimplement This interface is not intended to be implemented by clients.
@@ -24,6 +25,6 @@ public interface CDOElementProxy
{
public int getIndex();
- public Object resolve(CDORevisionManager revisionManager, CDORevision revision, CDOFeature feature, int index);
+ public Object resolve(CDORevisionManager revisionManager, CDORevision revision, EStructuralFeature feature, int index);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
index a4220e17ee..8cdd102fd0 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java
@@ -13,33 +13,27 @@ package org.eclipse.emf.spi.cdo;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.model.CDOFeature;
-import org.eclipse.emf.cdo.common.model.CDOPackage;
-import org.eclipse.emf.cdo.common.model.CDOPackageInfo;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry.PackageLoader;
import org.eclipse.emf.cdo.spi.common.revision.CDOIDMapper;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.transaction.CDOTimeStampContext;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.concurrent.RWLockManager.LockType;
-import org.eclipse.net4j.util.io.ExtendedDataInput;
-import org.eclipse.net4j.util.io.ExtendedDataOutput;
-import org.eclipse.net4j.util.io.StringCompressor;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
+import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext;
import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext;
import java.io.File;
-import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -52,7 +46,7 @@ import java.util.Set;
* @author Eike Stepper
* @since 2.0
*/
-public interface CDOSessionProtocol
+public interface CDOSessionProtocol extends PackageLoader
{
public OpenSessionResult openSession(String repositoryName, boolean passiveUpdateEnabled);
@@ -62,9 +56,7 @@ public interface CDOSessionProtocol
public RepositoryTimeResult getRepositoryTime();
- public void loadPackage(CDOPackage cdoPackage, boolean onlyEcore);
-
- public Object loadChunk(InternalCDORevision revision, CDOFeature feature, int accessIndex, int fetchIndex,
+ public Object loadChunk(InternalCDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
int fromIndex, int toIndex);
public List<InternalCDORevision> loadRevisions(Collection<CDOID> ids, int referenceChunk);
@@ -113,7 +105,7 @@ public interface CDOSessionProtocol
/**
* @author Eike Stepper
*/
- public final class OpenSessionResult implements CDOPackageURICompressor
+ public final class OpenSessionResult
{
private int sessionID;
@@ -127,9 +119,10 @@ public interface CDOSessionProtocol
private CDOIDLibraryDescriptor libraryDescriptor;
- private List<CDOPackageInfo> packageInfos = new ArrayList<CDOPackageInfo>();
+ private List<InternalCDOPackageUnit> packageUnits = new ArrayList<InternalCDOPackageUnit>();
- private StringCompressor compressor = new StringCompressor(true);
+ // private Map<InternalCDOPackageUnit, CDOPackageUnit.Type> repositoryActualTypes = new
+ // HashMap<InternalCDOPackageUnit, CDOPackageUnit.Type>();
public OpenSessionResult(int sessionID, String repositoryUUID, long repositoryCreationTime,
boolean repositorySupportingAudits, CDOIDLibraryDescriptor libraryDescriptor)
@@ -176,30 +169,15 @@ public interface CDOSessionProtocol
return libraryDescriptor;
}
- public List<CDOPackageInfo> getPackageInfos()
- {
- return packageInfos;
- }
-
- public void addPackageInfo(String packageURI, boolean dynamic, CDOIDMetaRange metaIDRange, String parentURI)
- {
- packageInfos.add(new CDOPackageInfo(packageURI, dynamic, metaIDRange, parentURI));
- }
-
- public StringCompressor getCompressor()
- {
- return compressor;
- }
-
- public void writePackageURI(ExtendedDataOutput out, String uri) throws IOException
+ public List<InternalCDOPackageUnit> getPackageUnits()
{
- compressor.write(out, uri);
+ return packageUnits;
}
- public String readPackageURI(ExtendedDataInput in) throws IOException
- {
- return compressor.read(in);
- }
+ // public Map<InternalCDOPackageUnit, CDOPackageUnit.Type> getRepositoryActualTypes()
+ // {
+ // return repositoryActualTypes;
+ // }
}
/**
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java
index 65a9178b8d..5673aacba5 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.spi.cdo;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.model.CDOPackageTypeRegistry.CDOObjectMarker;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.view.CDOView;
@@ -24,7 +25,7 @@ import org.eclipse.emf.ecore.InternalEObject;
* @author Eike Stepper
* @since 2.0
*/
-public interface InternalCDOObject extends CDOObject, InternalEObject, InternalCDOLoadable
+public interface InternalCDOObject extends CDOObject, InternalEObject, InternalCDOLoadable, CDOObjectMarker
{
public InternalCDOView cdoView();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDORemoteSessionManager.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDORemoteSessionManager.java
index 7437da3a6f..e08d1a710f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDORemoteSessionManager.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDORemoteSessionManager.java
@@ -13,11 +13,13 @@ package org.eclipse.emf.spi.cdo;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionManager;
+import org.eclipse.net4j.util.lifecycle.ILifecycle;
+
/**
* @author Eike Stepper
* @since 2.0
*/
-public interface InternalCDORemoteSessionManager extends CDORemoteSessionManager
+public interface InternalCDORemoteSessionManager extends CDORemoteSessionManager, ILifecycle.Introspection
{
public CDORemoteSession createRemoteSession(int sessionID, String userID, boolean subscribed);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java
index cbb5a23a05..50a4de0be3 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOSession.java
@@ -12,18 +12,14 @@ package org.eclipse.emf.spi.cdo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
-import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
-import org.eclipse.emf.cdo.common.model.CDOPackageURICompressor;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
-import org.eclipse.emf.cdo.session.CDOPackageRegistry;
import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.net4j.util.lifecycle.ILifecycle;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.InternalEObject;
-
import java.util.Collection;
import java.util.Set;
@@ -31,8 +27,8 @@ import java.util.Set;
* @author Eike Stepper
* @since 2.0
*/
-public interface InternalCDOSession extends CDOSession, CDOIDObjectFactory, CDOPackageURICompressor,
- ILifecycle.Introspection
+public interface InternalCDOSession extends CDOSession, CDOIDObjectFactory,
+ InternalCDOPackageRegistry.PackageProcessor, InternalCDOPackageRegistry.PackageLoader, ILifecycle.Introspection
{
public CDOSessionProtocol getSessionProtocol();
@@ -40,16 +36,6 @@ public interface InternalCDOSession extends CDOSession, CDOIDObjectFactory, CDOP
public void setPackageRegistry(CDOPackageRegistry packageRegistry);
- public void registerEPackage(EPackage ePackage, CDOIDMetaRange metaIDRange);
-
- public CDOIDMetaRange registerEPackage(EPackage ePackage);
-
- public InternalEObject lookupMetaInstance(CDOID id);
-
- public CDOID lookupMetaInstanceID(InternalEObject metaInstance);
-
- public void remapMetaInstance(CDOID oldID, CDOID newID);
-
public void viewDetached(InternalCDOView view);
public void handleCommitNotification(long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,

Back to the top