Merged DEV to HEAD

- ALF-8806 RINF 41: Lucene Removal: Fix CopyService
     - ALF-9028: RINF 41: Fix Aspect cm:copiedFrom
   - ALF-9029 RINF 49: Lucene Removal: CheckOutCheckInService API
     - ALF-9032: RINF 49: fixes to cm:workingcopy aspect

   28996: Dev branch for De-Lucene work pending patches
   29004: Evaluator runs in read-only txn
   29006: Additional PermissionCheckedCollection.create method
          - Use an existing collection's permission check data (cut-off, etc) to wrap a new collection
   29007:
          CopyService and CheckOutCheckInService refactors to remove Lucene
          
          CopyService:
          
          Removed cm:source property from cm:copiedfrom aspect and replaced with a cm:original association.
          Added CQ-based APIs to query for copies
          Added APIs to support bi-directional walking of copy association
          Fixed sundry uses of cm:copiedfrom esp. all uses related to cm:workingcopy
          
          CheckOutCheckInService:
          
          Check-out now creates a source aspect cm:checkedOut with 1:1 relationship to cm:workingcopy via cm:workingcopylink
          Removed explicit use of cm:workingcopy aspect and replaced it with calls to COCI API
          
   29083: Audit tests fail when indexing is turned off.
          Also removed a getReader() call during rule evaluation, leading to a 'sub-action' read being recorded.
   29113: NodeDAO.getNodesWithAspects supports paging
   29135: Removed unused patch queries
   29139: Basic patch (still terminates with error) to upgrade cm:copiedfrom and cm:workingcopy
   29157: Tested patch for cm:copiedfrom and cm:workingcopy aspects


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29159 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2011-07-19 03:22:11 +00:00
parent c6409e2015
commit c022eff9a7
6 changed files with 2424 additions and 2404 deletions

View File

@@ -18,8 +18,13 @@
*/ */
package org.alfresco.web.action.evaluator; package org.alfresco.web.action.evaluator;
import javax.faces.context.FacesContext;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.transaction.TransactionService;
import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.action.ActionEvaluator;
import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.Repository;
/** /**
* Base class for all action evaluators. * Base class for all action evaluators.
@@ -35,7 +40,7 @@ public class BaseActionEvaluator implements ActionEvaluator
return true; return true;
} }
public boolean evaluate(Object obj) public boolean evaluate(final Object obj)
{ {
// if a Node object is passed to this method call // if a Node object is passed to this method call
// the explicit evaluate(Node) method otherwise // the explicit evaluate(Node) method otherwise
@@ -43,7 +48,17 @@ public class BaseActionEvaluator implements ActionEvaluator
if (obj instanceof Node) if (obj instanceof Node)
{ {
return evaluate((Node)obj); RetryingTransactionCallback<Boolean> txnCallback = new RetryingTransactionCallback<Boolean>()
{
@Override
public Boolean execute() throws Throwable
{
return evaluate((Node)obj);
}
};
TransactionService txnService =
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getTransactionService();
return txnService.getRetryingTransactionHelper().doInTransaction(txnCallback, true, true);
} }
else else
{ {

View File

@@ -22,8 +22,8 @@ import javax.faces.context.FacesContext;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.model.ForumModel; import org.alfresco.model.ForumModel;
import org.alfresco.service.cmr.coci.CheckOutCheckInService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.Repository; import org.alfresco.web.bean.repository.Repository;
@@ -49,11 +49,10 @@ public class ForumsCheckinDocEvaluator extends BaseActionEvaluator
{ {
if (node.hasAspect(ForumModel.ASPECT_DISCUSSABLE)) if (node.hasAspect(ForumModel.ASPECT_DISCUSSABLE))
{ {
NodeService nodeService = CheckOutCheckInService checkOutCheckInService =
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getNodeService(); Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getCheckOutCheckInService();
// get the original locked node (via the copiedfrom aspect) // get the original locked node (via the copiedfrom aspect)
NodeRef lockedNodeRef = (NodeRef)nodeService.getProperty(node.getNodeRef(), ContentModel.PROP_COPY_REFERENCE); NodeRef lockedNodeRef = checkOutCheckInService.getCheckedOut(node.getNodeRef());
if (lockedNodeRef != null) if (lockedNodeRef != null)
{ {
Node lockedNode = new Node(lockedNodeRef); Node lockedNode = new Node(lockedNodeRef);

File diff suppressed because it is too large Load Diff

View File

@@ -18,8 +18,6 @@
*/ */
package org.alfresco.web.bean.coci; package org.alfresco.web.bean.coci;
import java.io.Serializable;
import java.util.Map;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import javax.faces.application.NavigationHandler; import javax.faces.application.NavigationHandler;
@@ -29,7 +27,6 @@ import javax.faces.event.ActionEvent;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.Version;
import org.alfresco.service.namespace.QName;
import org.alfresco.web.app.AlfrescoNavigationHandler; import org.alfresco.web.app.AlfrescoNavigationHandler;
import org.alfresco.web.app.Application; import org.alfresco.web.app.Application;
import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Node;
@@ -198,13 +195,7 @@ public class DoneEditingDialog extends CheckinCheckoutDialog
*/ */
private NodeRef getSourceNodeRef(NodeRef workingCopyNodeRef) private NodeRef getSourceNodeRef(NodeRef workingCopyNodeRef)
{ {
if (getNodeService().hasAspect(workingCopyNodeRef, ContentModel.ASPECT_COPIEDFROM) == true) return getCheckOutCheckInService().getCheckedOut(workingCopyNodeRef);
{
Map<QName, Serializable> workingCopyProperties = getNodeService().getProperties(workingCopyNodeRef);
return (NodeRef) workingCopyProperties.get(ContentModel.PROP_COPY_REFERENCE);
}
return null;
} }
} }

