From 0466c42f00efd3c5f803296522c4a90ac7c466e1 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Fri, 24 Sep 2010 11:33:06 +0000 Subject: [PATCH] ALF-4875 - MT upgrade to 3.4 - fix patch sequence - tenant attributes need to be migrated first git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22686 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/bootstrap-context.xml | 4 +- .../alfresco/patch/patch-services-context.xml | 33 ++++++++++- .../repo/tenant/MultiTenantBootstrap.java | 55 ++++++++++++++++--- 3 files changed, 82 insertions(+), 10 deletions(-) diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index 65f06abfcc..c8b1014713 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -308,7 +308,9 @@ - + + + diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index 984809b335..61edb3a6fe 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -2215,12 +2215,21 @@ + patch.migrateAttrTenants patch.migrateAttrTenants.description 0 - 4106 - 4107 + 0 + 1 false @@ -2228,6 +2237,11 @@ + + + + + @@ -2243,6 +2257,11 @@ + + + + + @@ -2258,6 +2277,11 @@ + + + + + @@ -2273,6 +2297,11 @@ + + + + + diff --git a/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java b/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java index c27b04ecc7..2b5af69978 100644 --- a/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java +++ b/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java @@ -18,20 +18,26 @@ */ package org.alfresco.repo.tenant; -import org.springframework.extensions.surf.util.AbstractLifecycleBean; +import java.util.List; + +import org.alfresco.repo.admin.patch.AppliedPatch; +import org.alfresco.repo.admin.patch.PatchService; +import org.alfresco.repo.admin.patch.impl.MigrateAttrTenantsPatch; import org.alfresco.util.PropertyCheck; import org.springframework.context.ApplicationEvent; +import org.springframework.extensions.surf.util.AbstractLifecycleBean; /** - * This component is responsible for ensuring that patches are applied - * at the appropriate time. + * This component is responsible for starting the enabled tenants (if MT is enabled). * - * @author Derek Hulley + * @author Derek Hulley, janv */ public class MultiTenantBootstrap extends AbstractLifecycleBean { private TenantAdminService tenantAdminService; - + private PatchService patchService; + private MigrateAttrTenantsPatch migrateAttrTenantsPatch; + /** * @param tenantAdminService the service that will perform the bootstrap */ @@ -39,12 +45,47 @@ public class MultiTenantBootstrap extends AbstractLifecycleBean { this.tenantAdminService = tenantAdminService; } - + + public void setPatchService(PatchService patchService) + { + this.patchService = patchService; + } + + public void setMigrateAttrTenantsPatch(MigrateAttrTenantsPatch migrateAttrTenantsPatch) + { + this.migrateAttrTenantsPatch = migrateAttrTenantsPatch; + } + @Override protected void onBootstrap(ApplicationEvent event) { PropertyCheck.mandatory(this, "tenantAdminService", tenantAdminService); - tenantAdminService.startTenants(); + PropertyCheck.mandatory(this, "patchService", patchService); + + if (tenantAdminService.isEnabled()) + { + // Upgrade to 3.4 (chicken & egg) + if (tenantAdminService.getAllTenants().size() == 0) + { + boolean applied = false; + List appliedPatches = patchService.getPatches(null, null); + for (AppliedPatch appliedPatch : appliedPatches) + { + if (appliedPatch.getId().equals("patch.migrateAttrTenants")) + { + applied = true; + break; + } + } + + if (! applied) + { + migrateAttrTenantsPatch.apply(); + } + } + + tenantAdminService.startTenants(); + } } @Override