You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2014/07/11 17:01:06 UTC

svn commit: r1609721 [2/3] - in /chemistry/opencmis/trunk: chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ chemistry-opencmis-commons/chemistry-opencmis-commons-api/src...

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/VersioningService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/VersioningService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/VersioningService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/VersioningService.java Fri Jul 11 15:01:05 2014
@@ -18,7 +18,7 @@
  */
 package org.apache.chemistry.opencmis.server.impl.atompub;
 
-import static org.apache.chemistry.opencmis.commons.impl.CollectionsHelper.*;
+import static org.apache.chemistry.opencmis.commons.impl.CollectionsHelper.isNullOrEmpty;
 
 import java.util.List;
 
@@ -60,9 +60,17 @@ public class VersioningService {
             parser.parse(request.getInputStream());
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Holder<String> checkOutId = new Holder<String>(parser.getId());
             service.checkOut(repositoryId, checkOutId, null, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectInfo objectInfo = service.getObjectInfo(repositoryId, checkOutId.getValue());
             if (objectInfo == null) {
                 throw new CmisRuntimeException("Object Info is missing!");
@@ -114,9 +122,17 @@ public class VersioningService {
             Boolean includeAllowableActions = getBooleanParameter(request, Constants.PARAM_ALLOWABLE_ACTIONS);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectData> versions = service.getAllVersions(repositoryId, objectId, versionSeriesId, filter,
                     includeAllowableActions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (isNullOrEmpty(versions)) {
                 throw new CmisRuntimeException("Version list is null or empty!");
             }
@@ -178,8 +194,16 @@ public class VersioningService {
             String objectId = getStringParameter(request, Constants.PARAM_ID);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteObjectOrCancelCheckOut(repositoryId, objectId, Boolean.TRUE, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             // set headers
             response.setStatus(HttpServletResponse.SC_NO_CONTENT);
         }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/AclService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/AclService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/AclService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/AclService.java Fri Jul 11 15:01:05 2014
@@ -45,14 +45,22 @@ public class AclService {
             assert repositoryId != null;
             assert request != null;
             assert response != null;
-            
+
             // get parameters
             String objectId = ((BrowserCallContextImpl) context).getObjectId();
             Boolean onlyBasicPermissions = getBooleanParameter(request, Constants.PARAM_ONLY_BASIC_PERMISSIONS);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Acl acl = service.getAcl(repositoryId, objectId, onlyBasicPermissions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             // return ACL
             response.setStatus(HttpServletResponse.SC_OK);
 
@@ -85,9 +93,17 @@ public class AclService {
             // execute
             ControlParser cp = new ControlParser(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Acl acl = service.applyAcl(repositoryId, objectId, createAddAcl(cp), createRemoveAcl(cp), aclPropagation,
                     null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             // return ACL
             setStatus(request, response, HttpServletResponse.SC_CREATED);
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/DiscoveryService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/DiscoveryService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/DiscoveryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/DiscoveryService.java Fri Jul 11 15:01:05 2014
@@ -75,9 +75,17 @@ public class DiscoveryService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectList results = service.query(repositoryId, statement, searchAllVersions, includeAllowableActions,
                     includeRelationships, renditionFilter, maxItems, skipCount, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (results == null) {
                 throw new CmisRuntimeException("Results are null!");
             }
@@ -113,10 +121,18 @@ public class DiscoveryService {
             boolean succinct = getBooleanParameter(request, Constants.PARAM_SUCCINCT, false);
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Holder<String> changeLogTokenHolder = new Holder<String>(changeLogToken);
             ObjectList changes = service.getContentChanges(repositoryId, changeLogTokenHolder, includeProperties,
                     filter, includePolicyIds, includeAcl, maxItems, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
             JSONObject jsonChanges = JSONConverter.convert(changes, typeCache, JSONConverter.PropertyMode.CHANGE,
                     succinct, dateTimeFormat);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultiFilingService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultiFilingService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultiFilingService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultiFilingService.java Fri Jul 11 15:01:05 2014
@@ -59,9 +59,17 @@ public class MultiFilingService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Holder<String> objectIdHolder = new Holder<String>(objectId);
             service.addObjectToFolder(repositoryId, objectId, folderId, allVersions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -101,9 +109,17 @@ public class MultiFilingService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Holder<String> objectIdHolder = new Holder<String>(objectId);
             service.removeObjectFromFolder(repositoryId, objectId, folderId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/NavigationService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/NavigationService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/NavigationService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/NavigationService.java Fri Jul 11 15:01:05 2014
@@ -83,10 +83,18 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectInFolderList children = service.getChildren(repositoryId, folderId, filter, orderBy,
                     includeAllowableActions, includeRelationships, renditionFilter, includePathSegment, maxItems,
                     skipCount, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (children == null) {
                 throw new CmisRuntimeException("Children are null!");
             }
@@ -124,9 +132,17 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectInFolderContainer> descendants = service.getDescendants(repositoryId, folderId, depth, filter,
                     includeAllowableActions, includeRelationships, renditionFilter, includePathSegment, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (descendants == null) {
                 throw new CmisRuntimeException("Descendants are null!");
             }
@@ -167,9 +183,17 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectInFolderContainer> folderTree = service.getFolderTree(repositoryId, folderId, depth, filter,
                     includeAllowableActions, includeRelationships, renditionFilter, includePathSegment, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (folderTree == null) {
                 throw new CmisRuntimeException("Folder Tree are null!");
             }
@@ -204,8 +228,16 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectData parent = service.getFolderParent(repositoryId, objectId, filter, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (parent == null) {
                 throw new CmisRuntimeException("Parent is null!");
             }
@@ -243,9 +275,17 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectParentData> parents = service.getObjectParents(repositoryId, objectId, filter,
                     includeAllowableActions, includeRelationships, renditionFilter, includeRelativePathSegment, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (parents == null) {
                 throw new CmisRuntimeException("Parents are null!");
             }
@@ -287,9 +327,17 @@ public class NavigationService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectList checkedout = service.getCheckedOutDocs(repositoryId, folderId, filter, orderBy,
                     includeAllowableActions, includeRelationships, renditionFilter, maxItems, skipCount, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (checkedout == null) {
                 throw new CmisRuntimeException("Checked out list is null!");
             }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java Fri Jul 11 15:01:05 2014
@@ -106,6 +106,10 @@ public class ObjectService {
 
             ContentStream contentStream = createContentStream(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = null;
             try {
                 newObjectId = service
@@ -115,6 +119,10 @@ public class ObjectService {
                 closeContentStream(contentStream);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New document is null!");
@@ -162,6 +170,10 @@ public class ObjectService {
                 throw new CmisRuntimeException("Source object has no type!?!");
             }
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = service.createDocumentFromSource(
                     repositoryId,
                     sourceId,
@@ -169,6 +181,10 @@ public class ObjectService {
                             Collections.singletonList(sourceId), typeCache), folderId, versioningState,
                     createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New document is null!");
@@ -208,9 +224,17 @@ public class ObjectService {
             ControlParser cp = new ControlParser(request);
             TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = service.createFolder(repositoryId, createNewProperties(cp, typeCache), folderId,
                     createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New folder is null!");
@@ -250,9 +274,17 @@ public class ObjectService {
             ControlParser cp = new ControlParser(request);
             TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = service.createPolicy(repositoryId, createNewProperties(cp, typeCache), folderId,
                     createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New policy is null!");
@@ -292,9 +324,17 @@ public class ObjectService {
             ControlParser cp = new ControlParser(request);
             TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = service.createItem(repositoryId, createNewProperties(cp, typeCache), folderId,
                     createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New item is null!");
@@ -333,9 +373,17 @@ public class ObjectService {
             ControlParser cp = new ControlParser(request);
             TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String newObjectId = service.createRelationship(repositoryId, createNewProperties(cp, typeCache),
                     createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
             if (object == null) {
                 throw new CmisRuntimeException("New relationship is null!");
@@ -379,9 +427,17 @@ public class ObjectService {
             Holder<String> objectIdHolder = new Holder<String>(objectId);
             Holder<String> changeTokenHolder = (changeToken == null ? null : new Holder<String>(changeToken));
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.updateProperties(repositoryId, objectIdHolder, changeTokenHolder,
                     createUpdateProperties(cp, typeId, null, Collections.singletonList(objectId), typeCache), null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -446,9 +502,17 @@ public class ObjectService {
             Properties properties = createUpdateProperties(cp, null, addSecondaryTypes, objectIds, typeCache);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<BulkUpdateObjectIdAndChangeToken> result = service.bulkUpdateProperties(repositoryId,
                     objectIdAndChangeToken, properties, addSecondaryTypes, removeSecondaryTypes, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             // return result
             JSONArray jsonList = new JSONArray();
             if (result != null) {
@@ -486,6 +550,10 @@ public class ObjectService {
             // execute
             Properties properties;
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             if (returnVersion == ReturnVersion.LATEST || returnVersion == ReturnVersion.LASTESTMAJOR) {
                 properties = service.getPropertiesOfLatestVersion(repositoryId, objectId, null,
                         returnVersion == ReturnVersion.LASTESTMAJOR, filter, null);
@@ -493,6 +561,10 @@ public class ObjectService {
                 properties = service.getProperties(repositoryId, objectId, filter, null);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (properties == null) {
                 throw new CmisRuntimeException("Properties are null!");
             }
@@ -535,6 +607,10 @@ public class ObjectService {
             // execute
             ObjectData object;
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             if (returnVersion == ReturnVersion.LATEST || returnVersion == ReturnVersion.LASTESTMAJOR) {
                 object = service.getObjectOfLatestVersion(repositoryId, objectId, null,
                         returnVersion == ReturnVersion.LASTESTMAJOR, filter, includeAllowableActions,
@@ -544,6 +620,10 @@ public class ObjectService {
                         includeRelationships, renditionFilter, includePolicyIds, includeAcl, null);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (object == null) {
                 throw new CmisRuntimeException("Object is null!");
             }
@@ -573,8 +653,17 @@ public class ObjectService {
             // get parameters
             String objectId = ((BrowserCallContextImpl) context).getObjectId();
 
+            // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             AllowableActions allowableActions = service.getAllowableActions(repositoryId, objectId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject jsonAllowableActions = JSONConverter.convert(allowableActions);
 
             response.setStatus(HttpServletResponse.SC_OK);
@@ -601,9 +690,17 @@ public class ObjectService {
             BigInteger skipCount = getBigIntegerParameter(request, Constants.PARAM_SKIP_COUNT);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<RenditionData> renditions = service.getRenditions(repositoryId, objectId, renditionFilter, maxItems,
                     skipCount, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONArray jsonRenditions = new JSONArray();
             if (renditions != null) {
                 for (RenditionData rendition : renditions) {
@@ -637,8 +734,16 @@ public class ObjectService {
             BigInteger length = context.getLength();
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ContentStream content = service.getContentStream(repositoryId, objectId, streamId, offset, length, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (content == null || content.getStream() == null) {
                 throw new CmisRuntimeException("Content stream is null!");
             }
@@ -710,8 +815,17 @@ public class ObjectService {
             String objectId = ((BrowserCallContextImpl) context).getObjectId();
             Boolean allVersions = getBooleanParameter(request, Constants.PARAM_ALL_VERSIONS);
 
+            // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteObject(repositoryId, objectId, allVersions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             response.setStatus(HttpServletResponse.SC_OK);
             writeEmpty(request, response);
         }
@@ -736,9 +850,17 @@ public class ObjectService {
             Boolean continueOnFailure = getBooleanParameter(request, Constants.PARAM_CONTINUE_ON_FAILURE);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             FailedToDeleteData ftd = service.deleteTree(repositoryId, objectId, allVersions, unfileObjects,
                     continueOnFailure, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             response.setStatus(HttpServletResponse.SC_OK);
 
             if (ftd != null && isNotEmpty(ftd.getIds())) {
@@ -772,8 +894,17 @@ public class ObjectService {
             // execute
             Holder<String> objectIdHolder = new Holder<String>(objectId);
             Holder<String> changeTokenHolder = (changeToken == null ? null : new Holder<String>(changeToken));
+
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteContentStream(repositoryId, objectIdHolder, changeTokenHolder, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -816,6 +947,10 @@ public class ObjectService {
             Holder<String> changeTokenHolder = (changeToken == null ? null : new Holder<String>(changeToken));
             ContentStream contentStream = createContentStream(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             try {
                 service.setContentStream(repositoryId, objectIdHolder, overwriteFlag, changeTokenHolder, contentStream,
                         null);
@@ -823,6 +958,10 @@ public class ObjectService {
                 closeContentStream(contentStream);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -867,6 +1006,10 @@ public class ObjectService {
             Holder<String> changeTokenHolder = (changeToken == null ? null : new Holder<String>(changeToken));
             ContentStream contentStream = createContentStream(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             try {
                 service.appendContentStream(repositoryId, objectIdHolder, changeTokenHolder, contentStream,
                         isLastChunk, null);
@@ -874,6 +1017,10 @@ public class ObjectService {
                 closeContentStream(contentStream);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -915,8 +1062,17 @@ public class ObjectService {
 
             // execute
             Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.moveObject(repositoryId, objectIdHolder, targetFolderId, sourceFolderId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/PolicyService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/PolicyService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/PolicyService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/PolicyService.java Fri Jul 11 15:01:05 2014
@@ -61,8 +61,16 @@ public class PolicyService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectData> policies = service.getAppliedPolicies(repositoryId, objectId, filter, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONArray jsonPolicies = new JSONArray();
             if (policies != null) {
                 TypeCache typeCache = new ServerTypeCacheImpl(repositoryId, service);
@@ -96,8 +104,16 @@ public class PolicyService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.applyPolicy(repositoryId, policyId, objectId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, objectId);
             if (object == null) {
                 throw new CmisRuntimeException("Object is null!");

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RelationshipService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RelationshipService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RelationshipService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RelationshipService.java Fri Jul 11 15:01:05 2014
@@ -70,10 +70,18 @@ public class RelationshipService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectList relationships = service.getObjectRelationships(repositoryId, objectId,
                     includeSubRelationshipTypes, relationshipDirection, typeId, renditionFilter,
                     includeAllowableActions, maxItems, skipCount, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (relationships == null) {
                 throw new CmisRuntimeException("Relationships are null!");
             }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RepositoryService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RepositoryService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RepositoryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RepositoryService.java Fri Jul 11 15:01:05 2014
@@ -69,8 +69,16 @@ public class RepositoryService {
             assert response != null;
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<RepositoryInfo> infoDataList = service.getRepositoryInfos(null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject result = new JSONObject();
             for (RepositoryInfo ri : infoDataList) {
                 String repositoryUrl = compileRepositoryUrl(request, ri.getId()).toString();
@@ -97,8 +105,16 @@ public class RepositoryService {
             assert response != null;
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             RepositoryInfo ri = service.getRepositoryInfo(repositoryId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String repositoryUrl = compileRepositoryUrl(request, ri.getId()).toString();
             String rootUrl = compileRootUrl(request, ri.getId()).toString();
 
@@ -173,8 +189,17 @@ public class RepositoryService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             TypeDefinitionList typeList = service.getTypeChildren(repositoryId, typeId, includePropertyDefinitions,
                     maxItems, skipCount, null);
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject jsonTypeList = JSONConverter.convert(typeList, dateTimeFormat);
 
             response.setStatus(HttpServletResponse.SC_OK);
@@ -198,9 +223,17 @@ public class RepositoryService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<TypeDefinitionContainer> typeTree = service.getTypeDescendants(repositoryId, typeId, depth,
                     includePropertyDefinitions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (typeTree == null) {
                 throw new CmisRuntimeException("Type tree is null!");
             }
@@ -232,7 +265,16 @@ public class RepositoryService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             TypeDefinition type = service.getTypeDefinition(repositoryId, typeId, null);
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject jsonType = JSONConverter.convert(type, dateTimeFormat);
 
             response.setStatus(HttpServletResponse.SC_OK);
@@ -271,7 +313,16 @@ public class RepositoryService {
             TypeDefinition typeIn = JSONConverter.convertTypeDefinition((Map<String, Object>) typeJson);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             TypeDefinition typeOut = service.createType(repositoryId, typeIn, null);
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject jsonType = JSONConverter.convert(typeOut, dateTimeFormat);
 
             // set headers
@@ -313,7 +364,16 @@ public class RepositoryService {
             TypeDefinition typeIn = JSONConverter.convertTypeDefinition((Map<String, Object>) typeJson);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             TypeDefinition typeOut = service.updateType(repositoryId, typeIn, null);
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
             JSONObject jsonType = JSONConverter.convert(typeOut, dateTimeFormat);
 
             response.setStatus(HttpServletResponse.SC_OK);
@@ -336,8 +396,17 @@ public class RepositoryService {
             // get parameters
             String typeId = getStringParameter(request, CONTROL_TYPE_ID);
 
+            // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteType(repositoryId, typeId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             response.setStatus(HttpServletResponse.SC_OK);
             writeEmpty(request, response);
         }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java Fri Jul 11 15:01:05 2014
@@ -67,9 +67,17 @@ public class VersioningService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             Holder<String> checkOutId = new Holder<String>(objectId);
             service.checkOut(repositoryId, checkOutId, null, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             ObjectData object = getSimpleObject(service, repositoryId, checkOutId.getValue());
             if (object == null) {
                 throw new CmisRuntimeException("PWC is null!");
@@ -107,8 +115,16 @@ public class VersioningService {
             String objectId = ((BrowserCallContextImpl) context).getObjectId();
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.cancelCheckOut(repositoryId, objectId, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             response.setStatus(HttpServletResponse.SC_OK);
             writeEmpty(request, response);
         }
@@ -141,6 +157,10 @@ public class VersioningService {
             Holder<String> objectIdHolder = new Holder<String>(objectId);
             ContentStream contentStream = createContentStream(request);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             try {
                 service.checkIn(repositoryId, objectIdHolder, major,
                         createUpdateProperties(cp, typeId, null, Collections.singletonList(objectId), typeCache),
@@ -149,6 +169,10 @@ public class VersioningService {
                 closeContentStream(contentStream);
             }
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
             ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
@@ -191,9 +215,17 @@ public class VersioningService {
             DateTimeFormat dateTimeFormat = getDateTimeFormatParameter(request);
 
             // execute
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<ObjectData> versions = service.getAllVersions(repositoryId, objectId, null, filter,
                     includeAllowableActions, null);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (versions == null) {
                 throw new CmisRuntimeException("Versions are null!");
             }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AbstractService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AbstractService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AbstractService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AbstractService.java Fri Jul 11 15:01:05 2014
@@ -49,6 +49,8 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.server.CmisService;
 import org.apache.chemistry.opencmis.commons.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.server.ProgressControlCmisService;
+import org.apache.chemistry.opencmis.commons.server.ProgressControlCmisService.Progress;
 import org.apache.chemistry.opencmis.server.impl.CallContextImpl;
 import org.apache.chemistry.opencmis.server.impl.CmisRepositoryContextListener;
 import org.apache.chemistry.opencmis.server.impl.ServerVersion;
@@ -146,6 +148,36 @@ public abstract class AbstractService {
     }
 
     /**
+     * Determines if the processing should be stopped before the service method
+     * is called.
+     * 
+     * @return {@code true} if the processing should be stopped, {@code false}
+     *         otherwise
+     */
+    protected boolean stopBeforeService(CmisService service) {
+        if (!(service instanceof ProgressControlCmisService)) {
+            return false;
+        }
+
+        return ((ProgressControlCmisService) service).beforeServiceCall() == Progress.STOP;
+    }
+
+    /**
+     * Determines if the processing should be stopped after the service method
+     * is called.
+     * 
+     * @return {@code true} if the processing should be stopped, {@code false}
+     *         otherwise
+     */
+    protected boolean stopAfterService(CmisService service) {
+        if (!(service instanceof ProgressControlCmisService)) {
+            return false;
+        }
+
+        return ((ProgressControlCmisService) service).beforeServiceCall() == Progress.STOP;
+    }
+
+    /**
      * Closes the service instance.
      */
     protected void closeService(CmisService service) {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AclService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AclService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AclService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/AclService.java Fri Jul 11 15:01:05 2014
@@ -51,9 +51,17 @@ public class AclService extends Abstract
         try {
             service = getService(wsContext, repositoryId);
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             Acl acl = service.applyAcl(repositoryId, objectId, convert(addAces, null), convert(removeAces, null),
                     convert(AclPropagation.class, aclPropagation), convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (acl == null) {
                 return null;
             }
@@ -76,7 +84,16 @@ public class AclService extends Abstract
         try {
             service = getService(wsContext, repositoryId);
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             Acl acl = service.getAcl(repositoryId, objectId, onlyBasicPermissions, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (acl == null) {
                 return null;
             }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/DiscoveryService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/DiscoveryService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/DiscoveryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/DiscoveryService.java Fri Jul 11 15:01:05 2014
@@ -60,9 +60,17 @@ public class DiscoveryService extends Ab
 
             org.apache.chemistry.opencmis.commons.spi.Holder<String> changeLogTokenHolder = convertHolder(changeLogToken);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             ObjectList changesList = service.getContentChanges(repositoryId, changeLogTokenHolder, includeProperties,
                     filter, includePolicyIds, includeAcl, maxItems, convert(extension));
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objects != null) {
                 objects.value = convert(changesList, cmisVersion);
             }
@@ -84,9 +92,19 @@ public class DiscoveryService extends Ab
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.query(repositoryId, statement, searchAllVersions, includeAllowableActions,
-                    convert(IncludeRelationships.class, includeRelationships), renditionFilter, maxItems, skipCount,
-                    convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectList serviceResult = service.query(repositoryId, statement, searchAllVersions,
+                    includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
+                    renditionFilter, maxItems, skipCount, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/MultiFilingService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/MultiFilingService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/MultiFilingService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/MultiFilingService.java Fri Jul 11 15:01:05 2014
@@ -50,8 +50,16 @@ public class MultiFilingService extends 
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.addObjectToFolder(repositoryId, objectId, folderId, allVersions, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);
@@ -68,8 +76,16 @@ public class MultiFilingService extends 
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.removeObjectFromFolder(repositoryId, objectId, folderId, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java Fri Jul 11 15:01:05 2014
@@ -29,7 +29,10 @@ import javax.jws.WebService;
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.soap.MTOM;
 
+import org.apache.chemistry.opencmis.commons.data.ObjectData;
 import org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer;
+import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
+import org.apache.chemistry.opencmis.commons.data.ObjectList;
 import org.apache.chemistry.opencmis.commons.data.ObjectParentData;
 import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
@@ -62,9 +65,19 @@ public class NavigationService extends A
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getCheckedOutDocs(repositoryId, folderId, filter, orderBy, includeAllowableActions,
-                    convert(IncludeRelationships.class, includeRelationships), renditionFilter, maxItems, skipCount,
-                    convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectList serviceResult = service.getCheckedOutDocs(repositoryId, folderId, filter, orderBy,
+                    includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
+                    renditionFilter, maxItems, skipCount, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -82,9 +95,19 @@ public class NavigationService extends A
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getChildren(repositoryId, folderId, filter, orderBy, includeAllowableActions,
-                    convert(IncludeRelationships.class, includeRelationships), renditionFilter, includePathSegment,
-                    maxItems, skipCount, convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectInFolderList serviceResult = service.getChildren(repositoryId, folderId, filter, orderBy,
+                    includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
+                    renditionFilter, includePathSegment, maxItems, skipCount, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -103,10 +126,18 @@ public class NavigationService extends A
 
             List<CmisObjectInFolderContainerType> result = new ArrayList<CmisObjectInFolderContainerType>();
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             List<ObjectInFolderContainer> serviceResult = service.getDescendants(repositoryId, folderId, depth, filter,
                     includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
                     renditionFilter, includePathSegment, convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (serviceResult != null) {
                 for (ObjectInFolderContainer container : serviceResult) {
                     result.add(convert(container, cmisVersion));
@@ -129,7 +160,17 @@ public class NavigationService extends A
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getFolderParent(repositoryId, folderId, filter, convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectData serviceResult = service.getFolderParent(repositoryId, folderId, filter, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -148,10 +189,22 @@ public class NavigationService extends A
 
             List<CmisObjectInFolderContainerType> result = new ArrayList<CmisObjectInFolderContainerType>();
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             List<ObjectInFolderContainer> serviceResult = service.getFolderTree(repositoryId, folderId, depth, filter,
                     includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
                     renditionFilter, includePathSegment, convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (serviceResult != null) {
                 for (ObjectInFolderContainer container : serviceResult) {
                     result.add(convert(container, cmisVersion));
@@ -177,10 +230,18 @@ public class NavigationService extends A
 
             List<CmisObjectParentsType> result = new ArrayList<CmisObjectParentsType>();
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             List<ObjectParentData> serviceResult = service.getObjectParents(repositoryId, objectId, filter,
                     includeAllowableActions, convert(IncludeRelationships.class, includeRelationships),
                     renditionFilter, includeRelativePathSegment, convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (serviceResult != null) {
                 for (ObjectParentData parent : serviceResult) {
                     result.add(convert(parent, cmisVersion));

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/ObjectService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/ObjectService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/ObjectService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/ObjectService.java Fri Jul 11 15:01:05 2014
@@ -34,8 +34,12 @@ import javax.xml.ws.Holder;
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.soap.MTOM;
 
+import org.apache.chemistry.opencmis.commons.data.AllowableActions;
 import org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
+import org.apache.chemistry.opencmis.commons.data.ContentStream;
 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.FailedToDeleteData;
+import org.apache.chemistry.opencmis.commons.data.ObjectData;
 import org.apache.chemistry.opencmis.commons.data.Properties;
 import org.apache.chemistry.opencmis.commons.data.RenditionData;
 import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
@@ -81,10 +85,18 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createDocument(repositoryId, convert(properties), folderId,
                     convert(contentStream, false), convert(VersioningState.class, versioningState), policies,
                     convert(addAces, null), convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -107,10 +119,18 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createDocumentFromSource(repositoryId, sourceId, convert(properties), folderId,
                     convert(VersioningState.class, versioningState), policies, convert(addAces, null),
                     convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -132,9 +152,17 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createFolder(repositoryId, convert(properties), folderId, policies,
                     convert(addAces, null), convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -156,9 +184,17 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createPolicy(repositoryId, convert(properties), folderId, policies,
                     convert(addAces, null), convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -180,9 +216,17 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createRelationship(repositoryId, convert(properties), policies, convert(addAces, null),
                     convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -204,9 +248,17 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             String id = service.createItem(repositoryId, convert(properties), folderId, null, convert(addAces, null),
                     convert(removeAces, null), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectId != null) {
                 objectId.value = id;
             }
@@ -229,8 +281,16 @@ public class ObjectService extends Abstr
             org.apache.chemistry.opencmis.commons.spi.Holder<String> changeTokenHolder = convertHolder(changeToken);
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteContentStream(repositoryId, objectIdHolder, changeTokenHolder, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setHolderValue(objectIdHolder, objectId);
             setHolderValue(changeTokenHolder, changeToken);
             setExtensionValues(extData, extension);
@@ -249,8 +309,16 @@ public class ObjectService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteObject(repositoryId, objectId, allVersions, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);
@@ -266,8 +334,18 @@ public class ObjectService extends Abstr
         try {
             service = getService(wsContext, repositoryId);
 
-            return convert(service.deleteTree(repositoryId, folderId, allVersions,
-                    convert(UnfileObject.class, unfileObjects), continueOnFailure, convert(extension)));
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            FailedToDeleteData serviceResult = service.deleteTree(repositoryId, folderId, allVersions,
+                    convert(UnfileObject.class, unfileObjects), continueOnFailure, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -283,7 +361,17 @@ public class ObjectService extends Abstr
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getAllowableActions(repositoryId, objectId, convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            AllowableActions serviceResult = service.getAllowableActions(repositoryId, objectId, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -297,9 +385,18 @@ public class ObjectService extends Abstr
         try {
             service = getService(wsContext, repositoryId);
 
-            return convert(
-                    service.getContentStream(repositoryId, objectId, streamId, offset, length, convert(extension)),
-                    true);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ContentStream serviceResult = service.getContentStream(repositoryId, objectId, streamId, offset, length,
+                    convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, true);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -316,9 +413,19 @@ public class ObjectService extends Abstr
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getObject(repositoryId, objectId, filter, includeAllowableActions,
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectData serviceResult = service.getObject(repositoryId, objectId, filter, includeAllowableActions,
                     convert(IncludeRelationships.class, includeRelationships), renditionFilter, includePolicyIds,
-                    includeAcl, convert(extension)), cmisVersion);
+                    includeAcl, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -335,9 +442,19 @@ public class ObjectService extends Abstr
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getObjectByPath(repositoryId, path, filter, includeAllowableActions,
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectData serviceResult = service.getObjectByPath(repositoryId, path, filter, includeAllowableActions,
                     convert(IncludeRelationships.class, includeRelationships), renditionFilter, includePolicyIds,
-                    includeAcl, convert(extension)), cmisVersion);
+                    includeAcl, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -351,7 +468,17 @@ public class ObjectService extends Abstr
         try {
             service = getService(wsContext, repositoryId);
 
-            return convert(service.getProperties(repositoryId, objectId, filter, convert(extension)));
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            Properties serviceResult = service.getProperties(repositoryId, objectId, filter, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -367,9 +494,17 @@ public class ObjectService extends Abstr
 
             List<CmisRenditionType> result = new ArrayList<CmisRenditionType>();
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             List<RenditionData> renditionList = service.getRenditions(repositoryId, objectId, renditionFilter,
                     maxItems, skipCount, convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (renditionList != null) {
                 for (RenditionData rendition : renditionList) {
                     result.add(convert(rendition));
@@ -393,8 +528,16 @@ public class ObjectService extends Abstr
             org.apache.chemistry.opencmis.commons.spi.Holder<String> objectIdHolder = convertHolder(objectId);
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.moveObject(repositoryId, objectIdHolder, targetFolderId, sourceFolderId, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setHolderValue(objectIdHolder, objectId);
             setExtensionValues(extData, extension);
         } catch (Exception e) {
@@ -415,9 +558,17 @@ public class ObjectService extends Abstr
             org.apache.chemistry.opencmis.commons.spi.Holder<String> changeTokenHolder = convertHolder(changeToken);
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.setContentStream(repositoryId, objectIdHolder, overwriteFlag, changeTokenHolder,
                     convert(contentStream, false), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setHolderValue(objectIdHolder, objectId);
             setHolderValue(changeTokenHolder, changeToken);
             setExtensionValues(extData, extension);
@@ -439,9 +590,17 @@ public class ObjectService extends Abstr
             org.apache.chemistry.opencmis.commons.spi.Holder<String> changeTokenHolder = convertHolder(changeToken);
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.appendContentStream(repositoryId, objectIdHolder, changeTokenHolder, convert(contentStream, true),
                     isLastChunk, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setHolderValue(objectIdHolder, objectId);
             setHolderValue(changeTokenHolder, changeToken);
             setExtensionValues(extData, extension);
@@ -462,8 +621,16 @@ public class ObjectService extends Abstr
             org.apache.chemistry.opencmis.commons.spi.Holder<String> changeTokenHolder = convertHolder(changeToken);
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.updateProperties(repositoryId, objectIdHolder, changeTokenHolder, convert(properties), extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setHolderValue(objectIdHolder, objectId);
             setHolderValue(changeTokenHolder, changeToken);
             setExtensionValues(extData, extension);
@@ -503,9 +670,17 @@ public class ObjectService extends Abstr
                 }
             }
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             List<BulkUpdateObjectIdAndChangeToken> result = service.bulkUpdateProperties(repositoryId,
                     objectIdsAndChangeTokens, properties, addSecondaryTypeIds, removeSecondaryTypeIds, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             if (objectIdAndChangeToken != null && result != null) {
                 // TODO: add workaround
                 // see: https://tools.oasis-open.org/issues/browse/CMIS-754

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/PolicyService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/PolicyService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/PolicyService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/PolicyService.java Fri Jul 11 15:01:05 2014
@@ -57,8 +57,16 @@ public class PolicyService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.applyPolicy(repositoryId, policyId, objectId, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);
@@ -75,8 +83,16 @@ public class PolicyService extends Abstr
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             List<ObjectData> policies = service.getAppliedPolicies(repositoryId, objectId, filter, convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (policies == null) {
                 return null;
             }
@@ -102,8 +118,16 @@ public class PolicyService extends Abstr
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.removePolicy(repositoryId, policyId, objectId, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RelationshipService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RelationshipService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RelationshipService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RelationshipService.java Fri Jul 11 15:01:05 2014
@@ -27,6 +27,7 @@ import javax.jws.WebService;
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.soap.MTOM;
 
+import org.apache.chemistry.opencmis.commons.data.ObjectList;
 import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
 import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisException;
@@ -55,9 +56,19 @@ public class RelationshipService extends
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getObjectRelationships(repositoryId, objectId, includeSubRelationshipTypes,
-                    convert(RelationshipDirection.class, relationshipDirection), typeId, filter,
-                    includeAllowableActions, maxItems, skipCount, convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            ObjectList serviceResult = service.getObjectRelationships(repositoryId, objectId,
+                    includeSubRelationshipTypes, convert(RelationshipDirection.class, relationshipDirection), typeId,
+                    filter, includeAllowableActions, maxItems, skipCount, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RepositoryService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RepositoryService.java?rev=1609721&r1=1609720&r2=1609721&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RepositoryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/RepositoryService.java Fri Jul 11 15:01:05 2014
@@ -35,6 +35,9 @@ import javax.xml.ws.soap.MTOM;
 
 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
 import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList;
 import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisException;
 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisExtensionType;
@@ -60,8 +63,16 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, null);
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
             List<RepositoryInfo> infoDataList = service.getRepositoryInfos(convert(extension));
 
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             if (infoDataList == null) {
                 return null;
             }
@@ -91,7 +102,17 @@ public class RepositoryService extends A
             service = getService(wsContext, repositoryId);
             cmisVersion = getCmisVersion(wsContext);
 
-            return convert(service.getRepositoryInfo(repositoryId, convert(extension)), cmisVersion);
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            RepositoryInfo serviceResult = service.getRepositoryInfo(repositoryId, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult, cmisVersion);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -106,8 +127,18 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, repositoryId);
 
-            return convert(service.getTypeChildren(repositoryId, typeId, includePropertyDefinitions, maxItems,
-                    skipCount, convert(extension)));
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            TypeDefinitionList serviceResult = service.getTypeChildren(repositoryId, typeId,
+                    includePropertyDefinitions, maxItems, skipCount, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -121,7 +152,17 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, repositoryId);
 
-            return convert(service.getTypeDefinition(repositoryId, typeId, convert(extension)));
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            TypeDefinition serviceResult = service.getTypeDefinition(repositoryId, typeId, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
+            return convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -135,9 +176,19 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, repositoryId);
 
+            if (stopBeforeService(service)) {
+                return null;
+            }
+
+            List<TypeDefinitionContainer> serviceResult = service.getTypeDescendants(repositoryId, typeId, depth,
+                    includePropertyDefinitions, convert(extension));
+
+            if (stopAfterService(service)) {
+                return null;
+            }
+
             List<CmisTypeContainer> result = new ArrayList<CmisTypeContainer>();
-            convertTypeContainerList(service.getTypeDescendants(repositoryId, typeId, depth,
-                    includePropertyDefinitions, convert(extension)), result);
+            convertTypeContainerList(serviceResult, result);
 
             return result;
         } catch (Exception e) {
@@ -153,7 +204,17 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, repositoryId);
 
-            type.value = convert(service.createType(repositoryId, convert(type.value), convert(extension)));
+            if (stopBeforeService(service)) {
+                return;
+            }
+
+            TypeDefinition serviceResult = service.createType(repositoryId, convert(type.value), convert(extension));
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
+            type.value = convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -167,7 +228,17 @@ public class RepositoryService extends A
         try {
             service = getService(wsContext, repositoryId);
 
-            type.value = convert(service.updateType(repositoryId, convert(type.value), convert(extension)));
+            if (stopBeforeService(service)) {
+                return;
+            }
+
+            TypeDefinition serviceResult = service.updateType(repositoryId, convert(type.value), convert(extension));
+
+            if (stopAfterService(service)) {
+                return;
+            }
+
+            type.value = convert(serviceResult);
         } catch (Exception e) {
             throw convertException(e);
         } finally {
@@ -184,8 +255,16 @@ public class RepositoryService extends A
 
             ExtensionsData extData = convertExtensionHolder(extension);
 
+            if (stopBeforeService(service)) {
+                return;
+            }
+
             service.deleteType(repositoryId, typeId, extData);
 
+            if (stopAfterService(service)) {
+                return;
+            }
+
             setExtensionValues(extData, extension);
         } catch (Exception e) {
             throw convertException(e);