View File

@@ -29,6 +29,7 @@ import javax.faces.context.FacesContext;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.coci.CheckOutCheckInService;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -51,6 +52,7 @@ import org.alfresco.web.ui.common.Utils;
* *
* @author gavinc * @author gavinc
*/ */
@SuppressWarnings("serial")
public abstract class BaseDialogBean implements IDialogBean, Serializable public abstract class BaseDialogBean implements IDialogBean, Serializable
{ {
protected Map<String, String> parameters; protected Map<String, String> parameters;
@@ -62,6 +64,7 @@ public abstract class BaseDialogBean implements IDialogBean, Serializable
transient private TransactionService transactionService; transient private TransactionService transactionService;
transient private NodeService nodeService; transient private NodeService nodeService;
transient private CheckOutCheckInService checkOutCheckInService;
transient private FileFolderService fileFolderService; transient private FileFolderService fileFolderService;
transient private SearchService searchService; transient private SearchService searchService;
transient private DictionaryService dictionaryService; transient private DictionaryService dictionaryService;
@@ -272,6 +275,15 @@ public abstract class BaseDialogBean implements IDialogBean, Serializable
return this.nodeService; return this.nodeService;
} }
protected CheckOutCheckInService getCheckOutCheckInService()
{
if (this.checkOutCheckInService == null)
{
this.checkOutCheckInService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getCheckOutCheckInService();
}
return this.checkOutCheckInService;
}
/** /**
* Get the rule service * Get the rule service
* @return RuleService rule service * @return RuleService rule service

View File

@@ -337,6 +337,10 @@
<property-name>searchService</property-name> <property-name>searchService</property-name>
<value>#{SearchService}</value> <value>#{SearchService}</value>
</managed-property> </managed-property>
<managed-property>
<property-name>checkOutCheckInService</property-name>
<value>#{CheckOutCheckInService}</value>
</managed-property>
<managed-property> <managed-property>
<property-name>lockService</property-name> <property-name>lockService</property-name>
<value>#{LockService}</value> <value>#{LockService}</value>
@@ -4320,19 +4324,19 @@
<managed-bean> <managed-bean>
<description> <description>
The bean that backs up the Revert Snapshot Dialog The bean that backs up the Revert Snapshot Dialog
</description> </description>
<managed-bean-name>RevertSnapshotDialog</managed-bean-name> <managed-bean-name>RevertSnapshotDialog</managed-bean-name>
<managed-bean-class>org.alfresco.web.bean.wcm.RevertSnapshotDialog</managed-bean-class> <managed-bean-class>org.alfresco.web.bean.wcm.RevertSnapshotDialog</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope> <managed-bean-scope>session</managed-bean-scope>
<managed-property> <managed-property>
<property-name>avmBrowseBean</property-name> <property-name>avmBrowseBean</property-name>
<value>#{AVMBrowseBean}</value> <value>#{AVMBrowseBean}</value>
</managed-property> </managed-property>
</managed-bean> </managed-bean>
<managed-bean> <managed-bean>
<description> <description>
The bean that backs up the Deploy Website Dialog The bean that backs up the Deploy Website Dialog
</description> </description>
<managed-bean-name>DeployWebsiteDialog</managed-bean-name> <managed-bean-name>DeployWebsiteDialog</managed-bean-name>