You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2013/07/28 13:02:15 UTC
svn commit: r1507777 [2/2] - in
/chemistry/opencmis/branches/inmemory-refactoring/src:
main/java/org/apache/chemistry/opencmis/inmemory/
main/java/org/apache/chemistry/opencmis/inmemory/query/
main/java/org/apache/chemistry/opencmis/inmemory/server/ ma...
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java Sun Jul 28 11:02:14 2013
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -34,26 +33,19 @@ import java.util.Map.Entry;
import java.util.TimeZone;
import org.apache.chemistry.opencmis.commons.PropertyIds;
-import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.AllowableActions;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
-import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
-import org.apache.chemistry.opencmis.commons.data.ObjectList;
import org.apache.chemistry.opencmis.commons.data.PropertyData;
import org.apache.chemistry.opencmis.commons.data.RenditionData;
-import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
-import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
import org.apache.chemistry.opencmis.inmemory.DataObjectCreator;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
-import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceContext;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
-import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
/**
* StoredObject is the common superclass of all objects hold in the repository
* Documents, Folders, Relationships and Policies
- *
+ *
* @author Jens
*/
public class StoredObjectImpl implements StoredObject {
@@ -72,24 +64,22 @@ public class StoredObjectImpl implements
protected GregorianCalendar fModifiedAt;
protected String fRepositoryId;
protected Map<String, PropertyData<?>> fProperties;
- protected final ObjectStoreImpl fObjStore;
protected int fAclId;
protected String description; // CMIS 1.1
protected List<String> secondaryTypeIds; // CMIS 1.1
protected List<String> policyIds;
- StoredObjectImpl(ObjectStoreImpl objStore) { // visibility should be package
+ StoredObjectImpl() { // visibility should be package
GregorianCalendar now = getNow();
now.setTime(new Date());
fCreatedAt = now;
fModifiedAt = now;
- fObjStore = objStore;
secondaryTypeIds = new ArrayList<String>();
policyIds = null;
}
@Override
- public String getId() {
+ public String getId() {
return fId;
}
@@ -97,64 +87,64 @@ public class StoredObjectImpl implements
public void setId(String id) {
fId = id;
}
-
+
@Override
- public String getName() {
+ public String getName() {
return fName;
}
@Override
- public void setName(String name) {
+ public void setName(String name) {
fName = name;
}
@Override
- public String getTypeId() {
+ public String getTypeId() {
return fTypeId;
}
@Override
- public void setTypeId(String type) {
+ public void setTypeId(String type) {
fTypeId = type;
}
@Override
- public String getCreatedBy() {
+ public String getCreatedBy() {
return fCreatedBy;
}
@Override
- public void setCreatedBy(String createdBy) {
+ public void setCreatedBy(String createdBy) {
this.fCreatedBy = createdBy;
}
@Override
- public String getModifiedBy() {
+ public String getModifiedBy() {
return fModifiedBy;
}
@Override
- public void setModifiedBy(String modifiedBy) {
+ public void setModifiedBy(String modifiedBy) {
this.fModifiedBy = modifiedBy;
}
@Override
- public GregorianCalendar getCreatedAt() {
+ public GregorianCalendar getCreatedAt() {
return fCreatedAt;
}
@Override
- public void setCreatedAt(GregorianCalendar createdAt) {
+ public void setCreatedAt(GregorianCalendar createdAt) {
this.fCreatedAt = createdAt;
}
@Override
- public GregorianCalendar getModifiedAt() {
+ public GregorianCalendar getModifiedAt() {
return fModifiedAt;
}
@Override
- public void setModifiedAtNow() {
+ public void setModifiedAtNow() {
this.fModifiedAt = getNow();
}
@@ -164,23 +154,23 @@ public class StoredObjectImpl implements
}
@Override
- public void setRepositoryId(String repositoryId) {
+ public void setRepositoryId(String repositoryId) {
fRepositoryId = repositoryId;
}
@Override
- public String getRepositoryId() {
+ public String getRepositoryId() {
return fRepositoryId;
}
-
+
@Override
- public List<String> getAppliedPolicies() {
+ public List<String> getAppliedPolicies() {
if (null == policyIds)
return null;
else
return Collections.unmodifiableList(policyIds);
}
-
+
public void setAppliedPolicies(List<String> newPolicies) {
if (null == newPolicies) {
policyIds = null;
@@ -191,9 +181,9 @@ public class StoredObjectImpl implements
policyIds.addAll(newPolicies);
}
}
-
+
@Override
- public void addAppliedPolicy(String policyId) {
+ public void addAppliedPolicy(String policyId) {
if (null == policyIds) {
policyIds = new ArrayList<String>();
}
@@ -203,7 +193,7 @@ public class StoredObjectImpl implements
}
@Override
- public void removePolicy(String policyId) {
+ public void removePolicy(String policyId) {
if (null != policyIds && policyIds.contains(policyId)) {
policyIds.remove(policyId);
if (policyIds.isEmpty()) {
@@ -211,55 +201,55 @@ public class StoredObjectImpl implements
}
}
}
-
+
// CMIS 1.1:
@Override
- public void setDescription(String descr) {
+ public void setDescription(String descr) {
description = descr;
}
-
+
// CMIS 1.1:
@Override
- public String getDescription() {
+ public String getDescription() {
return description;
}
@Override
- public List<String> getSecondaryTypeIds() {
+ public List<String> getSecondaryTypeIds() {
return Collections.unmodifiableList(secondaryTypeIds);
}
@Override
- public void setProperties(Map<String, PropertyData<?>> props) {
+ public void setProperties(Map<String, PropertyData<?>> props) {
fProperties = props;
}
@Override
- public Map<String, PropertyData<?>> getProperties() {
+ public Map<String, PropertyData<?>> getProperties() {
return fProperties;
}
@Override
- public String getChangeToken() {
+ public String getChangeToken() {
GregorianCalendar lastModified = getModifiedAt();
String token = Long.valueOf(lastModified.getTimeInMillis()).toString();
return token;
}
@Override
- public void createSystemBasePropertiesWhenCreated(Map<String, PropertyData<?>> properties, String user) {
+ public void createSystemBasePropertiesWhenCreated(Map<String, PropertyData<?>> properties, String user) {
addSystemBaseProperties(properties, user, true);
}
@Override
- public void updateSystemBasePropertiesWhenModified(Map<String, PropertyData<?>> properties, String user) {
+ public void updateSystemBasePropertiesWhenModified(Map<String, PropertyData<?>> properties, String user) {
addSystemBaseProperties(properties, user, false);
}
@Override
- public void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
+ public void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
List<String> requestedIds) {
-
+
if (FilterParser.isContainedInFilter(PropertyIds.NAME, requestedIds)) {
properties.put(PropertyIds.NAME, objFactory.createPropertyStringData(PropertyIds.NAME, getName()));
}
@@ -267,8 +257,8 @@ public class StoredObjectImpl implements
properties.put(PropertyIds.OBJECT_ID, objFactory.createPropertyIdData(PropertyIds.OBJECT_ID, getId()));
}
if (FilterParser.isContainedInFilter(PropertyIds.OBJECT_TYPE_ID, requestedIds)) {
- properties.put(PropertyIds.OBJECT_TYPE_ID, objFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID,
- getTypeId()));
+ properties.put(PropertyIds.OBJECT_TYPE_ID,
+ objFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, getTypeId()));
}
// set the base type id outside becaus it requires the type definition
// if (FilterParser.isContainedInFilter(PropertyIds.CMIS_BASE_TYPE_ID,
@@ -277,36 +267,36 @@ public class StoredObjectImpl implements
// CMIS_BASE_TYPE_ID, getBaseTypeId()));
// }
if (FilterParser.isContainedInFilter(PropertyIds.CREATED_BY, requestedIds)) {
- properties.put(PropertyIds.CREATED_BY, objFactory.createPropertyStringData(PropertyIds.CREATED_BY,
- getCreatedBy()));
+ properties.put(PropertyIds.CREATED_BY,
+ objFactory.createPropertyStringData(PropertyIds.CREATED_BY, getCreatedBy()));
}
if (FilterParser.isContainedInFilter(PropertyIds.CREATION_DATE, requestedIds)) {
- properties.put(PropertyIds.CREATION_DATE, objFactory.createPropertyDateTimeData(PropertyIds.CREATION_DATE,
- getCreatedAt()));
+ properties.put(PropertyIds.CREATION_DATE,
+ objFactory.createPropertyDateTimeData(PropertyIds.CREATION_DATE, getCreatedAt()));
}
if (FilterParser.isContainedInFilter(PropertyIds.LAST_MODIFIED_BY, requestedIds)) {
- properties.put(PropertyIds.LAST_MODIFIED_BY, objFactory.createPropertyStringData(
- PropertyIds.LAST_MODIFIED_BY, getModifiedBy()));
+ properties.put(PropertyIds.LAST_MODIFIED_BY,
+ objFactory.createPropertyStringData(PropertyIds.LAST_MODIFIED_BY, getModifiedBy()));
}
if (FilterParser.isContainedInFilter(PropertyIds.LAST_MODIFICATION_DATE, requestedIds)) {
- properties.put(PropertyIds.LAST_MODIFICATION_DATE, objFactory.createPropertyDateTimeData(
- PropertyIds.LAST_MODIFICATION_DATE, getModifiedAt()));
+ properties.put(PropertyIds.LAST_MODIFICATION_DATE,
+ objFactory.createPropertyDateTimeData(PropertyIds.LAST_MODIFICATION_DATE, getModifiedAt()));
}
if (FilterParser.isContainedInFilter(PropertyIds.CHANGE_TOKEN, requestedIds)) {
String token = getChangeToken();
- properties.put(PropertyIds.CHANGE_TOKEN, objFactory.createPropertyStringData(PropertyIds.CHANGE_TOKEN,
- token));
+ properties.put(PropertyIds.CHANGE_TOKEN,
+ objFactory.createPropertyStringData(PropertyIds.CHANGE_TOKEN, token));
}
-
+
// CMIS 1.1 properties:
if (FilterParser.isContainedInFilter(PropertyIds.DESCRIPTION, requestedIds)) {
- properties.put(PropertyIds.DESCRIPTION, objFactory.createPropertyStringData(PropertyIds.DESCRIPTION,
- description));
+ properties.put(PropertyIds.DESCRIPTION,
+ objFactory.createPropertyStringData(PropertyIds.DESCRIPTION, description));
}
if (FilterParser.isContainedInFilter(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, requestedIds)) {
- properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, objFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS,
- secondaryTypeIds));
- }
+ properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS,
+ objFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypeIds));
+ }
// add custom properties of type definition to the collection
if (null != fProperties) {
@@ -316,14 +306,14 @@ public class StoredObjectImpl implements
}
}
}
-
+
}
// ///////////////////////////////////////////
// private helper methods
@Override
- public void setCustomProperties(Map<String, PropertyData<?>> properties) {
+ public void setCustomProperties(Map<String, PropertyData<?>> properties) {
properties = new HashMap<String, PropertyData<?>>(properties); // get a
// writable
// collection
@@ -351,13 +341,13 @@ public class StoredObjectImpl implements
// constructor.
setModifiedBy(user);
if (null != properties.get(PropertyIds.DESCRIPTION))
- setDescription((String)properties.get(PropertyIds.DESCRIPTION).getFirstValue());
-
+ setDescription((String) properties.get(PropertyIds.DESCRIPTION).getFirstValue());
+
if (null != properties.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS)) {
secondaryTypeIds.clear();
- secondaryTypeIds.addAll((List<String>)properties.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues());
+ secondaryTypeIds.addAll((List<String>) properties.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues());
}
-
+
if (isCreated) {
setCreatedBy(user);
setName((String) properties.get(PropertyIds.NAME).getFirstValue());
@@ -386,7 +376,7 @@ public class StoredObjectImpl implements
* CMIS_NAME CMIS_OBJECT_ID CMIS_OBJECT_TYPE_ID CMIS_BASE_TYPE_ID
* CMIS_CREATED_BY CMIS_CREATION_DATE CMIS_LAST_MODIFIED_BY
* CMIS_LAST_MODIFICATION_DATE CMIS_CHANGE_TOKEN
- *
+ *
* // ---- document ---- CMIS_IS_IMMUTABLE CMIS_IS_LATEST_VERSION
* CMIS_IS_MAJOR_VERSION CMIS_IS_LATEST_MAJOR_VERSION CMIS_VERSION_LABEL
* CMIS_VERSION_SERIES_ID CMIS_IS_VERSION_SERIES_CHECKED_OUT
@@ -394,12 +384,12 @@ public class StoredObjectImpl implements
* CMIS_CHECKIN_COMMENT CMIS_CONTENT_STREAM_LENGTH
* CMIS_CONTENT_STREAM_MIME_TYPE CMIS_CONTENT_STREAM_FILE_NAME
* CMIS_CONTENT_STREAM_ID
- *
+ *
* // ---- folder ---- CMIS_PARENT_ID CMIS_ALLOWED_CHILD_OBJECT_TYPE_IDS
* CMIS_PATH
- *
+ *
* // ---- relationship ---- CMIS_SOURCE_ID CMIS_TARGET_ID
- *
+ *
* // ---- policy ---- CMIS_POLICY_TEXT
*/
private static void removeAllSystemProperties(Map<String, PropertyData<?>> properties) {
@@ -498,89 +488,68 @@ public class StoredObjectImpl implements
}
@Override
- public void persist() {
- // in-memory implementation does not need to to anything to persist,
- // but after this call the id should be set.
- fId = fObjStore.storeObject(this);
- }
-
- @Override
- public Acl getAcl() {
- return fObjStore.getAcl(fAclId);
- }
-
- public int getAclId() {
- return fAclId;
- }
-
- public void setAclId(int aclId) {
- fAclId = aclId;
- }
-
- @Override
- public List<StoredObject> getObjectRelationships(RelationshipDirection relationshipDirection, String user) {
-
- List<StoredObject> rels = fObjStore.getRelationships(getId(), null, relationshipDirection);
- return rels;
- }
-
- @Override
- public AllowableActions getAllowableActions(String user) {
- AllowableActions actions = DataObjectCreator.fillAllowableActions(this, user);
- return actions;
- }
+ public int getAclId() {
+ return fAclId;
+ }
+
+ public void setAclId(int aclId) {
+ fAclId = aclId;
+ }
+
+ @Override
+ public AllowableActions getAllowableActions(String user) {
+ AllowableActions actions = DataObjectCreator.fillAllowableActions(this, user);
+ return actions;
+ }
@Override
- public List<RenditionData> getRenditions(String renditionFilter, long maxItems, long skipCount) {
+ public List<RenditionData> getRenditions(String renditionFilter, long maxItems, long skipCount) {
return null;
}
@Override
- public ContentStream getRenditionContent(String streamId, long offset, long length) {
+ public ContentStream getRenditionContent(String streamId, long offset, long length) {
return null;
}
@Override
- public boolean hasRendition(String user) {
+ public boolean hasRendition(String user) {
return false;
}
-
- protected ContentStream getIconFromResourceDir(String name) throws IOException {
-
+
+ protected ContentStream getIconFromResourceDir(String name) throws IOException {
+
InputStream imageStream = this.getClass().getResourceAsStream(name);
ContentStreamDataImpl content = new ContentStreamDataImpl(0);
content.setFileName(name);
content.setMimeType("image/png");
ByteArrayOutputStream ba = new ByteArrayOutputStream();
- byte[] buffer = new byte [65536];
+ byte[] buffer = new byte[65536];
int noBytesRead = 0;
- while ((noBytesRead = imageStream.read(buffer)) >=0 ) {
+ while ((noBytesRead = imageStream.read(buffer)) >= 0) {
ba.write(buffer, 0, noBytesRead);
}
-
+
content.setContent(new ByteArrayInputStream(ba.toByteArray()));
return content;
}
-
+
protected boolean testRenditionFilterForImage(String[] formats) {
if (formats.length == 1 && null != formats[0] && formats[0].equals("cmis:none"))
return false;
else
- return arrayContainsString(formats, "*") || arrayContainsString(formats, "image/*")
- || arrayContainsString(formats, "image/jpeg") ;
+ return arrayContainsString(formats, "*") || arrayContainsString(formats, "image/*")
+ || arrayContainsString(formats, "image/jpeg");
}
-
+
private boolean arrayContainsString(String[] formats, String val) {
for (String s : formats) {
if (val.equals(s))
- return true;
+ return true;
}
return false;
}
-
-
-
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java Sun Jul 28 11:02:14 2013
@@ -40,8 +40,8 @@ public class VersionedDocumentImpl exten
private String fCheckedOutUser;
private final List<DocumentVersion> fVersions;
- public VersionedDocumentImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ public VersionedDocumentImpl() {
+ super();
fVersions = new ArrayList<DocumentVersion>();
fIsCheckedOut = false;
}
@@ -53,10 +53,9 @@ public class VersionedDocumentImpl exten
throw new CmisConstraintException("Cannot add a version to document, document is checked out.");
}
- DocumentVersionImpl ver = new DocumentVersionImpl(fRepositoryId, this, content, verState, fObjStore);
+ DocumentVersionImpl ver = new DocumentVersionImpl(fRepositoryId, this, content, verState);
ver.setSystemBasePropertiesWhenCreatedDirect(getName(), getTypeId(), user); // copy
// name and type id from version series.
- ver.persist();
fVersions.add(ver);
if (verState == VersioningState.CHECKEDOUT) {
fCheckedOutUser = user;
@@ -215,7 +214,6 @@ public class VersionedDocumentImpl exten
}
private void cancelCheckOut(boolean deleteInObjectStore) {
-
DocumentVersion pwc = getPwc();
fIsCheckedOut = false;
fCheckedOutUser = null;
@@ -227,8 +225,6 @@ public class VersionedDocumentImpl exten
}
}
- if (deleteInObjectStore)
- fObjStore.removeVersion(pwc);
}
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java Sun Jul 28 11:02:14 2013
@@ -73,6 +73,8 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.FilterParser;
import org.apache.chemistry.opencmis.inmemory.NameValidator;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
import org.apache.chemistry.opencmis.server.support.TypeManager;
import org.slf4j.Logger;
@@ -207,7 +209,7 @@ public final class PropertyCreationHelpe
prop.setDefaultValue(Collections.singletonList(defVal));
}
- public static Properties getPropertiesFromObject(StoredObject so, TypeManager typeManager,
+ public static Properties getPropertiesFromObject(StoredObject so, ObjectStore objectStore, TypeManager typeManager,
List<String> requestedIds, boolean fillOptionalPropertyData) {
// build properties collection
@@ -217,6 +219,10 @@ public final class PropertyCreationHelpe
TypeDefinition td = typeManager.getTypeById(so.getTypeId()).getTypeDefinition();
String typeId = so.getTypeId();
+ if (so instanceof Folder && FilterParser.isContainedInFilter(PropertyIds.PATH, requestedIds)) {
+ String path = objectStore.getFolderPath(so.getId());
+ properties.put(PropertyIds.PATH, objectFactory.createPropertyStringData(PropertyIds.PATH, path));
+ }
if (FilterParser.isContainedInFilter(PropertyIds.BASE_TYPE_ID, requestedIds)) {
if (td == null) {
log.warn("getPropertiesFromObject(), cannot get type definition, a type with id " + typeId
@@ -260,7 +266,7 @@ public final class PropertyCreationHelpe
return props;
}
- public static Properties getPropertiesFromObject(StoredObject so, TypeDefinition primaryType, List<TypeDefinition> secondaryTypes,
+ public static Properties getPropertiesFromObject(StoredObject so, ObjectStore objectStore, TypeDefinition primaryType, List<TypeDefinition> secondaryTypes,
Map<String, String> requestedIds, Map<String, String> requestedFuncs) {
// build properties collection
@@ -268,6 +274,11 @@ public final class PropertyCreationHelpe
BindingsObjectFactory objectFactory = new BindingsObjectFactoryImpl();
Map<String, PropertyData<?>> properties = new HashMap<String, PropertyData<?>>();
so.fillProperties(properties, objectFactory, idList);
+ // special handling for path
+ if (so instanceof Folder && FilterParser.isContainedInFilter(PropertyIds.PATH, idList)) {
+ String path = objectStore.getFolderPath(so.getId());
+ properties.put(PropertyIds.PATH, objectFactory.createPropertyStringData(PropertyIds.PATH, path));
+ }
if (FilterParser.isContainedInFilter(PropertyIds.BASE_TYPE_ID, idList)) {
String baseTypeId = primaryType.getBaseTypeId().value();
@@ -391,9 +402,9 @@ public final class PropertyCreationHelpe
}
}
- public static ObjectData getObjectData(TypeManager tm, StoredObject so, String filter, String user,
- Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
- Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
+ public static ObjectData getObjectData(TypeManager tm, ObjectStore objectStore, StoredObject so, String filter,
+ String user, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
ObjectDataImpl od = new ObjectDataImpl();
@@ -403,7 +414,7 @@ public final class PropertyCreationHelpe
// build properties collection
List<String> requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
- Properties props = getPropertiesFromObject(so, tm, requestedIds, true);
+ Properties props = getPropertiesFromObject(so, objectStore, tm, requestedIds, true);
// fill output object
if (null != includeAllowableActions && includeAllowableActions) {
@@ -416,7 +427,8 @@ public final class PropertyCreationHelpe
od.setRenditions(renditions);
if (null != includeACL && includeACL) {
- Acl acl = so instanceof DocumentVersion ? ((DocumentVersion) so).getParentDocument().getAcl() : so.getAcl();
+ int aclId = so instanceof DocumentVersion ? ((DocumentVersion) so).getParentDocument().getAclId() : so.getAclId();
+ Acl acl = objectStore.getAcl(aclId);
od.setAcl(acl);
}
od.setIsExactAcl(true);
@@ -426,7 +438,7 @@ public final class PropertyCreationHelpe
}
if (null != includeRelationships && includeRelationships != IncludeRelationships.NONE) {
- od.setRelationships(DataObjectCreator.fillRelationships(tm, includeRelationships, so, user));
+ od.setRelationships(DataObjectCreator.fillRelationships(tm, objectStore, includeRelationships, so, user));
}
if (null != includePolicyIds && includePolicyIds) {
@@ -443,15 +455,15 @@ public final class PropertyCreationHelpe
return od;
}
- public static ObjectData getObjectDataQueryResult(TypeManager tm, TypeDefinition primaryType, StoredObject so,
- String user, Map<String, String> requestedProperties, Map<String, String> requestedFuncs,
- List<TypeDefinition> secondaryTypes, Boolean includeAllowableActions,
+ public static ObjectData getObjectDataQueryResult(TypeManager tm, ObjectStore objectStore,
+ TypeDefinition primaryType, StoredObject so, String user, Map<String, String> requestedProperties,
+ Map<String, String> requestedFuncs, List<TypeDefinition> secondaryTypes, Boolean includeAllowableActions,
IncludeRelationships includeRelationships, String renditionFilter) {
ObjectDataImpl od = new ObjectDataImpl();
// build properties collection
- Properties props = getPropertiesFromObject(so, primaryType, secondaryTypes, requestedProperties, requestedFuncs);
+ Properties props = getPropertiesFromObject(so, objectStore, primaryType, secondaryTypes, requestedProperties, requestedFuncs);
// fill output object
if (null != includeAllowableActions && includeAllowableActions) {
@@ -461,11 +473,14 @@ public final class PropertyCreationHelpe
od.setAllowableActions(allowableActions);
}
- od.setAcl(so.getAcl());
+ int aclId = so.getAclId();
+ Acl acl = objectStore.getAcl(aclId);
+ od.setAcl(acl);
+
od.setIsExactAcl(true);
if (null != includeRelationships && includeRelationships != IncludeRelationships.NONE) {
- od.setRelationships(DataObjectCreator.fillRelationships(tm, includeRelationships, so, user));
+ od.setRelationships(DataObjectCreator.fillRelationships(tm, objectStore, includeRelationships, so, user));
}
List<RenditionData> renditions = so.getRenditions(renditionFilter, 0, 0);
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/FolderTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/FolderTest.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/FolderTest.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/FolderTest.java Sun Jul 28 11:02:14 2013
@@ -70,9 +70,9 @@ public class FolderTest extends TestCase
assertNull(fRoot.getParentId());
assertEquals(fRoot.getId(), f1.getParentId());
assertEquals(f1.getId(), f11.getParentId());
- assertEquals(Filing.PATH_SEPARATOR, fRoot.getPath());
- assertEquals("/Folder 1", f1.getPath());
- assertEquals("/Folder 1/Folder 1.1", f11.getPath());
+ assertEquals(Filing.PATH_SEPARATOR, getPath(fRoot));
+ assertEquals("/Folder 1", getPath(f1));
+ assertEquals("/Folder 1/Folder 1.1", getPath(f11));
StoredObject fTest = fStore.getObjectByPath("/", USER);
assertEquals(fRoot, fTest);
fTest = fStore.getObjectByPath("/Folder 1", USER);
@@ -91,10 +91,10 @@ public class FolderTest extends TestCase
public void testRenameFolder() {
// rename top level folder
String newName = "Folder B";
- String oldPath = f2.getPath();
+ String oldPath = getPath(f2);
fStore.rename(f2, newName);
assertEquals(f2.getName(), newName);
- assertEquals(f2.getPath(), Filing.PATH_SEPARATOR + newName);
+ assertEquals(getPath(f2), Filing.PATH_SEPARATOR + newName);
assertNull(fStore.getObjectByPath(oldPath, USER));
assertEquals(f2, fStore.getObjectByPath(Filing.PATH_SEPARATOR + newName, USER));
try {
@@ -104,10 +104,10 @@ public class FolderTest extends TestCase
}
// rename sub folder
- oldPath = f11.getPath();
+ oldPath = getPath(f11);
fStore.rename(f11, newName);
assertEquals(f11.getName(), newName);
- assertEquals(f11.getPath(), "/Folder 1/Folder B");
+ assertEquals(getPath(f11), "/Folder 1/Folder B");
assertNull(fStore.getObjectByPath(oldPath, USER));
assertEquals(f11, fStore.getObjectByPath("/Folder 1/Folder B", USER));
try {
@@ -126,11 +126,11 @@ public class FolderTest extends TestCase
@Test
public void testMoveFolder() {
- String oldPath = f1.getPath();
+ String oldPath = getPath(f1);
Folder f1Parent = fRoot;
fStore.move(f1, f1Parent, f3);
assertNull(fStore.getObjectByPath(oldPath, USER));
- assertEquals(f1.getPath(), "/Folder 3/Folder 1");
+ assertEquals(getPath(f1), "/Folder 3/Folder 1");
assertEquals(f1, fStore.getObjectByPath("/Folder 3/Folder 1", USER));
fStore.rename(f2, "Folder 1");
@@ -144,7 +144,7 @@ public class FolderTest extends TestCase
@Test
public void testDeleteFolder() {
- String oldPath = f2.getPath();
+ String oldPath = getPath(f2);
fStore.deleteObject(f2.getId(), true, "TestUser");
assertNull(fStore.getObjectByPath(oldPath, USER));
@@ -158,22 +158,21 @@ public class FolderTest extends TestCase
private void createFolders() {
fRoot = (FolderImpl) fStore.getRootFolder();
f1 = (FolderImpl) createFolder("Folder 1", fRoot);
- f1.persist();
f2 = (FolderImpl) createFolder("Folder 2", fRoot);
- f2.persist();
f3 = (FolderImpl) createFolder("Folder 3", fRoot);
- f3.persist();
f4 = (FolderImpl) createFolder("Folder 4", fRoot);
- f4.persist();
f11 = (FolderImpl) createFolder("Folder 1.1", f1);
- f11.persist();
}
private Folder createFolder(String name, Folder parent) {
return fStore.createFolder(name, null, "user", parent, null, null, null);
}
+
+ private String getPath(Folder folder) {
+ return fStore.getFolderPath(folder.getId());
+ }
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java Sun Jul 28 11:02:14 2013
@@ -735,7 +735,7 @@ public class TypeValidationTest extends
private static TypeManager buildInheritedTypes() {
TypeManagerImpl tm = new TypeManagerImpl();
- tm.initTypeSystem(null); // create CMIS default types
+ tm.initTypeSystem(null, true); // create CMIS default types
// create super type
InMemoryDocumentTypeDefinition cmisSuperType = new InMemoryDocumentTypeDefinition(DOC_TYPE_SUPER,
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/ProcessQueryTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/ProcessQueryTest.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/ProcessQueryTest.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/ProcessQueryTest.java Sun Jul 28 11:02:14 2013
@@ -414,7 +414,7 @@ public class ProcessQueryTest extends Ab
@Before
public void setUp() {
tm = new TypeManagerImpl();
- tm.initTypeSystem(null); // create CMIS default types
+ tm.initTypeSystem(null, true); // create CMIS default types
// create some types for testing
List<TypeDefinition> typeDefs = super.createTypes();
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/QueryTypesTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/QueryTypesTest.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/QueryTypesTest.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/QueryTypesTest.java Sun Jul 28 11:02:14 2013
@@ -63,7 +63,7 @@ public class QueryTypesTest extends Abst
@Before
public void setUp() {
tm = new TypeManagerImpl();
- tm.initTypeSystem(null); // create CMIS default types
+ tm.initTypeSystem(null, true); // create CMIS default types
// create some types for testing
List<TypeDefinition> typeDefs = super.createTypes();
@@ -533,7 +533,7 @@ public class QueryTypesTest extends Abst
public void testSecondaryJoin() throws RecognitionException {
// needs some special types:
tm = new TypeManagerImpl();
- tm.initTypeSystem(null); // create CMIS default types
+ tm.initTypeSystem(null, true); // create CMIS default types
// create some types for testing
List<TypeDefinition> typeDefs = UnitTestTypeSystemCreator.getTypesList();