Merged DEV/SWIFT to HEAD

26012: OpenCMIS server bug fixes: PWC properties update and document version delete
   26205: - integrated the CMIS Client API project into the build
          - made the local CMIS client use the Alfresco OpenCMIS Extension
          - updated OpenCMIS
   26300: expose all non-child associations through OpenCMIS and check relationship source and target instead of the relationship type
   26356: OpenCMIS update
   26378: added more CMIS client examples
   26380: added helper methods for CMIS client
   26500: - fixed CMIS date aspect property encoding 
          - fixed CMIS rendition filter handling
   26519: OpenCMIS update
   26523: fixed CMISConnectionManager
   26596: renamed CMIS JavaScript root objects (cmis -> cmisserver, cmisclient -> cmis)
   26651: removed the cmis-client-api project and replaced it with a jar in 3rd-party
   26652: - corrected CMIS samples
   26656: - removed cmis-client-api from build
   26658: - removed the last bit of cmis-client-api
   26663: - added CMIS samples (browser and upload)
   26742: CMIS webscripts samples update
   26743: CMIS webscripts samples update
   26939: removed duplicate commons-fileupload
   26942: updated commons-lang to 2.6
   26943: updated OpenCMIS (browser binding is now included in the server framework)
   26953: refactored OpenCMIS client integration
   26974: Update classpath for Florian - OpenCMIS browser bindings are now rolled into the main jar, no need for their own one
   26975: removed outdated CMIS browser binding demo page
   27048: port of the Spring Surf CMIS browser plus a few new features (create folder, create document, delete object)
   27077: bug fix: CMIS id for associations
   27079: OpenCMIS update
   27085: added check if CMIS is supported
   27086: OpenCMIS client bindings update (force JAX-WS RI)
   27138: clean up
   27764: CMIS default connection handling
   27879: OpenCMIS client: moved server definitions to separate config file
   27880: OpenCMIS client: removed test repositories from configuration
   27918: changed CMIS server configuration tag name to match Spring Surf configuration
   27920: enabled relationships in CMIS browser
   27924: Updated Spring Surf and added the Spring Surf CMIS framework
          [Merge note: Kept most recent HEAD jars where conflicts occured]
   27926: Updated Spring Surf source jars
          [Merge note: Kept most recent HEAD jars where conflicts occured]

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28219 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2011-06-06 19:49:42 +00:00
parent 25632c2a96
commit 1387dcaf2a
6 changed files with 75 additions and 51 deletions

View File

@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.EnumSet;
import java.util.GregorianCalendar;
import java.util.HashMap;
@@ -33,6 +34,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TimeZone;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
@@ -1554,6 +1556,13 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
private String convertAspectPropertyValue(Object value)
{
if (value instanceof Date)
{
GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.setTime((Date) value);
value = cal;
}
if (value instanceof GregorianCalendar)
{
DatatypeFactory df;
@@ -1759,11 +1768,13 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
for (AssociationRef assocRef : assocs)
{
TypeDefinitionWrapper assocTypeDef = cmisDictionaryService.findAssocType(assocRef.getTypeQName());
if (assocTypeDef != null)
if (assocTypeDef == null || getType(assocRef.getSourceRef()) == null
|| getType(assocRef.getTargetRef()) == null)
{
result.add(createCMISObject(assocRef, null, false, IncludeRelationships.NONE, RENDITION_NONE, false,
false));
continue;
}
result.add(createCMISObject(assocRef, null, false, IncludeRelationships.NONE, RENDITION_NONE, false, false));
}
return result;
@@ -1807,31 +1818,34 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
for (AssociationRef assocRef : assocs)
{
TypeDefinitionWrapper assocTypeDef = cmisDictionaryService.findAssocType(assocRef.getTypeQName());
if (assocTypeDef != null)
if (assocTypeDef == null || getType(assocRef.getSourceRef()) == null
|| getType(assocRef.getTargetRef()) == null)
{
if ((typeId != null) && !assocRef.getId().equals(typeId))
{
continue;
}
continue;
}
counter++;
if ((typeId != null) && !assocRef.getId().equals(typeId))
{
continue;
}
if (skip > 0)
{
skip--;
continue;
}
counter++;
max--;
if (max > 0)
{
result.getObjects().add(
createCMISObject(assocRef, filter, includeAllowableActions, IncludeRelationships.NONE,
RENDITION_NONE, false, false));
} else
{
hasMore = true;
}
if (skip > 0)
{
skip--;
continue;
}
max--;
if (max > 0)
{
result.getObjects().add(
createCMISObject(assocRef, filter, includeAllowableActions, IncludeRelationships.NONE,
RENDITION_NONE, false, false));
} else
{
hasMore = true;
}
}
}
@@ -2458,8 +2472,10 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
throw new CmisInvalidArgumentException("Property " + property.getId() + " is unknown!");
}
if ((propDef.getPropertyDefinition().getUpdatability() == Updatability.READONLY)
|| (nodeService.hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY)))
Updatability updatability = propDef.getPropertyDefinition().getUpdatability();
if ((updatability == Updatability.READONLY)
|| (updatability == Updatability.WHENCHECKEDOUT && !nodeService.hasAspect(nodeRef,
ContentModel.ASPECT_WORKING_COPY)))
{
throw new CmisInvalidArgumentException("Property " + property.getId() + " is read-only!");
}