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.commons.spi;
20
21 /**
22 * Entry point for all CMIS binding related operations. It provides access to
23 * the service interface objects which are very similar to the CMIS 1.0 domain
24 * model.
25 *
26 * <p>
27 * Each instance of this class represents a session. A session comprises of a
28 * connection to one CMIS endpoint over one binding for one particular user and
29 * a set of caches. All repositories that are exposed by this CMIS endpoint are
30 * accessible in this session. All CMIS operations and extension points are
31 * provided if they are supported by the underlying binding.
32 * </p>
33 */
34 public interface CmisBinding {
35
36 /**
37 * Gets a Repository Service interface object.
38 */
39 RepositoryService getRepositoryService();
40
41 /**
42 * Gets a Navigation Service interface object.
43 */
44 NavigationService getNavigationService();
45
46 /**
47 * Gets an Object Service interface object.
48 */
49 ObjectService getObjectService();
50
51 /**
52 * Gets a Versioning Service interface object.
53 */
54 VersioningService getVersioningService();
55
56 /**
57 * Gets a Relationship Service interface object.
58 */
59 RelationshipService getRelationshipService();
60
61 /**
62 * Gets a Discovery Service interface object.
63 */
64 DiscoveryService getDiscoveryService();
65
66 /**
67 * Gets a Multifiling Service interface object.
68 */
69 MultiFilingService getMultiFilingService();
70
71 /**
72 * Gets an ACL Service interface object.
73 */
74 AclService getAclService();
75
76 /**
77 * Gets a Policy Service interface object.
78 */
79 PolicyService getPolicyService();
80
81 /**
82 * Gets a factory for CMIS binding specific objects.
83 */
84 BindingsObjectFactory getObjectFactory();
85
86 /**
87 * Gets the authentication provider.
88 */
89 AuthenticationProvider getAuthenticationProvider();
90
91 /**
92 * Clears all caches of the current CMIS binding session.
93 */
94 void clearAllCaches();
95
96 /**
97 * Clears all caches of the current CMIS binding session that are related to
98 * the given repository.
99 *
100 * @param repositoryId
101 * the repository id
102 */
103 void clearRepositoryCache(String repositoryId);
104
105 /**
106 * Releases all resources assigned to this binding instance.
107 */
108 void close();
109 }