1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.client.runtime;
20
21 import java.util.Map;
22
23 import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
24 import org.apache.chemistry.opencmis.client.bindings.cache.TypeDefinitionCache;
25 import org.apache.chemistry.opencmis.commons.SessionParameter;
26 import org.apache.chemistry.opencmis.commons.enums.BindingType;
27 import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
28 import org.apache.chemistry.opencmis.commons.spi.AuthenticationProvider;
29 import org.apache.chemistry.opencmis.commons.spi.CmisBinding;
30
31
32
33
34 public final class CmisBindingHelper {
35
36 private CmisBindingHelper() {
37 }
38
39
40
41
42 public static CmisBinding createBinding(Map<String, String> parameters,
43 AuthenticationProvider authenticationProvider, TypeDefinitionCache typeDefCache) {
44 if (parameters == null || parameters.isEmpty()) {
45 throw new CmisRuntimeException("Session parameter not set!");
46 }
47
48 if (!parameters.containsKey(SessionParameter.BINDING_TYPE)) {
49 parameters.put(SessionParameter.BINDING_TYPE, BindingType.CUSTOM.value());
50 }
51
52 BindingType bt = null;
53 try {
54 bt = BindingType.fromValue(parameters.get(SessionParameter.BINDING_TYPE));
55 } catch (IllegalArgumentException iae) {
56 throw new CmisRuntimeException("Invalid binding type!");
57 }
58
59 switch (bt) {
60 case ATOMPUB:
61 return createAtomPubBinding(parameters, authenticationProvider, typeDefCache);
62 case WEBSERVICES:
63 return createWebServiceBinding(parameters, authenticationProvider, typeDefCache);
64 case BROWSER:
65 return createCmisBrowserBinding(parameters, authenticationProvider, typeDefCache);
66 case LOCAL:
67 return createLocalBinding(parameters, typeDefCache);
68 case CUSTOM:
69 return createCustomBinding(parameters, authenticationProvider, typeDefCache);
70 default:
71 throw new CmisRuntimeException("Invalid binding type!");
72 }
73 }
74
75
76
77
78 private static CmisBinding createCustomBinding(Map<String, String> parameters,
79 AuthenticationProvider authenticationProvider, TypeDefinitionCache typeDefCache) {
80 CmisBindingFactory factory = CmisBindingFactory.newInstance();
81 CmisBinding binding = factory.createCmisBinding(parameters, authenticationProvider, typeDefCache);
82
83 return binding;
84 }
85
86
87
88
89 private static CmisBinding createWebServiceBinding(Map<String, String> parameters,
90 AuthenticationProvider authenticationProvider, TypeDefinitionCache typeDefCache) {
91 CmisBindingFactory factory = CmisBindingFactory.newInstance();
92 CmisBinding binding = factory.createCmisWebServicesBinding(parameters, authenticationProvider, typeDefCache);
93
94 return binding;
95 }
96
97
98
99
100 private static CmisBinding createAtomPubBinding(Map<String, String> parameters,
101 AuthenticationProvider authenticationProvider, TypeDefinitionCache typeDefCache) {
102 CmisBindingFactory factory = CmisBindingFactory.newInstance();
103 CmisBinding binding = factory.createCmisAtomPubBinding(parameters, authenticationProvider, typeDefCache);
104
105 return binding;
106 }
107
108
109
110
111 private static CmisBinding createCmisBrowserBinding(Map<String, String> parameters,
112 AuthenticationProvider authenticationProvider, TypeDefinitionCache typeDefCache) {
113 CmisBindingFactory factory = CmisBindingFactory.newInstance();
114 CmisBinding binding = factory.createCmisBrowserBinding(parameters, authenticationProvider, typeDefCache);
115
116 return binding;
117 }
118
119
120
121
122 private static CmisBinding createLocalBinding(Map<String, String> parameters, TypeDefinitionCache typeDefCache) {
123 CmisBindingFactory factory = CmisBindingFactory.newInstance();
124 CmisBinding binding = factory.createCmisLocalBinding(parameters, typeDefCache);
125
126 return binding;
127 }
128 }