View Javadoc

1   /*
2    *
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   *
20   */
21  package org.apache.chemistry.opencmis.client.bindings.spi.local;
22  
23  import java.math.BigInteger;
24  
25  import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
26  import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
27  import org.apache.chemistry.opencmis.commons.data.ObjectList;
28  import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
29  import org.apache.chemistry.opencmis.commons.server.CmisService;
30  import org.apache.chemistry.opencmis.commons.server.CmisServiceFactory;
31  import org.apache.chemistry.opencmis.commons.spi.DiscoveryService;
32  import org.apache.chemistry.opencmis.commons.spi.Holder;
33  
34  public class DiscoveryServiceImpl extends AbstractLocalService implements DiscoveryService {
35  
36      /**
37       * Constructor.
38       */
39      public DiscoveryServiceImpl(BindingSession session, CmisServiceFactory factory) {
40          setSession(session);
41          setServiceFactory(factory);
42      }
43  
44      @Override
45      public ObjectList getContentChanges(String repositoryId, Holder<String> changeLogToken, Boolean includeProperties,
46              String filter, Boolean includePolicyIds, Boolean includeAcl, BigInteger maxItems, ExtensionsData extension) {
47          CmisService service = getService(repositoryId);
48  
49          try {
50              if (stopBeforeService(service)) {
51                  return null;
52              }
53  
54              ObjectList serviceResult = service.getContentChanges(repositoryId, changeLogToken, includeProperties,
55                      filter, includePolicyIds, includeAcl, maxItems, extension);
56  
57              if (stopAfterService(service)) {
58                  return null;
59              }
60  
61              return serviceResult;
62          } finally {
63              service.close();
64          }
65      }
66  
67      @Override
68      public ObjectList query(String repositoryId, String statement, Boolean searchAllVersions,
69              Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
70              BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
71          CmisService service = getService(repositoryId);
72  
73          try {
74              if (stopBeforeService(service)) {
75                  return null;
76              }
77  
78              ObjectList serviceResult = service.query(repositoryId, statement, searchAllVersions,
79                      includeAllowableActions, includeRelationships, renditionFilter, maxItems, skipCount, extension);
80  
81              if (stopAfterService(service)) {
82                  return null;
83              }
84  
85              return serviceResult;
86          } finally {
87              service.close();
88          }
89      }
90  }