This project has retired. For details please refer to its Attic page.
NavigationServiceImpl xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.client.bindings.spi.webservices;
20  
21  import static org.apache.chemistry.opencmis.commons.impl.Converter.convert;
22  
23  import java.math.BigInteger;
24  import java.util.ArrayList;
25  import java.util.List;
26  
27  import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
28  import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
29  import org.apache.chemistry.opencmis.commons.data.ObjectData;
30  import org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer;
31  import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
32  import org.apache.chemistry.opencmis.commons.data.ObjectList;
33  import org.apache.chemistry.opencmis.commons.data.ObjectParentData;
34  import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
35  import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
36  import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisException;
37  import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisObjectInFolderContainerType;
38  import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisObjectParentsType;
39  import org.apache.chemistry.opencmis.commons.impl.jaxb.EnumIncludeRelationships;
40  import org.apache.chemistry.opencmis.commons.impl.jaxb.NavigationServicePort;
41  import org.apache.chemistry.opencmis.commons.spi.NavigationService;
42  
43  /**
44   * Navigation Service Web Services client.
45   */
46  public class NavigationServiceImpl extends AbstractWebServicesService implements NavigationService {
47  
48      private final AbstractPortProvider portProvider;
49  
50      /**
51       * Constructor.
52       */
53      public NavigationServiceImpl(BindingSession session, AbstractPortProvider portProvider) {
54          setSession(session);
55          this.portProvider = portProvider;
56      }
57  
58      public ObjectInFolderList getChildren(String repositoryId, String folderId, String filter, String orderBy,
59              Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
60              Boolean includePathSegment, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
61          NavigationServicePort port = portProvider.getNavigationServicePort();
62  
63          try {
64              return convert(port.getChildren(repositoryId, folderId, filter, orderBy, includeAllowableActions,
65                      convert(EnumIncludeRelationships.class, includeRelationships), renditionFilter, includePathSegment,
66                      maxItems, skipCount, convert(extension)));
67          } catch (CmisException e) {
68              throw convertException(e);
69          } catch (Exception e) {
70              throw new CmisRuntimeException("Error: " + e.getMessage(), e);
71          } finally {
72              portProvider.endCall(port);
73          }
74      }
75  
76      public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth,
77              String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
78              String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
79          NavigationServicePort port = portProvider.getNavigationServicePort();
80  
81          try {
82              List<CmisObjectInFolderContainerType> containerList = port.getDescendants(repositoryId, folderId, depth,
83                      filter, includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
84                      renditionFilter, includePathSegment, convert(extension));
85  
86              // no list?
87              if (containerList == null) {
88                  return null;
89              }
90  
91              // convert list
92              List<ObjectInFolderContainer> result = new ArrayList<ObjectInFolderContainer>();
93              for (CmisObjectInFolderContainerType container : containerList) {
94                  result.add(convert(container));
95              }
96  
97              return result;
98          } catch (CmisException e) {
99              throw convertException(e);
100         } catch (Exception e) {
101             throw new CmisRuntimeException("Error: " + e.getMessage(), e);
102         } finally {
103             portProvider.endCall(port);
104         }
105     }
106 
107     public ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension) {
108         NavigationServicePort port = portProvider.getNavigationServicePort();
109 
110         try {
111             return convert(port.getFolderParent(repositoryId, folderId, filter, convert(extension)));
112         } catch (CmisException e) {
113             throw convertException(e);
114         } catch (Exception e) {
115             throw new CmisRuntimeException("Error: " + e.getMessage(), e);
116         } finally {
117             portProvider.endCall(port);
118         }
119     }
120 
121     public List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId, BigInteger depth,
122             String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
123             String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
124         NavigationServicePort port = portProvider.getNavigationServicePort();
125 
126         try {
127             List<CmisObjectInFolderContainerType> containerList = port.getFolderTree(repositoryId, folderId, depth,
128                     filter, includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
129                     renditionFilter, includePathSegment, convert(extension));
130 
131             // no list?
132             if (containerList == null) {
133                 return null;
134             }
135 
136             // convert list
137             List<ObjectInFolderContainer> result = new ArrayList<ObjectInFolderContainer>();
138             for (CmisObjectInFolderContainerType container : containerList) {
139                 result.add(convert(container));
140             }
141 
142             return result;
143         } catch (CmisException e) {
144             throw convertException(e);
145         } catch (Exception e) {
146             throw new CmisRuntimeException("Error: " + e.getMessage(), e);
147         } finally {
148             portProvider.endCall(port);
149         }
150     }
151 
152     public List<ObjectParentData> getObjectParents(String repositoryId, String objectId, String filter,
153             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
154             Boolean includeRelativePathSegment, ExtensionsData extension) {
155         NavigationServicePort port = portProvider.getNavigationServicePort();
156 
157         try {
158             List<CmisObjectParentsType> parentsList = port.getObjectParents(repositoryId, objectId, filter,
159                     includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
160                     renditionFilter, includeRelativePathSegment, convert(extension));
161 
162             // no list?
163             if (parentsList == null) {
164                 return null;
165             }
166 
167             // convert list
168             List<ObjectParentData> result = new ArrayList<ObjectParentData>();
169             for (CmisObjectParentsType parent : parentsList) {
170                 result.add(convert(parent));
171             }
172 
173             return result;
174         } catch (CmisException e) {
175             throw convertException(e);
176         } catch (Exception e) {
177             throw new CmisRuntimeException("Error: " + e.getMessage(), e);
178         } finally {
179             portProvider.endCall(port);
180         }
181     }
182 
183     public ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter, String orderBy,
184             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
185             BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
186         NavigationServicePort port = portProvider.getNavigationServicePort();
187 
188         try {
189             return convert(port.getCheckedOutDocs(repositoryId, folderId, filter, orderBy, includeAllowableActions,
190                     convert(EnumIncludeRelationships.class, includeRelationships), renditionFilter, maxItems,
191                     skipCount, convert(extension)));
192         } catch (CmisException e) {
193             throw convertException(e);
194         } catch (Exception e) {
195             throw new CmisRuntimeException("Error: " + e.getMessage(), e);
196         } finally {
197             portProvider.endCall(port);
198         }
199     }
200 }