From: Richard Millet Date: Wed, 11 May 2011 21:41:26 +0000 (+0000) Subject: CSPACE-3451: Fixed a multitenancy issue involving ambiguity in the repository domain... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=cfbf6e6c095cdb7f9319b12054c9375e3f460e63;p=tmp%2Fjakarta-migration.git CSPACE-3451: Fixed a multitenancy issue involving ambiguity in the repository domain names for services. --- diff --git a/services/common/src/main/cspace/config/services/tenants/collectionspace/tenant-bindings.xml b/services/common/src/main/cspace/config/services/tenants/collectionspace/tenant-bindings.xml index 65900ea3b..b0c1fb48a 100644 --- a/services/common/src/main/cspace/config/services/tenants/collectionspace/tenant-bindings.xml +++ b/services/common/src/main/cspace/config/services/tenants/collectionspace/tenant-bindings.xml @@ -8,7 +8,7 @@ - + datePattern diff --git a/services/common/src/main/cspace/config/services/tenants/hearstmuseum/tenant-bindings.xml b/services/common/src/main/cspace/config/services/tenants/hearstmuseum/tenant-bindings.xml index e7d4f0732..3c0abecc8 100644 --- a/services/common/src/main/cspace/config/services/tenants/hearstmuseum/tenant-bindings.xml +++ b/services/common/src/main/cspace/config/services/tenants/hearstmuseum/tenant-bindings.xml @@ -8,7 +8,7 @@ - + datePattern diff --git a/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java b/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java index b819b8234..7b4b1567b 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/config/TenantBindingConfigReaderImpl.java @@ -158,7 +158,9 @@ public class TenantBindingConfigReaderImpl private void readDomains(TenantBindingType tenantBinding) throws Exception { for (RepositoryDomainType domain : tenantBinding.getRepositoryDomain()) { - domains.put(domain.getName(), domain); + String key = getTenantQualifiedIdentifier(tenantBinding.getId(), + domain.getName()); + domains.put(key, domain); } } @@ -239,7 +241,8 @@ public class TenantBindingConfigReaderImpl */ return null; } - return domains.get(repoDomain.trim()); + String key = this.getTenantQualifiedIdentifier(tenantId, repoDomain.trim()); + return domains.get(key); } /** @@ -295,7 +298,8 @@ public class TenantBindingConfigReaderImpl */ public static String getTenantQualifiedServiceName( String tenantId, String serviceName) { - return tenantId + "." + serviceName.toLowerCase(); +// return tenantId + "." + serviceName.toLowerCase(); + return getTenantQualifiedIdentifier(tenantId, serviceName.toLowerCase()); } public static String getTenantQualifiedIdentifier(String tenantId, String identifier) { diff --git a/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java b/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java index 2f3798e3f..2dc344b09 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/common/context/AbstractServiceContextImpl.java @@ -283,6 +283,17 @@ public abstract class AbstractServiceContextImpl return repositoryDomain.getName(); } + /* (non-Javadoc) + * @see org.collectionspace.services.common.context.ServiceContext#getRepositoryDomainName() + */ + @Override + public String getRepositoryDomainStorageName() { + if (repositoryDomain == null) { + return null; + } + return repositoryDomain.getStorageName(); + } + /* (non-Javadoc) * @see org.collectionspace.services.common.context.ServiceContext#getRepositoryWorkspaceId() */ diff --git a/services/common/src/main/java/org/collectionspace/services/common/context/ServiceContext.java b/services/common/src/main/java/org/collectionspace/services/common/context/ServiceContext.java index 872d04c2d..cd0fb5b31 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/context/ServiceContext.java +++ b/services/common/src/main/java/org/collectionspace/services/common/context/ServiceContext.java @@ -111,6 +111,11 @@ public interface ServiceContext { * @return repository domain for the tenant */ public String getRepositoryDomainName(); + + /* + * Get's the name/label used to create the storage container (folder or directory name) + */ + public String getRepositoryDomainStorageName(); /** * getRepositoryClientName returns the repository client name as diff --git a/services/common/src/main/java/org/collectionspace/services/common/query/QueryContext.java b/services/common/src/main/java/org/collectionspace/services/common/query/QueryContext.java index 1c07ff356..c7b1ba101 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/query/QueryContext.java +++ b/services/common/src/main/java/org/collectionspace/services/common/query/QueryContext.java @@ -43,7 +43,7 @@ public class QueryContext { throw new DocumentNotFoundException( "Unable to find DocumentType for service " + ctx.getServiceName()); } - domain = ctx.getRepositoryDomainName(); + domain = ctx.getRepositoryDomainStorageName(); tenantId = ctx.getTenantId(); if (tenantId == null) { throw new IllegalArgumentException( diff --git a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java index eb8e399f3..b4fff66af 100644 --- a/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java +++ b/services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java @@ -836,24 +836,28 @@ public class RepositoryJavaClientImpl implements RepositoryClient +