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 2010/02/25 20:31:38 UTC
svn commit: r916414 -
/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/
Author: jens
Date: Thu Feb 25 19:31:37 2010
New Revision: 916414
URL: http://svn.apache.org/viewvc?rev=916414&view=rev
Log:
some smaller cleanups and optimizations
Modified:
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java?rev=916414&r1=916413&r2=916414&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java Thu Feb 25 19:31:37 2010
@@ -44,7 +44,19 @@
fStoreManager = storeManager;
}
- protected void checkStandardParameters(String repositoryId, String objectId) {
+ /**
+ * check if repository is known and that object exists. To avoid later calls
+ * to again retrieve the object from the id return the retrieved object for
+ * later use.
+ *
+ * @param repositoryId
+ * repository id
+ * @param objectId
+ * object id
+ * @return
+ * object for objectId
+ */
+ protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
@@ -54,15 +66,19 @@
StoredObject so = objStore.getObjectById(objectId);
if (so==null)
- throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+ throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+ return so;
}
- protected void checkExistingObjectId(ObjectStore objStore, String objectId) {
+ protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
StoredObject so = objStore.getObjectById(objectId);
if (so==null)
- throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+ throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+ return so;
}
protected void checkRepositoryId(String repositoryId) {
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java?rev=916414&r1=916413&r2=916414&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java Thu Feb 25 19:31:37 2010
@@ -37,13 +37,12 @@
public void addObjectToFolder(String repositoryId, String objectId, String folderId,
Boolean allVersions, ExtensionsData extension) {
- checkParams(repositoryId, objectId, folderId);
+ StoredObject[] so2 = checkParams(repositoryId, objectId, folderId);
if (allVersions != null && allVersions.booleanValue() == false)
throw new CmisNotSupportedException(
"Cannot add object to folder, version specific filing is not supported.");
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId);
- StoredObject folder = objectStore.getObjectById(folderId);
+ StoredObject so = so2[0];
+ StoredObject folder = so2[1];
checkObjects(so, folder);
Folder newParent = (Folder) folder;
@@ -53,22 +52,23 @@
public void removeObjectFromFolder(String repositoryId, String objectId, String folderId,
ExtensionsData extension) {
- checkStandardParameters(repositoryId, objectId);
+
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- checkExistingObjectId(objectStore, folderId);
+ StoredObject folder = checkExistingObjectId(objectStore, folderId);
- StoredObject so = objectStore.getObjectById(objectId);
- StoredObject folder = objectStore.getObjectById(folderId);
checkObjects(so, folder);
Folder parent = (Folder) folder;
MultiFiling obj = (MultiFiling) so;
obj.removeParent(parent);
}
- private void checkParams(String repositoryId, String objectId, String folderId) {
- checkStandardParameters(repositoryId, objectId);
+ private StoredObject[] checkParams(String repositoryId, String objectId, String folderId) {
+ StoredObject[] so = new StoredObject[2];
+ so[0] = checkStandardParameters(repositoryId, objectId);
ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- checkExistingObjectId(objectStore, folderId);
+ so[1] = checkExistingObjectId(objectStore, folderId);
+ return so;
}
private void checkObjects(StoredObject so, StoredObject folder) {
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java?rev=916414&r1=916413&r2=916414&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java Thu Feb 25 19:31:37 2010
@@ -102,7 +102,6 @@
StoredObject so = fStoreManager.getObjectStore(repositoryId).getObjectById(obj.getId());
log.info("Checked out: children:" + obj.getId());
if (so instanceof DocumentVersion && ((DocumentVersion)so).getParentDocument().isCheckedOut())
-// if (so instanceof VersionedDocument && ((VersionedDocument)so).isCheckedOut())
odList.add(obj);
}
}
@@ -190,12 +189,9 @@
ExtensionsData extension) {
log.debug("start getFolderParent()");
- checkStandardParameters(repositoryId, folderId);
+ StoredObject so = checkStandardParameters(repositoryId, folderId);
- ObjectStore fs = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = fs.getObjectById(folderId);
- Folder folder = null;
-
+ Folder folder = null;
if (so instanceof Folder)
folder = (Folder) so;
else
@@ -215,16 +211,13 @@
String renditionFilter, Boolean includeRelativePathSegment, ExtensionsData extension) {
log.debug("start getObjectParents()");
- checkStandardParameters(repositoryId, objectId);
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
// for now we have only folders that have a parent and the in-memory provider only has one
// parent for each object (no multi-filing)
List<ObjectParentData> result = null;
- ObjectStore fs = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = fs.getObjectById(objectId);
- Filing spo = null;
-
+ Filing spo = null;
if (so instanceof Filing)
spo = (Filing) so;
else
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java?rev=916414&r1=916413&r2=916414&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java Thu Feb 25 19:31:37 2010
@@ -95,7 +95,7 @@
log.debug("start createDocument()");
checkRepositoryId(repositoryId);
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
// get name from properties
PropertyData<?> pd = properties.getProperties().get(PropertyIds.CMIS_NAME);
@@ -107,7 +107,7 @@
Folder folder = null;
if (null != folderId) {
- StoredObject so = folderStore.getObjectById(folderId);
+ StoredObject so = objectStore.getObjectById(folderId);
if (null == so)
throw new CmisInvalidArgumentException(" Cannot create document, folderId: " + folderId
@@ -190,16 +190,11 @@
log.debug("start createDocumentFromSource()");
- checkStandardParameters(repositoryId, sourceId);
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- checkExistingObjectId(folderStore, sourceId);
+ StoredObject so = checkStandardParameters(repositoryId, sourceId);
ContentStreamData content = getContentStream(repositoryId, sourceId, null, BigInteger
.valueOf(-1), BigInteger.valueOf(-1), null);
- // get all properties of existing document
- StoredObject so = folderStore.getObjectById(sourceId);
-
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + sourceId);
@@ -346,11 +341,8 @@
public void deleteContentStream(String repositoryId, Holder<String> objectId,
Holder<String> changeToken, ExtensionsData extension) {
log.debug("start deleteContentStream()");
- checkStandardParameters(repositoryId, objectId.getValue());
+ StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = folderStore.getObjectById(objectId.getValue());
-
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -375,15 +367,14 @@
log.debug("start deleteObject()");
checkStandardParameters(repositoryId, objectId);
- ObjectStore fs = fStoreManager.getObjectStore(repositoryId);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
log.info("delete object for id: " + objectId);
// check if it is the root folder
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- if (objectId.equals(folderStore.getRootFolder().getId()))
+ if (objectId.equals(objectStore.getRootFolder().getId()))
throw new CmisNotSupportedException("You can't delete a root folder");
- fs.deleteObject(objectId);
+ objectStore.deleteObject(objectId);
log.debug("stop deleteObject()");
}
@@ -398,8 +389,9 @@
*/
public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
UnfileObjects unfileObject, Boolean continueOnFailure, ExtensionsData extension) {
+
log.debug("start deleteTree()");
- checkStandardParameters(repositoryId, folderId);
+ StoredObject so = checkStandardParameters(repositoryId, folderId);
List<String> failedToDeleteIds = new ArrayList<String>();
FailedToDeleteDataImpl result = new FailedToDeleteDataImpl();
@@ -410,9 +402,7 @@
if (null == continueOnFailure)
continueOnFailure = false;
-
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = folderStore.getObjectById(folderId);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
if (null == so)
throw new RuntimeException("Cannot delete object with id " + folderId
@@ -426,11 +416,11 @@
throw new CmisNotSupportedException("This repository does not support unfile operations.");
// check if it is the root folder
- if (folderId.equals(folderStore.getRootFolder().getId()))
+ if (folderId.equals(objectStore.getRootFolder().getId()))
throw new CmisNotSupportedException("You can't delete a root folder");
// recursively delete folder
- deleteRecursive(folderStore, (Folder) so, continueOnFailure, allVersions, failedToDeleteIds);
+ deleteRecursive(objectStore, (Folder) so, continueOnFailure, allVersions, failedToDeleteIds);
result.setIds(failedToDeleteIds);
log.debug("stop deleteTree()");
@@ -447,9 +437,8 @@
public AllowableActionsData getAllowableActions(String repositoryId, String objectId,
ExtensionsData extension) {
log.debug("start getAllowableActions()");
- checkStandardParameters(repositoryId, objectId);
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId);
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -471,9 +460,7 @@
BigInteger offset, BigInteger length, ExtensionsData extension) {
log.debug("start getContentStream()");
- checkStandardParameters(repositoryId, objectId);
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = folderStore.getObjectById(objectId);
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -501,9 +488,7 @@
String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
log.debug("start getObject()");
- checkStandardParameters(repositoryId, objectId);
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId);
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -549,10 +534,7 @@
ExtensionsData extension) {
log.debug("start getProperties()");
- checkStandardParameters(repositoryId, objectId);
-
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = folderStore.getObjectById(objectId);
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
if (so == null)
throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -593,11 +575,10 @@
public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId,
String sourceFolderId, ExtensionsData extension) {
log.debug("start moveObject()");
- checkStandardParameters(repositoryId, objectId.getValue());
+ StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
Folder targetFolder = null;
Folder sourceFolder = null;
- ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = folderStore.getObjectById(objectId.getValue());
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
Filing spo = null;
if (null == so)
@@ -608,7 +589,7 @@
throw new CmisInvalidArgumentException("Object must be folder or document: "
+ objectId.getValue());
- StoredObject soTarget = folderStore.getObjectById(targetFolderId);
+ StoredObject soTarget = objectStore.getObjectById(targetFolderId);
if (null == soTarget)
throw new CmisObjectNotFoundException("Unknown target folder: " + targetFolderId);
else if (soTarget instanceof Folder)
@@ -616,7 +597,7 @@
else
throw new CmisNotSupportedException("Destination " + targetFolderId + " of a move operation must be a folder");
- StoredObject soSource = folderStore.getObjectById(sourceFolderId);
+ StoredObject soSource = objectStore.getObjectById(sourceFolderId);
if (null == soSource)
throw new CmisObjectNotFoundException("Unknown source folder: " + sourceFolderId);
else if (soSource instanceof Folder)
@@ -644,23 +625,6 @@
log.debug("stop moveObject()");
}
- private boolean hasDescendant(Folder sourceFolder, Folder targetFolder) {
- String sourceId = sourceFolder.getId();
- String targetId = targetFolder.getId();
- while (targetId != null) {
- // log.info("comparing source id " + sourceId + " with predecessor " +
- // targetId);
- if (targetId.equals(sourceId))
- return true;
- targetFolder = targetFolder.getParent();
- if (null != targetFolder)
- targetId = targetFolder.getId();
- else
- targetId = null;
- }
- return false;
- }
-
/*
* (non-Javadoc)
*
@@ -716,13 +680,9 @@
Holder<String> changeToken, PropertiesData properties, ExtensionsData extension) {
log.debug("start updateProperties()");
- checkStandardParameters(repositoryId, objectId.getValue());
+ StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
-
- // Validation stuff
- StoredObject so = objectStore.getObjectById(objectId.getValue());
-
+ // Validation
TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
boolean isCheckedOut = false;
@@ -819,7 +779,24 @@
// ///////////////////////////////////////////////////////
// private helper methods
- /**
+ private boolean hasDescendant(Folder sourceFolder, Folder targetFolder) {
+ String sourceId = sourceFolder.getId();
+ String targetId = targetFolder.getId();
+ while (targetId != null) {
+ // log.info("comparing source id " + sourceId + " with predecessor " +
+ // targetId);
+ if (targetId.equals(sourceId))
+ return true;
+ targetFolder = targetFolder.getParent();
+ if (null != targetFolder)
+ targetId = targetFolder.getId();
+ else
+ targetId = null;
+ }
+ return false;
+ }
+
+ /**
* Recursively delete a tree by traversing it and first deleting all children
* and then the object itself
*
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java?rev=916414&r1=916413&r2=916414&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java Thu Feb 25 19:31:37 2010
@@ -60,10 +60,7 @@
public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
- checkStandardParameters(repositoryId, objectId);
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId);
-
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
@@ -75,10 +72,7 @@
List<String> policies, AccessControlList addAces, AccessControlList removeAces,
ExtensionsData extension) {
- checkStandardParameters(repositoryId, objectId.getValue());
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId.getValue());
-
+ StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
@@ -97,9 +91,7 @@
public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
Holder<Boolean> contentCopied) {
- checkStandardParameters(repositoryId, objectId.getValue());
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId.getValue());
+ StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
if (!typeDef.getBaseId().equals(BaseObjectTypeIds.CMIS_DOCUMENT))
throw new CmisNotSupportedException("Only documents can be checked-out.");
@@ -132,9 +124,7 @@
public List<ObjectData> getAllVersions(String repositoryId, String versionSeriesId,
String filter, Boolean includeAllowableActions, ExtensionsData extension) {
- checkStandardParameters(repositoryId, versionSeriesId);
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(versionSeriesId);
+ StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
if (! (so instanceof VersionedDocument))
throw new RuntimeException("Object is not instance of a VersionedDocument (version series)");
@@ -155,9 +145,7 @@
IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
Boolean includeAcl, ExtensionsData extension) {
- checkStandardParameters(repositoryId, versionSeriesId);
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(versionSeriesId);
+ StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
ObjectData objData = null;
if (so instanceof VersionedDocument) {
@@ -175,9 +163,7 @@
public PropertiesData getPropertiesOfLatestVersion(String repositoryId, String versionSeriesId,
Boolean major, String filter, ExtensionsData extension) {
- checkStandardParameters(repositoryId, versionSeriesId);
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(versionSeriesId);
+ StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
StoredObject latestVersionObject = null;
if (so instanceof VersionedDocument) {