mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -1415,7 +1415,8 @@ public class AlfrescoCmisService extends AbstractCmisService
|
||||
{
|
||||
if (connector.getNodeService().getChildAssocs(nodeRef).size() > 0)
|
||||
{
|
||||
throw new CmisConstraintException("Could not delete folder with at least one Child");
|
||||
throw new CmisConstraintException(
|
||||
"Could not delete folder with at least one child!");
|
||||
}
|
||||
|
||||
connector.getNodeService().deleteNode(nodeRef);
|
||||
@@ -1437,6 +1438,11 @@ public class AlfrescoCmisService extends AbstractCmisService
|
||||
return true;
|
||||
}
|
||||
|
||||
if (variant == ObjectVariantEnum.VERSION)
|
||||
{
|
||||
nodeRef = connector.getNodeRef(connector.getCurrentVersionId(objectId));
|
||||
}
|
||||
|
||||
// remove not primary parent associations
|
||||
List<ChildAssociationRef> childAssociations = connector.getNodeService().getParentAssocs(
|
||||
nodeRef);
|
||||
|
@@ -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,8 +1818,12 @@ 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)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((typeId != null) && !assocRef.getId().equals(typeId))
|
||||
{
|
||||
continue;
|
||||
@@ -1834,7 +1849,6 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result.setNumItems(BigInteger.valueOf(counter));
|
||||
result.setHasMoreItems(hasMore);
|
||||
@@ -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!");
|
||||
}
|
||||
|
@@ -165,7 +165,7 @@ public class CMISRenditionMapping
|
||||
}
|
||||
|
||||
ContentReader reader = contentService.getReader(rendNodeRef, contentProperty);
|
||||
if ((reader == null) || (reader.exists()))
|
||||
if ((reader == null) || (!reader.exists()))
|
||||
{
|
||||
// no content -> no rendition
|
||||
continue;
|
||||
@@ -188,7 +188,7 @@ public class CMISRenditionMapping
|
||||
{
|
||||
// found a kind, not a MIME type
|
||||
List<String> renditionNames = kindToRenditionNames.get(f);
|
||||
if (renditionNames.contains(rendName))
|
||||
if (renditionNames != null && renditionNames.contains(rendName))
|
||||
{
|
||||
include = true;
|
||||
break;
|
||||
@@ -239,6 +239,11 @@ public class CMISRenditionMapping
|
||||
}
|
||||
}
|
||||
|
||||
if (filterSet == null || filterSet.contains("cmis:thumbnail"))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@@ -20,6 +20,7 @@ package org.alfresco.opencmis.dictionary;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.alfresco.cmis.mapping.CMISMapping;
|
||||
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.ClassDefinition;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
@@ -71,10 +72,6 @@ public class CMISStrictDictionaryService extends CMISAbstractDictionaryService
|
||||
{
|
||||
typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_FOLDER, classQName);
|
||||
objectTypeDef = new FolderTypeDefintionWrapper(cmisMapping, serviceRegistry, typeId, classDef);
|
||||
} else if (cmisMapping.isValidCmisRelationship(classQName))
|
||||
{
|
||||
typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_RELATIONSHIP, classQName);
|
||||
objectTypeDef = new RelationshipTypeDefintionWrapper(cmisMapping, serviceRegistry, typeId, classDef);
|
||||
} else if (cmisMapping.isValidCmisPolicy(classQName))
|
||||
{
|
||||
typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_POLICY, classQName);
|
||||
@@ -96,6 +93,14 @@ public class CMISStrictDictionaryService extends CMISAbstractDictionaryService
|
||||
*/
|
||||
private void createAssocDefs(DictionaryRegistry registry, Collection<QName> classQNames)
|
||||
{
|
||||
// register base type
|
||||
String typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_RELATIONSHIP, CMISMapping.RELATIONSHIP_QNAME);
|
||||
RelationshipTypeDefintionWrapper objectTypeDef = new RelationshipTypeDefintionWrapper(cmisMapping,
|
||||
serviceRegistry, typeId, dictionaryService.getClass(CMISMapping.RELATIONSHIP_QNAME));
|
||||
|
||||
registry.registerTypeDefinition(objectTypeDef);
|
||||
|
||||
// register all other relationships
|
||||
for (QName classQName : classQNames)
|
||||
{
|
||||
if (!cmisMapping.isValidCmisRelationship(classQName))
|
||||
@@ -103,9 +108,8 @@ public class CMISStrictDictionaryService extends CMISAbstractDictionaryService
|
||||
|
||||
// create appropriate kind of type definition
|
||||
AssociationDefinition assocDef = dictionaryService.getAssociation(classQName);
|
||||
String typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_RELATIONSHIP, classQName);
|
||||
RelationshipTypeDefintionWrapper objectTypeDef = new RelationshipTypeDefintionWrapper(cmisMapping, typeId,
|
||||
assocDef);
|
||||
typeId = cmisMapping.getCmisTypeId(BaseTypeId.CMIS_RELATIONSHIP, classQName);
|
||||
objectTypeDef = new RelationshipTypeDefintionWrapper(cmisMapping, typeId, assocDef);
|
||||
|
||||
registry.registerTypeDefinition(objectTypeDef);
|
||||
}
|
||||
|
@@ -642,14 +642,6 @@ public class CMISMapping implements InitializingBean
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!isValidCmisDocumentOrFolder(getCmisType(associationDefinition.getSourceClass().getName())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!isValidCmisDocumentOrFolder(getCmisType(associationDefinition.getTargetClass().getName())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -21,6 +21,7 @@ package org.alfresco.opencmis.mapping;
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
/**
|
||||
@@ -40,15 +41,15 @@ public class NodeRefProperty extends AbstractVersioningProperty
|
||||
super(serviceRegistry, NodeRefPropertyId);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.alfresco.cmis.mapping.AbstractProperty#getValue(org.alfresco.service
|
||||
* .cmr.repository.NodeRef)
|
||||
*/
|
||||
@Override
|
||||
public Serializable getValue(NodeRef nodeRef)
|
||||
{
|
||||
return getLiveNodeRef(nodeRef);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable getValue(AssociationRef assocRef)
|
||||
{
|
||||
return "" + assocRef.getId();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user