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();
