mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.0 to HEAD
11259: MT - make new PersonDao MT-aware, re-enable MT demo/test 11261: MT - fix ETHREEOH-190, partial fix for ETHREEOH-189 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12392 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -221,6 +221,13 @@
|
|||||||
<property name="dictionaryService">
|
<property name="dictionaryService">
|
||||||
<ref bean="dictionaryService" />
|
<ref bean="dictionaryService" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="tenantService">
|
||||||
|
<ref bean="tenantService"/>
|
||||||
|
</property>
|
||||||
|
<!-- The store in which people are persisted. -->
|
||||||
|
<property name="storeUrl">
|
||||||
|
<value>${spaces.store}</value>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
|
@@ -39,8 +39,10 @@ import org.alfresco.repo.domain.PropertyMapKey;
|
|||||||
import org.alfresco.repo.domain.QNameDAO;
|
import org.alfresco.repo.domain.QNameDAO;
|
||||||
import org.alfresco.repo.domain.hibernate.NodeImpl;
|
import org.alfresco.repo.domain.hibernate.NodeImpl;
|
||||||
import org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl;
|
import org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl;
|
||||||
|
import org.alfresco.repo.tenant.TenantService;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.hibernate.SQLQuery;
|
import org.hibernate.SQLQuery;
|
||||||
@@ -62,21 +64,39 @@ public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao
|
|||||||
|
|
||||||
private DictionaryService dictionaryService;
|
private DictionaryService dictionaryService;
|
||||||
|
|
||||||
|
private StoreRef storeRef;
|
||||||
|
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
|
public void setStoreUrl(String storeUrl)
|
||||||
|
{
|
||||||
|
this.storeRef = new StoreRef(storeUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTenantService(TenantService tenantService)
|
||||||
|
{
|
||||||
|
this.tenantService = tenantService;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public List<NodeRef> getPersonOrNull(final String searchUserName, boolean userNamesAreCaseSensitive)
|
public List<NodeRef> getPersonOrNull(final String searchUserName, boolean userNamesAreCaseSensitive)
|
||||||
{
|
{
|
||||||
|
final StoreRef personStoreRef = tenantService.getName(storeRef);
|
||||||
|
|
||||||
List<NodeRef> answer = new ArrayList<NodeRef>();
|
List<NodeRef> answer = new ArrayList<NodeRef>();
|
||||||
|
|
||||||
HibernateCallback callback = new HibernateCallback()
|
HibernateCallback callback = new HibernateCallback()
|
||||||
{
|
{
|
||||||
public Object doInHibernate(Session session)
|
public Object doInHibernate(Session session)
|
||||||
{
|
{
|
||||||
SQLQuery query = getSession().createSQLQuery("SELECT {n.*} FROM alf_node n JOIN alf_node_properties p ON n.id = p.node_id JOIN alf_child_assoc c on c.child_node_id = n.id WHERE c.qname_localname = :userName1 AND p.qname_id = :qnameId AND p.string_value = :userName2 and n.node_deleted = :False");
|
SQLQuery query = getSession().createSQLQuery("SELECT {n.*} FROM alf_node n JOIN alf_node_properties p ON n.id = p.node_id JOIN alf_child_assoc c on c.child_node_id = n.id JOIN alf_store s on s.id = n.store_id WHERE c.qname_localname = :userName1 AND p.qname_id = :qnameId AND p.string_value = :userName2 and n.node_deleted = :False and s.protocol = :storeProtocol and s.identifier = :storeIdentifier");
|
||||||
query.addEntity("n", NodeImpl.class);
|
query.addEntity("n", NodeImpl.class);
|
||||||
query.setParameter("qnameId", qNameId);
|
query.setParameter("qnameId", qNameId);
|
||||||
query.setParameter("userName1", searchUserName);
|
query.setParameter("userName1", searchUserName);
|
||||||
query.setParameter("userName2", searchUserName);
|
query.setParameter("userName2", searchUserName);
|
||||||
query.setParameter("False", Boolean.FALSE);
|
query.setParameter("False", Boolean.FALSE);
|
||||||
|
query.setParameter("storeProtocol", personStoreRef.getProtocol());
|
||||||
|
query.setParameter("storeIdentifier", personStoreRef.getIdentifier());
|
||||||
return query.list();
|
return query.list();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -122,16 +142,20 @@ public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public Set<NodeRef> getAllPeople()
|
public Set<NodeRef> getAllPeople()
|
||||||
{
|
{
|
||||||
|
final StoreRef personStoreRef = tenantService.getName(storeRef);
|
||||||
|
|
||||||
Set<NodeRef> answer = new HashSet<NodeRef>();
|
Set<NodeRef> answer = new HashSet<NodeRef>();
|
||||||
|
|
||||||
HibernateCallback callback = new HibernateCallback()
|
HibernateCallback callback = new HibernateCallback()
|
||||||
{
|
{
|
||||||
public Object doInHibernate(Session session)
|
public Object doInHibernate(Session session)
|
||||||
{
|
{
|
||||||
SQLQuery query = getSession().createSQLQuery("SELECT {n.*} FROM alf_node n JOIN alf_node_properties p ON n.id = p.node_id WHERE p.qname_id = :qnameId and n.node_deleted = :False");
|
SQLQuery query = getSession().createSQLQuery("SELECT {n.*} FROM alf_node n JOIN alf_node_properties p ON n.id = p.node_id JOIN alf_store s on s.id = n.store_id WHERE p.qname_id = :qnameId and n.node_deleted = :False and s.protocol = :storeProtocol and s.identifier = :storeIdentifier");
|
||||||
query.addEntity("n", NodeImpl.class);
|
query.addEntity("n", NodeImpl.class);
|
||||||
query.setParameter("qnameId", qNameId);
|
query.setParameter("qnameId", qNameId);
|
||||||
query.setParameter("False", Boolean.FALSE);
|
query.setParameter("False", Boolean.FALSE);
|
||||||
|
query.setParameter("storeProtocol", personStoreRef.getProtocol());
|
||||||
|
query.setParameter("storeIdentifier", personStoreRef.getIdentifier());
|
||||||
return query.list();
|
return query.list();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -50,8 +50,6 @@ import org.alfresco.repo.node.db.DbNodeServiceImpl;
|
|||||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
import org.alfresco.repo.usage.UserUsageBootstrapJob;
|
|
||||||
import org.alfresco.repo.usage.UserUsageTrackingComponent;
|
|
||||||
import org.alfresco.repo.workflow.WorkflowDeployer;
|
import org.alfresco.repo.workflow.WorkflowDeployer;
|
||||||
import org.alfresco.service.cmr.admin.RepoAdminService;
|
import org.alfresco.service.cmr.admin.RepoAdminService;
|
||||||
import org.alfresco.service.cmr.attributes.AttributeService;
|
import org.alfresco.service.cmr.attributes.AttributeService;
|
||||||
@@ -895,9 +893,11 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo
|
|||||||
|
|
||||||
spacesImporterBootstrap.bootstrap();
|
spacesImporterBootstrap.bootstrap();
|
||||||
|
|
||||||
|
/* TODO - pending fix for ETHREEOH-283
|
||||||
// calculate any missing usages
|
// calculate any missing usages
|
||||||
UserUsageTrackingComponent userUsageTrackingComponent = (UserUsageTrackingComponent)ctx.getBean(UserUsageBootstrapJob.KEY_COMPONENT);
|
UserUsageTrackingComponent userUsageTrackingComponent = (UserUsageTrackingComponent)ctx.getBean(UserUsageBootstrapJob.KEY_COMPONENT);
|
||||||
userUsageTrackingComponent.bootstrapInternal();
|
userUsageTrackingComponent.bootstrapInternal();
|
||||||
|
*/
|
||||||
|
|
||||||
logger.debug("Bootstrapped store: " + tenantService.getBaseName(bootstrapStoreRef));
|
logger.debug("Bootstrapped store: " + tenantService.getBaseName(bootstrapStoreRef));
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,7 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
@@ -104,6 +105,7 @@ public class MultiTDemoTest extends TestCase
|
|||||||
public static final String TEST_USER1 = "alice";
|
public static final String TEST_USER1 = "alice";
|
||||||
public static final String TEST_USER2 = "bob";
|
public static final String TEST_USER2 = "bob";
|
||||||
public static final String TEST_USER3 = "eve";
|
public static final String TEST_USER3 = "eve";
|
||||||
|
public static final String TEST_USER4 = "fred";
|
||||||
|
|
||||||
private static final int DEFAULT_DM_STORE_COUNT = 6;
|
private static final int DEFAULT_DM_STORE_COUNT = 6;
|
||||||
|
|
||||||
@@ -146,6 +148,17 @@ public class MultiTDemoTest extends TestCase
|
|||||||
{
|
{
|
||||||
logger.info("Create tenants");
|
logger.info("Create tenants");
|
||||||
|
|
||||||
|
Set<NodeRef> personRefs = personService.getAllPeople();
|
||||||
|
//assertEquals(2, personRefs.size()); // super-tenant: admin, guest (note: checking for 2 assumes that this test is run in a fresh bootstrap env)
|
||||||
|
for (NodeRef personRef : personRefs)
|
||||||
|
{
|
||||||
|
String userName = (String)nodeService.getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||||
|
for (final String tenantDomain : tenants)
|
||||||
|
{
|
||||||
|
assertFalse("Unexpected (tenant) user: "+userName, userName.endsWith(tenantDomain));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
for (final String tenantDomain : tenants)
|
for (final String tenantDomain : tenants)
|
||||||
@@ -181,6 +194,17 @@ public class MultiTDemoTest extends TestCase
|
|||||||
{
|
{
|
||||||
logger.info("Create demo users");
|
logger.info("Create demo users");
|
||||||
|
|
||||||
|
Set<NodeRef> personRefs = personService.getAllPeople();
|
||||||
|
//assertEquals(2, personRefs.size()); // super-tenant: admin, guest (note: checking for 2 assumes that this test is run in a fresh bootstrap env)
|
||||||
|
for (NodeRef personRef : personRefs)
|
||||||
|
{
|
||||||
|
String userName = (String)nodeService.getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||||
|
for (final String tenantDomain : tenants)
|
||||||
|
{
|
||||||
|
assertFalse("Unexpected (tenant) user: "+userName, userName.endsWith(tenantDomain));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
for (final String tenantDomain : tenants)
|
for (final String tenantDomain : tenants)
|
||||||
@@ -188,22 +212,50 @@ public class MultiTDemoTest extends TestCase
|
|||||||
String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain);
|
String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain);
|
||||||
|
|
||||||
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
|
{
|
||||||
|
public Object doWork() throws Exception
|
||||||
|
{
|
||||||
|
createUser(TEST_USER1, tenantDomain, "welcome");
|
||||||
|
createUser(TEST_USER2, tenantDomain, "welcome");
|
||||||
|
|
||||||
|
if (tenantDomain.equals(TEST_TENANT_DOMAIN2))
|
||||||
{
|
{
|
||||||
public Object doWork() throws Exception
|
createUser(TEST_USER3, tenantDomain, "welcome");
|
||||||
{
|
}
|
||||||
createUser(TEST_USER1, tenantDomain, "welcome");
|
|
||||||
|
|
||||||
createUser(TEST_USER2, tenantDomain, "welcome");
|
return null;
|
||||||
|
}
|
||||||
|
}, tenantAdminName);
|
||||||
|
}
|
||||||
|
|
||||||
if (tenantDomain.equals(TEST_TENANT_DOMAIN2))
|
for (final String tenantDomain : tenants)
|
||||||
{
|
{
|
||||||
createUser(TEST_USER3, tenantDomain, "welcome");
|
String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain);
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
}
|
{
|
||||||
}, tenantAdminName);
|
public Object doWork() throws Exception
|
||||||
|
{
|
||||||
|
Set<NodeRef> personRefs = personService.getAllPeople();
|
||||||
|
|
||||||
|
if (tenantDomain.equals(TEST_TENANT_DOMAIN2))
|
||||||
|
{
|
||||||
|
assertEquals(5, personRefs.size()); // admin@tenant, guest@tenant, alice@tenant, bob@tenant, eve@tenant
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertEquals(4, personRefs.size()); // admin@tenant, guest@tenant, alice@tenant, bob@tenant
|
||||||
|
}
|
||||||
|
|
||||||
|
for (NodeRef personRef : personRefs)
|
||||||
|
{
|
||||||
|
String userName = (String)nodeService.getProperty(personRef, ContentModel.PROP_USERNAME);
|
||||||
|
assertTrue(userName.endsWith(tenantDomain));
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, tenantAdminName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable t)
|
catch (Throwable t)
|
||||||
@@ -431,6 +483,37 @@ public class MultiTDemoTest extends TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetProperty()
|
||||||
|
{
|
||||||
|
logger.info("Test get property");
|
||||||
|
|
||||||
|
final String tenantDomain = TEST_TENANT_DOMAIN1;
|
||||||
|
String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain);
|
||||||
|
|
||||||
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
|
{
|
||||||
|
public Object doWork() throws Exception
|
||||||
|
{
|
||||||
|
NodeRef personNodeRef = createUser(TEST_USER4, tenantDomain, "welcome");
|
||||||
|
|
||||||
|
// Test nodeRef property
|
||||||
|
NodeRef homeFolderNodeRef = (NodeRef)nodeService.getProperty(personNodeRef, ContentModel.PROP_HOMEFOLDER);
|
||||||
|
assertFalse(homeFolderNodeRef.toString().contains(tenantDomain));
|
||||||
|
|
||||||
|
Map<QName, Serializable> props = (Map<QName, Serializable>)nodeService.getProperties(personNodeRef);
|
||||||
|
assertFalse(props.get(ContentModel.PROP_HOMEFOLDER).toString().contains(tenantDomain));
|
||||||
|
|
||||||
|
// Test "store-identifier" property
|
||||||
|
String storeId = (String)nodeService.getProperty(personNodeRef, ContentModel.PROP_STORE_IDENTIFIER);
|
||||||
|
assertFalse(storeId.contains(tenantDomain));
|
||||||
|
|
||||||
|
assertFalse(props.get(ContentModel.PROP_STORE_IDENTIFIER).toString().contains(tenantDomain));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, tenantAdminName);
|
||||||
|
}
|
||||||
|
|
||||||
private void createGroup(String shortName, String parentShortName)
|
private void createGroup(String shortName, String parentShortName)
|
||||||
{
|
{
|
||||||
// create new Group using authority Service
|
// create new Group using authority Service
|
||||||
@@ -458,10 +541,12 @@ public class MultiTDemoTest extends TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void createUser(String baseUserName, String tenantDomain, String password)
|
private NodeRef createUser(String baseUserName, String tenantDomain, String password)
|
||||||
{
|
{
|
||||||
String userName = tenantService.getDomainUser(baseUserName, tenantDomain);
|
String userName = tenantService.getDomainUser(baseUserName, tenantDomain);
|
||||||
|
|
||||||
|
NodeRef personNodeRef = null;
|
||||||
|
|
||||||
if (! this.authenticationService.authenticationExists(userName))
|
if (! this.authenticationService.authenticationExists(userName))
|
||||||
{
|
{
|
||||||
NodeRef baseHomeFolder = getUserHomesNodeRef(SPACES_STORE);
|
NodeRef baseHomeFolder = getUserHomesNodeRef(SPACES_STORE);
|
||||||
@@ -483,13 +568,21 @@ public class MultiTDemoTest extends TestCase
|
|||||||
personProperties.put(ContentModel.PROP_LASTNAME, baseUserName+"-"+tenantDomain); // add domain suffix here for demo only
|
personProperties.put(ContentModel.PROP_LASTNAME, baseUserName+"-"+tenantDomain); // add domain suffix here for demo only
|
||||||
personProperties.put(ContentModel.PROP_EMAIL, userName);
|
personProperties.put(ContentModel.PROP_EMAIL, userName);
|
||||||
|
|
||||||
NodeRef newPerson = this.personService.createPerson(personProperties);
|
personNodeRef = this.personService.createPerson(personProperties);
|
||||||
|
|
||||||
// ensure the user can access their own Person object
|
// ensure the user can access their own Person object
|
||||||
this.permissionService.setPermission(newPerson, userName, permissionService.getAllPermission(), true);
|
this.permissionService.setPermission(personNodeRef, userName, permissionService.getAllPermission(), true);
|
||||||
|
|
||||||
logger.info("Created user " + userName);
|
logger.info("Created user " + userName);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
personNodeRef = personService.getPerson(userName);
|
||||||
|
|
||||||
|
logger.info("Found existing user " + userName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return personNodeRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loginLogoutUser(String username, String password)
|
private void loginLogoutUser(String username, String password)
|
||||||
|
@@ -24,17 +24,23 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.repo.tenant;
|
package org.alfresco.repo.tenant;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.Path;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.util.EqualsHelper;
|
import org.alfresco.util.EqualsHelper;
|
||||||
import org.aopalliance.intercept.MethodInvocation;
|
import org.aopalliance.intercept.MethodInvocation;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
@@ -164,7 +170,52 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
// Make the call
|
// Make the call
|
||||||
Object ret = invocation.proceed();
|
Object ret = invocation.proceed();
|
||||||
|
|
||||||
if (methodName.equals("getStores"))
|
if (methodName.equals("getProperty"))
|
||||||
|
{
|
||||||
|
if (ret != null)
|
||||||
|
{
|
||||||
|
// Convert the outbound value
|
||||||
|
QName qname = (QName)args[1];
|
||||||
|
if (qname.equals(ContentModel.PROP_STORE_IDENTIFIER))
|
||||||
|
{
|
||||||
|
String rawStoreId = (String)ret;
|
||||||
|
ret = tenantService.getBaseName(rawStoreId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = convertOutboundValue(ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else if (methodName.equals("getProperties"))
|
||||||
|
{
|
||||||
|
if (ret != null)
|
||||||
|
{
|
||||||
|
// Convert the outbound values
|
||||||
|
Map<QName, Serializable> rawValues = (Map<QName, Serializable>)ret;
|
||||||
|
for (Map.Entry<QName, Serializable> rawValue : rawValues.entrySet())
|
||||||
|
{
|
||||||
|
QName qname = rawValue.getKey();
|
||||||
|
Serializable value = rawValue.getValue();
|
||||||
|
|
||||||
|
if (qname.equals(ContentModel.PROP_STORE_IDENTIFIER) && (value != null))
|
||||||
|
{
|
||||||
|
rawValues.put(ContentModel.PROP_STORE_IDENTIFIER, tenantService.getBaseName((String)value));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawValues.put(qname, (Serializable)convertOutboundValue(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = rawValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else if (methodName.equals("getStores"))
|
||||||
{
|
{
|
||||||
if ((ret == null) || (! (ret instanceof List)))
|
if ((ret == null) || (! (ret instanceof List)))
|
||||||
{
|
{
|
||||||
@@ -254,8 +305,6 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO use getBaseName ...
|
|
||||||
|
|
||||||
// Deal with collections
|
// Deal with collections
|
||||||
Object value = rawValue;
|
Object value = rawValue;
|
||||||
if (rawValue instanceof Collection)
|
if (rawValue instanceof Collection)
|
||||||
@@ -265,7 +314,7 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
else if (rawValue instanceof StoreRef)
|
else if (rawValue instanceof StoreRef)
|
||||||
{
|
{
|
||||||
StoreRef ref = (StoreRef) rawValue;
|
StoreRef ref = (StoreRef) rawValue;
|
||||||
value = tenantService.getName(ref);
|
value = tenantService.getBaseName(ref);
|
||||||
}
|
}
|
||||||
else if (rawValue instanceof NodeRef)
|
else if (rawValue instanceof NodeRef)
|
||||||
{
|
{
|
||||||
@@ -275,14 +324,14 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
else if (rawValue instanceof ChildAssociationRef)
|
else if (rawValue instanceof ChildAssociationRef)
|
||||||
{
|
{
|
||||||
ChildAssociationRef ref = (ChildAssociationRef) rawValue;
|
ChildAssociationRef ref = (ChildAssociationRef) rawValue;
|
||||||
|
// TODO use getBaseName ... fix tenant bootstrap
|
||||||
value = tenantService.getName(ref);
|
value = tenantService.getName(ref);
|
||||||
}
|
}
|
||||||
else if (rawValue instanceof AssociationRef)
|
else if (rawValue instanceof AssociationRef)
|
||||||
{
|
{
|
||||||
AssociationRef ref = (AssociationRef) rawValue;
|
AssociationRef ref = (AssociationRef) rawValue;
|
||||||
value = tenantService.getName(ref);
|
value = tenantService.getBaseName(ref);
|
||||||
}
|
}
|
||||||
/* TODO
|
|
||||||
else if (rawValue instanceof Path)
|
else if (rawValue instanceof Path)
|
||||||
{
|
{
|
||||||
Path ref = (Path)rawValue;
|
Path ref = (Path)rawValue;
|
||||||
@@ -299,7 +348,6 @@ public class MultiTNodeServiceInterceptor extends DelegatingIntroductionIntercep
|
|||||||
}
|
}
|
||||||
value = outboundPath;
|
value = outboundPath;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
// Done
|
// Done
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user