| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.camel.component.box; |
| |
| import java.util.Map; |
| |
| import com.box.sdk.EncryptionAlgorithm; |
| import com.box.sdk.IAccessTokenCache; |
| import org.apache.camel.RuntimeCamelException; |
| import org.apache.camel.component.box.internal.BoxApiName; |
| import org.apache.camel.spi.Metadata; |
| import org.apache.camel.spi.UriParam; |
| import org.apache.camel.spi.UriParams; |
| import org.apache.camel.spi.UriPath; |
| import org.apache.camel.support.jsse.SSLContextParameters; |
| |
| /** |
| * Component configuration for Box component. |
| */ |
| @UriParams |
| public class BoxConfiguration { |
| |
| /** |
| * Authentication Types for Connection |
| */ |
| public static final String APP_ENTERPRISE_AUTHENTICATION = "APP_ENTERPRISE_AUTHENTICATION"; |
| public static final String APP_USER_AUTHENTICATION = "APP_USER_AUTHENTICATION"; |
| public static final String STANDARD_AUTHENTICATION = "STANDARD_AUTHENTICATION"; |
| |
| /** |
| * Encryption Algorithm Types for Server Authentication. |
| */ |
| public static final String RSA_SHA_512 = "RSA_SHA_512"; |
| public static final String RSA_SHA_384 = "RSA_SHA_384"; |
| public static final String RSA_SHA_256 = "RSA_SHA_256"; |
| |
| @UriPath |
| @Metadata(required = true) |
| private BoxApiName apiName; |
| |
| @UriPath |
| @Metadata(required = true) |
| private String methodName; |
| |
| @UriParam |
| private String enterpriseId; |
| |
| @UriParam |
| private String userId; |
| |
| @UriParam |
| private String clientId; |
| |
| @UriParam(label = "security", secret = true) |
| private String publicKeyId; |
| |
| @UriParam(label = "security", secret = true) |
| private String privateKeyFile; |
| |
| @UriParam(label = "security", secret = true) |
| private String privateKeyPassword; |
| |
| @UriParam(label = "security", secret = true) |
| private String clientSecret; |
| @UriParam(label = "security", secret = true) |
| private String userName; |
| @UriParam(label = "security", secret = true) |
| private String userPassword; |
| |
| @UriParam(label = "advanced,security") |
| private IAccessTokenCache accessTokenCache; |
| |
| @UriParam(label = "advanced,security", defaultValue = "100") |
| private int maxCacheEntries = 100; |
| |
| @UriParam(label = "advanced,security", defaultValue = RSA_SHA_256) |
| private EncryptionAlgorithm encryptionAlgorithm = EncryptionAlgorithm.RSA_SHA_256; |
| |
| @UriParam(label = "authentication", defaultValue = APP_USER_AUTHENTICATION) |
| private String authenticationType = APP_USER_AUTHENTICATION; |
| |
| @UriParam(label = "advanced") |
| private Map<String, Object> httpParams; |
| @UriParam(label = "security") |
| private SSLContextParameters sslContextParameters; |
| |
| /** |
| * What kind of operation to perform |
| * |
| * @return the API Name |
| */ |
| public BoxApiName getApiName() { |
| return apiName; |
| } |
| |
| /** |
| * What kind of operation to perform |
| * |
| * @param apiName |
| * the API Name to set |
| */ |
| public void setApiName(BoxApiName apiName) { |
| this.apiName = apiName; |
| } |
| |
| /** |
| * What sub operation to use for the selected operation |
| * |
| * @return the methodName |
| */ |
| public String getMethodName() { |
| return methodName; |
| } |
| |
| /** |
| * What sub operation to use for the selected operation |
| * |
| * @param methodName |
| * the methodName to set |
| */ |
| public void setMethodName(String methodName) { |
| this.methodName = methodName; |
| } |
| |
| /** |
| * The enterprise ID to use for an App Enterprise. |
| * |
| * @return the enterpriseId |
| */ |
| public String getEnterpriseId() { |
| return enterpriseId; |
| } |
| |
| /** |
| * The enterprise ID to use for an App Enterprise. |
| * |
| * @param enterpriseId |
| * the enterpriseId to set |
| */ |
| public void setEnterpriseId(String enterpriseId) { |
| this.enterpriseId = enterpriseId; |
| } |
| |
| /** |
| * The user ID to use for an App User. |
| * |
| * @return the userId |
| */ |
| public String getUserId() { |
| return userId; |
| } |
| |
| /** |
| * The user ID to use for an App User. |
| * |
| * @param userId |
| * the userId to set |
| */ |
| public void setUserId(String userId) { |
| this.userId = userId; |
| } |
| |
| /** |
| * The ID for public key for validating the JWT signature. |
| * |
| * @return the publicKeyId |
| */ |
| public String getPublicKeyId() { |
| return publicKeyId; |
| } |
| |
| /** |
| * The ID for public key for validating the JWT signature. |
| * |
| * @param publicKeyId |
| * the publicKeyId to set |
| */ |
| public void setPublicKeyId(String publicKeyId) { |
| this.publicKeyId = publicKeyId; |
| } |
| |
| /** |
| * The private key for generating the JWT signature. |
| * |
| * @return the privateKey |
| */ |
| public String getPrivateKeyFile() { |
| return privateKeyFile; |
| } |
| |
| /** |
| * The private key for generating the JWT signature. |
| * |
| * @param privateKey |
| * the privateKey to set |
| */ |
| public void setPrivateKeyFile(String privateKey) { |
| this.privateKeyFile = privateKey; |
| } |
| |
| /** |
| * The password for the private key. |
| * |
| * @return the privateKeyPassword |
| */ |
| public String getPrivateKeyPassword() { |
| return privateKeyPassword; |
| } |
| |
| /** |
| * The password for the private key. |
| * |
| * @param privateKeyPassword |
| * the privateKeyPassword to set |
| */ |
| public void setPrivateKeyPassword(String privateKeyPassword) { |
| this.privateKeyPassword = privateKeyPassword; |
| } |
| |
| /** |
| * The maximum number of access tokens in cache. |
| * |
| * @return the maxCacheEntries |
| */ |
| public int getMaxCacheEntries() { |
| return maxCacheEntries; |
| } |
| |
| /** |
| * The maximum number of access tokens in cache. |
| * |
| * @param maxCacheEntries |
| * the maxCacheEntries to set |
| */ |
| public void setMaxCacheEntries(int maxCacheEntries) { |
| this.maxCacheEntries = maxCacheEntries; |
| } |
| |
| public void setMaxCacheEntries(String maxCacheEntries) { |
| try { |
| this.maxCacheEntries = Integer.decode(maxCacheEntries); |
| } catch (NumberFormatException e) { |
| throw new RuntimeCamelException(String.format("Invalid 'maxCacheEntries' value: %s", maxCacheEntries), e); |
| } |
| } |
| |
| /** |
| * The type of encryption algorithm for JWT. |
| * |
| * @return the encryptionAlgorithm |
| */ |
| public EncryptionAlgorithm getEncryptionAlgorithm() { |
| return encryptionAlgorithm; |
| } |
| |
| /** |
| * The type of encryption algorithm for JWT. |
| * |
| * <p> |
| * Supported Algorithms: |
| * <ul> |
| * <li>RSA_SHA_256</li> |
| * <li>RSA_SHA_384</li> |
| * <li>RSA_SHA_512</li> |
| * </ul> |
| * |
| * @param encryptionAlgorithm |
| * the encryptionAlgorithm to set |
| */ |
| public void setEncryptionAlgorithm(EncryptionAlgorithm encryptionAlgorithm) { |
| this.encryptionAlgorithm = encryptionAlgorithm; |
| } |
| |
| public void setEncryptionAlgorithm(String encryptionAlgorithm) { |
| switch (encryptionAlgorithm) { |
| case RSA_SHA_256: |
| this.encryptionAlgorithm = EncryptionAlgorithm.RSA_SHA_256; |
| return; |
| case RSA_SHA_384: |
| this.encryptionAlgorithm = EncryptionAlgorithm.RSA_SHA_384; |
| return; |
| case RSA_SHA_512: |
| this.encryptionAlgorithm = EncryptionAlgorithm.RSA_SHA_512; |
| return; |
| default: |
| throw new RuntimeCamelException(String.format("Invalid Encryption Algorithm: %s", encryptionAlgorithm)); |
| } |
| } |
| |
| /** |
| * The type of authentication for connection. |
| * |
| * <p> |
| * Types of Authentication: |
| * <ul> |
| * <li>STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged)</li> |
| * <li>SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens</li> |
| * </ul> |
| * |
| * @return the authenticationType |
| */ |
| public String getAuthenticationType() { |
| return authenticationType; |
| } |
| |
| /** |
| * The type of authentication for connection. |
| * |
| * <p> |
| * Types of Authentication: |
| * <ul> |
| * <li>STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged)</li> |
| * <li>SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens</li> |
| * </ul> |
| * |
| * @param authenticationType |
| * the authenticationType to set |
| */ |
| public void setAuthenticationType(String authenticationType) { |
| switch (authenticationType) { |
| case STANDARD_AUTHENTICATION: |
| case APP_USER_AUTHENTICATION: |
| case APP_ENTERPRISE_AUTHENTICATION: |
| this.authenticationType = authenticationType; |
| return; |
| default: |
| throw new RuntimeCamelException(String.format("Invalid Authentication Type: %s", authenticationType)); |
| } |
| } |
| |
| /** |
| * Box application client ID |
| * |
| * @return the clientId |
| */ |
| public String getClientId() { |
| return clientId; |
| } |
| |
| /** |
| * Box application client ID |
| * |
| * @param clientId |
| * the clientId to set |
| */ |
| public void setClientId(String clientId) { |
| this.clientId = clientId; |
| } |
| |
| /** |
| * Box application client secret |
| * |
| * @return the clientSecret |
| */ |
| public String getClientSecret() { |
| return clientSecret; |
| } |
| |
| /** |
| * Box application client secret |
| * |
| * @param clientSecret |
| * the clientSecret to set |
| */ |
| public void setClientSecret(String clientSecret) { |
| this.clientSecret = clientSecret; |
| } |
| |
| /** |
| * Box user name, MUST be provided |
| * |
| * @return the userName |
| */ |
| public String getUserName() { |
| return userName; |
| } |
| |
| /** |
| * Box user name, MUST be provided |
| * |
| * @param userName |
| * the userName to set |
| */ |
| public void setUserName(String userName) { |
| this.userName = userName; |
| } |
| |
| /** |
| * Box user password, MUST be provided if authSecureStorage is not set, or |
| * returns null on first call |
| * |
| * @return the userPassword |
| */ |
| public String getUserPassword() { |
| return userPassword; |
| } |
| |
| /** |
| * Box user password, MUST be provided if authSecureStorage is not set, or |
| * returns null on first call |
| * |
| * @param userPassword |
| * the userPassword to set |
| */ |
| public void setUserPassword(String userPassword) { |
| this.userPassword = userPassword; |
| } |
| |
| /** |
| * Custom HTTP params for settings like proxy host |
| * |
| * @return the httpParams |
| */ |
| public Map<String, Object> getHttpParams() { |
| return httpParams; |
| } |
| |
| /** |
| * Custom HTTP params for settings like proxy host |
| * |
| * @param httpParams |
| * the httpParams to set |
| */ |
| public void setHttpParams(Map<String, Object> httpParams) { |
| this.httpParams = httpParams; |
| } |
| |
| /** |
| * To configure security using SSLContextParameters. |
| * |
| * @return the sslContextParameters |
| */ |
| public SSLContextParameters getSslContextParameters() { |
| return sslContextParameters; |
| } |
| |
| /** |
| * To configure security using SSLContextParameters. |
| * |
| * @param sslContextParameters |
| * the sslContextParameters to set |
| */ |
| public void setSslContextParameters(SSLContextParameters sslContextParameters) { |
| this.sslContextParameters = sslContextParameters; |
| } |
| |
| /** |
| * Custom Access Token Cache for storing and retrieving access tokens. |
| * |
| * @return Custom Access Token Cache |
| */ |
| public IAccessTokenCache getAccessTokenCache() { |
| return accessTokenCache; |
| } |
| |
| /** |
| * Custom Access Token Cache for storing and retrieving access tokens. |
| * |
| * @param accessTokenCache |
| * - the Custom Access Token Cache |
| */ |
| public void setAccessTokenCache(IAccessTokenCache accessTokenCache) { |
| this.accessTokenCache = accessTokenCache; |
| } |
| } |