From c55d48a3e76d2a70e9e8fee1e8e7f15027fe81f7 Mon Sep 17 00:00:00 2001 From: Britt Park Date: Mon, 7 May 2007 17:52:04 +0000 Subject: [PATCH] Smarten up deployment to filesystem. - Deploying to a filesystem implicitly snapshots the source store. This allows shortcutting the tree comparison for directories, because guids on directories act as a deep modification indicator if deployments are always from snapshots. Doh! - I'll do this for alfresco -> alfresco deployment too. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5635 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/public-services-context.xml | 13 ++++++++++++- .../java/org/alfresco/repo/avm/AVMStoreImpl.java | 5 ++--- .../org/alfresco/repo/avm/hibernate/AVM.hbm.xml | 14 ++++++++------ .../repo/deploy/DeploymentServiceImpl.java | 14 +++++++++++--- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/config/alfresco/public-services-context.xml b/config/alfresco/public-services-context.xml index fd6a7c9803..34949d10ca 100644 --- a/config/alfresco/public-services-context.xml +++ b/config/alfresco/public-services-context.xml @@ -952,11 +952,21 @@ deployDifference - deployDifferenceFS + + + + + + + deployDifferenceFS + + + + @@ -968,6 +978,7 @@ + deploymentServiceWriteTxnAdvisor deploymentServiceReadTxnAdvisor diff --git a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java index 32fbea7d04..bf9367a50f 100644 --- a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java +++ b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java @@ -233,7 +233,6 @@ public class AVMStoreImpl implements AVMStore, Serializable } parent.putChild(parentName[1], newChild); } - // AVMDAOs.Instance().fVersionLayeredNodeEntryDAO.delete(lastVersion); // Clear out the new nodes. List newInRep = AVMDAOs.Instance().fAVMNodeDAO.getNewInStore(this); List layeredNodes = new ArrayList(); @@ -950,7 +949,7 @@ public class AVMStoreImpl implements AVMStore, Serializable { return false; } - return fName.equals(((AVMStore)obj).getName()); + return fID == ((AVMStore)obj).getId(); } /** @@ -960,7 +959,7 @@ public class AVMStoreImpl implements AVMStore, Serializable @Override public int hashCode() { - return fName.hashCode(); + return (int)fID; } /** diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml index c2264d6344..e0cd447e98 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml +++ b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml @@ -125,17 +125,19 @@ - - + + + + + + - - diff --git a/source/java/org/alfresco/repo/deploy/DeploymentServiceImpl.java b/source/java/org/alfresco/repo/deploy/DeploymentServiceImpl.java index ffdb15cf55..9fe5b4c3c6 100644 --- a/source/java/org/alfresco/repo/deploy/DeploymentServiceImpl.java +++ b/source/java/org/alfresco/repo/deploy/DeploymentServiceImpl.java @@ -608,8 +608,13 @@ public class DeploymentServiceImpl implements DeploymentService callback.eventOccurred(event); } report.add(event); + String storeName = srcPath.substring(0, srcPath.indexOf(':')); + System.out.println(storeName); + if (version < 0) + { + version = fAVMService.createSnapshot(storeName, null, null); + } String ticket = service.begin(target, userName, password); - deployDirectoryPush(service, ticket, report, callback, version, srcPath, "/"); service.commit(ticket); event = new DeploymentEvent(DeploymentEvent.Type.END, @@ -683,8 +688,7 @@ public class DeploymentServiceImpl implements DeploymentService } if (diff == 0) { - if (src.isFile() && dst.getType() == FileType.FILE && - src.getGuid().equals(dst.getGUID())) + if (src.getGuid().equals(dst.getGUID())) { src = null; dst = null; @@ -701,6 +705,10 @@ public class DeploymentServiceImpl implements DeploymentService // Source is a directory. if (dst.getType() == FileType.DIR) { + if (!dstPath.equals("/")) + { + service.setGuid(ticket, dstPath, src.getGuid()); + } deployDirectoryPush(service, ticket, report, callback, version, src.getPath(), dstPath + '/' + dst.getName()); src = null; dst = null;