View Javadoc

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.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   * Helper methods for binding handling.
33   */
34  public final class CmisBindingHelper {
35  
36      private CmisBindingHelper() {
37      }
38  
39      /**
40       * Creates a {@link CmisBinding} object.
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       * Creates a binding with custom parameters.
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       * Creates a Web Services binding.
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       * Creates an AtomPub binding.
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      * Creates an Browser binding.
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      * Creates a local binding.
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 }