mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-16 17:55:15 +00:00
Support for sub-types of folder in site.getContainer() - to allow for specialised types of component folder and backwards compatibility with existing models such as forum.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9306 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
parent
e09ae51c1d
commit
14660ea397
@ -4,6 +4,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Site service fundamental API.
|
||||
@ -113,9 +114,10 @@ public interface SiteService
|
||||
*
|
||||
* @param shortName short name of site
|
||||
* @param componentId component id
|
||||
* @return noderef of folder container
|
||||
* @param folderType type of folder to create (if null, creates standard folder)
|
||||
* @return noderef of container
|
||||
*/
|
||||
NodeRef getContainer(String shortName, String componentId);
|
||||
NodeRef getContainer(String shortName, String componentId, QName folderType);
|
||||
|
||||
/**
|
||||
* Determines if a "container" folder for the specified component exists.
|
||||
|
@ -465,7 +465,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.site.SiteService#getContainer(java.lang.String)
|
||||
*/
|
||||
public NodeRef getContainer(String shortName, String componentId)
|
||||
public NodeRef getContainer(String shortName, String componentId, QName folderType)
|
||||
{
|
||||
if (componentId == null || componentId.length() ==0)
|
||||
{
|
||||
@ -489,7 +489,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
|
||||
catch(FileNotFoundException e)
|
||||
{
|
||||
// create component folder
|
||||
FileInfo fileInfo = fileFolderService.create(siteNodeRef, componentId, ContentModel.TYPE_FOLDER);
|
||||
FileInfo fileInfo = fileFolderService.create(siteNodeRef, componentId, folderType == null ? ContentModel.TYPE_FOLDER : folderType);
|
||||
containerNodeRef = fileInfo.getNodeRef();
|
||||
}
|
||||
|
||||
|
@ -29,9 +29,12 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.model.ApplicationModel;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.jscript.ClasspathScriptLocation;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.ScriptLocation;
|
||||
import org.alfresco.service.cmr.repository.ScriptService;
|
||||
import org.alfresco.util.BaseAlfrescoSpringTest;
|
||||
@ -55,6 +58,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
|
||||
private SiteService siteService;
|
||||
private ScriptService scriptService;
|
||||
private NodeService nodeService;
|
||||
private AuthenticationComponent authenticationComponent;
|
||||
|
||||
/**
|
||||
@ -67,6 +71,7 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
// Get the required services
|
||||
this.siteService = (SiteService)this.applicationContext.getBean("siteService");
|
||||
this.scriptService = (ScriptService)this.applicationContext.getBean("ScriptService");
|
||||
this.nodeService = (NodeService)this.applicationContext.getBean("NodeService");
|
||||
this.authenticationComponent = (AuthenticationComponent)this.applicationContext.getBean("authenticationComponent");
|
||||
|
||||
// Do the test's as userOne
|
||||
@ -342,20 +347,35 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest
|
||||
|
||||
boolean hasContainer = this.siteService.hasContainer(siteInfo.getShortName(), "folder.component");
|
||||
assertFalse(hasContainer);
|
||||
NodeRef container1 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component");
|
||||
NodeRef container1 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component", null);
|
||||
assertNotNull(container1);
|
||||
NodeRef container2 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component");
|
||||
NodeRef container2 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component", null);
|
||||
assertNotNull(container2);
|
||||
assertTrue(container1.equals(container2));
|
||||
boolean hasContainer2 = this.siteService.hasContainer(siteInfo.getShortName(), "folder.component");
|
||||
assertTrue(hasContainer2);
|
||||
boolean hasContainer3 = this.siteService.hasContainer(siteInfo.getShortName(), "folder.component2");
|
||||
assertFalse(hasContainer3);
|
||||
NodeRef container3 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component2");
|
||||
NodeRef container3 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component2", null);
|
||||
assertNotNull(container3);
|
||||
assertFalse(container1.equals(container3));
|
||||
boolean hasContainer4 = this.siteService.hasContainer(siteInfo.getShortName(), "folder.component2");
|
||||
assertTrue(hasContainer4);
|
||||
boolean hasContainer5 = this.siteService.hasContainer(siteInfo.getShortName(), "folder.component3");
|
||||
assertFalse(hasContainer5);
|
||||
NodeRef container5 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component3", ContentModel.TYPE_FOLDER);
|
||||
assertNotNull(container5);
|
||||
NodeRef container6 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component3", null);
|
||||
assertNotNull(container6);
|
||||
assertTrue(container5.equals(container6));
|
||||
assertEquals(ContentModel.TYPE_FOLDER, nodeService.getType(container6));
|
||||
NodeRef container7 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component3", ApplicationModel.TYPE_PROJECTSPACE);
|
||||
assertNotNull(container7);
|
||||
assertTrue(container5.equals(container7));
|
||||
assertEquals(ContentModel.TYPE_FOLDER, nodeService.getType(container7));
|
||||
NodeRef container8 = this.siteService.getContainer(siteInfo.getShortName(), "folder.component4", ApplicationModel.TYPE_PROJECTSPACE);
|
||||
assertNotNull(container8);
|
||||
assertEquals(ApplicationModel.TYPE_PROJECTSPACE, nodeService.getType(container8));
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,6 +34,7 @@ import org.alfresco.repo.site.SiteInfo;
|
||||
import org.alfresco.repo.site.SiteService;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
|
||||
/**
|
||||
@ -261,15 +262,31 @@ public class Site implements Serializable
|
||||
/**
|
||||
* Gets (or creates) the "container" folder for the specified component id
|
||||
*
|
||||
* NOTE: The container is of type cm:folder.
|
||||
*
|
||||
* @param componentId
|
||||
* @return node representing the "container" folder
|
||||
*/
|
||||
public ScriptNode getContainer(String componentId)
|
||||
{
|
||||
return getContainer(componentId, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets (or creates) the "container" folder for the specified component id
|
||||
*
|
||||
* @param componentId
|
||||
* @param folderType type of folder to create (if null, creates a standard folder)
|
||||
* @return node representing the "container" folder (or null, if for some reason
|
||||
* the container can not be created)
|
||||
*/
|
||||
public ScriptNode getContainer(String componentId, String folderType)
|
||||
{
|
||||
ScriptNode container = null;
|
||||
try
|
||||
{
|
||||
NodeRef containerNodeRef = this.siteService.getContainer(getShortName(), componentId);
|
||||
QName folderQName = (folderType == null) ? null : QName.createQName(folderType, serviceRegistry.getNamespaceService());
|
||||
NodeRef containerNodeRef = this.siteService.getContainer(getShortName(), componentId, folderQName);
|
||||
container = new ScriptNode(containerNodeRef, this.serviceRegistry, this.scope);
|
||||
}
|
||||
catch(AlfrescoRuntimeException e)
|
||||
@ -279,7 +296,7 @@ public class Site implements Serializable
|
||||
}
|
||||
return container;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the "container" folder for the specified component exists
|
||||
*
|
||||
|
@ -92,7 +92,14 @@ function testContainer()
|
||||
test.assertTrue(hasContainer2);
|
||||
var container2 = site.getContainer("folder.component");
|
||||
test.assertNotNull(container2);
|
||||
test.assertEquals(container, container2);
|
||||
test.assertEquals(container, container2);
|
||||
|
||||
var container3 = site.getContainer("folder.component2", "cm:folder");
|
||||
test.assertNotNull(container3);
|
||||
test.assertEquals("{http://www.alfresco.org/model/content/1.0}folder", container3.type);
|
||||
var container4 = site.getContainer("folder.component3", "app:projectfolder");
|
||||
test.assertNotNull(container4);
|
||||
test.assertEquals("{http://www.alfresco.org/model/application/1.0}projectfolder", container4.type);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user