Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-09-04 05:28:34 +0000
committerEike Stepper2010-09-04 05:28:34 +0000
commit7ba61a241b3cddeee90a4153b8dc503a7d0b5700 (patch)
tree3a286ed55e8f4b864994a2bf2227af7eadca0bef
parent77257035c2fdeae4fab8a91d20d11b8578b36188 (diff)
downloadcdo-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
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceItemProvider.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/CDOResourceNodeItemProvider.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.edit/src/org/eclipse/emf/cdo/eresource/provider/EresourceItemProviderAdapterFactory.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/AbstractFileStore.java52
-rw-r--r--plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDOFileStore.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.efs/src/org/eclipse/emf/cdo/internal/efs/CDORootStore.java33
-rw-r--r--plugins/org.eclipse.emf.cdo/model/eresource.ecore6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/CDOLock.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFolder.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFolderImpl.java26
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourceFactoryImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/EresourcePackageImpl.java39
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/util/EresourceSwitch.java10
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/validation/CDOResourceValidator.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java5
-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/internal/cdo/CDOLegacyWrapper.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java31
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/DefaultCDOMerger.java2
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

Back to the top