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:
Jan Vonka
2008-11-24 16:05:46 +00:00
parent cad991db0c
commit ee71e258eb
6 changed files with 180 additions and 112 deletions

View File

@@ -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;

View File

@@ -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.

View File

@@ -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)

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}
/**