diff options
author | Eike Stepper | 2010-09-04 05:28:34 +0000 |
---|---|---|
committer | Eike Stepper | 2010-09-04 05:28:34 +0000 |
commit | 7ba61a241b3cddeee90a4153b8dc503a7d0b5700 (patch) | |
tree | 3a286ed55e8f4b864994a2bf2227af7eadca0bef | |
parent | 77257035c2fdeae4fab8a91d20d11b8578b36188 (diff) | |
download | cdo-7ba61a241b3cddeee90a4153b8dc503a7d0b5700.tar.gz cdo-7ba61a241b3cddeee90a4153b8dc503a7d0b5700.tar.xz cdo-7ba61a241b3cddeee90a4153b8dc503a7d0b5700.zip |
[324504] Provide API to create CDOResourceFolders
https://bugs.eclipse.org/bugs/show_bug.cgi?id=324504
21 files changed, 226 insertions, 76 deletions
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 56d6cc2bd8..4f2ef3f119 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 @@ -77,8 +77,9 @@ public class CDOResourceItemProvider extends CDOResourceNodeItemProvider impleme */ protected void addURIPropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) - .getRootAdapterFactory(), getResourceLocator(), + itemPropertyDescriptors.add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_CDOResource_uRI_feature"), //$NON-NLS-1$ getString("_UI_PropertyDescriptor_description", "_UI_CDOResource_uRI_feature", "_UI_CDOResource_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ EresourcePackage.Literals.CDO_RESOURCE__URI, false, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, @@ -92,8 +93,9 @@ public class CDOResourceItemProvider extends CDOResourceNodeItemProvider impleme */ protected void addModifiedPropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) - .getRootAdapterFactory(), getResourceLocator(), + itemPropertyDescriptors.add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_CDOResource_modified_feature"), //$NON-NLS-1$ getString("_UI_PropertyDescriptor_description", "_UI_CDOResource_modified_feature", "_UI_CDOResource_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ EresourcePackage.Literals.CDO_RESOURCE__MODIFIED, false, false, false, @@ -107,8 +109,9 @@ public class CDOResourceItemProvider extends CDOResourceNodeItemProvider impleme */ protected void addLoadedPropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) - .getRootAdapterFactory(), getResourceLocator(), + itemPropertyDescriptors.add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_CDOResource_loaded_feature"), //$NON-NLS-1$ getString("_UI_PropertyDescriptor_description", "_UI_CDOResource_loaded_feature", "_UI_CDOResource_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ EresourcePackage.Literals.CDO_RESOURCE__LOADED, false, false, false, @@ -141,8 +144,9 @@ public class CDOResourceItemProvider extends CDOResourceNodeItemProvider impleme */ protected void addTimeStampPropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) - .getRootAdapterFactory(), getResourceLocator(), + itemPropertyDescriptors.add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_CDOResource_timeStamp_feature"), //$NON-NLS-1$ getString("_UI_PropertyDescriptor_description", "_UI_CDOResource_timeStamp_feature", "_UI_CDOResource_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ EresourcePackage.Literals.CDO_RESOURCE__TIME_STAMP, true, false, false, 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 7afd235667..7358f42079 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 @@ -77,7 +77,8 @@ public class CDOResourceNodeItemProvider extends ItemProviderAdapter implements protected void addNamePropertyDescriptor(Object object) { itemPropertyDescriptors - .add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + .add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), getString("_UI_CDOResourceNode_name_feature"), //$NON-NLS-1$ getString( @@ -94,7 +95,8 @@ public class CDOResourceNodeItemProvider extends ItemProviderAdapter implements protected void addPathPropertyDescriptor(Object object) { itemPropertyDescriptors - .add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + .add(createItemPropertyDescriptor( + ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), getString("_UI_CDOResourceNode_path_feature"), //$NON-NLS-1$ getString( 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 3fc2c89f36..1206d07748 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 @@ -197,7 +197,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 +280,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.efs/src/org/eclipse/emf/cdo/internal/efs/AbstractFileStore.java b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/AbstractFileStore.java index 53ab8aeae5..62281216fe 100644 --- a/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/AbstractFileStore.java +++ b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/AbstractFileStore.java @@ -11,9 +11,17 @@ *******************************************************************************/ package org.eclipse.emf.cdo.internal.efs; +import org.eclipse.emf.cdo.eresource.CDOResourceFolder; +import org.eclipse.emf.cdo.eresource.CDOResourceNode; +import org.eclipse.emf.cdo.internal.efs.bundle.OM; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.cdo.view.CDOView; + import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.filesystem.provider.FileStore; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; @@ -26,13 +34,57 @@ public abstract class AbstractFileStore extends FileStore { private transient int hashCode; + private transient CDOResourceNode resourceNode; + public AbstractFileStore() { } + public abstract IPath getPath(); + + public abstract CDOView getView(); + + public final CDOTransaction openTransaction() + { + CDOSession session = getView().getSession(); + return session.openTransaction(); + } + + public final CDOResourceNode getResourceNode() + { + if (resourceNode == null) + { + resourceNode = doGetResourceNode(); + } + + return resourceNode; + } + + protected abstract CDOResourceNode doGetResourceNode(); + @Override public IFileStore mkdir(int options, IProgressMonitor monitor) throws CoreException { + CDOTransaction transaction = null; + + try + { + transaction = openTransaction(); + resourceNode = transaction.createResourceFolder(getPath().toPortableString()); + transaction.commit(monitor); + } + catch (Exception ex) + { + OM.LOG.error(ex); + } + finally + { + if (transaction != null) + { + transaction.close(); + } + } + return this; } diff --git a/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDOFileStore.java b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDOFileStore.java index bd0d5e2662..697ae904c4 100644 --- a/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDOFileStore.java +++ b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDOFileStore.java @@ -14,6 +14,7 @@ package org.eclipse.emf.cdo.internal.efs; import org.eclipse.emf.cdo.eresource.CDOResourceFolder; import org.eclipse.emf.cdo.eresource.CDOResourceNode; import org.eclipse.emf.cdo.internal.efs.bundle.OM; +import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileInfo; @@ -51,8 +52,6 @@ public final class CDOFileStore extends AbstractFileStore private IPath path; - private transient CDOResourceNode resourceNode; - public CDOFileStore(CDORootStore rootStore, IPath path) { this.rootStore = rootStore; @@ -70,6 +69,19 @@ public final class CDOFileStore extends AbstractFileStore return rootStore; } + @Override + public CDOView getView() + { + return rootStore.getView(); + } + + @Override + protected CDOResourceNode doGetResourceNode() + { + return getView().getResourceNode(path.toPortableString()); + } + + @Override public IPath getPath() { return path; @@ -151,16 +163,6 @@ public final class CDOFileStore extends AbstractFileStore return result.toArray(new String[result.size()]); } - private CDOResourceNode getResourceNode() - { - if (resourceNode == null) - { - resourceNode = getRootStore().getView().getResourceNode(path.toPortableString()); - } - - return resourceNode; - } - @Override public OutputStream openOutputStream(int options, IProgressMonitor monitor) throws CoreException { diff --git a/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDORootStore.java b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDORootStore.java index 212edc816f..c93ece100b 100644 --- a/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDORootStore.java +++ b/plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDORootStore.java @@ -87,6 +87,29 @@ public final class CDORootStore extends AbstractFileStore } @Override + public IPath getPath() + { + return Path.EMPTY; + } + + @Override + public CDOView getView() + { + if (view == null) + { + view = fileSystem.getView(this); + } + + return view; + } + + @Override + protected CDOResourceNode doGetResourceNode() + { + return getView().getRootResource(); + } + + @Override public IFileStore getParent() { return null; @@ -197,14 +220,4 @@ public final class CDORootStore extends AbstractFileStore builder.append(timeStamp); } } - - public CDOView getView() - { - if (view == null) - { - view = fileSystem.getView(this); - } - - return view; - } } diff --git a/plugins/org.eclipse.emf.cdo/model/eresource.ecore b/plugins/org.eclipse.emf.cdo/model/eresource.ecore index 49b93de853..acb44c9380 100644 --- a/plugins/org.eclipse.emf.cdo/model/eresource.ecore +++ b/plugins/org.eclipse.emf.cdo/model/eresource.ecore @@ -11,6 +11,12 @@ volatile="true" transient="true" derived="true"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="CDOResourceFolder" eSuperTypes="#//CDOResourceNode"> + <eOperations name="addResourceFolder" eType="#//CDOResourceFolder"> + <eParameters name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> + <eOperations name="addResource" eType="#//CDOResource"> + <eParameters name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1" eType="#//CDOResourceNode" containment="true" eOpposite="#//CDOResourceNode/folder"/> </eClassifiers> diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOLock.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOLock.java index f9a4dcc92a..67c640839c 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOLock.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOLock.java @@ -13,8 +13,8 @@ package org.eclipse.emf.cdo; import org.eclipse.emf.cdo.view.CDOView; -import org.eclipse.net4j.util.concurrent.RWLockManager; import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; +import org.eclipse.net4j.util.concurrent.RWLockManager; import java.util.concurrent.locks.Lock; 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 b4bddc9836..e1d425a9fe 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 @@ -41,4 +41,22 @@ public interface CDOResourceFolder extends CDOResourceNode */ EList<CDOResourceNode> getNodes(); + /** + * <!-- begin-user-doc --> + * + * @since 4.0 <!-- end-user-doc --> + * @model + * @generated + */ + CDOResourceFolder addResourceFolder(String name); + + /** + * <!-- begin-user-doc --> + * + * @since 4.0 <!-- end-user-doc --> + * @model + * @generated + */ + CDOResource addResource(String name); + } // CDOResourceFolder 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 b92fab385e..6e18ea5321 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 @@ -4,15 +4,17 @@ * 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.eresource.impl; +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.util.CDOURIUtil; import org.eclipse.emf.internal.cdo.util.FSMUtil; @@ -78,6 +80,28 @@ public class CDOResourceFolderImpl extends CDOResourceNodeImpl implements CDORes } /** + * <!-- begin-user-doc --> + * + * @since 4.0 <!-- end-user-doc --> + * @generated NOT + */ + public CDOResourceFolder addResourceFolder(String name) + { + return cdoView().toTransaction().createResourceFolder(getPath() + CDOURIUtil.SEGMENT_SEPARATOR + name); + } + + /** + * <!-- begin-user-doc --> + * + * @since 4.0 <!-- end-user-doc --> + * @generated NOT + */ + public CDOResource addResource(String name) + { + return cdoView().toTransaction().createResource(getPath() + CDOURIUtil.SEGMENT_SEPARATOR + name); + } + + /** * @ADDED */ public void delete(Map<?, ?> options) throws IOException 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 8f4fa8b4b4..3aa7d8c177 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 @@ -41,7 +41,7 @@ public class EresourceFactoryImpl extends EFactoryImpl implements EresourceFacto try { EresourceFactory theEresourceFactory = (EresourceFactory)EPackage.Registry.INSTANCE - .getEFactory("http://www.eclipse.org/emf/CDO/Eresource/2.0.0"); //$NON-NLS-1$ + .getEFactory("http://www.eclipse.org/emf/CDO/Eresource/2.0.0"); //$NON-NLS-1$ if (theEresourceFactory != null) { return theEresourceFactory; 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 4447a16a8f..b1420c4816 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 @@ -19,12 +19,13 @@ import org.eclipse.emf.cdo.eresource.EresourcePackage; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.impl.EPackageImpl; -import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.Resource.Diagnostic; +import org.eclipse.emf.ecore.resource.ResourceSet; /** * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc --> @@ -115,14 +116,11 @@ 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.get(eNS_URI) instanceof EresourcePackageImpl ? EPackage.Registry.INSTANCE - .get(eNS_URI) - : new EresourcePackageImpl()); + .get(eNS_URI) : new EresourcePackageImpl()); isInited = true; @@ -365,9 +363,7 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka public void createPackageContents() { if (isCreated) - { return; - } isCreated = true; // Create classes and their features @@ -412,9 +408,7 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka public void initializePackageContents() { if (isInitialized) - { return; - } isInitialized = true; // Initialize package @@ -430,16 +424,16 @@ 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); //$NON-NLS-1$ initEReference( getCDOResourceNode_Folder(), - getCDOResourceFolder(), - getCDOResourceFolder_Nodes(), + 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); //$NON-NLS-1$ initEAttribute( getCDOResourceNode_Name(), @@ -454,19 +448,26 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka "CDOResourceFolder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$ initEReference( getCDOResourceFolder_Nodes(), - getCDOResourceNode(), - getCDOResourceNode_Folder(), + 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); //$NON-NLS-1$ + EOperation op = addEOperation(cdoResourceFolderEClass, this.getCDOResourceFolder(), + "addResourceFolder", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$ + addEParameter(op, theEcorePackage.getEString(), "name", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$ + + op = addEOperation(cdoResourceFolderEClass, this.getCDOResource(), "addResource", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$ + addEParameter(op, theEcorePackage.getEString(), "name", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$ + initEClass(cdoResourceEClass, CDOResource.class, "CDOResource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$ initEAttribute( getCDOResource_ResourceSet(), - getResourceSet(), + this.getResourceSet(), "resourceSet", null, 0, 1, CDOResource.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ initEAttribute( getCDOResource_URI(), - getURI(), + this.getURI(), "uRI", null, 0, 1, CDOResource.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ initEReference( getCDOResource_Contents(), @@ -487,11 +488,11 @@ public class EresourcePackageImpl extends EPackageImpl implements EresourcePacka "trackingModification", null, 0, 1, CDOResource.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ initEAttribute( getCDOResource_Errors(), - getDiagnostic(), + this.getDiagnostic(), "errors", null, 0, -1, CDOResource.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ initEAttribute( getCDOResource_Warnings(), - getDiagnostic(), + this.getDiagnostic(), "warnings", null, 0, -1, CDOResource.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ initEAttribute( getCDOResource_TimeStamp(), 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 d02d593ebe..df031db0e5 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 @@ -97,9 +97,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: @@ -107,13 +105,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: @@ -121,13 +115,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/eresource/validation/CDOResourceValidator.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/validation/CDOResourceValidator.java index 247f65690b..afc2010063 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/validation/CDOResourceValidator.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/validation/CDOResourceValidator.java @@ -13,8 +13,8 @@ package org.eclipse.emf.cdo.eresource.validation; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.Resource.Diagnostic; +import org.eclipse.emf.ecore.resource.ResourceSet; /** * A sample validator interface for {@link org.eclipse.emf.cdo.eresource.CDOResource}. This doesn't really do anything, diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java index dc37690940..c42dd5dfd4 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java @@ -308,6 +308,11 @@ public class CDOPushTransaction extends Notifier implements CDOTransaction return delegate.createQuery(language, queryString); } + public CDOResourceFolder createResourceFolder(String path) + { + return delegate.createResourceFolder(path); + } + public CDOResource createResource(String path) { return delegate.createResource(path); 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 7abc20d213..cb816e2c32 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 @@ -24,6 +24,7 @@ import org.eclipse.emf.cdo.common.commit.CDOCommitInfo; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.eresource.CDOResourceFolder; import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.net4j.util.options.IOptionsEvent; @@ -66,6 +67,11 @@ public interface CDOTransaction extends CDOView, CDOUserTransaction, CDOChangeSe public CDOChangeSetData merge(CDOBranchPoint source, CDOMerger merger); /** + * @since 4.0 + */ + public CDOResourceFolder createResourceFolder(String path); + + /** * @see ResourceSet#createResource(URI) */ public CDOResource createResource(String path); 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 47ce2eace0..0cabb03321 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 @@ -417,12 +417,12 @@ public abstract class CDOLegacyWrapper extends CDOObjectWrapper registerWrapper(this); counter.increment(); revisionToInstanceContainer(); - + for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(revision.getEClass())) { revisionToInstanceFeature(feature); } - + revisionToInstanceResource(); } catch (RuntimeException ex) 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 dc4fc0bf45..462441d0d5 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 @@ -651,6 +651,37 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa return CDOIDUtil.createTempObject(lastTemporaryID.incrementAndGet()); } + public CDOResourceFolder createResourceFolder(String path) + { + CDOResourceFolder folder = EresourceFactory.eINSTANCE.createCDOResourceFolder(); + int pos = path.lastIndexOf(CDOURIUtil.SEGMENT_SEPARATOR_CHAR); + if (pos <= 0) + { + String name = path.substring(pos == 0 ? 1 : 0); + folder.setName(name); + + getRootResource().getContents().add(folder); + } + else + { + String name = path.substring(pos + 1); + folder.setName(name); + + path = path.substring(0, pos); + CDOResourceNode parent = getResourceNode(path); + if (parent instanceof CDOResourceFolder) + { + ((CDOResourceFolder)parent).getNodes().add(folder); + } + else + { + throw new CDOException("Parent is not a folder: " + parent); + } + } + + return folder; + } + public CDOResource createResource(String path) { checkActive(); 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 45d6940e32..3d297842b4 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 @@ -24,11 +24,11 @@ import org.eclipse.emf.internal.cdo.messages.Messages; import org.eclipse.net4j.util.ImplementationError; import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; import org.eclipse.emf.spi.cdo.InternalCDOObject; import org.eclipse.emf.spi.cdo.InternalCDOTransaction; -import org.eclipse.emf.spi.cdo.InternalCDOXATransaction; -import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext; +import org.eclipse.emf.spi.cdo.InternalCDOXATransaction; import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext; import org.eclipse.core.runtime.IProgressMonitor; 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 d80a44e67b..82c448f641 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 @@ -24,8 +24,8 @@ import org.eclipse.emf.common.notify.impl.NotificationImpl; import org.eclipse.emf.common.notify.impl.NotifierImpl; 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.Resource.Factory.Registry; +import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.spi.cdo.InternalCDOView; import org.eclipse.emf.spi.cdo.InternalCDOViewSet; diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/DefaultCDOMerger.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/DefaultCDOMerger.java index 11d513a7a8..3246c6456e 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/DefaultCDOMerger.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/DefaultCDOMerger.java @@ -40,8 +40,8 @@ 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; +import java.util.Set; /** * @author Eike Stepper |