This project has retired. For details please refer to its Attic page.
CmisBindingHelper 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.runtime;
20  
21  import java.util.Map;
22  
23  import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
24  import org.apache.chemistry.opencmis.commons.SessionParameter;
25  import org.apache.chemistry.opencmis.commons.enums.BindingType;
26  import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
27  import org.apache.chemistry.opencmis.commons.spi.AuthenticationProvider;
28  import org.apache.chemistry.opencmis.commons.spi.CmisBinding;
29  
30  /**
31   * Helper methods for binding handling.
32   */
33  public class CmisBindingHelper {
34  
35      private CmisBindingHelper() {
36      }
37  
38      /**
39       * Creates a {@link CmisBinding} object.
40       */
41      public static CmisBinding createBinding(Map<String, String> parameters,
42              AuthenticationProvider authenticationProvider) {
43          if (parameters == null || parameters.isEmpty()) {
44              throw new CmisRuntimeException("Session parameter not set!");
45          }
46  
47          if (!parameters.containsKey(SessionParameter.BINDING_TYPE)) {
48              parameters.put(SessionParameter.BINDING_TYPE, BindingType.CUSTOM.value());
49          }
50  
51          BindingType bt = BindingType.fromValue(parameters.get(SessionParameter.BINDING_TYPE));
52  
53          switch (bt) {
54          case ATOMPUB:
55              return createAtomPubBinding(parameters, authenticationProvider);
56          case WEBSERVICES:
57              return createWebServiceBinding(parameters, authenticationProvider);
58          case BROWSER:
59              return createCmisBrowserBinding(parameters, authenticationProvider);
60          case LOCAL:
61              return createLocalBinding(parameters);
62          case CUSTOM:
63              return createCustomBinding(parameters, authenticationProvider);
64          default:
65              throw new CmisRuntimeException("Ambiguous session parameter: " + parameters);
66          }
67      }
68  
69      /**
70       * Creates a binding with custom parameters.
71       */
72      private static CmisBinding createCustomBinding(Map<String, String> parameters,
73              AuthenticationProvider authenticationProvider) {
74          CmisBindingFactory factory = CmisBindingFactory.newInstance();
75          CmisBinding binding = factory.createCmisBinding(parameters, authenticationProvider);
76  
77          return binding;
78      }
79  
80      /**
81       * Creates a Web Services binding.
82       */
83      private static CmisBinding createWebServiceBinding(Map<String, String> parameters,
84              AuthenticationProvider authenticationProvider) {
85          CmisBindingFactory factory = CmisBindingFactory.newInstance();
86          CmisBinding binding = factory.createCmisWebServicesBinding(parameters, authenticationProvider);
87  
88          return binding;
89      }
90  
91      /**
92       * Creates an AtomPub binding.
93       */
94      private static CmisBinding createAtomPubBinding(Map<String, String> parameters,
95              AuthenticationProvider authenticationProvider) {
96          CmisBindingFactory factory = CmisBindingFactory.newInstance();
97          CmisBinding binding = factory.createCmisAtomPubBinding(parameters, authenticationProvider);
98  
99          return binding;
100     }
101 
102     /**
103      * Creates an Browser binding.
104      */
105     private static CmisBinding createCmisBrowserBinding(Map<String, String> parameters,
106             AuthenticationProvider authenticationProvider) {
107         CmisBindingFactory factory = CmisBindingFactory.newInstance();
108         CmisBinding binding = factory.createCmisBrowserBinding(parameters, authenticationProvider);
109 
110         return binding;
111     }
112 
113     /**
114      * Creates a local binding.
115      */
116     private static CmisBinding createLocalBinding(Map<String, String> parameters) {
117         CmisBindingFactory factory = CmisBindingFactory.newInstance();
118         CmisBinding binding = factory.createCmisLocalBinding(parameters);
119 
120         return binding;
121     }
122 }