Author: jens
Date: Wed Dec 15 10:04:40 2010
New Revision: 1049469
URL: http://svn.apache.org/viewvc?rev=1049469&view=rev
Log:
InMemory Repository fix a couple of minor bugs/enhancements:
- better checking of repositoryId and objectId set to null
- use CmisException and not RuntimeException for invalid arguments
- fill optional property query name, display name and local name for properties
- add numItems value to getChildren
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
Wed Dec 15 10:04:40 2010
@@ -22,6 +22,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.Properties;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import
org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
@@ -58,6 +59,12 @@ public class InMemoryAbstractServiceImpl
*/
protected StoredObject checkStandardParameters(String repositoryId, String
objectId) {
+ if (null == repositoryId)
+ throw new CmisInvalidArgumentException("Repository Id cannot be
null.");
+
+ if (null == objectId)
+ throw new CmisInvalidArgumentException("Object Id cannot be
null.");
+
ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
if (objStore == null)
@@ -73,6 +80,9 @@ public class InMemoryAbstractServiceImpl
protected StoredObject checkExistingObjectId(ObjectStore objStore, String
objectId) {
+ if (null == objectId)
+ throw new CmisInvalidArgumentException("Object Id cannot be
null.");
+
StoredObject so = objStore.getObjectById(objectId);
if (so == null)
@@ -82,6 +92,9 @@ public class InMemoryAbstractServiceImpl
}
protected void checkRepositoryId(String repositoryId) {
+ if (null == repositoryId)
+ throw new CmisInvalidArgumentException("Repository Id cannot be
null.");
+
ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
if (objStore == null)
@@ -92,7 +105,7 @@ public class InMemoryAbstractServiceImpl
String typeId = (String)
properties.getProperties().get(PropertyIds.OBJECT_TYPE_ID).getFirstValue();
TypeDefinitionContainer typeDefC =
fStoreManager.getTypeById(repositoryId, typeId);
if (typeDefC == null)
- throw new RuntimeException("Cannot create object, a type with id "
+ typeId + " is unknown");
+ throw new CmisInvalidArgumentException("Cannot create object, a
type with id " + typeId + " is unknown");
return typeDefC.getTypeDefinition();
}
@@ -149,7 +162,7 @@ public class InMemoryAbstractServiceImpl
protected void checkIsVersionableObject(StoredObject so) {
if (!(so instanceof VersionedDocument || so instanceof
DocumentVersion))
- throw new RuntimeException(
+ throw new CmisInvalidArgumentException(
"Object is of a versionable type but not instance of
VersionedDocument or DocumentVersion.");
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
Wed Dec 15 10:04:40 2010
@@ -306,7 +306,7 @@ public class InMemoryNavigationServiceIm
}
TypeDefinition td = fStoreManager.getTypeById(repositoryId,
spo.getTypeId()).getTypeDefinition();
- Properties props =
PropertyCreationHelper.getPropertiesFromObject(spo, td, requestedIds);
+ Properties props =
PropertyCreationHelper.getPropertiesFromObject(spo, td, requestedIds, true);
objectData.setProperties(props);
oifd.setObject(objectData);
@@ -320,6 +320,7 @@ public class InMemoryNavigationServiceIm
}
result.setObjects(folderList);
+ result.setNumItems(BigInteger.valueOf(folderList.size()));
if (objectInfos != null) {
ObjectInfoImpl objectInfo = new ObjectInfoImpl();
fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so,
objectInfo);
@@ -431,7 +432,7 @@ public class InMemoryNavigationServiceIm
void copyFilteredProperties(String repositoryId, StoredObject so, String
filter, ObjectDataImpl objData) {
List<String> requestedIds =
FilterParser.getRequestedIdsFromFilter(filter);
TypeDefinition td = fStoreManager.getTypeById(repositoryId,
so.getTypeId()).getTypeDefinition();
- Properties props = PropertyCreationHelper.getPropertiesFromObject(so,
td, requestedIds);
+ Properties props = PropertyCreationHelper.getPropertiesFromObject(so,
td, requestedIds, true);
objData.setProperties(props);
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
Wed Dec 15 10:04:40 2010
@@ -127,7 +127,7 @@ public class InMemoryObjectServiceImpl e
List<String> requestedIds =
FilterParser.getRequestedIdsFromFilter("*");
TypeDefinition td = fStoreManager.getTypeById(repositoryId,
so.getTypeId()).getTypeDefinition();
- Properties existingProps =
PropertyCreationHelper.getPropertiesFromObject(so, td, requestedIds);
+ Properties existingProps =
PropertyCreationHelper.getPropertiesFromObject(so, td, requestedIds, true);
PropertiesImpl newPD = new PropertiesImpl();
// copy all existing properties
@@ -185,18 +185,18 @@ public class InMemoryObjectServiceImpl e
ExtensionsData extension, ObjectInfoHandler objectInfos) {
if (null == properties || null == properties.getProperties())
- throw new RuntimeException("Cannot create object, without
properties.");
+ throw new CmisInvalidArgumentException("Cannot create object,
without properties.");
// Find out what kind of object needs to be created
PropertyData<String> pd = (PropertyData<String>)
properties.getProperties().get(PropertyIds.OBJECT_TYPE_ID);
String typeId = pd == null ? null : pd.getFirstValue();
if (null == typeId)
- throw new RuntimeException(
+ throw new CmisInvalidArgumentException(
"Cannot create object, without a type (no property with id
CMIS_OBJECT_TYPE_ID).");
TypeDefinitionContainer typeDefC =
fStoreManager.getTypeById(repositoryId, typeId);
if (typeDefC == null)
- throw new RuntimeException("Cannot create object, a type with id "
+ typeId + " is unknown");
+ throw new CmisInvalidArgumentException("Cannot create object, a
type with id " + typeId + " is unknown");
// check if the given type is a document type
BaseTypeId typeBaseId = typeDefC.getTypeDefinition().getBaseTypeId();
@@ -279,10 +279,10 @@ public class InMemoryObjectServiceImpl e
ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
if (null == so)
- throw new RuntimeException("Cannot delete object with id " +
folderId + ". Object does not exist.");
+ throw new CmisInvalidArgumentException("Cannot delete object with
id " + folderId + ". Object does not exist.");
if (!(so instanceof Folder))
- throw new RuntimeException("deleteTree can only be invoked on a
folder, but id " + folderId
+ throw new CmisInvalidArgumentException("deleteTree can only be
invoked on a folder, but id " + folderId
+ " does not refer to a folder");
if (unfileObjects == UnfileObject.UNFILE)
@@ -423,7 +423,7 @@ public class InMemoryObjectServiceImpl e
// build properties collection
List<String> requestedIds =
FilterParser.getRequestedIdsFromFilter(filter);
TypeDefinition td = fStoreManager.getTypeById(repositoryId,
so.getTypeId()).getTypeDefinition();
- Properties props = PropertyCreationHelper.getPropertiesFromObject(so,
td, requestedIds);
+ Properties props = PropertyCreationHelper.getPropertiesFromObject(so,
td, requestedIds, true);
LOG.debug("stop getProperties()");
return props;
}
@@ -696,7 +696,7 @@ public class InMemoryObjectServiceImpl e
// check if the given type is a document type
if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT))
- throw new RuntimeException("Cannot create a document, with a
non-document type: " + typeDef.getId());
+ throw new CmisInvalidArgumentException("Cannot create a document,
with a non-document type: " + typeDef.getId());
// check name syntax
if (!NameValidator.isValidId(name))
@@ -799,7 +799,7 @@ public class InMemoryObjectServiceImpl e
// check if the given type is a folder type
if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_FOLDER))
- throw new RuntimeException("Cannot create a folder, with a
non-folder type: " + typeDef.getId());
+ throw new CmisInvalidArgumentException("Cannot create a folder,
with a non-folder type: " + typeDef.getId());
Map<String, PropertyData<?>> propMap = properties.getProperties();
Map<String, PropertyData<?>> propMapNew =
setDefaultProperties(typeDef, propMap);
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
Wed Dec 15 10:04:40 2010
@@ -30,6 +30,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
import org.apache.chemistry.opencmis.commons.impl.server.ObjectInfoImpl;
@@ -141,12 +142,12 @@ public class InMemoryVersioningServiceIm
String filter, Boolean includeAllowableActions, ExtensionsData
extension, ObjectInfoHandler objectInfos) {
if (null == versionSeriesId)
- throw new RuntimeException("getAllVersions requires a version
series id, but ist was null.");
+ throw new CmisInvalidArgumentException("getAllVersions requires a
version series id, but ist was null.");
StoredObject so = checkStandardParameters(repositoryId,
versionSeriesId);
if (!(so instanceof VersionedDocument))
- throw new RuntimeException("Object is not instance of a
VersionedDocument (version series)");
+ throw new CmisInvalidArgumentException("Object is not instance of
a VersionedDocument (version series)");
VersionedDocument verDoc = (VersionedDocument) so;
List<ObjectData> res = new ArrayList<ObjectData>();
@@ -184,7 +185,7 @@ public class InMemoryVersioningServiceIm
objData = getObject(context, repositoryId, so.getId(), filter,
includeAllowableActions, extension,
objectInfos);
} else
- throw new RuntimeException("Object is not instance of a document
(version series)");
+ throw new CmisInvalidArgumentException("Object is not instance of
a document (version series)");
// provide information for Atom links for version series:
if (context.isObjectInfoRequired()) {
@@ -208,12 +209,12 @@ public class InMemoryVersioningServiceIm
} else if (so instanceof Document) {
latestVersionObject = so;
} else
- throw new RuntimeException("Object is not instance of a document
(version series)");
+ throw new CmisInvalidArgumentException("Object is not instance of
a document (version series)");
List<String> requestedIds =
FilterParser.getRequestedIdsFromFilter(filter);
TypeDefinition td = fStoreManager.getTypeById(repositoryId,
so.getTypeId()).getTypeDefinition();
Properties props =
PropertyCreationHelper.getPropertiesFromObject(latestVersionObject, td,
- requestedIds);
+ requestedIds, true);
return props;
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
Wed Dec 15 10:04:40 2010
@@ -28,6 +28,7 @@ import java.util.concurrent.locks.Reentr
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
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.Folder;
@@ -181,7 +182,7 @@ public class ObjectStoreImpl implements
StoredObject found = fStoredObjectMap.remove(vers.getId());
if (null == found)
- throw new RuntimeException("Cannot delete object with id " +
vers.getId() + ". Object does not exist.");
+ throw new CmisInvalidArgumentException("Cannot delete object with
id " + vers.getId() + ". Object does not exist.");
}
// public void changePath(StoredObject obj, String oldPath, String newPath)
@@ -297,10 +298,10 @@ public class ObjectStoreImpl implements
private void deleteFolder(String folderId) {
StoredObject folder = fStoredObjectMap.get(folderId);
if (folder == null)
- throw new RuntimeException("Unknown object with id: " + folderId);
+ throw new CmisInvalidArgumentException("Unknown object with id: "
+ folderId);
if (!(folder instanceof FolderImpl)) {
- throw new RuntimeException("Cannot delete folder with id: " +
folderId
+ throw new CmisInvalidArgumentException("Cannot delete folder with
id: " + folderId
+ ". Object exists but is not a folder.");
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
Wed Dec 15 10:04:40 2010
@@ -129,7 +129,7 @@ public class StoreManagerImpl implements
int depth) {
TypeManager typeManager =
fMapRepositoryToTypeManager.get(repositoryId);
if (null == typeManager)
- throw new RuntimeException("Unknown repository " + repositoryId);
+ throw new CmisInvalidArgumentException("Unknown repository " +
repositoryId);
TypeDefinitionContainer tc = typeManager.getTypeById(typeId);
List<TypeDefinitionContainer> result = null;
@@ -154,7 +154,7 @@ public class StoreManagerImpl implements
Collection<TypeDefinitionContainer> result;
TypeManager typeManager =
fMapRepositoryToTypeManager.get(repositoryId);
if (null == typeManager)
- throw new RuntimeException("Unknown repository " + repositoryId);
+ throw new CmisInvalidArgumentException("Unknown repository " +
repositoryId);
Collection<TypeDefinitionContainer> typeColl =
typeManager.getTypeDefinitionList();
if (includePropertyDefinitions) {
result = typeColl;
@@ -179,7 +179,7 @@ public class StoreManagerImpl implements
public List<TypeDefinitionContainer> getRootTypes(String repositoryId) {
TypeManager typeManager =
fMapRepositoryToTypeManager.get(repositoryId);
if (null == typeManager)
- throw new RuntimeException("Unknown repository " + repositoryId);
+ throw new CmisInvalidArgumentException("Unknown repository " +
repositoryId);
List<TypeDefinitionContainer> rootTypes = typeManager.getRootTypes();
return rootTypes;
@@ -198,7 +198,7 @@ public class StoreManagerImpl implements
public void clearTypeSystem(String repositoryId) {
TypeManagerImpl typeManager =
fMapRepositoryToTypeManager.get(repositoryId);
if (null == typeManager)
- throw new RuntimeException("Unknown repository " + repositoryId);
+ throw new CmisInvalidArgumentException("Unknown repository " +
repositoryId);
typeManager.clearTypeSystem();
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
Wed Dec 15 10:04:40 2010
@@ -27,6 +27,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.PropertyData;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
+import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
import org.apache.chemistry.opencmis.inmemory.FilterParser;
import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
@@ -71,10 +72,10 @@ public class VersionedDocumentImpl exten
public boolean deleteVersion(DocumentVersion version) {
if (fIsCheckedOut)
- throw new RuntimeException("version cannot be deleted if document
is checked-out: " + version.getId());
+ throw new CmisInvalidArgumentException("version cannot be deleted
if document is checked-out: " + version.getId());
boolean found = fVersions.remove(version);
if (!found)
- throw new RuntimeException("Version is not contained in the
document:" + version.getId());
+ throw new CmisInvalidArgumentException("Version is not contained
in the document:" + version.getId());
return !fVersions.isEmpty();
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
Wed Dec 15 10:04:40 2010
@@ -34,6 +34,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.PropertyData;
import org.apache.chemistry.opencmis.commons.data.PropertyInteger;
import org.apache.chemistry.opencmis.commons.definitions.Choice;
+import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.chemistry.opencmis.commons.enums.Cardinality;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
@@ -183,32 +184,7 @@ public class PropertyCreationHelper {
prop.setDefaultValue(Collections.singletonList(defVal));
}
- // internal helpers
- private static void createStandardDefinition(AbstractPropertyDefinition<?>
prop, String id, PropertyType propType,
- String displayName, Cardinality card) {
-
- if (!NameValidator.isValidId(id))
- if (!NameValidator.isValidId(id))
- throw new
CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
-
- prop.setId(id);
- if (displayName == null)
- prop.setDisplayName("Sample " + prop.getId() + " boolean
property");
- else
- prop.setDisplayName(displayName);
- prop.setLocalName(id);
- prop.setLocalNamespace("local");
- prop.setQueryName(id);
- prop.setIsInherited(false);
- prop.setCardinality(card);
- prop.setIsOpenChoice(false);
- prop.setIsQueryable(true);
- prop.setIsRequired(false);
- prop.setPropertyType(propType);
- prop.setUpdatability(Updatability.READWRITE);
- }
-
- public static Properties getPropertiesFromObject(StoredObject so,
TypeDefinition td, List<String> requestedIds) {
+ public static Properties getPropertiesFromObject(StoredObject so,
TypeDefinition td, List<String> requestedIds, boolean fillOptionalPropertyData)
{
// build properties collection
BindingsObjectFactory objectFactory = new BindingsObjectFactoryImpl();
@@ -229,6 +205,11 @@ public class PropertyCreationHelper {
}
}
List<PropertyData<?>> propertiesList = new
ArrayList<PropertyData<?>>(properties.values());
+
+ if (fillOptionalPropertyData) { // add query name, local name,
display name
+ fillOptionalPropertyData(td, propertiesList);
+ }
+
Properties props = objectFactory.createPropertiesData(propertiesList);
return props;
}
@@ -254,21 +235,30 @@ public class PropertyCreationHelper {
}
}
+
Map<String, PropertyData<?>> mappedProperties = new HashMap<String,
PropertyData<?>>();
if (requestedIds.containsKey("*")) {
for (Map.Entry<String, PropertyData<?>> prop :
properties.entrySet()) {
// map property id to property query name
String queryName =
td.getPropertyDefinitions().get(prop.getKey()).getQueryName();
+ String localName =
td.getPropertyDefinitions().get(prop.getKey()).getLocalName();
+ String displayName =
td.getPropertyDefinitions().get(prop.getKey()).getDisplayName();
AbstractPropertyData<?> ad = (AbstractPropertyData<?>)
prop.getValue(); // a bit dirty
ad.setQueryName(queryName);
+ ad.setLocalName(localName);
+ ad.setDisplayName(displayName);
mappedProperties.put(queryName, prop.getValue());
}
} else {
// replace all ids with query names or alias:
for (Map.Entry<String, PropertyData<?>> prop :
properties.entrySet()) {
String queryNameOrAlias = requestedIds.get(prop.getKey());
+ String localName =
td.getPropertyDefinitions().get(prop.getKey()).getLocalName();
+ String displayName =
td.getPropertyDefinitions().get(prop.getKey()).getDisplayName();
AbstractPropertyData<?> ad = (AbstractPropertyData<?>)
prop.getValue(); // a bit dirty
ad.setQueryName(queryNameOrAlias);
+ ad.setLocalName(localName);
+ ad.setDisplayName(displayName);
mappedProperties.put(queryNameOrAlias, prop.getValue());
}
}
@@ -295,7 +285,7 @@ public class PropertyCreationHelper {
// build properties collection
List<String> requestedIds =
FilterParser.getRequestedIdsFromFilter(filter);
- Properties props = getPropertiesFromObject(so, typeDef, requestedIds);
+ Properties props = getPropertiesFromObject(so, typeDef, requestedIds,
true);
// fill output object
if (null != includeAllowableActions && includeAllowableActions) {
@@ -347,4 +337,47 @@ public class PropertyCreationHelper {
return od;
}
+
+ // internal helpers
+ private static void createStandardDefinition(AbstractPropertyDefinition<?>
prop, String id, PropertyType propType,
+ String displayName, Cardinality card) {
+
+ if (!NameValidator.isValidId(id))
+ if (!NameValidator.isValidId(id))
+ throw new
CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
+
+ prop.setId(id);
+ if (displayName == null)
+ prop.setDisplayName("Sample " + prop.getId() + " boolean
property");
+ else
+ prop.setDisplayName(displayName);
+ prop.setLocalName(id);
+ prop.setLocalNamespace("local");
+ prop.setQueryName(id);
+ prop.setIsInherited(false);
+ prop.setCardinality(card);
+ prop.setIsOpenChoice(false);
+ prop.setIsQueryable(true);
+ prop.setIsRequired(false);
+ prop.setPropertyType(propType);
+ prop.setUpdatability(Updatability.READWRITE);
+ }
+
+ private static void fillOptionalPropertyData(TypeDefinition td,
List<PropertyData<?>> properties) {
+ for (PropertyData<?> pd : properties)
+ fillOptionalPropertyData(td, (AbstractPropertyData<?>) pd);
+ }
+
+ private static void fillOptionalPropertyData(TypeDefinition td,
AbstractPropertyData<?> property) {
+ PropertyDefinition<?> pd =
td.getPropertyDefinitions().get(property.getId());
+ if (null != pd) {
+ String displayName = pd.getDisplayName();
+ String queryName = pd.getQueryName();
+ String localName = pd.getLocalName();
+ property.setDisplayName(displayName);
+ property.setLocalName(localName);
+ property.setQueryName(queryName);
+ }
+ }
+
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java?rev=1049469&r1=1049468&r2=1049469&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java
Wed Dec 15 10:04:40 2010
@@ -19,6 +19,7 @@
package org.apache.chemistry.opencmis.inmemory;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.math.BigInteger;
@@ -89,6 +90,7 @@ public class NavigationServiceTest exten
}
assertEquals(3, folders.size());
assertEquals("Folder 3", folders.get(0).getPathSegment());
+ assertTrue(result.getNumItems().longValue() > 0);
log.info("... testGetChildren() finished.");
}