mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -18,8 +18,13 @@
|
||||
*/
|
||||
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.bean.repository.Node;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
|
||||
/**
|
||||
* Base class for all action evaluators.
|
||||
@@ -35,16 +40,26 @@ public class BaseActionEvaluator implements ActionEvaluator
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean evaluate(Object obj)
|
||||
public boolean evaluate(final Object obj)
|
||||
{
|
||||
// if a Node object is passed to this method call
|
||||
// the explicit evaluate(Node) method otherwise
|
||||
// allow the action by default.
|
||||
|
||||
if (obj instanceof Node)
|
||||
{
|
||||
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
|
||||
{
|
||||
return true;
|
||||
|
@@ -22,8 +22,8 @@ import javax.faces.context.FacesContext;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
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.NodeService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
@@ -49,11 +49,10 @@ public class ForumsCheckinDocEvaluator extends BaseActionEvaluator
|
||||
{
|
||||
if (node.hasAspect(ForumModel.ASPECT_DISCUSSABLE))
|
||||
{
|
||||
NodeService nodeService =
|
||||
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getNodeService();
|
||||
|
||||
CheckOutCheckInService checkOutCheckInService =
|
||||
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getCheckOutCheckInService();
|
||||
// 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)
|
||||
{
|
||||
Node lockedNode = new Node(lockedNodeRef);
|
||||
|
@@ -36,14 +36,12 @@ import javax.faces.event.AbortProcessingException;
|
||||
import javax.faces.event.ActionEvent;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.springframework.extensions.config.Config;
|
||||
import org.springframework.extensions.config.ConfigElement;
|
||||
import org.springframework.extensions.config.ConfigService;
|
||||
import org.alfresco.model.ApplicationModel;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.SearcherException;
|
||||
import org.alfresco.repo.site.SiteModel;
|
||||
import org.alfresco.repo.web.scripts.FileTypeImageUtils;
|
||||
import org.alfresco.service.cmr.coci.CheckOutCheckInService;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||
import org.alfresco.service.cmr.lock.LockService;
|
||||
@@ -87,8 +85,8 @@ import org.alfresco.web.ui.common.component.IBreadcrumbHandler;
|
||||
import org.alfresco.web.ui.common.component.UIActionLink;
|
||||
import org.alfresco.web.ui.common.component.UIBreadcrumb;
|
||||
import org.alfresco.web.ui.common.component.UIModeList;
|
||||
import org.alfresco.web.ui.common.component.UIStatusMessage;
|
||||
import org.alfresco.web.ui.common.component.UIPanel.ExpandedEvent;
|
||||
import org.alfresco.web.ui.common.component.UIStatusMessage;
|
||||
import org.alfresco.web.ui.common.component.data.UIRichList;
|
||||
import org.alfresco.web.ui.repo.component.IRepoBreadcrumbHandler;
|
||||
import org.alfresco.web.ui.repo.component.UINodeDescendants;
|
||||
@@ -96,6 +94,9 @@ import org.alfresco.web.ui.repo.component.UINodePath;
|
||||
import org.alfresco.web.ui.repo.component.UISimpleSearch;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.extensions.config.Config;
|
||||
import org.springframework.extensions.config.ConfigElement;
|
||||
import org.springframework.extensions.config.ConfigService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -146,6 +147,23 @@ public class BrowseBean implements IContextListener, Serializable
|
||||
return nodeService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param checkOutCheckInService The service for check-in and check-out.
|
||||
*/
|
||||
public void setCheckOutCheckInService(CheckOutCheckInService checkOutCheckInService)
|
||||
{
|
||||
this.checkOutCheckInService = checkOutCheckInService;
|
||||
}
|
||||
|
||||
protected CheckOutCheckInService getCheckOutCheckInService()
|
||||
{
|
||||
if (checkOutCheckInService == null)
|
||||
{
|
||||
checkOutCheckInService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getCheckOutCheckInService();
|
||||
}
|
||||
return checkOutCheckInService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param searchService The Searcher to set.
|
||||
*/
|
||||
@@ -2152,31 +2170,9 @@ public class BrowseBean implements IContextListener, Serializable
|
||||
{
|
||||
NodeRef nodeRef = new NodeRef(ref);
|
||||
|
||||
boolean hasWorkingCopy = false;
|
||||
ResultSet resultSet = null;
|
||||
NodeRef workingCopyNodeRef = getCheckOutCheckInService().getWorkingCopy(nodeRef);
|
||||
|
||||
try
|
||||
{
|
||||
// query for a working copy
|
||||
resultSet = getSearchService().query(nodeRef.getStoreRef(), SearchService.LANGUAGE_LUCENE,
|
||||
"ASPECT:\"" + ContentModel.ASPECT_WORKING_COPY.toString() +
|
||||
"\" AND +@\\{http\\://www.alfresco.org/model/content/1.0\\}" +
|
||||
ContentModel.PROP_COPY_REFERENCE.getLocalName() + ":\"" + nodeRef.toString() + "\"");
|
||||
|
||||
if (resultSet.getNodeRefs().size() != 0)
|
||||
{
|
||||
hasWorkingCopy = true;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (resultSet != null)
|
||||
{
|
||||
resultSet.close();
|
||||
}
|
||||
}
|
||||
|
||||
if (hasWorkingCopy)
|
||||
if (workingCopyNodeRef != null)
|
||||
{
|
||||
// if node has a working copy setup error message and return
|
||||
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
|
||||
@@ -2367,6 +2363,9 @@ public class BrowseBean implements IContextListener, Serializable
|
||||
/** The NodeService to be used by the bean */
|
||||
private transient NodeService nodeService;
|
||||
|
||||
/** The CheckOutCheckInService to be used by the bean */
|
||||
private transient CheckOutCheckInService checkOutCheckInService;
|
||||
|
||||
/** The SearchService to be used by the bean */
|
||||
private transient SearchService searchService;
|
||||
|
||||
|
@@ -18,8 +18,6 @@
|
||||
*/
|
||||
package org.alfresco.web.bean.coci;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import javax.faces.application.NavigationHandler;
|
||||
@@ -29,7 +27,6 @@ import javax.faces.event.ActionEvent;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.version.Version;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.web.app.AlfrescoNavigationHandler;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
@@ -198,13 +195,7 @@ public class DoneEditingDialog extends CheckinCheckoutDialog
|
||||
*/
|
||||
private NodeRef getSourceNodeRef(NodeRef workingCopyNodeRef)
|
||||
{
|
||||
if (getNodeService().hasAspect(workingCopyNodeRef, ContentModel.ASPECT_COPIEDFROM) == true)
|
||||
{
|
||||
Map<QName, Serializable> workingCopyProperties = getNodeService().getProperties(workingCopyNodeRef);
|
||||
return (NodeRef) workingCopyProperties.get(ContentModel.PROP_COPY_REFERENCE);
|
||||
}
|
||||
|
||||
return null;
|
||||
return getCheckOutCheckInService().getCheckedOut(workingCopyNodeRef);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -29,6 +29,7 @@ import javax.faces.context.FacesContext;
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||
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.model.FileFolderService;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
@@ -51,6 +52,7 @@ import org.alfresco.web.ui.common.Utils;
|
||||
*
|
||||
* @author gavinc
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class BaseDialogBean implements IDialogBean, Serializable
|
||||
{
|
||||
protected Map<String, String> parameters;
|
||||
@@ -62,6 +64,7 @@ public abstract class BaseDialogBean implements IDialogBean, Serializable
|
||||
|
||||
transient private TransactionService transactionService;
|
||||
transient private NodeService nodeService;
|
||||
transient private CheckOutCheckInService checkOutCheckInService;
|
||||
transient private FileFolderService fileFolderService;
|
||||
transient private SearchService searchService;
|
||||
transient private DictionaryService dictionaryService;
|
||||
@@ -272,6 +275,15 @@ public abstract class BaseDialogBean implements IDialogBean, Serializable
|
||||
return this.nodeService;
|
||||
}
|
||||
|
||||
protected CheckOutCheckInService getCheckOutCheckInService()
|
||||
{
|
||||
if (this.checkOutCheckInService == null)
|
||||
{
|
||||
this.checkOutCheckInService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getCheckOutCheckInService();
|
||||
}
|
||||
return this.checkOutCheckInService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the rule service
|
||||
* @return RuleService rule service
|
||||
|
@@ -337,6 +337,10 @@
|
||||
<property-name>searchService</property-name>
|
||||
<value>#{SearchService}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>checkOutCheckInService</property-name>
|
||||
<value>#{CheckOutCheckInService}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>lockService</property-name>
|
||||
<value>#{LockService}</value>
|
||||
|
Reference in New Issue
Block a user