diff --git a/source/java/hibernate.cfg.xml b/source/java/hibernate.cfg.xml
index 564ec176cd..8cb0ff9e28 100644
--- a/source/java/hibernate.cfg.xml
+++ b/source/java/hibernate.cfg.xml
@@ -15,9 +15,6 @@
20
900
50
-
-
-
-
+
diff --git a/source/java/org/alfresco/repo/avm/AVMNode.java b/source/java/org/alfresco/repo/avm/AVMNode.java
index 6f6dc9d9a3..6ec28a1121 100644
--- a/source/java/org/alfresco/repo/avm/AVMNode.java
+++ b/source/java/org/alfresco/repo/avm/AVMNode.java
@@ -153,15 +153,18 @@ public abstract class AVMNode
*/
public AVMNode copyOnWrite(Lookup lPath)
{
+ // Call the subclass's copy on write logic.
AVMNode newMe = possiblyCopy(lPath);
- String myName = lPath.getName();
- lPath.upCurrentNode();
+ // No copying needed, so short circuit.
if (newMe == null)
{
return this;
}
- Repository repos = getRepository();
+ String myName = lPath.getName();
+ lPath.upCurrentNode();
+ Repository repos = lPath.getRepository();
newMe.setVersion(repos.getLatestVersion() + 1);
+ // Get our parent directory if we have one.
DirectoryNode parent = null;
if (getParent() != null)
{
@@ -169,6 +172,7 @@ public abstract class AVMNode
}
if (parent != null)
{
+ // Recursive invocation.
DirectoryNode newParent =
(DirectoryNode)parent.copyOnWrite(lPath);
newParent.putChild(myName, newMe);
@@ -176,15 +180,14 @@ public abstract class AVMNode
}
else // Null parent means root of repository.
{
- newMe.setRepository(getRepository());
repos.setNewRoot((DirectoryNode)newMe);
}
+ newMe.setRepository(repos);
newMe.setShouldBeCopied(false);
repos.setNew(newMe);
return newMe;
}
-
/**
* Possibly copy ourselves.
* @param lPath The Lookup for this node.
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeFactory.java b/source/java/org/alfresco/repo/avm/AVMNodeFactory.java
index 2c1179b3c5..7efb311b63 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeFactory.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeFactory.java
@@ -24,7 +24,8 @@ import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBean;
import org.alfresco.repo.avm.hibernate.PlainFileNodeBean;
/**
- * Responsible for instantiating AVMNode implementations.
+ * Responsible for instantiating AVMNode concrete subclasses from
+ * underlying data beans.
* @author britt
*/
public class AVMNodeFactory
diff --git a/source/java/org/alfresco/repo/avm/AVMService.java b/source/java/org/alfresco/repo/avm/AVMService.java
index 37d0a32997..01a750a08d 100644
--- a/source/java/org/alfresco/repo/avm/AVMService.java
+++ b/source/java/org/alfresco/repo/avm/AVMService.java
@@ -25,8 +25,8 @@ import java.util.Set;
/**
* This is the service interface for the [Alfresco|Addled|Advanced|Apotheosed] Versioning
* Model. It specifies methods that are close in functionality to the underlying
- * implementation, and is intended, for now, as an internal interface to build a different
- * implementation of NodeService and others.
+ * implementation, and is intended as both a first class Alfresco service and an
+ * aid in creating new implementations of existing services.
* @author britt
*/
public interface AVMService
diff --git a/source/java/org/alfresco/repo/avm/DirectoryNode.java b/source/java/org/alfresco/repo/avm/DirectoryNode.java
index dc753b7ae5..9d31e632ee 100644
--- a/source/java/org/alfresco/repo/avm/DirectoryNode.java
+++ b/source/java/org/alfresco/repo/avm/DirectoryNode.java
@@ -22,7 +22,7 @@ import java.util.Map;
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
/**
- *
+ * Base class for Directories.
* @author britt
*/
public abstract class DirectoryNode extends AVMNode
diff --git a/source/java/org/alfresco/repo/avm/FileContent.java b/source/java/org/alfresco/repo/avm/FileContent.java
index 7f7e5a5c9b..9821c051b0 100644
--- a/source/java/org/alfresco/repo/avm/FileContent.java
+++ b/source/java/org/alfresco/repo/avm/FileContent.java
@@ -17,11 +17,15 @@
package org.alfresco.repo.avm;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.Formatter;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.avm.hibernate.ContentBean;
@@ -38,6 +42,16 @@ public class FileContent
*/
private ContentBean fData;
+ /**
+ * The name of the file.
+ */
+ private String fName;
+
+ /**
+ * The directory path of the file.
+ */
+ private String fPath;
+
/**
* Make one from a bean.
* @param data The Bean with the data.
@@ -45,6 +59,7 @@ public class FileContent
public FileContent(ContentBean data)
{
fData = data;
+
}
/**
@@ -54,6 +69,17 @@ public class FileContent
public FileContent(SuperRepository superRepo)
{
fData = new ContentBeanImpl(superRepo.issueContentID());
+ BufferedOutputStream out = new BufferedOutputStream(getOutputStream(superRepo));
+ // Make an empty file.
+ try
+ {
+ out.close();
+ }
+ catch (IOException ie)
+ {
+ throw new AlfrescoRuntimeException("Couldn't close file.", ie);
+ }
+ superRepo.getSession().save(fData);
}
/**
@@ -64,7 +90,25 @@ public class FileContent
public FileContent(FileContent other, SuperRepository superRepo)
{
fData = new ContentBeanImpl(superRepo.issueContentID());
- // TODO Something.
+ // Copy the contents from other to this.
+ BufferedInputStream in = new BufferedInputStream(other.getInputStream(superRepo));
+ BufferedOutputStream out = new BufferedOutputStream(this.getOutputStream(superRepo));
+ try
+ {
+ byte [] buff = new byte[4096]; // Nyah, nyah.
+ int bytesRead;
+ while ((bytesRead = in.read(buff)) != -1)
+ {
+ out.write(buff, 0, bytesRead);
+ }
+ out.close();
+ in.close();
+ }
+ catch (IOException ie)
+ {
+ throw new AlfrescoRuntimeException("I/O failure in Copy on Write.", ie);
+ }
+ superRepo.getSession().save(fData);
}
/**
@@ -92,8 +136,14 @@ public class FileContent
*/
public InputStream getInputStream(SuperRepository superRepo)
{
- // TODO Something.
- return null;
+ try
+ {
+ return new FileInputStream(getContentPath(superRepo));
+ }
+ catch (IOException ie)
+ {
+ throw new AlfrescoRuntimeException("Could not open for reading: " + getContentPath(superRepo), ie);
+ }
}
/**
@@ -103,8 +153,19 @@ public class FileContent
*/
public OutputStream getOutputStream(SuperRepository superRepo)
{
- // TODO Something.
- return null;
+ try
+ {
+ File dir = new File(getDirectoryPath(superRepo));
+ if (!dir.exists())
+ {
+ dir.mkdirs();
+ }
+ return new FileOutputStream(getContentPath(superRepo));
+ }
+ catch (IOException ie)
+ {
+ throw new AlfrescoRuntimeException("Could not open for writing: " + getContentPath(superRepo), ie);
+ }
}
/**
@@ -115,4 +176,51 @@ public class FileContent
{
return fData;
}
+
+ /**
+ * Retrieve the full path for this content.
+ * @param superRepo
+ * @return The full path for this content.
+ */
+ private String getContentPath(SuperRepository superRepo)
+ {
+ if (fName == null)
+ {
+ calcPathData(superRepo);
+ }
+ return fName;
+ }
+
+ /**
+ * Get the directory path for this content.
+ * @param superRepo
+ * @return The directory path.
+ */
+ private String getDirectoryPath(SuperRepository superRepo)
+ {
+ if (fPath == null)
+ {
+ calcPathData(superRepo);
+ }
+ return fPath;
+ }
+
+ /**
+ * Calculate the path data.
+ */
+ private void calcPathData(SuperRepository superRepo)
+ {
+ long id = fData.getId();
+ Formatter form = new Formatter(new StringBuilder());
+ form.format("%016x", id);
+ String name = form.toString();
+ form = new Formatter(new StringBuilder());
+ form.format("/%02x/%02x/%02x",
+ (id & 0xff000000) >> 24,
+ (id & 0xff0000) >> 16,
+ (id & 0xff00) >> 8);
+ String dir = form.toString();
+ fPath = superRepo.getStorageRoot() + dir;
+ fName = fPath + "/" + name;
+ }
}
diff --git a/source/java/org/alfresco/repo/avm/FileContentFactory.java b/source/java/org/alfresco/repo/avm/FileContentFactory.java
deleted file mode 100644
index a2a52b5133..0000000000
--- a/source/java/org/alfresco/repo/avm/FileContentFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Alfresco, Inc.
- *
- * Licensed under the Mozilla Public License version 1.1
- * with a permitted attribution clause. You may obtain a
- * copy of the License at
- *
- * http://www.alfresco.org/legal/license.txt
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the specific
- * language governing permissions and limitations under the
- * License.
- */
-
-package org.alfresco.repo.avm;
-
-import org.alfresco.repo.avm.hibernate.ContentBean;
-
-/**
- * Static method for making FileContent instances from beans.
- * @author britt
- */
-public class FileContentFactory
-{
- /**
- * Make A FileContent object from a ContentBean.
- * @param bean The bean with the data.
- */
- public static FileContent CreateFileContentFromBean(ContentBean bean)
- {
- return new FileContent(bean);
- }
-}
diff --git a/source/java/org/alfresco/repo/avm/FileNode.java b/source/java/org/alfresco/repo/avm/FileNode.java
index 8bb82f8d35..b95ef73980 100644
--- a/source/java/org/alfresco/repo/avm/FileNode.java
+++ b/source/java/org/alfresco/repo/avm/FileNode.java
@@ -18,7 +18,7 @@
package org.alfresco.repo.avm;
/**
- * Interface for file objects.
+ * Base class for file objects.
* @author britt
*/
public abstract class FileNode extends AVMNode
diff --git a/source/java/org/alfresco/repo/avm/LayeredDirectoryNode.java b/source/java/org/alfresco/repo/avm/LayeredDirectoryNode.java
index 1934913eb6..bfcf09b3a5 100644
--- a/source/java/org/alfresco/repo/avm/LayeredDirectoryNode.java
+++ b/source/java/org/alfresco/repo/avm/LayeredDirectoryNode.java
@@ -18,7 +18,6 @@
package org.alfresco.repo.avm;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.TreeMap;
@@ -30,7 +29,11 @@ import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBean;
import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBeanImpl;
/**
- * Interface for a layered directory node. Stub.
+ * A layered directory node. A layered directory node points at
+ * an underlying directory, which may or may not exist. The visible
+ * contents of a layered directory node is the contents of the underlying node
+ * pointed at plus those nodes added to or modified in the layered directory node minus
+ * those nodes which have been deleted in the layered directory node.
* @author britt
*/
public class LayeredDirectoryNode extends DirectoryNode implements Layered
@@ -57,7 +60,9 @@ public class LayeredDirectoryNode extends DirectoryNode implements Layered
*/
public LayeredDirectoryNode(String indirection, Repository repos)
{
+ // Set up basic attributes for this node.
long time = System.currentTimeMillis();
+ // TODO We'll fix this up when Britt understands user management.
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
"britt",
"britt",
diff --git a/source/java/org/alfresco/repo/avm/Lookup.java b/source/java/org/alfresco/repo/avm/Lookup.java
index 006d082823..165833a655 100644
--- a/source/java/org/alfresco/repo/avm/Lookup.java
+++ b/source/java/org/alfresco/repo/avm/Lookup.java
@@ -30,7 +30,6 @@ public class Lookup
/**
* The Repository.
*/
- @SuppressWarnings("unused")
private Repository fRepository;
/**
@@ -287,4 +286,13 @@ public class Lookup
{
return fTopLayer;
}
+
+ /**
+ * Get the repository that this path is in.
+ * @return The repository.
+ */
+ public Repository getRepository()
+ {
+ return fRepository;
+ }
}
diff --git a/source/java/org/alfresco/repo/avm/PlainFileNode.java b/source/java/org/alfresco/repo/avm/PlainFileNode.java
index 9158baf3f2..36f3db27dd 100644
--- a/source/java/org/alfresco/repo/avm/PlainFileNode.java
+++ b/source/java/org/alfresco/repo/avm/PlainFileNode.java
@@ -145,7 +145,7 @@ public class PlainFileNode extends FileNode
*/
public FileContent getContentForRead(int version)
{
- return FileContentFactory.CreateFileContentFromBean(fData.getContent());
+ return new FileContent(fData.getContent());
}
/**
@@ -159,6 +159,6 @@ public class PlainFileNode extends FileNode
fData.setContent(new ContentBeanImpl(repo.getSuperRepository().issueContentID()));
// Need to copy the underlying file data.
}
- return FileContentFactory.CreateFileContentFromBean(fData.getContent());
+ return new FileContent(fData.getContent());
}
}
diff --git a/source/java/org/alfresco/repo/avm/SuperRepository.java b/source/java/org/alfresco/repo/avm/SuperRepository.java
index 82c225dfa0..2f48b8bac0 100644
--- a/source/java/org/alfresco/repo/avm/SuperRepository.java
+++ b/source/java/org/alfresco/repo/avm/SuperRepository.java
@@ -237,4 +237,10 @@ public interface SuperRepository
* @return The Lookup.
*/
public Lookup lookupDirectory(int version, String path);
+
+ /**
+ * Get the root directory in which file data is stored.
+ * @return The root directory of storage.
+ */
+ public String getStorageRoot();
}
diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml
new file mode 100644
index 0000000000..4bbc973aec
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVMNode.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/AVMNode.hbm.xml
deleted file mode 100644
index 187bbfa48b..0000000000
--- a/source/java/org/alfresco/repo/avm/hibernate/AVMNode.hbm.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/avm/hibernate/Content.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/Content.hbm.xml
deleted file mode 100644
index 9e0b69f80b..0000000000
--- a/source/java/org/alfresco/repo/avm/hibernate/Content.hbm.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/avm/hibernate/Issuer.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/Issuer.hbm.xml
deleted file mode 100644
index 4d7728a978..0000000000
--- a/source/java/org/alfresco/repo/avm/hibernate/Issuer.hbm.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/avm/hibernate/Repository.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/Repository.hbm.xml
deleted file mode 100644
index f7477d2fda..0000000000
--- a/source/java/org/alfresco/repo/avm/hibernate/Repository.hbm.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/avm/hibernate/TestPopulate.java b/source/java/org/alfresco/repo/avm/hibernate/TestPopulate.java
index 1f2d2189e8..f17eb08d80 100644
--- a/source/java/org/alfresco/repo/avm/hibernate/TestPopulate.java
+++ b/source/java/org/alfresco/repo/avm/hibernate/TestPopulate.java
@@ -201,6 +201,7 @@ public class TestPopulate extends TestCase
{
assertEquals(AVMNodeType.PLAIN_FILE, entry.getEntryType());
}
+ assertEquals("britt", root.getBasicAttributes().getCreator());
}
});
assertTrue(result);
diff --git a/source/java/org/alfresco/repo/avm/impl/AVMServiceImpl.java b/source/java/org/alfresco/repo/avm/impl/AVMServiceImpl.java
index 3af00463b8..44fd2a5c3a 100644
--- a/source/java/org/alfresco/repo/avm/impl/AVMServiceImpl.java
+++ b/source/java/org/alfresco/repo/avm/impl/AVMServiceImpl.java
@@ -54,6 +54,11 @@ public class AVMServiceImpl implements AVMService
*/
private ThreadLocal fSuperRepository;
+ /**
+ * The storage directory.
+ */
+ private String fStorage;
+
/**
* Basic constructor for the service.
*/
@@ -63,6 +68,15 @@ public class AVMServiceImpl implements AVMService
fTransaction = new HibernateTxn(fSessionFactory);
}
+ /**
+ * Set the location of file storage.
+ * @param storage
+ */
+ public void setStorage(String storage)
+ {
+ fStorage = storage;
+ }
+
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMService#getFileInputStream(int, java.lang.String)
*/
@@ -74,7 +88,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
in = fSuperRepository.get().getInputStream(version, path);
}
};
@@ -94,7 +108,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
out = fSuperRepository.get().getOutputStream(path);
}
};
@@ -114,7 +128,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
listing = fSuperRepository.get().getListing(version, path);
}
}
@@ -132,7 +146,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createFile(path, name);
}
}
@@ -149,7 +163,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createDirectory(path, name);
}
}
@@ -166,7 +180,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createLayeredFile(srcPath, parent, name);
}
}
@@ -183,7 +197,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createLayeredDirectory(srcPath, parent, name);
}
}
@@ -200,7 +214,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createRepository(name);
}
}
@@ -218,7 +232,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createBranch(version, srcPath, dstPath, name);
}
}
@@ -235,7 +249,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().remove(parent, name);
}
}
@@ -253,7 +267,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().rename(srcParent, srcName, dstParent, dstName);
}
}
@@ -271,7 +285,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().slide(srcParent, srcName, dstParent, dstName);
}
}
@@ -290,7 +304,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
latestVersionID = fSuperRepository.get().getLatestVersionID(repName);
}
}
@@ -308,7 +322,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().createSnapshot(repositories);
}
}
@@ -327,7 +341,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
lookup = fSuperRepository.get().lookup(version, path);
}
}
@@ -345,7 +359,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().destroyRepository(name);
}
}
@@ -362,7 +376,7 @@ public class AVMServiceImpl implements AVMService
{
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
fSuperRepository.get().purgeVersion(name, version);
}
}
@@ -381,7 +395,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
indirectionPath = fSuperRepository.get().getIndirectionPath(version, path);
}
}
@@ -401,7 +415,7 @@ public class AVMServiceImpl implements AVMService
public void perform(Session session)
{
- fSuperRepository.set(new SuperRepositoryImpl(session));
+ fSuperRepository.set(new SuperRepositoryImpl(session, fStorage));
versions = fSuperRepository.get().getRepositoryVersions(name);
}
}
diff --git a/source/java/org/alfresco/repo/avm/impl/SuperRepositoryImpl.java b/source/java/org/alfresco/repo/avm/impl/SuperRepositoryImpl.java
index 0bbc68c490..254228575d 100644
--- a/source/java/org/alfresco/repo/avm/impl/SuperRepositoryImpl.java
+++ b/source/java/org/alfresco/repo/avm/impl/SuperRepositoryImpl.java
@@ -70,14 +70,21 @@ public class SuperRepositoryImpl implements SuperRepository
* The layer id issuer.
*/
private Issuer fLayerIssuer;
+
+ /**
+ * The file storage directory.
+ */
+ private String fStorage;
/**
* Make a new one, initialized with the session.
* @param session The session for this operation.
+ * @param storage Where file data gets stored.
*/
- public SuperRepositoryImpl(Session session)
+ public SuperRepositoryImpl(Session session, String storage)
{
fSession = session;
+ fStorage = storage;
fNodeIssuer = (Issuer)fSession.get(Issuer.class, "node");
fContentIssuer = (Issuer)fSession.get(Issuer.class, "content");
fBranchIssuer = (Issuer)fSession.get(Issuer.class, "branch");
@@ -506,4 +513,12 @@ public class SuperRepositoryImpl implements SuperRepository
}
return pathParts;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.avm.SuperRepository#getStorageRoot()
+ */
+ public String getStorageRoot()
+ {
+ return fStorage;
+ }
}