Point checkin.

Support for notification to virt server on dialog-driven revert operations.
 No support yet for workflow-diriven revert notification (coming soon).
 

 Details
 -------
   root/projects/catalina-virtual/source/java/org/alfresco/catalina/host/AVMHostConfig.java
      Minor logging cleanup

   root/projects/core/source/java/org/alfresco/util/VirtServerUtils.java
      Trigger notification on submits of entire dirs: WEB-INF, WEB-INF/classes, WEB-INF/lib
      (not just files within them)

   root/projects/web-client/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java
      notify virt server on revert

   root/projects/web-client/source/java/org/alfresco/web/bean/wcm/RevertAllDialog.java
      notify virt server on revert all

   root/projects/web-client/source/java/org/alfresco/web/bean/wcm/RevertSelectedDialog.java
      notify virt server on revert selected

   root/projects/web-client/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java
      minor cleanup

   root/projects/web-client/source/web/WEB-INF/faces-config-beans.xml
      Injecting AVMSyncService into AVMBrowseBean to allow virt server
      notification to occur only when a comparison between reverted
      versions shows it's absolutely necessary



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5030 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jon Cox
2007-02-03 04:33:03 +00:00
parent e7b9264268
commit 1654335d80
5 changed files with 126 additions and 16 deletions

View File

@@ -26,8 +26,8 @@ import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.avm.actions.AVMUndoSandboxListAction;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -36,6 +36,7 @@ import org.alfresco.service.cmr.avmsync.AVMDifference;
import org.alfresco.service.cmr.avmsync.AVMSyncService;
import org.alfresco.util.NameMatcher;
import org.alfresco.util.Pair;
import org.alfresco.util.VirtServerUtils;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.dialog.BaseDialogBean;
@@ -52,6 +53,13 @@ public class RevertAllDialog extends BaseDialogBean
protected AVMSyncService avmSyncService;
protected ActionService actionService;
protected NameMatcher nameMatcher;
// The virtualization server might need to be notified
// because one or more of the files reverted could alter
// the behavior the virtual webapp in the target of the submit.
private String virtUpdatePath;
/**
* @param avmBrowseBean The AVM BrowseBean to set
@@ -99,11 +107,22 @@ public class RevertAllDialog extends BaseDialogBean
// calcluate the list of differences between the user store and the staging area
List<AVMDifference> diffs = this.avmSyncService.compare(
-1, userStore, -1, stagingStore, this.nameMatcher);
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
for (AVMDifference diff : diffs)
{
versionPaths.add(new Pair<Integer, String>(-1, diff.getSourcePath()));
String revertPath = diff.getSourcePath();
versionPaths.add(new Pair<Integer, String>(-1, revertPath) );
if ( (this.virtUpdatePath == null) &&
VirtServerUtils.requiresUpdateNotification(revertPath)
)
{
this.virtUpdatePath = revertPath;
}
}
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
@@ -116,6 +135,22 @@ public class RevertAllDialog extends BaseDialogBean
return outcome;
}
/**
* Handle notification to the virtualization server
* (this needs to occur after the sandbox is updated).
*/
@Override
protected String doPostCommitProcessing(FacesContext context, String outcome)
{
// Force the update because we've already determined
// that update_path requires virt server notification.
if (this.virtUpdatePath != null)
{
AVMConstants.updateVServerWebapp(this.virtUpdatePath, true);
}
return outcome;
}
/**
* @return the confirmation to display to the user