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 [1/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...
Author: jens
Date: Sun Jul 28 11:02:14 2013
New Revision: 1507777
URL: http://svn.apache.org/r1507777
Log:
InMemory: more refactoring
Removed:
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/SingleFiling.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingMutable.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyUtil.java
Modified:
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/DataObjectCreator.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/AtomLinkInfoProvider.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryPolicyServiceImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRelationshipServiceImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/VersionedDocument.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentVersionImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FolderImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ItemImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/FolderTest.java
chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/TypeValidationTest.java
chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/ProcessQueryTest.java
chemistry/opencmis/branches/inmemory-refactoring/src/test/java/org/apache/chemistry/opencmis/inmemory/query/QueryTypesTest.java
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/DataObjectCreator.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/DataObjectCreator.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/DataObjectCreator.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/DataObjectCreator.java Sun Jul 28 11:02:14 2013
@@ -20,7 +20,6 @@ package org.apache.chemistry.opencmis.in
import java.math.BigInteger;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -29,7 +28,6 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.AllowableActions;
import org.apache.chemistry.opencmis.commons.data.ChangeEventInfo;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
-import org.apache.chemistry.opencmis.commons.data.ObjectList;
import org.apache.chemistry.opencmis.commons.data.PolicyIdList;
import org.apache.chemistry.opencmis.commons.enums.Action;
import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
@@ -44,6 +42,7 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Filing;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Item;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Policy;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Relationship;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
@@ -183,9 +182,9 @@ public class DataObjectCreator {
return polIds;
}
- public static List<ObjectData> fillRelationships(TypeManager tm, IncludeRelationships includeRelationships,
- StoredObject so, String user) {
- return getRelationships(tm, includeRelationships, so, user);
+ public static List<ObjectData> fillRelationships(TypeManager tm, ObjectStore objStore,
+ IncludeRelationships includeRelationships, StoredObject so, String user) {
+ return getRelationships(tm, objStore, includeRelationships, so, user);
}
public static ChangeEventInfo fillChangeEventInfo(StoredObject so) {
@@ -194,7 +193,7 @@ public class DataObjectCreator {
return changeEventInfo;
}
- public static List<ObjectData> getRelationships(TypeManager tm, IncludeRelationships includeRelationships,
+ public static List<ObjectData> getRelationships(TypeManager tm, ObjectStore objStore, IncludeRelationships includeRelationships,
StoredObject spo, String user) {
if (includeRelationships != IncludeRelationships.NONE) {
RelationshipDirection relationshipDirection = RelationshipDirection.SOURCE;
@@ -204,10 +203,10 @@ public class DataObjectCreator {
else if (includeRelationships == IncludeRelationships.BOTH)
relationshipDirection = RelationshipDirection.EITHER;
- List<StoredObject> relationships = spo.getObjectRelationships(relationshipDirection, user);
+ List<StoredObject> relationships = objStore.getRelationships(spo.getId(), null, relationshipDirection);
List<ObjectData> res = new ArrayList<ObjectData>(relationships.size());
for (StoredObject so : relationships) {
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, null, user, false,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, null, user, false,
IncludeRelationships.NONE, null, false, false, null);
res.add(od);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java Sun Jul 28 11:02:14 2013
@@ -114,9 +114,10 @@ public class TypeManagerImpl implements
* list of types to add to the repository
*
*/
- public void initTypeSystem(List<TypeDefinition> typesList) {
+ public void initTypeSystem(List<TypeDefinition> typesList, boolean createCmisDefaultTypes) {
- createCmisDefaultTypes();
+ if (createCmisDefaultTypes)
+ createCmisDefaultTypes();
// merge all types from the list and build the correct hierachy with
// children
@@ -141,18 +142,19 @@ public class TypeManagerImpl implements
@Override
public void addTypeDefinition(TypeDefinition cmisType) {
- TypeDefinitionContainerImpl typeContainer = new TypeDefinitionContainerImpl(cmisType);
-
- // add new type to children of parent types
- TypeDefinitionContainer parentTypeContainer = fTypesMap.get(cmisType.getParentTypeId());
- parentTypeContainer.getChildren().add(typeContainer);
-
- // recursively add inherited properties
- Map<String, PropertyDefinition<?>> propDefs = typeContainer.getTypeDefinition().getPropertyDefinitions();
- addInheritedProperties(propDefs, parentTypeContainer.getTypeDefinition());
-
LOG.info("Adding type definition with name " + cmisType.getLocalName() + " and id "
+ cmisType.getId() + " to repository.");
+ TypeDefinitionContainerImpl typeContainer = new TypeDefinitionContainerImpl(cmisType);
+
+ if (null != cmisType.getParentTypeId()) {
+ // add new type to children of parent types
+ TypeDefinitionContainer parentTypeContainer = fTypesMap.get(cmisType.getParentTypeId());
+ parentTypeContainer.getChildren().add(typeContainer);
+
+ // recursively add inherited properties
+ Map<String, PropertyDefinition<?>> propDefs = typeContainer.getTypeDefinition().getPropertyDefinitions();
+ addInheritedProperties(propDefs, parentTypeContainer.getTypeDefinition());
+ }
// add type to type map
fTypesMap.put(cmisType.getId(), typeContainer);
}
@@ -238,17 +240,18 @@ public class TypeManagerImpl implements
}
private static boolean isRootType(TypeDefinitionContainer c) {
- if (c.getTypeDefinition().equals(InMemoryFolderTypeDefinition.getRootFolderType())
- || c.getTypeDefinition().equals(InMemoryDocumentTypeDefinition.getRootDocumentType())
- || c.getTypeDefinition().equals(InMemoryRelationshipTypeDefinition.getRootRelationshipType())
- || c.getTypeDefinition().equals(InMemoryPolicyTypeDefinition.getRootPolicyType())
- || c.getTypeDefinition().equals(InMemoryItemTypeDefinition.getRootItemType()) // CMIS 1.1
- || c.getTypeDefinition().equals(InMemorySecondaryTypeDefinition.getRootSecondaryType()) // CMIS 1.1
- ) {
- return true;
- } else {
- return false;
- }
+ return (c.getTypeDefinition().getId().equals(c.getTypeDefinition().getBaseTypeId().value()));
+// if (c.getTypeDefinition().equals(InMemoryFolderTypeDefinition.getRootFolderType())
+// || c.getTypeDefinition().equals(InMemoryDocumentTypeDefinition.getRootDocumentType())
+// || c.getTypeDefinition().equals(InMemoryRelationshipTypeDefinition.getRootRelationshipType())
+// || c.getTypeDefinition().equals(InMemoryPolicyTypeDefinition.getRootPolicyType())
+// || c.getTypeDefinition().equals(InMemoryItemTypeDefinition.getRootItemType()) // CMIS 1.1
+// || c.getTypeDefinition().equals(InMemorySecondaryTypeDefinition.getRootSecondaryType()) // CMIS 1.1
+// ) {
+// return true;
+// } else {
+// return false;
+// }
}
private static PropertyDefinition<?> clonePropertyDefinition(PropertyDefinition<?> src) {
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java Sun Jul 28 11:02:14 2013
@@ -54,7 +54,6 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.storedobj.impl.ContentStreamDataImpl;
import org.apache.chemistry.opencmis.inmemory.storedobj.impl.ObjectStoreImpl;
import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
-import org.apache.chemistry.opencmis.inmemory.types.PropertyUtil;
import org.apache.chemistry.opencmis.server.support.TypeManager;
import org.apache.chemistry.opencmis.server.support.query.AbstractPredicateWalker;
import org.apache.chemistry.opencmis.server.support.query.CmisQueryWalker;
@@ -158,7 +157,7 @@ public class InMemoryQueryProcessor {
String queryName = queryObj.getTypes().values().iterator().next();
TypeDefinition td = queryObj.getTypeDefinitionFromQueryName(queryName);
- ObjectData od = PropertyCreationHelper.getObjectDataQueryResult(tm, td, so, user, props, funcs,
+ ObjectData od = PropertyCreationHelper.getObjectDataQueryResult(tm, objStore, td, so, user, props, funcs,
secondaryTypeIds, includeAllowableActions, includeRelationships, renditionFilter);
objDataList.add(od);
}
@@ -207,8 +206,8 @@ public class InMemoryQueryProcessor {
String propId = ((ColumnReference) sel).getPropertyId();
PropertyDefinition<?> pd = ((ColumnReference) sel).getPropertyDefinition();
- Object propVal1 = PropertyUtil.getProperty(so1, propId, pd);
- Object propVal2 = PropertyUtil.getProperty(so2, propId, pd);
+ Object propVal1 = PropertyQueryUtil.getProperty(so1, propId, pd);
+ Object propVal2 = PropertyQueryUtil.getProperty(so2, propId, pd);
if (propVal1 == null && propVal2 == null) {
result = 0;
@@ -363,7 +362,7 @@ public class InMemoryQueryProcessor {
ColumnReference colRef = getColumnReference(colNode);
PropertyDefinition<?> pd = colRef.getPropertyDefinition();
List<Object> literals = onLiteralList(listNode);
- Object prop = PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ Object prop = PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
if (pd.getCardinality() != Cardinality.SINGLE) {
throw new IllegalStateException("Operator IN only is allowed on single-value properties ");
@@ -381,7 +380,7 @@ public class InMemoryQueryProcessor {
// then it evaluates to true for null values (not set properties).
ColumnReference colRef = getColumnReference(colNode);
PropertyDefinition<?> pd = colRef.getPropertyDefinition();
- Object prop = PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ Object prop = PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
List<Object> literals = onLiteralList(listNode);
if (pd.getCardinality() != Cardinality.SINGLE) {
throw new IllegalStateException("Operator IN only is allowed on single-value properties ");
@@ -459,7 +458,7 @@ public class InMemoryQueryProcessor {
public Boolean walkIsNull(Tree opNode, Tree colNode) {
ColumnReference colRef = getColumnReference(colNode);
PropertyDefinition<?> pd = colRef.getPropertyDefinition();
- Object propVal = PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ Object propVal = PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
return propVal == null;
}
@@ -467,7 +466,7 @@ public class InMemoryQueryProcessor {
public Boolean walkIsNotNull(Tree opNode, Tree colNode) {
ColumnReference colRef = getColumnReference(colNode);
PropertyDefinition<?> pd = colRef.getPropertyDefinition();
- Object propVal = PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ Object propVal = PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
return propVal != null;
}
@@ -489,7 +488,7 @@ public class InMemoryQueryProcessor {
throw new IllegalStateException("LIKE is not allowed for multi-value properties ");
}
- String propVal = (String) PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ String propVal = (String) PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
if (null == propVal) {
return false;
@@ -556,7 +555,7 @@ public class InMemoryQueryProcessor {
// System.identityHashCode(leftChild) + " is " + leftChild);
ColumnReference colRef = getColumnReference(leftChild);
PropertyDefinition<?> pd = colRef.getPropertyDefinition();
- Object val = PropertyUtil.getProperty(so, colRef.getPropertyId(), pd);
+ Object val = PropertyQueryUtil.getProperty(so, colRef.getPropertyId(), pd);
if (val==null) {
return null;
} else if (val instanceof List<?>) {
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/AtomLinkInfoProvider.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/AtomLinkInfoProvider.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/AtomLinkInfoProvider.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/AtomLinkInfoProvider.java Sun Jul 28 11:02:14 2013
@@ -77,6 +77,7 @@ public class AtomLinkInfoProvider {
return;
}
TypeDefinition typeDef = fStoreManager.getTypeById(repositoryId, so.getTypeId()).getTypeDefinition();
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
// Fill all setters:
objInfo.setId(so.getId());
@@ -149,12 +150,12 @@ public class AtomLinkInfoProvider {
// Relationships
objInfo.setSupportsRelationships(true);
- List<StoredObject> rels = so.getObjectRelationships(RelationshipDirection.SOURCE, null);
+ List<StoredObject> rels = objStore.getRelationships(so.getId(), null, RelationshipDirection.SOURCE);
List<String> srcIds = new ArrayList<String>(rels.size());
for (StoredObject rel : rels)
srcIds.add(rel.getId());
- rels = so.getObjectRelationships(RelationshipDirection.TARGET, null);
+ rels = objStore.getRelationships(so.getId(), null, RelationshipDirection.TARGET);
List<String> targetIds = new ArrayList<String>(rels.size());
for (StoredObject rel : rels)
targetIds.add(rel.getId());
@@ -172,8 +173,8 @@ public class AtomLinkInfoProvider {
public void fillInformationForAtomLinks(String repositoryId, StoredObject so, ObjectInfoImpl objectInfo) {
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
-
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, null, null, false,
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, null, null, false,
IncludeRelationships.NONE, null, false, false, null);
fillInformationForAtomLinks(repositoryId, so, od, objectInfo);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java Sun Jul 28 11:02:14 2013
@@ -26,6 +26,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.server.ObjectInfoHandler;
import org.apache.chemistry.opencmis.inmemory.TypeValidator;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
import org.slf4j.Logger;
@@ -42,12 +43,15 @@ public class InMemoryAclService extends
public Acl getAcl(CallContext context, String repositoryId, String objectId, Boolean onlyBasicPermissions,
ExtensionsData extension, ObjectInfoHandler objectInfos) {
LOG.debug("start getAcl()");
- Acl acl = null;
+ int aclId;
StoredObject so = validator.getAcl(context, repositoryId, objectId, extension);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
if (so instanceof DocumentVersion)
- acl = ((DocumentVersion) so).getParentDocument().getAcl();
+ aclId = ((DocumentVersion) so).getParentDocument().getAclId();
else
- acl = so.getAcl();
+ aclId = so.getAclId();
+
+ Acl acl = objectStore.getAcl(aclId);
if (context.isObjectInfoRequired()) {
ObjectInfoImpl objectInfo = new ObjectInfoImpl();
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java Sun Jul 28 11:02:14 2013
@@ -82,12 +82,13 @@ public class InMemoryNavigationServiceIm
LOG.debug("start getCheckedOutDocs()");
String user = context.getUsername();
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
if (null == folderId) {
List<StoredObject> checkedOuts = fStoreManager.getObjectStore(repositoryId).getCheckedOutDocuments(
orderBy, context.getUsername(), includeRelationships);
for (StoredObject checkedOut : checkedOuts) {
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, checkedOut, filter, user,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, checkedOut, filter, user,
includeAllowableActions, includeRelationships, renditionFilter, false, false, extension);
if (context.isObjectInfoRequired()) {
ObjectInfoImpl objectInfo = new ObjectInfoImpl();
@@ -300,7 +301,7 @@ public class InMemoryNavigationServiceIm
}
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData objectData = PropertyCreationHelper.getObjectData(tm, child, filter, user, includeAllowableActions,
+ ObjectData objectData = PropertyCreationHelper.getObjectData(tm, objStore, child, filter, user, includeAllowableActions,
includeRelationships, renditionFilter, false, false, null);
oifd.setObject(objectData);
@@ -373,7 +374,7 @@ public class InMemoryNavigationServiceIm
ObjectParentDataImpl parentData = new ObjectParentDataImpl();
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
Folder parent = (Folder) objStore.getObjectById(parentId);
- ObjectData objData = PropertyCreationHelper.getObjectData(tm, parent, filter, user, includeAllowableActions,
+ ObjectData objData = PropertyCreationHelper.getObjectData(tm, objStore, parent, filter, user, includeAllowableActions,
includeRelationships, renditionFilter, false, true, null);
parentData.setObject(objData);
@@ -409,7 +410,7 @@ public class InMemoryNavigationServiceIm
copyFilteredProperties(repositoryId, parentFolder, filter, parent);
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- parent.setRelationships(DataObjectCreator.getRelationships(tm, includeRelationships, parentFolder, user));
+ parent.setRelationships(DataObjectCreator.getRelationships(tm, objStore, includeRelationships, parentFolder, user));
if (includeAllowableActions != null && includeAllowableActions) {
// AllowableActions allowableActions = DataObjectCreator.fillAllowableActions(spo, user);
@@ -427,9 +428,10 @@ public class InMemoryNavigationServiceIm
}
void copyFilteredProperties(String repositoryId, StoredObject so, String filter, ObjectDataImpl objData) {
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
List<String> requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- Properties props = PropertyCreationHelper.getPropertiesFromObject(so, tm, requestedIds, true);
+ Properties props = PropertyCreationHelper.getPropertiesFromObject(so, objectStore, tm, requestedIds, true);
objData.setProperties(props);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java Sun Jul 28 11:02:14 2013
@@ -119,6 +119,7 @@ public class InMemoryObjectServiceImpl e
LOG.debug("start createDocumentFromSource()");
StoredObject so = validator.createDocumentFromSource(context, repositoryId, sourceId, folderId, policies,
extension);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
ContentStream content = getContentStream(context, repositoryId, sourceId, null, BigInteger.valueOf(-1),
BigInteger.valueOf(-1), null);
@@ -130,7 +131,7 @@ public class InMemoryObjectServiceImpl e
// build properties collection
List<String> requestedIds = FilterParser.getRequestedIdsFromFilter("*");
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- Properties existingProps = PropertyCreationHelper.getPropertiesFromObject(so, tm, requestedIds, true);
+ Properties existingProps = PropertyCreationHelper.getPropertiesFromObject(so, objectStore, tm, requestedIds, true);
PropertiesImpl newPD = new PropertiesImpl();
// copy all existing properties
@@ -213,6 +214,8 @@ public class InMemoryObjectServiceImpl e
// check if the given type is a document type
BaseTypeId typeBaseId = typeDefC.getTypeDefinition().getBaseTypeId();
StoredObject so = null;
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
if (typeBaseId.equals(InMemoryDocumentTypeDefinition.getRootDocumentType().getBaseTypeId())) {
so = createDocumentIntern(context, repositoryId, properties, folderId, contentStream, versioningState,
null, null, null, null);
@@ -231,7 +234,7 @@ public class InMemoryObjectServiceImpl e
// Make a call to getObject to convert the resulting id into an
// ObjectData
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, null, context.getUsername(), false,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, null, context.getUsername(), false,
IncludeRelationships.NONE, null, false, false, extension);
if (context.isObjectInfoRequired()) {
@@ -381,6 +384,7 @@ public class InMemoryObjectServiceImpl e
LOG.debug("start getObject()");
StoredObject so = validator.getObject(context, repositoryId, objectId, extension);
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
if (so == null) {
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -388,7 +392,7 @@ public class InMemoryObjectServiceImpl e
String user = context.getUsername();
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, filter, user, includeAllowableActions,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, filter, user, includeAllowableActions,
includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);
if (context.isObjectInfoRequired()) {
@@ -426,9 +430,10 @@ public class InMemoryObjectServiceImpl e
}
String user = context.getUsername();
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, filter, user, includeAllowableActions,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, filter, user, includeAllowableActions,
includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);
LOG.debug("stop getObjectByPath()");
@@ -449,6 +454,7 @@ public class InMemoryObjectServiceImpl e
LOG.debug("start getProperties()");
StoredObject so = validator.getProperties(context, repositoryId, objectId, extension);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
if (so == null) {
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -457,7 +463,7 @@ public class InMemoryObjectServiceImpl e
// build properties collection
List<String> requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- Properties props = PropertyCreationHelper.getPropertiesFromObject(so, tm, requestedIds, true);
+ Properties props = PropertyCreationHelper.getPropertiesFromObject(so, objectStore, tm, requestedIds, true);
LOG.debug("stop getProperties()");
return props;
}
@@ -544,7 +550,7 @@ public class InMemoryObjectServiceImpl e
LOG.debug("stop moveObject()");
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, null, user, false, IncludeRelationships.NONE,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objectStore, so, null, user, false, IncludeRelationships.NONE,
null, false, false, extension);
// To be able to provide all Atom links in the response we need
@@ -613,6 +619,7 @@ public class InMemoryObjectServiceImpl e
LOG.debug("start updateProperties()");
StoredObject so = validator.updateProperties(context, repositoryId, objectId, extension);
String user = context.getUsername();
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
// Validation
TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
@@ -720,8 +727,8 @@ public class InMemoryObjectServiceImpl e
throw new CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
}
// Note: the test for duplicated name in folder is left to the object store
- ObjectStoreFiling objStore = (ObjectStoreFiling) fStoreManager.getObjectStore(repositoryId);
- objStore.rename((Fileable)so, (String) pd.getFirstValue());
+ ObjectStoreFiling objStoreFiling = (ObjectStoreFiling) objStore;
+ objStoreFiling.rename((Fileable)so, (String) pd.getFirstValue());
hasUpdatedProp = true;
}
}
@@ -733,7 +740,6 @@ public class InMemoryObjectServiceImpl e
}
so.updateSystemBasePropertiesWhenModified(properties.getProperties(), user);
// set changeToken
- so.persist();
}
if (hasUpdatedProp) {
@@ -755,7 +761,7 @@ public class InMemoryObjectServiceImpl e
}
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, so, null, user, false, IncludeRelationships.NONE,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, so, null, user, false, IncludeRelationships.NONE,
null, false, false, extension);
// To be able to provide all Atom links in the response we need
@@ -933,13 +939,11 @@ public class InMemoryObjectServiceImpl e
if (((DocumentTypeDefinition) typeDef).isVersionable()) {
DocumentVersion version = objectStore.createVersionedDocument(name, propMap, user, folder, policies,
addACEs, removeACEs, contentStream, versioningState);
- version.persist();
so = version; // return the version and not the version series to
// caller
} else {
Document doc = objectStore.createDocument(name, propMap, user, folder, policies, addACEs, removeACEs);
doc.setContent(contentStream, false);
- doc.persist();
so = doc;
}
@@ -1015,7 +1019,6 @@ public class InMemoryObjectServiceImpl e
Folder newFolder = objStore.createFolder(folderName, properties.getProperties(), user, parent, policies,
addACEs, removeACEs);
LOG.debug("stop createFolder()");
- newFolder.persist();
return newFolder;
}
@@ -1182,10 +1185,7 @@ public class InMemoryObjectServiceImpl e
// Now we are sure to have document type definition:
so = objectStore.createItem(name, propMap, user, folder, policies, addACEs, removeACEs);
- so.persist();
-
return so;
-
}
private boolean hasDescendant(String user, ObjectStore objStore, Folder sourceFolder, Folder targetFolder) {
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryPolicyServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryPolicyServiceImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryPolicyServiceImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryPolicyServiceImpl.java Sun Jul 28 11:02:14 2013
@@ -43,6 +43,7 @@ public class InMemoryPolicyServiceImpl e
String filter, ExtensionsData extension) {
StoredObject so = validator.getAppliedPolicies(context, repositoryId, objectId, extension);
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
if (so == null) {
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -57,7 +58,7 @@ public class InMemoryPolicyServiceImpl e
ObjectStore os = super.fStoreManager.getObjectStore(repositoryId);
for (String polId : polIds) {
StoredObject pol = os.getObjectById(polId);
- ObjectData od = PropertyCreationHelper.getObjectData(tm, pol, filter, user, false,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, pol, filter, user, false,
IncludeRelationships.NONE, null, false, false, null);
res.add(od);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRelationshipServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRelationshipServiceImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRelationshipServiceImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRelationshipServiceImpl.java Sun Jul 28 11:02:14 2013
@@ -81,7 +81,7 @@ public class InMemoryRelationshipService
List<ObjectData> odList = new ArrayList<ObjectData>();
for (StoredObject rel : rels) {
- ObjectData od = PropertyCreationHelper.getObjectData(tm, rel, filter, user, includeAllowableActions,
+ ObjectData od = PropertyCreationHelper.getObjectData(tm, objStore, rel, filter, user, includeAllowableActions,
IncludeRelationships.NONE, null, false, false, extension);
odList.add(od);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java Sun Jul 28 11:02:14 2013
@@ -40,6 +40,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.inmemory.FilterParser;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Document;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
@@ -66,11 +67,12 @@ public class InMemoryVersioningServiceIm
public void cancelCheckOut(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
StoredObject so = validator.cancelCheckOut(context, repositoryId, objectId, extension);
-
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
String user = context.getUsername();
VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
-
+ DocumentVersion pwc = verDoc.getPwc();
verDoc.cancelCheckOut(user);
+ objStore.deleteVersion(pwc);
// if this is the last version delete the document itself
if (verDoc.getAllVersions().size() == 0)
@@ -123,6 +125,7 @@ public class InMemoryVersioningServiceIm
checkIsVersionableObject(so);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
VersionedDocument verDoc = getVersionedDocumentOfObjectId(so);
ContentStream content = null;
@@ -142,6 +145,7 @@ public class InMemoryVersioningServiceIm
checkHasUser(user);
DocumentVersion pwc = verDoc.checkOut(content, user);
+ objectStore.storeVersion(pwc);
objectId.setValue(pwc.getId()); // return the id of the created pwc
if (null != contentCopied) // Note: always null in AtomPub binding
contentCopied.setValue(true);
@@ -250,7 +254,7 @@ public class InMemoryVersioningServiceIm
StoredObject so = validator.getPropertiesOfLatestVersion(context, repositoryId, objectId, versionSeriesId,
extension);
-
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
StoredObject latestVersionObject = null;
// In AtomPu8b you do not get the version series id, only the object id
@@ -271,7 +275,8 @@ public class InMemoryVersioningServiceIm
TypeManager tm = fStoreManager.getTypeManager(repositoryId);
- Properties props = PropertyCreationHelper.getPropertiesFromObject(latestVersionObject, tm, requestedIds, true);
+ Properties props = PropertyCreationHelper.getPropertiesFromObject(latestVersionObject, objectStore, tm,
+ requestedIds, true);
return props;
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java Sun Jul 28 11:02:14 2013
@@ -45,7 +45,7 @@ public interface Filing {
* user id
* @return list of parent folders
*/
- List<String> getParents();
+ List<String> getParentIds();
/**
* usually true except for the root folder, optimized call that just tests
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java Sun Jul 28 11:02:14 2013
@@ -37,14 +37,13 @@ public interface Folder extends Fileable
* parent id of this folder
*/
String getParentId();
-
+
/**
- * get the path of this folder (for folder in CMIS path is unique)
- *
- * @return
- * path of this folder
+ * set the parent id of a folder
+ * @param parentId
+ * parent id of this folder
*/
- String getPath();
+ void setParentId(String parentId);
/**
* return a list of allowed types of children in this folder
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java Sun Jul 28 11:02:14 2013
@@ -29,25 +29,18 @@ package org.apache.chemistry.opencmis.in
public interface MultiFiling extends Filing {
/**
- * retrieve the path segment of this folder
+ * Add parent folder to this document
*
- * @return
+ * @param parentId
+ * id of parent folder to be added.
*/
- String getPathSegment();
+ void addParentId(String parentId);
/**
- * Add this document to a new parent folder as child object
+ * Remove parent from this object
*
- * @param parent
- * new parent folder of the document.
+ * @param parentId
+ * id of parent folder to be removed.
*/
- void addParent(Folder parent);
-
- /**
- * Remove this object from the children of parent
- *
- * @param parent
- * parent folder of the document
- */
- void removeParent(Folder parent);
+ void removeParentId(String parentId);
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java Sun Jul 28 11:02:14 2013
@@ -197,6 +197,36 @@ public interface ObjectStore {
public StoredObject createPolicy(String name, String policyText, Map<String, PropertyData<?>> propMap, String user);
/**
+ * Persist a new version in the store (created from a check-out)
+ * @param version
+ */
+ public void storeVersion(DocumentVersion version);
+
+ /**
+ * remove a version from the store (after a cancel check-out)
+ * @param version
+ * version to be deleted
+ */
+ public void deleteVersion(DocumentVersion version);
+
+ /**
+ * Persist an object after modifying the properties
+ * @param so
+ * object to be updated
+ */
+ public void upateObject(StoredObject so);
+
+ /**
+ * get the path of this folder (for folder in CMIS path is unique)
+ *
+ * @param folderId
+ * id of folder
+ * @return
+ * path of this folder
+ */
+ String getFolderPath(String folderId);
+
+ /**
* Clear repository and remove all data.
*/
void clear();
@@ -301,4 +331,13 @@ public interface ObjectStore {
*/
List<StoredObject> getRelationships(String objectId, List<String> typeIds,
RelationshipDirection direction);
+
+ /**
+ * get an ACL object from an ACL id
+ * @param aclId
+ * id of ACL
+ * @return
+ * ACL of this id
+ */
+ public Acl getAcl(int aclId);
}
\ No newline at end of file
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java Sun Jul 28 11:02:14 2013
@@ -224,12 +224,6 @@ public interface StoredObject {
String getChangeToken();
/**
- * Persist the object so that it can be later retrieved by its id. Assign an
- * id to the object
- */
- void persist();
-
- /**
* Create all system base properties that need to be stored with every
* object in the repository This method is called when a new object is
* created to record all of the capturing data like the creation time,
@@ -273,32 +267,10 @@ public interface StoredObject {
void setCustomProperties(Map<String, PropertyData<?>> properties);
/**
- * get the Acl of the stored object
+ * get the Acl id of the stored object
*/
- Acl getAcl();
+ int getAclId();
- /**
- * get the relationships of the object
- *
- * @param includeSubRelationshipTypes
- * if true, relationships of a sub type will be returned as well
- * @param relationshipDirection
- * whether relationships where the object is the source, or the target or all
- * are returned
- * @param typeId
- * the type of the relationship, may be null
- * @param filter
- * a property filter, "*" means all properties
- * @param includeAllowableActions
- * whether allowable actions should be returned
- * @param maxItems
- * @param skipCount
- * @param extension
- * @param user
- * the id of the user calling the method
- */
- public List<StoredObject> getObjectRelationships(RelationshipDirection relationshipDirection, String user);
-
/*
* get the allowable actions of the object
*/
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/VersionedDocument.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/VersionedDocument.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/VersionedDocument.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/VersionedDocument.java Sun Jul 28 11:02:14 2013
@@ -33,7 +33,7 @@ import org.apache.chemistry.opencmis.com
* @author Jens
*
*/
-public interface VersionedDocument extends Fileable {
+public interface VersionedDocument extends Filing, StoredObject {
DocumentVersion addVersion(ContentStream content, VersioningState verState, String user);
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentImpl.java Sun Jul 28 11:02:14 2013
@@ -55,8 +55,8 @@ public class DocumentImpl extends Filing
public static final int THUMBNAIL_SIZE = 100;
- DocumentImpl(ObjectStoreImpl objStore) { // visibility should be package
- super(objStore);
+ public DocumentImpl() { // visibility should be package
+ super();
}
@Override
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentVersionImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentVersionImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentVersionImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/DocumentVersionImpl.java Sun Jul 28 11:02:14 2013
@@ -34,6 +34,7 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.ConfigurationSettings;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.MultiFiling;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
/**
@@ -42,7 +43,7 @@ import org.apache.chemistry.opencmis.inm
* @author Jens
*
*/
-public class DocumentVersionImpl extends StoredObjectImpl implements DocumentVersion, FilingMutable {
+public class DocumentVersionImpl extends StoredObjectImpl implements DocumentVersion, MultiFiling {
private final Long MAX_CONTENT_SIZE_KB = ConfigurationSettings.getConfigurationValueAsLong(ConfigConstants.MAX_CONTENT_SIZE_KB);
@@ -54,8 +55,8 @@ public class DocumentVersionImpl extends
boolean fIsPwc; // true if this is the PWC
public DocumentVersionImpl(String repositoryId, VersionedDocument container, ContentStream content,
- VersioningState verState, ObjectStoreImpl objStore) {
- super(objStore);
+ VersioningState verState) {
+ super();
setRepositoryId(repositoryId);
fContainer = (VersionedDocumentImpl) container;
setContent(content, false);
@@ -293,8 +294,8 @@ public class DocumentVersionImpl extends
}
@Override
- public List<String> getParents() {
- return fContainer.getParents();
+ public List<String> getParentIds() {
+ return fContainer.getParentIds();
}
@Override
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FilingImpl.java Sun Jul 28 11:02:14 2013
@@ -23,17 +23,18 @@ import java.util.List;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Fileable;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Filing;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.MultiFiling;
-public class FilingImpl extends StoredObjectImpl implements Fileable, FilingMutable {
+public class FilingImpl extends StoredObjectImpl implements Fileable, MultiFiling {
private List<String> parentIds = new ArrayList<String>(1);
- FilingImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ FilingImpl() {
+ super();
}
@Override
- public List<String> getParents() {
+ public List<String> getParentIds() {
return parentIds;
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FolderImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FolderImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FolderImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/FolderImpl.java Sun Jul 28 11:02:14 2013
@@ -39,6 +39,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.inmemory.FilterParser;
import org.apache.chemistry.opencmis.inmemory.NameValidator;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,12 +47,12 @@ public class FolderImpl extends StoredOb
private static final Logger LOG = LoggerFactory.getLogger(FilingImpl.class.getName());
protected String parentId;
- FolderImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ public FolderImpl() {
+ super();
}
- public FolderImpl(ObjectStoreImpl objStore, String name, String parentId) {
- super(objStore);
+ public FolderImpl(String name, String parentId) {
+ super();
init(name, parentId);
}
@@ -75,10 +76,10 @@ public class FolderImpl extends StoredOb
PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS, allowedChildObjects));
}
- if (FilterParser.isContainedInFilter(PropertyIds.PATH, requestedIds)) {
- String path = getPath();
- properties.put(PropertyIds.PATH, objFactory.createPropertyStringData(PropertyIds.PATH, path));
- }
+// if (FilterParser.isContainedInFilter(PropertyIds.PATH, requestedIds)) {
+// String path = getPath();
+// properties.put(PropertyIds.PATH, objFactory.createPropertyStringData(PropertyIds.PATH, path));
+// }
}
@Override
@@ -130,7 +131,7 @@ public class FolderImpl extends StoredOb
}
@Override
- public List<String> getParents() {
+ public List<String> getParentIds() {
if (parentId == null)
return Collections.emptyList();
else
@@ -148,34 +149,15 @@ public class FolderImpl extends StoredOb
}
@Override
- public String getPath() {
- StringBuffer sb = new StringBuffer();
- insertPathSegment(sb, this);
- return sb.toString();
- }
-
- @Override
public String getPathSegment() {
return getName();
}
+ @Override
public void setParentId (String parentId) {
this.parentId = parentId;
}
- private void insertPathSegment(StringBuffer sb, Folder f) {
- if (null == f.getParentId()) {
- if (sb.length() == 0) {
- sb.insert(0, Folder.PATH_SEPARATOR);
- }
- } else {
- sb.insert(0, f.getName());
- sb.insert(0, Folder.PATH_SEPARATOR);
- Folder parent = (Folder) fObjStore.getObjectById(f.getParentId());
- insertPathSegment(sb, parent);
- }
- }
-
// Helper functions
private void init(String name, String parentId) {
if (!NameValidator.isValidName(name)) {
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ItemImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ItemImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ItemImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ItemImpl.java Sun Jul 28 11:02:14 2013
@@ -27,8 +27,8 @@ import org.apache.chemistry.opencmis.inm
*/
public class ItemImpl extends FilingImpl implements Item, Filing {
- ItemImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ public ItemImpl() {
+ super();
}
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java Sun Jul 28 11:02:14 2013
@@ -46,6 +46,7 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Fileable;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Filing;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.MultiFiling;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStoreMultiFiling;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.Relationship;
@@ -206,15 +207,6 @@ public class ObjectStoreImpl implements
}
}
- public void removeVersion(DocumentVersion vers) {
- StoredObject found = fStoredObjectMap.remove(vers.getId());
-
- if (null == found) {
- throw new CmisInvalidArgumentException("Cannot delete object with id " + vers.getId()
- + ". Object does not exist.");
- }
- }
-
public String storeObject(StoredObject so) {
String id = so.getId();
// check if update or create
@@ -258,7 +250,7 @@ public class ObjectStoreImpl implements
// private helper methods
private void createRootFolder() {
- FolderImpl rootFolder = new FolderImpl(this);
+ FolderImpl rootFolder = new FolderImpl();
rootFolder.setName("RootFolder");
rootFolder.setParentId(null);
rootFolder.setTypeId(BaseTypeId.CMIS_FOLDER.value());
@@ -267,14 +259,15 @@ public class ObjectStoreImpl implements
rootFolder.setModifiedAtNow();
rootFolder.setRepositoryId(fRepositoryId);
rootFolder.setAclId(addAcl(InMemoryAcl.getDefaultAcl()));
- rootFolder.persist();
+ String id = storeObject(rootFolder);
+ rootFolder.setId(id);
fRootFolder = rootFolder;
}
@Override
public Document createDocument(String name, Map<String, PropertyData<?>> propMap, String user, Folder folder,
List<String> policies, Acl addACEs, Acl removeACEs) {
- DocumentImpl doc = new DocumentImpl(this);
+ DocumentImpl doc = new DocumentImpl();
doc.createSystemBasePropertiesWhenCreated(propMap, user);
doc.setCustomProperties(propMap);
doc.setRepositoryId(fRepositoryId);
@@ -282,20 +275,22 @@ public class ObjectStoreImpl implements
if (null != folder) {
if (hasChild(folder, name))
throw new CmisNameConstraintViolationException("Cannot create document an object with name " + name
- + " already exists in folder " + folder.getPath());
+ + " already exists in folder " + getFolderPath(folder.getId()));
doc.addParentId(folder.getId());
}
int aclId = getAclId(((FolderImpl) folder), addACEs, removeACEs);
doc.setAclId(aclId);
if (null != policies)
doc.setAppliedPolicies(policies);
+ String id = storeObject(doc);
+ doc.setId(id);
return doc;
}
@Override
public StoredObject createItem(String name, Map<String, PropertyData<?>> propMap, String user, Folder folder,
List<String> policies, Acl addACEs, Acl removeACEs) {
- ItemImpl item = new ItemImpl(this);
+ ItemImpl item = new ItemImpl();
item.createSystemBasePropertiesWhenCreated(propMap, user);
item.setCustomProperties(propMap);
item.setRepositoryId(fRepositoryId);
@@ -303,13 +298,15 @@ public class ObjectStoreImpl implements
if (null != folder) {
if (hasChild(folder, name))
throw new CmisNameConstraintViolationException("Cannot create document an object with name " + name
- + " already exists in folder " + folder.getPath());
+ + " already exists in folder " + getFolderPath(folder.getId()));
item.addParentId(folder.getId());
}
if (null != policies)
item.setAppliedPolicies(policies);
int aclId = getAclId(((FolderImpl) folder), addACEs, removeACEs);
item.setAclId(aclId);
+ String id = storeObject(item);
+ item.setId(id);
return item;
}
@@ -317,25 +314,28 @@ public class ObjectStoreImpl implements
public DocumentVersion createVersionedDocument(String name, Map<String, PropertyData<?>> propMap, String user,
Folder folder, List<String> policies, Acl addACEs, Acl removeACEs, ContentStream contentStream,
VersioningState versioningState) {
- VersionedDocumentImpl doc = new VersionedDocumentImpl(this);
+ VersionedDocumentImpl doc = new VersionedDocumentImpl();
doc.createSystemBasePropertiesWhenCreated(propMap, user);
doc.setCustomProperties(propMap);
doc.setRepositoryId(fRepositoryId);
doc.setName(name);
+ String id = storeObject(doc);
+ doc.setId(id);
DocumentVersion version = doc.addVersion(contentStream, versioningState, user);
version.createSystemBasePropertiesWhenCreated(propMap, user);
version.setCustomProperties(propMap);
if (null != folder) {
if (hasChild(folder, name))
throw new CmisNameConstraintViolationException("Cannot create document an object with name " + name
- + " already exists in folder " + folder.getPath());
+ + " already exists in folder " + getFolderPath(folder.getId()));
doc.addParentId(folder.getId());
}
int aclId = getAclId(((FolderImpl) folder), addACEs, removeACEs);
doc.setAclId(aclId);
if (null != policies)
doc.setAppliedPolicies(policies);
- doc.persist();
+ id = storeObject(version);
+ version.setId(id);
return version;
}
@@ -346,7 +346,7 @@ public class ObjectStoreImpl implements
if (null != parent && hasChild(parent, name)) {
throw new CmisNameConstraintViolationException("Cannot create folder, this name already exists in parent folder.");
}
- FolderImpl folder = new FolderImpl(this, name, parent.getId());
+ FolderImpl folder = new FolderImpl(name, parent.getId());
if (null != propMap) {
folder.createSystemBasePropertiesWhenCreated(propMap, user);
folder.setCustomProperties(propMap);
@@ -358,49 +358,35 @@ public class ObjectStoreImpl implements
if (null != policies)
folder.setAppliedPolicies(policies);
+ String id = storeObject(folder);
+ folder.setId(id);
return folder;
}
public Folder createFolder(String name) {
- Folder folder = new FolderImpl(this, name, null);
+ Folder folder = new FolderImpl(name, null);
folder.setRepositoryId(fRepositoryId);
return folder;
}
@Override
public StoredObject createPolicy(String name, String policyText, Map<String, PropertyData<?>> propMap, String user) {
- PolicyImpl policy = new PolicyImpl(this);
+ PolicyImpl policy = new PolicyImpl();
policy.createSystemBasePropertiesWhenCreated(propMap, user);
policy.setCustomProperties(propMap);
policy.setRepositoryId(fRepositoryId);
policy.setName(name);
policy.setPolicyText(policyText);
- policy.persist();
+ String id = storeObject(policy);
+ policy.setId(id);
return policy;
}
@Override
- public List<StoredObject> getCheckedOutDocuments(String orderBy, String user,
- IncludeRelationships includeRelationships) {
- List<StoredObject> res = new ArrayList<StoredObject>();
-
- for (StoredObject so : fStoredObjectMap.values()) {
- if (so instanceof VersionedDocument) {
- VersionedDocument verDoc = (VersionedDocument) so;
- if (verDoc.isCheckedOut() && hasReadAccess(user, verDoc)) {
- res.add(verDoc.getPwc());
- }
- }
- }
-
- return res;
- }
-
- @Override
public StoredObject createRelationship(String name, StoredObject sourceObject, StoredObject targetObject,
Map<String, PropertyData<?>> propMap, String user, Acl addACEs, Acl removeACEs) {
- RelationshipImpl rel = new RelationshipImpl(this);
+ RelationshipImpl rel = new RelationshipImpl();
rel.createSystemBasePropertiesWhenCreated(propMap, user);
rel.setCustomProperties(propMap);
rel.setRepositoryId(fRepositoryId);
@@ -411,11 +397,50 @@ public class ObjectStoreImpl implements
rel.setTarget(targetObject.getId());
int aclId = getAclId(null, addACEs, removeACEs);
rel.setAclId(aclId);
- rel.persist();
+ String id = storeObject(rel);
+ rel.setId(id);
return rel;
}
@Override
+ public void storeVersion(DocumentVersion version) {
+ String id = storeObject(version);
+ version.setId(id);
+ }
+
+ @Override
+ public void deleteVersion(DocumentVersion version) {
+ StoredObject found = fStoredObjectMap.remove(version.getId());
+
+ if (null == found) {
+ throw new CmisInvalidArgumentException("Cannot delete object with id " + version.getId()
+ + ". Object does not exist.");
+ }
+ }
+
+ @Override
+ public void upateObject(StoredObject so) {
+ // nothing to do
+ }
+
+ @Override
+ public List<StoredObject> getCheckedOutDocuments(String orderBy, String user,
+ IncludeRelationships includeRelationships) {
+ List<StoredObject> res = new ArrayList<StoredObject>();
+
+ for (StoredObject so : fStoredObjectMap.values()) {
+ if (so instanceof VersionedDocument) {
+ VersionedDocument verDoc = (VersionedDocument) so;
+ if (verDoc.isCheckedOut() && hasReadAccess(user, verDoc)) {
+ res.add(verDoc.getPwc());
+ }
+ }
+ }
+
+ return res;
+ }
+
+ @Override
public List<StoredObject> getRelationships(String objectId, List<String> typeIds, RelationshipDirection direction) {
List<StoredObject> res = new ArrayList<StoredObject>();
@@ -441,6 +466,27 @@ public class ObjectStoreImpl implements
}
@Override
+ public String getFolderPath(String folderId) {
+ StringBuffer sb = new StringBuffer();
+ insertPathSegment(sb, folderId);
+ return sb.toString();
+ }
+
+ private void insertPathSegment(StringBuffer sb, String folderId) {
+ Folder folder = (Folder) getObjectById(folderId);
+ if (null == folder.getParentId()) {
+ if (sb.length() == 0) {
+ sb.insert(0, Folder.PATH_SEPARATOR);
+ }
+ } else {
+ sb.insert(0, folder.getName());
+ sb.insert(0, Folder.PATH_SEPARATOR);
+ insertPathSegment(sb, folder.getParentId());
+ }
+ }
+
+
+ @Override
public Acl applyAcl(StoredObject so, Acl addAces, Acl removeAces, AclPropagation aclPropagation, String principalId) {
if (aclPropagation == AclPropagation.OBJECTONLY || !(so instanceof Folder)) {
return applyAcl(so, addAces, removeAces);
@@ -467,6 +513,8 @@ public class ObjectStoreImpl implements
return acls;
}
+
+ @Override
public Acl getAcl(int aclId) {
InMemoryAcl acl = getInMemoryAcl(aclId);
return acl == null ? InMemoryAcl.getDefaultAcl().toCommonsAcl() : acl.toCommonsAcl();
@@ -577,7 +625,7 @@ public class ObjectStoreImpl implements
StoredObject obj = getObject(id);
if (obj instanceof Fileable) {
Fileable pathObj = (Fileable) obj;
- if ((null == user || hasReadAccess(user, obj)) && pathObj.getParents().contains(folder.getId())) {
+ if ((null == user || hasReadAccess(user, obj)) && pathObj.getParentIds().contains(folder.getId())) {
if (pathObj instanceof VersionedDocument) {
DocumentVersion ver = ((VersionedDocument) pathObj).getLatestVersion(false);
children.add(ver);
@@ -598,7 +646,7 @@ public class ObjectStoreImpl implements
StoredObject obj = getObject(id);
if (hasReadAccess(user, obj) && obj instanceof Folder) {
Folder childFolder = (Folder) obj;
- if (childFolder.getParents().contains(folder.getId()) ) {
+ if (childFolder.getParentIds().contains(folder.getId()) ) {
folderChildren.add(childFolder);
}
}
@@ -618,11 +666,11 @@ public class ObjectStoreImpl implements
try {
if (hasChild(newParent, so.getName())) {
throw new CmisInvalidArgumentException("Cannot move object " + so.getName() + " to folder "
- + newParent.getPath() + ". A child with this name already exists.");
+ + getFolderPath(newParent.getId()) + ". A child with this name already exists.");
}
lock();
- if (so instanceof FilingMutable) {
- FilingMutable fi = (FilingMutable) so;
+ if (so instanceof MultiFiling) {
+ MultiFiling fi = (MultiFiling) so;
addParentIntern(fi, newParent);
removeParentIntern(fi, oldParent);
} else if (so instanceof FolderImpl) {
@@ -640,11 +688,11 @@ public class ObjectStoreImpl implements
if (so.getId().equals(fRootFolder.getId())) {
throw new CmisInvalidArgumentException("Root folder cannot be renamed.");
}
- for (String folderId : so.getParents()) {
+ for (String folderId : so.getParentIds()) {
Folder folder = (Folder) getObjectById(folderId);
if (hasChild(folder, newName))
throw new CmisNameConstraintViolationException("Cannot rename object to " + newName
- + ". This path already exists in parent " + folder.getPath() + ".");
+ + ". This path already exists in parent " + getFolderPath(folder.getId()) + ".");
}
so.setName(newName);
} finally {
@@ -664,7 +712,7 @@ public class ObjectStoreImpl implements
@Override
public List<String> getParentIds(Filing fileable, String user) {
List<String> visibleParents = new ArrayList<String>();
- List<String> parents = fileable.getParents();
+ List<String> parents = fileable.getParentIds();
for (String id: parents) {
StoredObject so = getObjectById(id);
if (hasReadAccess(user, so)) {
@@ -858,13 +906,13 @@ public class ObjectStoreImpl implements
throw new IllegalArgumentException(
"Cannot assign new parent folder, this name already exists in target folder.");
}
- FilingMutable fi;
- if (so instanceof FilingMutable)
- fi = (FilingMutable) so;
+ MultiFiling mfi;
+ if (so instanceof MultiFiling)
+ mfi = (MultiFiling) so;
else
throw new IllegalArgumentException("Object " + so.getId() + "is not fileable");
- addParentIntern(fi, parent);
+ addParentIntern(mfi, parent);
} finally {
unlock();
}
@@ -874,23 +922,23 @@ public class ObjectStoreImpl implements
public void removeParent(StoredObject so, Folder parent) {
try {
lock();
- FilingMutable fi;
- if (so instanceof FilingMutable)
- fi = (FilingMutable) so;
+ MultiFiling mfi;
+ if (so instanceof MultiFiling)
+ mfi = (MultiFiling) so;
else
throw new IllegalArgumentException("Object " + so.getId() + "is not fileable");
- removeParentIntern(fi, parent);
+ removeParentIntern(mfi, parent);
} finally {
unlock();
}
}
- private void addParentIntern(FilingMutable so, Folder parent) {
+ private void addParentIntern(MultiFiling so, Folder parent) {
so.addParentId(parent.getId());
}
- private void removeParentIntern(FilingMutable so, Folder parent) {
+ private void removeParentIntern(MultiFiling so, Folder parent) {
so.removeParentId(parent.getId());
}
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java Sun Jul 28 11:02:14 2013
@@ -29,8 +29,8 @@ import org.apache.chemistry.opencmis.inm
public class PolicyImpl extends StoredObjectImpl implements Policy {
- PolicyImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ public PolicyImpl() {
+ super();
}
private String policyText;
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java Sun Jul 28 11:02:14 2013
@@ -32,8 +32,8 @@ public class RelationshipImpl extends St
private String sourceObjId;
private String targetObjId;
- RelationshipImpl(ObjectStoreImpl objStore) {
- super(objStore);
+ public RelationshipImpl() {
+ super();
}
@Override
Modified: chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java?rev=1507777&r1=1507776&r2=1507777&view=diff
==============================================================================
--- chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java (original)
+++ chemistry/opencmis/branches/inmemory-refactoring/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java Sun Jul 28 11:02:14 2013
@@ -210,26 +210,11 @@ public class StoreManagerImpl implements
@Override
public Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId,
boolean includePropertyDefinitions) {
-// Collection<TypeDefinitionContainer> result;
TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
if (null == typeManager) {
throw new CmisInvalidArgumentException("Unknown repository " + repositoryId);
}
Collection<TypeDefinitionContainer> typeColl = getRootTypes(repositoryId, includePropertyDefinitions);
-// if (includePropertyDefinitions) {
-// result = typeColl;
-// } else {
-// result = new ArrayList<TypeDefinitionContainer>(typeColl.size());
-// // copy list and omit properties
-// for (TypeDefinitionContainer c : typeColl) {
-// AbstractTypeDefinition td = ((AbstractTypeDefinition) c.getTypeDefinition()).clone();
-// TypeDefinitionContainerImpl tdc = new TypeDefinitionContainerImpl(td);
-// tdc.setChildren(c.getChildren());
-// td.setPropertyDefinitions(null);
-// result.add(tdc);
-// }
-// }
-// return result;
return typeColl;
}
@@ -327,7 +312,7 @@ public class StoreManagerImpl implements
}
}
- public List<TypeDefinition> initTypeSystem(String typeCreatorClassName) {
+ public static List<TypeDefinition> initTypeSystem(String typeCreatorClassName) {
List<TypeDefinition> typesList = null;
@@ -374,7 +359,7 @@ public class StoreManagerImpl implements
typeDefs = initTypeSystem(typeCreatorClassName);
}
- typeManager.initTypeSystem(typeDefs);
+ typeManager.initTypeSystem(typeDefs, true);
}
@SuppressWarnings("serial")
@@ -565,7 +550,7 @@ public class StoreManagerImpl implements
* parent container where to add clone as child
* @return cloned type definition
*/
- private static TypeDefinitionContainer cloneTypeList(int depth, boolean includePropertyDefinitions,
+ public static TypeDefinitionContainer cloneTypeList(int depth, boolean includePropertyDefinitions,
TypeDefinitionContainer tdc, TypeDefinitionContainer parent) {
AbstractTypeDefinition tdClone = ((AbstractTypeDefinition) tdc.getTypeDefinition()).clone();