Merging BRANCHES/DEV/CMIS_10 to HEAD (phase 2 - currently up-to-date with branch):

18717: SAIL-166: Refactor CMIS to use shared services and resolve objectIds and error codes consistently
   18731: SAIL-169: CMIS REST versioning compliance
   18732: Fix failing change log test.
   18768: Add displayName and queryName attributes to rendered properties (in CMIS AtomPub binding).
   18775: Fix exception reporting when retrieving items that do not exist (in CMIS AtomPub binding).
   18784: Fix CMIS REST change logging
   18785: SAIL-174: CMIS Relationship lookup by association ID
   18812: SAIL-183: Support orderBy argument for getChildren and getCheckedOutDocs in CMIS REST and Web Service bindings
   18823: CMIS WS Bindings were moved to 1.0 cd07 schema.
   18838: Update to latest Chemistry TCK.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18847 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2010-02-25 15:02:44 +00:00
parent cfc0643817
commit fbd7aab3b1
71 changed files with 2811 additions and 1624 deletions

View File

@@ -38,6 +38,7 @@ import org.alfresco.cmis.CMISChangeEvent;
import org.alfresco.cmis.CMISChangeLog;
import org.alfresco.cmis.CMISChangeLogService;
import org.alfresco.cmis.CMISChangeType;
import org.alfresco.cmis.CMISInvalidArgumentException;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.service.cmr.audit.AuditQueryParameters;
import org.alfresco.service.cmr.audit.AuditService;
@@ -68,9 +69,10 @@ public class CMISChangeLogServiceImpl implements CMISChangeLogService
}
/**
* @throws CMISInvalidArgumentException
* @see org.alfresco.cmis.CMISChangeLogService#getChangeLogEvents(java.lang.String, java.lang.Integer)
*/
public CMISChangeLog getChangeLogEvents(String changeLogToken, Integer maxItems)
public CMISChangeLog getChangeLogEvents(String changeLogToken, Integer maxItems) throws CMISInvalidArgumentException
{
if (!auditService.isAuditEnabled(cmisAuditApplicationName, ("/" + cmisAuditApplicationName)))
{
@@ -88,7 +90,15 @@ public class CMISChangeLogServiceImpl implements CMISChangeLogService
return super.handleAuditEntry(entryId, user, time, values);
}
};
Long from = changeLogToken != null ? Long.parseLong(changeLogToken) : null;
Long from;
try
{
from = changeLogToken != null ? Long.parseLong(changeLogToken) : null;
}
catch (NumberFormatException e)
{
throw new CMISInvalidArgumentException("Invalid change log token " + changeLogToken);
}
AuditQueryParameters params = new AuditQueryParameters();
params.setApplicationName(cmisAuditApplicationName);
params.setForward(true);
@@ -213,6 +223,7 @@ public class CMISChangeLogServiceImpl implements CMISChangeLogService
* @param time audit event time
* @return list of CMISChangeEvent
*/
@SuppressWarnings("unchecked")
private List<CMISChangeEvent> convertValuesMapToChangeLogEvents(Map<String, Serializable> values, long time)
{
List<CMISChangeEvent> result = new ArrayList<CMISChangeEvent>();
@@ -224,10 +235,12 @@ public class CMISChangeLogServiceImpl implements CMISChangeLogService
{
String path = entry.getKey();
CMISChangeType changeType = getCMISChangeType(path);
NodeRef nodeRef = entry.getValue() instanceof NodeRef ? (NodeRef) entry.getValue() : null;
if (changeType != null && nodeRef != null)
if (changeType != null && entry.getValue() instanceof Map)
{
result.add(new CMISChangeEventImpl(changeType, nodeRef, new Date(time)));
Map<String, Serializable> valueMap = (Map<String, Serializable>)entry.getValue();
result.add(new CMISChangeEventImpl(changeType, new Date(time), (NodeRef) valueMap
.get(CMISChangeLogDataExtractor.KEY_NODE_REF), (String) valueMap
.get(CMISChangeLogDataExtractor.KEY_OBJECT_ID)));
}
}
}