mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merged DEV/WCM_SERVICES to HEAD
12099: WCM Services - "sandbox service" - add relative path support git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12103 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -59,6 +59,16 @@ public interface SandboxInfo
|
||||
|
||||
public String getCreator();
|
||||
|
||||
/**
|
||||
* The sandbox root relative path - eg. for WCM, typically /www
|
||||
*/
|
||||
public String getSandboxRootPath();
|
||||
|
||||
/**
|
||||
* The webapps root relative path - eg. for WCM, typically /www/avm_webapps
|
||||
*/
|
||||
public String getWebAppsPath();
|
||||
|
||||
/**
|
||||
* A list of ids of the stores within this sandbox.
|
||||
* The "main" store should come first in this list;
|
||||
|
@@ -26,6 +26,7 @@ package org.alfresco.wcm.sandbox;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.alfresco.config.JNDIConstants;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
@@ -82,6 +83,16 @@ public class SandboxInfoImpl implements SandboxInfo
|
||||
{
|
||||
return this.creator;
|
||||
}
|
||||
|
||||
public String getSandboxRootPath()
|
||||
{
|
||||
return "/"+JNDIConstants.DIR_DEFAULT_WWW;
|
||||
}
|
||||
|
||||
public String getWebAppsPath()
|
||||
{
|
||||
return JNDIConstants.DIR_DEFAULT_WWW_APPBASE;
|
||||
}
|
||||
|
||||
/**
|
||||
* A list of names of the stores within this sandbox.
|
||||
|
@@ -175,28 +175,33 @@ public interface SandboxService
|
||||
* <p>
|
||||
* Note: This will list new/modified/deleted items from the directory and below. The destination path will be dervied.
|
||||
*
|
||||
* @param avmSrcPath source sandbox path (an AVM path)
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param relativePath relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList)
|
||||
* @param includeDeleted if true, include deleted items as well as new/modified items
|
||||
* @return List<AVMNodeDescriptor> list of changed items
|
||||
*/
|
||||
public List<AVMNodeDescriptor> listChangedItemsDir(String avmSrcPath, boolean includeDeleted);
|
||||
public List<AVMNodeDescriptor> listChangedItemsDir(String sbStoreId, String relativePath, boolean includeDeleted);
|
||||
|
||||
/**
|
||||
* List changed (new/modified/deleted) items between any two sandbox paths
|
||||
*
|
||||
* @param avmSrcPath source sandbox path (an AVM path)
|
||||
* @param avmDstPath destination sandbox path (an AVM path)
|
||||
* @param srcSandboxStoreId source sandbox store id
|
||||
* @param srcRelativePath source relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList)
|
||||
* @param dstSandboxStoreId destination sandbox store id
|
||||
* @param dstRelativePath destination relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList)
|
||||
* @param includeDeleted if true, include deleted items as well as new/modified items
|
||||
* @return List<AVMNodeDescriptor> list of changed items
|
||||
*/
|
||||
public List<AVMNodeDescriptor> listChangedItems(String avmSrcPath, String avmDstPath, boolean includeDeleted);
|
||||
public List<AVMNodeDescriptor> listChangedItems(String srcSandboxStoreId, String srcRelativePath, String dstSandboxStoreId, String dstRelativePath, boolean includeDeleted);
|
||||
|
||||
/**
|
||||
* Submit all changed items for given sandbox (eg. from user sandbox to staging sandbox)
|
||||
* <p>
|
||||
* Note: This will submit new/modified/deleted items from the root directory and below, including all web apps
|
||||
* Note: This will submit new/modified/deleted items from the sandbox root directory (eg. /www) and below, including all web apps
|
||||
* <p>
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitAll(String sbStoreId, String submitLabel, String submitComment);
|
||||
|
||||
@@ -205,8 +210,10 @@ public interface SandboxService
|
||||
* <p>
|
||||
* Note: This will submit new/modified/deleted items for the given web app
|
||||
*
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param webApp web app to filter by
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param webApp web app to filter by
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitAllWebApp(String sbStoreId, String webApp, String submitLabel, String submitComment);
|
||||
|
||||
@@ -215,31 +222,48 @@ public interface SandboxService
|
||||
* <p>
|
||||
* Note: This will submit new/modified/deleted items from the directory and below
|
||||
*
|
||||
* @param avmDirectoryPath path to filter by
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param relativePath relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToRevert)
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitAllDir(String avmDirectoryPath, String submitLabel, String submitComment);
|
||||
public void submitAllDir(String sbStoreId, String relativePath, String submitLabel, String submitComment);
|
||||
|
||||
/**
|
||||
* Submit list of changed items for given sandbox path (eg. in user sandbox)
|
||||
*
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param itemPaths list of items, as relative paths (eg. /www/avm_webapps/ROOT/MyFolderToRevert)
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitList(String sbStoreId, List<String> relativePaths, String submitLabel, String submitComment);
|
||||
|
||||
/**
|
||||
* Submit list of changed items for given sandbox (eg. from user sandbox to staging sandbox)
|
||||
*
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param items list of AVM node descriptors
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param itemNodes list of items, as AVM node descriptors
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitList(String sbStoreId, List<AVMNodeDescriptor> items, String submitLabel, String submitComment);
|
||||
public void submitListNodes(String sbStoreId, List<AVMNodeDescriptor> items, String submitLabel, String submitComment);
|
||||
|
||||
/**
|
||||
* Submit list of changed items for given sandbox (eg. from user sandbox to staging sandbox)
|
||||
*
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param items list of AVM node descriptors
|
||||
* @param items list of items, as AVM node descriptors
|
||||
* @param expirationDates map of <path, date> for those items set with an expiration date, or can be null (if no expiration dates)
|
||||
* @param submitLabel label for submitted snapshot
|
||||
* @param submitComment comment for submitted snapshot
|
||||
*/
|
||||
public void submitList(String sbStoreId, List<AVMNodeDescriptor> items, Map<String, Date> expirationDates, final String submitLabel, final String submitComment);
|
||||
public void submitListNodes(String sbStoreId, List<AVMNodeDescriptor> items, Map<String, Date> expirationDates, String submitLabel, String submitComment);
|
||||
|
||||
/**
|
||||
* Revert all changed items for given sandbox (eg. in user sandbox)
|
||||
* <p>
|
||||
* Note: This will revert new/modified/deleted items from the root directory and below, including all web apps
|
||||
* Note: This will revert new/modified/deleted items from the sandbox root directory (eg. /www) and below, including all web apps
|
||||
*
|
||||
* @param sbStoreId sandbox store id
|
||||
*/
|
||||
@@ -260,16 +284,17 @@ public interface SandboxService
|
||||
* <p>
|
||||
* Note: This will revert new/modified/deleted items from the directory and below
|
||||
*
|
||||
* @param avmDirectoryPath path to filter by
|
||||
* @param sbStoreId sandbox store id
|
||||
* @param relativePath relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToRevert)
|
||||
*/
|
||||
public void revertAllDir(String avmDirectoryPath);
|
||||
public void revertAllDir(String sbStoreId, String relativePath);
|
||||
|
||||
/**
|
||||
* Revert list of changed items for given sandbox (eg. in user sandbox)
|
||||
*
|
||||
* @param items list of AVM node descriptors
|
||||
*/
|
||||
public void revertList(String sbStoreId, List<AVMNodeDescriptor> items);
|
||||
public void revertListNodes(String sbStoreId, List<AVMNodeDescriptor> items);
|
||||
|
||||
/**
|
||||
* Revert sandbox to a specific snapshot version ID (ie. for staging sandbox)
|
||||
|
@@ -354,9 +354,8 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
// no filtering
|
||||
String avmDirectoryPath = sbStoreId+":/";
|
||||
return listChangedItemsDir(avmDirectoryPath, includeDeleted);
|
||||
String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
|
||||
return listChangedItemsDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), includeDeleted);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -369,49 +368,49 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
|
||||
// filter by current webapp
|
||||
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
|
||||
return listChangedItemsDir(avmDirectoryPath, includeDeleted);
|
||||
return listChangedItemsDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), includeDeleted);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#listChangedItemsDir(java.lang.String, boolean)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#listChangedItemsDir(java.lang.String, java.lang.String, boolean)
|
||||
*/
|
||||
public List<AVMNodeDescriptor> listChangedItemsDir(String avmDirectoryPath, boolean includeDeleted)
|
||||
public List<AVMNodeDescriptor> listChangedItemsDir(String sbStoreId, String relativePath, boolean includeDeleted)
|
||||
{
|
||||
ParameterCheck.mandatoryString("avmDirectoryPath", avmDirectoryPath);
|
||||
|
||||
String sandboxId = WCMUtil.getSandboxStoreId(avmDirectoryPath);
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
ParameterCheck.mandatoryString("relativePath", relativePath);
|
||||
|
||||
// TODO - allow list for any sandbox
|
||||
if (! WCMUtil.isUserStore(sandboxId))
|
||||
if (! WCMUtil.isUserStore(sbStoreId))
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Not an author sandbox: "+sandboxId);
|
||||
throw new AlfrescoRuntimeException("Not an author sandbox: "+sbStoreId);
|
||||
}
|
||||
|
||||
|
||||
// build the paths to the stores to compare - filter by given directory path
|
||||
String wpStoreId = WCMUtil.getWebProjectStoreId(sandboxId);
|
||||
String wpStoreId = WCMUtil.getWebProjectStoreId(sbStoreId);
|
||||
String stagingSandboxId = WCMUtil.buildStagingStoreName(wpStoreId);
|
||||
|
||||
String relativePath = WCMUtil.getStoreRelativePath(avmDirectoryPath);
|
||||
|
||||
String srcPath = sandboxId + AVM_STORE_SEPARATOR + relativePath;
|
||||
String dstPath = stagingSandboxId + AVM_STORE_SEPARATOR + relativePath;
|
||||
|
||||
return listChangedItems(srcPath, dstPath, includeDeleted);
|
||||
return listChangedItems(sbStoreId, relativePath, stagingSandboxId, relativePath, includeDeleted);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#listChangedItems(java.lang.String, java.lang.String, boolean)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#listChangedItems(java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
|
||||
*/
|
||||
public List<AVMNodeDescriptor> listChangedItems(String avmSrcPath, String avmDstPath, boolean includeDeleted)
|
||||
public List<AVMNodeDescriptor> listChangedItems(String srcSandboxStoreId, String srcRelativePath, String dstSandboxStoreId, String dstRelativePath, boolean includeDeleted)
|
||||
{
|
||||
ParameterCheck.mandatoryString("srcSandboxStoreId", srcSandboxStoreId);
|
||||
ParameterCheck.mandatoryString("srcRelativePath", srcRelativePath);
|
||||
|
||||
ParameterCheck.mandatoryString("dstSandboxStoreId", dstSandboxStoreId);
|
||||
ParameterCheck.mandatoryString("dstRelativePath", dstRelativePath);
|
||||
|
||||
String avmSrcPath = srcSandboxStoreId + AVM_STORE_SEPARATOR + srcRelativePath;
|
||||
String avmDstPath = dstSandboxStoreId + AVM_STORE_SEPARATOR + dstRelativePath;
|
||||
|
||||
return listChangedItems(-1, avmSrcPath, -1, avmDstPath, includeDeleted);
|
||||
}
|
||||
|
||||
private List<AVMNodeDescriptor> listChangedItems(int srcVersion, String srcPath, int dstVersion, String dstPath, boolean includeDeleted)
|
||||
{
|
||||
ParameterCheck.mandatoryString("srcPath", srcPath);
|
||||
ParameterCheck.mandatoryString("dstPath", dstPath);
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
List<AVMDifference> diffs = avmSyncService.compare(srcVersion, srcPath, dstVersion, dstPath, nameMatcher);
|
||||
@@ -444,8 +443,8 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
String avmDirectoryPath = sbStoreId+":/";
|
||||
submitAllDir(avmDirectoryPath, submitLabel, submitComment);
|
||||
String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
|
||||
submitAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), submitLabel, submitComment);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -457,35 +456,55 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
ParameterCheck.mandatoryString("webApp", webApp);
|
||||
|
||||
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
|
||||
submitAllDir(avmDirectoryPath, submitLabel, submitComment);
|
||||
submitAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), submitLabel, submitComment);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitAllDir(java.lang.String, java.lang.String, java.lang.String)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitAllDir(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
public void submitAllDir(String avmDirectoryPath, String submitLabel, String submitComment)
|
||||
public void submitAllDir(String sbStoreId, String relativePath, String submitLabel, String submitComment)
|
||||
{
|
||||
ParameterCheck.mandatoryString("avmDirectoryPath", avmDirectoryPath);
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
ParameterCheck.mandatoryString("relativePath", relativePath);
|
||||
|
||||
String sbStoreId = WCMUtil.getSandboxStoreId(avmDirectoryPath);
|
||||
List<AVMNodeDescriptor> items = listChangedItemsDir(sbStoreId, relativePath, true);
|
||||
|
||||
List<AVMNodeDescriptor> items = listChangedItemsDir(avmDirectoryPath, true);
|
||||
|
||||
submitList(sbStoreId, items, submitLabel, submitComment);
|
||||
submitListNodes(sbStoreId, items, submitLabel, submitComment);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitList(java.lang.String, java.util.List, java.lang.String, java.lang.String)
|
||||
*/
|
||||
public void submitList(String sbStoreId, List<AVMNodeDescriptor> items, final String submitLabel, final String submitComment)
|
||||
public void submitList(String sbStoreId, List<String> relativePaths, String submitLabel, String submitComment)
|
||||
{
|
||||
submitList(sbStoreId, items, null, submitLabel, submitComment);
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
List<AVMNodeDescriptor> items = new ArrayList<AVMNodeDescriptor>(relativePaths.size());
|
||||
|
||||
for (String relativePath : relativePaths)
|
||||
{
|
||||
// convert each path into an AVM node descriptor
|
||||
AVMNodeDescriptor node = avmService.lookup(-1, sbStoreId + WCMUtil.AVM_STORE_SEPARATOR + relativePath, true);
|
||||
if (node != null)
|
||||
{
|
||||
items.add(node);
|
||||
}
|
||||
}
|
||||
|
||||
submitListNodes(sbStoreId, items, null, submitLabel, submitComment);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitList(java.lang.String, java.util.List, java.util.Map, java.lang.String, java.lang.String)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitListNodes(java.lang.String, java.util.List, java.lang.String, java.lang.String)
|
||||
*/
|
||||
public void submitList(String sbStoreId, List<AVMNodeDescriptor> items, Map<String, Date> expirationDates, final String submitLabel, final String submitComment)
|
||||
public void submitListNodes(String sbStoreId, List<AVMNodeDescriptor> items, String submitLabel, String submitComment)
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
submitListNodes(sbStoreId, items, null, submitLabel, submitComment);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#submitListNodes(java.lang.String, java.util.List, java.util.Map, java.lang.String, java.lang.String)
|
||||
*/
|
||||
public void submitListNodes(String sbStoreId, List<AVMNodeDescriptor> items, Map<String, Date> expirationDates, final String submitLabel, final String submitComment)
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
@@ -555,14 +574,14 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertAll(java.lang.String, java.lang.String)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertAll(java.lang.String)
|
||||
*/
|
||||
public void revertAll(String sbStoreId)
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
String avmDirectoryPath = sbStoreId+":/";
|
||||
revertAllDir(avmDirectoryPath);
|
||||
String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
|
||||
revertAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath));
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -574,27 +593,26 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
|
||||
ParameterCheck.mandatoryString("webApp", webApp);
|
||||
|
||||
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
|
||||
revertAllDir(avmDirectoryPath);
|
||||
revertAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath));
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertAll(java.lang.String)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertAllDir(java.lang.String, java.lang.String)
|
||||
*/
|
||||
public void revertAllDir(String avmDirectoryPath)
|
||||
public void revertAllDir(String sbStoreId, String relativePath)
|
||||
{
|
||||
ParameterCheck.mandatoryString("avmDirectoryPath", avmDirectoryPath);
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
ParameterCheck.mandatoryString("relativePath", relativePath);
|
||||
|
||||
String sbStoreId = WCMUtil.getSandboxStoreId(avmDirectoryPath);
|
||||
|
||||
List<AVMNodeDescriptor> items = listChangedItemsDir(avmDirectoryPath, true);
|
||||
List<AVMNodeDescriptor> items = listChangedItemsDir(sbStoreId, relativePath, true);
|
||||
|
||||
revertList(sbStoreId, items);
|
||||
revertListNodes(sbStoreId, items);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertList(java.lang.String, java.lang.String, java.util.List)
|
||||
* @see org.alfresco.wcm.sandbox.SandboxService#revertListNodes(java.lang.String, java.util.List)
|
||||
*/
|
||||
public void revertList(String sbStoreId, List<AVMNodeDescriptor> items)
|
||||
public void revertListNodes(String sbStoreId, List<AVMNodeDescriptor> items)
|
||||
{
|
||||
ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
|
||||
|
||||
|
@@ -34,7 +34,6 @@ import java.util.Map;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.alfresco.config.JNDIConstants;
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
@@ -62,6 +61,8 @@ public class SandboxServiceImplTest extends TestCase
|
||||
{
|
||||
private static final ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
|
||||
|
||||
private char AVM_STORE_SEPARATOR = ':';
|
||||
|
||||
//
|
||||
// test data
|
||||
//
|
||||
@@ -506,8 +507,11 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxRootPath = sbStoreId + ":/";
|
||||
String authorSandboxWebppPath = sbStoreId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + wpInfo.getDefaultWebApp();
|
||||
String authorSandboxRootRelativePath = sbInfo.getSandboxRootPath();
|
||||
String authorSandboxWebAppRelativePath = sbInfo.getWebAppsPath() + "/" + wpInfo.getDefaultWebApp();
|
||||
|
||||
String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + authorSandboxRootRelativePath;
|
||||
String authorSandboxWebAppPath = sbStoreId + AVM_STORE_SEPARATOR + authorSandboxWebAppRelativePath;
|
||||
|
||||
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
|
||||
|
||||
@@ -515,12 +519,12 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(1, items.size());
|
||||
assertEquals("myFile1", items.get(0).getName());
|
||||
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1");
|
||||
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1", "myFile2");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath+"/myDir1", "myDir2");
|
||||
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1/myDir2", "myFile3");
|
||||
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1/myDir2", "myFile4");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath+"/myDir1", "myDir3");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebAppPath, "myDir1");
|
||||
avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1", "myFile2");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebAppPath+"/myDir1", "myDir2");
|
||||
avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1/myDir2", "myFile3");
|
||||
avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1/myDir2", "myFile4");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebAppPath+"/myDir1", "myDir3");
|
||||
|
||||
items = sbService.listChangedItems(sbStoreId, false);
|
||||
assertEquals(2, items.size()); // new dir with new dirs/files is returned as single change
|
||||
@@ -556,7 +560,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
items = sbService.listChangedItemsDir(authorSandboxWebppPath+"/myDir1", false);
|
||||
items = sbService.listChangedItemsDir(sbStoreId, authorSandboxWebAppRelativePath+"/myDir1", false);
|
||||
assertEquals(1, items.size());
|
||||
|
||||
for (AVMNodeDescriptor item : items)
|
||||
@@ -591,7 +595,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxRootPath = sbStoreId + ":/";
|
||||
String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo1.getSandboxRootPath();
|
||||
|
||||
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
|
||||
|
||||
@@ -608,7 +612,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
items = sbService.listChangedItems(sbStoreId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
authorSandboxRootPath = sbStoreId + ":/";
|
||||
authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo2.getSandboxRootPath();
|
||||
|
||||
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile2");
|
||||
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile3");
|
||||
@@ -638,11 +642,11 @@ public class SandboxServiceImplTest extends TestCase
|
||||
sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE);
|
||||
sbInfo2 = sbService.getAuthorSandbox(wpStoreId, USER_TWO);
|
||||
|
||||
items = sbService.listChangedItems(sbInfo1.getSandboxId()+":/", sbInfo2.getSandboxId()+":/", false);
|
||||
items = sbService.listChangedItems(sbInfo1.getSandboxId(), sbInfo1.getSandboxRootPath(), sbInfo2.getSandboxId(), sbInfo2.getSandboxRootPath(), false);
|
||||
assertEquals(1, items.size());
|
||||
assertEquals("myFile1", items.get(0).getName());
|
||||
|
||||
items = sbService.listChangedItems(sbInfo2.getSandboxId()+":/", sbInfo1.getSandboxId()+":/", false);
|
||||
items = sbService.listChangedItems(sbInfo2.getSandboxId(), sbInfo1.getSandboxRootPath(), sbInfo1.getSandboxId(), sbInfo2.getSandboxRootPath(), false);
|
||||
assertEquals(2, items.size());
|
||||
|
||||
for (AVMNodeDescriptor item : items)
|
||||
@@ -681,7 +685,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxRootPath = sbStoreId + ":/";
|
||||
String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo1.getSandboxRootPath();
|
||||
|
||||
avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
|
||||
|
||||
@@ -698,7 +702,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
items = sbService.listChangedItems(sbStoreId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
authorSandboxRootPath = sbStoreId + ":/";
|
||||
authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo2.getSandboxRootPath();
|
||||
|
||||
avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile1"); // allowed, since using base (non-locking-aware) AVM service
|
||||
avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile2");
|
||||
@@ -733,11 +737,11 @@ public class SandboxServiceImplTest extends TestCase
|
||||
sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE);
|
||||
sbInfo2 = sbService.getAuthorSandbox(wpStoreId, USER_TWO);
|
||||
|
||||
items = sbService.listChangedItems(sbInfo1.getSandboxId()+":/", sbInfo2.getSandboxId()+":/", false);
|
||||
items = sbService.listChangedItems(sbInfo1.getSandboxId(), sbInfo1.getSandboxRootPath(), sbInfo2.getSandboxId(), sbInfo2.getSandboxRootPath(), false);
|
||||
assertEquals(1, items.size());
|
||||
assertEquals("myFile1", items.get(0).getName());
|
||||
|
||||
items = sbService.listChangedItems(sbInfo2.getSandboxId()+":/", sbInfo1.getSandboxId()+":/", false);
|
||||
items = sbService.listChangedItems(sbInfo2.getSandboxId(), sbInfo1.getSandboxRootPath(), sbInfo1.getSandboxId(), sbInfo2.getSandboxRootPath(), false);
|
||||
assertEquals(3, items.size());
|
||||
|
||||
for (AVMNodeDescriptor item : items)
|
||||
@@ -783,7 +787,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1");
|
||||
@@ -797,7 +801,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size()); // new dir with new dirs/files is returned as single change
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
// submit (new items) !
|
||||
@@ -850,7 +854,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
final String MYFILE1 = "This is myFile1";
|
||||
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
|
||||
@@ -870,7 +874,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
// submit (new items) !
|
||||
@@ -893,7 +897,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
final String MYFILE1_MODIFIED = "This is myFile1 ... modified by "+USER_TWO;
|
||||
out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1");
|
||||
@@ -911,7 +915,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
stagingSandboxWebppPath = stagingSandboxId + ":" + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
InputStream in = avmLockingAwareService.getFileInputStream(-1, stagingSandboxWebppPath+"/myFile1");
|
||||
buff = new byte[1024];
|
||||
@@ -968,7 +972,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
final String MYFILE1 = "This is myFile1";
|
||||
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
|
||||
@@ -989,7 +993,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
// submit (new items) !
|
||||
@@ -1012,7 +1016,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
avmLockingAwareService.removeNode(authorSandboxWebppPath+"/myFile1");
|
||||
avmLockingAwareService.removeNode(authorSandboxWebppPath+"/myDir1/myDir2");
|
||||
@@ -1026,7 +1030,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
assertNotNull(avmLockingAwareService.lookup(-1, stagingSandboxWebppPath+"/myFile1"));
|
||||
assertNotNull(avmLockingAwareService.lookup(-1, stagingSandboxWebppPath+"/myDir1"));
|
||||
@@ -1070,7 +1074,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
final String MYFILE1 = "This is myFile1";
|
||||
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
|
||||
@@ -1090,7 +1094,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
// submit (new items) !
|
||||
@@ -1113,7 +1117,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
final String MYFILE1_MODIFIED = "This is myFile1 ... modified by "+USER_TWO;
|
||||
out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1");
|
||||
@@ -1131,7 +1135,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(2, items.size());
|
||||
|
||||
// check staging before
|
||||
stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
InputStream in = avmLockingAwareService.getFileInputStream(-1, stagingSandboxWebppPath+"/myFile1");
|
||||
buff = new byte[1024];
|
||||
@@ -1188,7 +1192,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1");
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir2");
|
||||
@@ -1198,7 +1202,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(3, items.size());
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
List<VersionDescriptor> sbVersions = sbService.listSnapshots(stagingSandboxId, fromDate, new Date(), false);
|
||||
@@ -1258,7 +1262,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
|
||||
assertEquals(0, items.size());
|
||||
|
||||
String authorSandboxWebppPath = authorSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String authorSandboxWebppPath = authorSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
|
||||
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1");
|
||||
|
||||
@@ -1266,7 +1270,7 @@ public class SandboxServiceImplTest extends TestCase
|
||||
assertEquals(1, items.size());
|
||||
|
||||
// check staging before
|
||||
String stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp;
|
||||
String stagingSandboxWebppPath = stagingSandboxId + AVM_STORE_SEPARATOR + sbInfo.getWebAppsPath() + "/" + webApp;
|
||||
assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
|
||||
|
||||
List<VersionDescriptor> sbVersions = sbService.listSnapshots(stagingSandboxId, fromDate, new Date(), false);
|
||||
|
@@ -195,7 +195,7 @@ public class Sandbox implements Serializable
|
||||
*/
|
||||
public List<Asset> getModifiedAssetsWebApp(String webApp)
|
||||
{
|
||||
List<AVMNodeDescriptor> items = getSandboxService().listChangedItems(getSandboxRef(), webApp, true);
|
||||
List<AVMNodeDescriptor> items = getSandboxService().listChangedItemsWebApp(getSandboxRef(), webApp, true);
|
||||
ArrayList<Asset> ret = new ArrayList<Asset>(items.size());
|
||||
|
||||
for(AVMNodeDescriptor item : items)
|
||||
@@ -203,7 +203,7 @@ public class Sandbox implements Serializable
|
||||
Asset a = new Asset(this, item);
|
||||
ret.add(a);
|
||||
}
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user