diff --git a/config/alfresco/avm-services-context.xml b/config/alfresco/avm-services-context.xml
index 24ae6c6266..d597028a3a 100644
--- a/config/alfresco/avm-services-context.xml
+++ b/config/alfresco/avm-services-context.xml
@@ -72,12 +72,6 @@
-
-
-
-
-
-
@@ -118,9 +112,6 @@
-
-
-
diff --git a/source/java/org/alfresco/repo/avm/AVMContext.java b/source/java/org/alfresco/repo/avm/AVMContext.java
index 39e572e102..355b61f6f0 100644
--- a/source/java/org/alfresco/repo/avm/AVMContext.java
+++ b/source/java/org/alfresco/repo/avm/AVMContext.java
@@ -65,11 +65,6 @@ public class AVMContext implements ApplicationContextAware
*/
public MergeLinkDAO fMergeLinkDAO;
- /**
- * The DeletedChildDAO.
- */
- public DeletedChildDAO fDeletedChildDAO;
-
/**
* The AVMNodePropertyDAO
*/
@@ -143,14 +138,6 @@ public class AVMContext implements ApplicationContextAware
fChildEntryDAO = childEntryDAO;
}
- /**
- * @param deletedChildDAO the fDeletedChildDAO to set
- */
- public void setDeletedChildDAO(DeletedChildDAO deletedChildDAO)
- {
- fDeletedChildDAO = deletedChildDAO;
- }
-
/**
* @param historyLinkDAO the fHistoryLinkDAO to set
*/
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
index 526cfafe83..077250713d 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
@@ -21,12 +21,9 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import org.alfresco.repo.domain.DbAccessControlEntry;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue;
-import org.alfresco.repo.domain.hibernate.DbAccessControlListImpl;
import org.alfresco.service.namespace.QName;
/**
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeService.java b/source/java/org/alfresco/repo/avm/AVMNodeService.java
index 38a0527395..41ea718498 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeService.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeService.java
@@ -567,7 +567,7 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi
for (AspectDefinition def : defaultAspectDefs)
{
invokeBeforeAddAspect(nodeRef, def.getName());
- fAVMService.addAspect(path, def.getName());
+ addAspect(nodeRef, def.getName(), Collections.emptyMap());
addDefaultPropertyValues(def, properties);
invokeOnAddAspect(nodeRef, def.getName());
// recurse
@@ -659,7 +659,7 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi
}
}
- private static QName [] fgBuiltinAspects = new QName[] { ContentModel.ASPECT_AUDITABLE,
+ private static QName [] fgBuiltinAspects = new QName[] { ContentModel.ASPECT_AUDITABLE,
ContentModel.ASPECT_REFERENCEABLE };
private boolean isBuiltinAspect(QName aspectQName)
@@ -841,6 +841,10 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi
result.put(ContentModel.PROP_MODIFIER, desc.getLastModifier());
result.put(ContentModel.PROP_OWNER, desc.getOwner());
result.put(ContentModel.PROP_NAME, desc.getName());
+ result.put(ContentModel.PROP_NODE_UUID, "UNKNOWN");
+ result.put(ContentModel.PROP_NODE_DBID, new Long(desc.getId()));
+ result.put(ContentModel.PROP_STORE_PROTOCOL, "avm");
+ result.put(ContentModel.PROP_STORE_IDENTIFIER, nodeRef.getStoreRef().getIdentifier());
if (desc.isFile())
{
try
@@ -949,6 +953,22 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi
{
return desc.getName();
}
+ else if (qName.equals(ContentModel.PROP_NODE_UUID))
+ {
+ return "UNKNOWN";
+ }
+ else if (qName.equals(ContentModel.PROP_NODE_DBID))
+ {
+ return new Long(desc.getId());
+ }
+ else if (qName.equals(ContentModel.PROP_STORE_PROTOCOL))
+ {
+ return "avm";
+ }
+ else if (qName.equals(ContentModel.PROP_STORE_IDENTIFIER))
+ {
+ return nodeRef.getStoreRef().getIdentifier();
+ }
else
{
fgLogger.error("Invalid Built In Property: " + qName);
@@ -1012,7 +1032,11 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi
ContentModel.PROP_MODIFIER,
ContentModel.PROP_OWNER,
ContentModel.PROP_CONTENT,
- ContentModel.PROP_NAME
+ ContentModel.PROP_NAME,
+ ContentModel.PROP_NODE_UUID,
+ ContentModel.PROP_NODE_DBID,
+ ContentModel.PROP_STORE_PROTOCOL,
+ ContentModel.PROP_STORE_IDENTIFIER
};
/**
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeType.java b/source/java/org/alfresco/repo/avm/AVMNodeType.java
index 58444a3991..e8d3e64eb4 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeType.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeType.java
@@ -27,4 +27,5 @@ public interface AVMNodeType
public static final int LAYERED_FILE = 1;
public static final int PLAIN_DIRECTORY = 2;
public static final int LAYERED_DIRECTORY = 3;
+ public static final int DELETED_NODE = 4;
}
diff --git a/source/java/org/alfresco/repo/avm/AVMRepository.java b/source/java/org/alfresco/repo/avm/AVMRepository.java
index ec8212479d..4357c10459 100644
--- a/source/java/org/alfresco/repo/avm/AVMRepository.java
+++ b/source/java/org/alfresco/repo/avm/AVMRepository.java
@@ -369,7 +369,7 @@ public class AVMRepository
{
dstNode = new PlainFileNodeImpl((PlainFileNode)srcNode, dstRepo);
}
- srcDir.removeChild(srcName);
+ srcDir.removeChild(sPath, srcName);
srcDir.updateModTime();
dstNode.setVersionID(dstRepo.getNextVersionID());
dstDir.putChild(dstName, dstNode);
diff --git a/source/java/org/alfresco/repo/avm/AVMServiceImpl.java b/source/java/org/alfresco/repo/avm/AVMServiceImpl.java
index 6da14357f3..b1aaadc620 100644
--- a/source/java/org/alfresco/repo/avm/AVMServiceImpl.java
+++ b/source/java/org/alfresco/repo/avm/AVMServiceImpl.java
@@ -28,7 +28,6 @@ import java.util.Map;
import java.util.SortedMap;
import org.alfresco.repo.avm.AVMRepository;
-import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.cmr.avm.AVMBadArgumentException;
import org.alfresco.service.cmr.avm.AVMException;
diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
index 3b73a89a72..393a8a5978 100644
--- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java
+++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
@@ -32,8 +32,11 @@ import java.util.TreeMap;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.avm.util.BulkLoader;
import org.alfresco.repo.domain.PropertyValue;
+import org.alfresco.repo.transaction.TransactionUtil;
+import org.alfresco.service.cmr.avm.AVMException;
import org.alfresco.service.cmr.avm.AVMExistsException;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
+import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
import org.alfresco.service.cmr.avm.LayeringDescriptor;
import org.alfresco.service.cmr.avm.VersionDescriptor;
@@ -41,6 +44,7 @@ import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.security.AccessPermission;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.QName;
+import org.alfresco.service.transaction.TransactionService;
/**
* Big test of AVM behavior.
@@ -2310,4 +2314,88 @@ public class AVMServiceTest extends AVMServiceTestBase
fail();
}
}
+
+ /**
+ * Test overwriting without snapshots in between.
+ */
+ public void testOverwrite()
+ {
+ try
+ {
+ setupBasicTree();
+ class TxnWork implements TransactionUtil.TransactionWork