Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java56
1 files changed, 56 insertions, 0 deletions
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 744c377813..eefa97649f 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
@@ -56,9 +56,12 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
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.eresource.CDOBinaryResource;
+import org.eclipse.emf.cdo.eresource.CDOFileResource;
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.CDOTextResource;
import org.eclipse.emf.cdo.eresource.EresourceFactory;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceNodeImpl;
@@ -876,6 +879,59 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
return createResource(path);
}
+ public synchronized CDOTextResource createTextResource(String path)
+ {
+ CDOTextResource resource = EresourceFactory.eINSTANCE.createCDOTextResource();
+ createFileResource(path, resource);
+ return resource;
+ }
+
+ public synchronized CDOTextResource getOrCreateTextResource(String path)
+ {
+ CDOTextResource resource = getTextResource(path);
+ if (resource == null)
+ {
+ resource = createTextResource(path);
+ }
+
+ return resource;
+ }
+
+ public synchronized CDOBinaryResource createBinaryResource(String path)
+ {
+ CDOBinaryResource resource = EresourceFactory.eINSTANCE.createCDOBinaryResource();
+ createFileResource(path, resource);
+ return resource;
+ }
+
+ public synchronized CDOBinaryResource getOrCreateBinaryResource(String path)
+ {
+ CDOBinaryResource resource = getBinaryResource(path);
+ if (resource == null)
+ {
+ resource = createBinaryResource(path);
+ }
+
+ return resource;
+ }
+
+ private void createFileResource(String path, CDOFileResource<?> resource)
+ {
+ int lastSlash = path.lastIndexOf('/');
+ if (lastSlash == -1)
+ {
+ resource.setName(path);
+ getRootResource().getContents().add(resource);
+ }
+ else
+ {
+ resource.setName(path.substring(lastSlash + 1));
+
+ CDOResourceFolder folder = getOrCreateResourceFolder(path.substring(0, lastSlash));
+ folder.getNodes().add(resource);
+ }
+ }
+
/**
* @since 2.0
*/

Back to the top