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(); 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. * A list of ids of the stores within this sandbox.
* The "main" store should come first in this list; * 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 java.util.Date;
import org.alfresco.config.JNDIConstants;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
/** /**
@@ -83,6 +84,16 @@ public class SandboxInfoImpl implements SandboxInfo
return this.creator; 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. * A list of names of the stores within this sandbox.
* The "main" store should come first in this list; * The "main" store should come first in this list;

View File

@@ -175,28 +175,33 @@ public interface SandboxService
* <p> * <p>
* Note: This will list new/modified/deleted items from the directory and below. The destination path will be dervied. * 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 * @param includeDeleted if true, include deleted items as well as new/modified items
* @return List<AVMNodeDescriptor> list of changed 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 * List changed (new/modified/deleted) items between any two sandbox paths
* *
* @param avmSrcPath source sandbox path (an AVM path) * @param srcSandboxStoreId source sandbox store id
* @param avmDstPath destination sandbox path (an AVM path) * @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 * @param includeDeleted if true, include deleted items as well as new/modified items
* @return List<AVMNodeDescriptor> list of changed 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) * Submit all changed items for given sandbox (eg. from user sandbox to staging sandbox)
* <p> * <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> * <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); public void submitAll(String sbStoreId, String submitLabel, String submitComment);
@@ -205,8 +210,10 @@ public interface SandboxService
* <p> * <p>
* Note: This will submit new/modified/deleted items for the given web app * Note: This will submit new/modified/deleted items for the given web app
* *
* @param sbStoreId sandbox store id * @param sbStoreId sandbox store id
* @param webApp web app to filter by * @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); public void submitAllWebApp(String sbStoreId, String webApp, String submitLabel, String submitComment);
@@ -215,31 +222,48 @@ public interface SandboxService
* <p> * <p>
* Note: This will submit new/modified/deleted items from the directory and below * 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) * Submit list of changed items for given sandbox (eg. from user sandbox to staging sandbox)
* *
* @param sbStoreId sandbox store id * @param sbStoreId sandbox store id
* @param items list of AVM node descriptors * @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) * Submit list of changed items for given sandbox (eg. from user sandbox to staging sandbox)
* *
* @param sbStoreId sandbox store id * @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 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) * Revert all changed items for given sandbox (eg. in user sandbox)
* <p> * <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 * @param sbStoreId sandbox store id
*/ */
@@ -260,16 +284,17 @@ public interface SandboxService
* <p> * <p>
* Note: This will revert new/modified/deleted items from the directory and below * 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) * Revert list of changed items for given sandbox (eg. in user sandbox)
* *
* @param items list of AVM node descriptors * @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) * 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); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
// no filtering String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
String avmDirectoryPath = sbStoreId+":/"; return listChangedItemsDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), includeDeleted);
return listChangedItemsDir(avmDirectoryPath, includeDeleted);
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -369,49 +368,49 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
// filter by current webapp // filter by current webapp
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp); String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
return listChangedItemsDir(avmDirectoryPath, includeDeleted); return listChangedItemsDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), includeDeleted);
} }
/* (non-Javadoc) /* (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); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
ParameterCheck.mandatoryString("relativePath", relativePath);
String sandboxId = WCMUtil.getSandboxStoreId(avmDirectoryPath);
// TODO - allow list for any sandbox // 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 // 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 stagingSandboxId = WCMUtil.buildStagingStoreName(wpStoreId);
String relativePath = WCMUtil.getStoreRelativePath(avmDirectoryPath); return listChangedItems(sbStoreId, relativePath, stagingSandboxId, relativePath, includeDeleted);
String srcPath = sandboxId + AVM_STORE_SEPARATOR + relativePath;
String dstPath = stagingSandboxId + AVM_STORE_SEPARATOR + relativePath;
return listChangedItems(srcPath, dstPath, includeDeleted);
} }
/* (non-Javadoc) /* (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); return listChangedItems(-1, avmSrcPath, -1, avmDstPath, includeDeleted);
} }
private List<AVMNodeDescriptor> listChangedItems(int srcVersion, String srcPath, int dstVersion, String dstPath, boolean 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(); long start = System.currentTimeMillis();
List<AVMDifference> diffs = avmSyncService.compare(srcVersion, srcPath, dstVersion, dstPath, nameMatcher); 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); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
String avmDirectoryPath = sbStoreId+":/"; String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
submitAllDir(avmDirectoryPath, submitLabel, submitComment); submitAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), submitLabel, submitComment);
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -457,35 +456,55 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
ParameterCheck.mandatoryString("webApp", webApp); ParameterCheck.mandatoryString("webApp", webApp);
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp); String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
submitAllDir(avmDirectoryPath, submitLabel, submitComment); submitAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath), submitLabel, submitComment);
} }
/* (non-Javadoc) /* (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); submitListNodes(sbStoreId, items, submitLabel, submitComment);
submitList(sbStoreId, items, submitLabel, submitComment);
} }
/* (non-Javadoc) public void submitList(String sbStoreId, List<String> relativePaths, String submitLabel, String submitComment)
* @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)
{ {
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) /* (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); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
@@ -555,14 +574,14 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
} }
/* (non-Javadoc) /* (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) public void revertAll(String sbStoreId)
{ {
ParameterCheck.mandatoryString("sbStoreId", sbStoreId); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);
String avmDirectoryPath = sbStoreId+":/"; String avmDirectoryPath = WCMUtil.buildStoreRootPath(sbStoreId); // currently <sbStoreId>:/www
revertAllDir(avmDirectoryPath); revertAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath));
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -574,27 +593,26 @@ public class SandboxServiceImpl extends WCMUtil implements SandboxService
ParameterCheck.mandatoryString("webApp", webApp); ParameterCheck.mandatoryString("webApp", webApp);
String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp); String avmDirectoryPath = WCMUtil.buildStoreWebappPath(sbStoreId, webApp);
revertAllDir(avmDirectoryPath); revertAllDir(sbStoreId, WCMUtil.getStoreRelativePath(avmDirectoryPath));
} }
/* (non-Javadoc) /* (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(sbStoreId, relativePath, true);
List<AVMNodeDescriptor> items = listChangedItemsDir(avmDirectoryPath, true); revertListNodes(sbStoreId, items);
revertList(sbStoreId, items);
} }
/* (non-Javadoc) /* (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); ParameterCheck.mandatoryString("sbStoreId", sbStoreId);

View File

@@ -34,7 +34,6 @@ import java.util.Map;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.alfresco.config.JNDIConstants;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
@@ -62,6 +61,8 @@ public class SandboxServiceImplTest extends TestCase
{ {
private static final ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(); private static final ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
private char AVM_STORE_SEPARATOR = ':';
// //
// test data // test data
// //
@@ -506,8 +507,11 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
assertEquals(0, items.size()); assertEquals(0, items.size());
String authorSandboxRootPath = sbStoreId + ":/"; String authorSandboxRootRelativePath = sbInfo.getSandboxRootPath();
String authorSandboxWebppPath = sbStoreId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + wpInfo.getDefaultWebApp(); String authorSandboxWebAppRelativePath = sbInfo.getWebAppsPath() + "/" + wpInfo.getDefaultWebApp();
String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + authorSandboxRootRelativePath;
String authorSandboxWebAppPath = sbStoreId + AVM_STORE_SEPARATOR + authorSandboxWebAppRelativePath;
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1"); avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
@@ -515,12 +519,12 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(1, items.size()); assertEquals(1, items.size());
assertEquals("myFile1", items.get(0).getName()); assertEquals("myFile1", items.get(0).getName());
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1"); avmLockingAwareService.createDirectory(authorSandboxWebAppPath, "myDir1");
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1", "myFile2"); avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1", "myFile2");
avmLockingAwareService.createDirectory(authorSandboxWebppPath+"/myDir1", "myDir2"); avmLockingAwareService.createDirectory(authorSandboxWebAppPath+"/myDir1", "myDir2");
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1/myDir2", "myFile3"); avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1/myDir2", "myFile3");
avmLockingAwareService.createFile(authorSandboxWebppPath+"/myDir1/myDir2", "myFile4"); avmLockingAwareService.createFile(authorSandboxWebAppPath+"/myDir1/myDir2", "myFile4");
avmLockingAwareService.createDirectory(authorSandboxWebppPath+"/myDir1", "myDir3"); avmLockingAwareService.createDirectory(authorSandboxWebAppPath+"/myDir1", "myDir3");
items = sbService.listChangedItems(sbStoreId, false); items = sbService.listChangedItems(sbStoreId, false);
assertEquals(2, items.size()); // new dir with new dirs/files is returned as single change 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()); assertEquals(1, items.size());
for (AVMNodeDescriptor item : items) for (AVMNodeDescriptor item : items)
@@ -591,7 +595,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
assertEquals(0, items.size()); assertEquals(0, items.size());
String authorSandboxRootPath = sbStoreId + ":/"; String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo1.getSandboxRootPath();
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1"); avmLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
@@ -608,7 +612,7 @@ public class SandboxServiceImplTest extends TestCase
items = sbService.listChangedItems(sbStoreId, true); items = sbService.listChangedItems(sbStoreId, true);
assertEquals(0, items.size()); assertEquals(0, items.size());
authorSandboxRootPath = sbStoreId + ":/"; authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo2.getSandboxRootPath();
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile2"); avmLockingAwareService.createFile(authorSandboxRootPath, "myFile2");
avmLockingAwareService.createFile(authorSandboxRootPath, "myFile3"); avmLockingAwareService.createFile(authorSandboxRootPath, "myFile3");
@@ -638,11 +642,11 @@ public class SandboxServiceImplTest extends TestCase
sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE); sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE);
sbInfo2 = sbService.getAuthorSandbox(wpStoreId, USER_TWO); 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(1, items.size());
assertEquals("myFile1", items.get(0).getName()); 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()); assertEquals(2, items.size());
for (AVMNodeDescriptor item : items) for (AVMNodeDescriptor item : items)
@@ -681,7 +685,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(sbStoreId, true);
assertEquals(0, items.size()); assertEquals(0, items.size());
String authorSandboxRootPath = sbStoreId + ":/"; String authorSandboxRootPath = sbStoreId + AVM_STORE_SEPARATOR + sbInfo1.getSandboxRootPath();
avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile1"); avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile1");
@@ -698,7 +702,7 @@ public class SandboxServiceImplTest extends TestCase
items = sbService.listChangedItems(sbStoreId, true); items = sbService.listChangedItems(sbStoreId, true);
assertEquals(0, items.size()); 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, "myFile1"); // allowed, since using base (non-locking-aware) AVM service
avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile2"); avmNonLockingAwareService.createFile(authorSandboxRootPath, "myFile2");
@@ -733,11 +737,11 @@ public class SandboxServiceImplTest extends TestCase
sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE); sbInfo1 = sbService.getAuthorSandbox(wpStoreId, USER_ONE);
sbInfo2 = sbService.getAuthorSandbox(wpStoreId, USER_TWO); 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(1, items.size());
assertEquals("myFile1", items.get(0).getName()); 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()); assertEquals(3, items.size());
for (AVMNodeDescriptor item : items) for (AVMNodeDescriptor item : items)
@@ -783,7 +787,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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.createFile(authorSandboxWebppPath, "myFile1");
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir1"); 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 assertEquals(2, items.size()); // new dir with new dirs/files is returned as single change
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
// submit (new items) ! // submit (new items) !
@@ -850,7 +854,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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"; final String MYFILE1 = "This is myFile1";
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1"); OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
@@ -870,7 +874,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
// submit (new items) ! // submit (new items) !
@@ -893,7 +897,7 @@ public class SandboxServiceImplTest extends TestCase
items = sbService.listChangedItems(authorSandboxId, true); items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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; final String MYFILE1_MODIFIED = "This is myFile1 ... modified by "+USER_TWO;
out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1"); out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1");
@@ -911,7 +915,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // check staging before
stagingSandboxWebppPath = stagingSandboxId + ":" + JNDIConstants.DIR_DEFAULT_WWW_APPBASE + "/" + webApp; stagingSandboxWebppPath = stagingSandboxId + ":" + sbInfo.getWebAppsPath() + "/" + webApp;
InputStream in = avmLockingAwareService.getFileInputStream(-1, stagingSandboxWebppPath+"/myFile1"); InputStream in = avmLockingAwareService.getFileInputStream(-1, stagingSandboxWebppPath+"/myFile1");
buff = new byte[1024]; buff = new byte[1024];
@@ -968,7 +972,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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"; final String MYFILE1 = "This is myFile1";
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1"); OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
@@ -989,7 +993,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
// submit (new items) ! // submit (new items) !
@@ -1012,7 +1016,7 @@ public class SandboxServiceImplTest extends TestCase
items = sbService.listChangedItems(authorSandboxId, true); items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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+"/myFile1");
avmLockingAwareService.removeNode(authorSandboxWebppPath+"/myDir1/myDir2"); avmLockingAwareService.removeNode(authorSandboxWebppPath+"/myDir1/myDir2");
@@ -1026,7 +1030,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // 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+"/myFile1"));
assertNotNull(avmLockingAwareService.lookup(-1, stagingSandboxWebppPath+"/myDir1")); assertNotNull(avmLockingAwareService.lookup(-1, stagingSandboxWebppPath+"/myDir1"));
@@ -1070,7 +1074,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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"; final String MYFILE1 = "This is myFile1";
OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1"); OutputStream out = avmLockingAwareService.createFile(authorSandboxWebppPath, "myFile1");
@@ -1090,7 +1094,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
// submit (new items) ! // submit (new items) !
@@ -1113,7 +1117,7 @@ public class SandboxServiceImplTest extends TestCase
items = sbService.listChangedItems(authorSandboxId, true); items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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; final String MYFILE1_MODIFIED = "This is myFile1 ... modified by "+USER_TWO;
out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1"); out = avmLockingAwareService.getFileOutputStream(authorSandboxWebppPath+"/myFile1");
@@ -1131,7 +1135,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(2, items.size()); assertEquals(2, items.size());
// check staging before // 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"); InputStream in = avmLockingAwareService.getFileInputStream(-1, stagingSandboxWebppPath+"/myFile1");
buff = new byte[1024]; buff = new byte[1024];
@@ -1188,7 +1192,7 @@ public class SandboxServiceImplTest extends TestCase
List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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, "myDir1");
avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir2"); avmLockingAwareService.createDirectory(authorSandboxWebppPath, "myDir2");
@@ -1198,7 +1202,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(3, items.size()); assertEquals(3, items.size());
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
List<VersionDescriptor> sbVersions = sbService.listSnapshots(stagingSandboxId, fromDate, new Date(), false); 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); List<AVMNodeDescriptor> items = sbService.listChangedItems(authorSandboxId, true);
assertEquals(0, items.size()); 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, "myDir1");
@@ -1266,7 +1270,7 @@ public class SandboxServiceImplTest extends TestCase
assertEquals(1, items.size()); assertEquals(1, items.size());
// check staging before // 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()); assertEquals(0, avmLockingAwareService.getDirectoryListing(-1, stagingSandboxWebppPath, false).size());
List<VersionDescriptor> sbVersions = sbService.listSnapshots(stagingSandboxId, fromDate, new Date(), false); 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) 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()); ArrayList<Asset> ret = new ArrayList<Asset>(items.size());
for(AVMNodeDescriptor item : items) for(AVMNodeDescriptor item : items)