| /* |
| * 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.chemistry.opencmis.commons.exceptions; |
| |
| import java.math.BigInteger; |
| import java.util.Map; |
| |
| /** |
| * Base exception class for all CMIS exceptions. |
| */ |
| public abstract class CmisBaseException extends RuntimeException { |
| |
| private static final long serialVersionUID = 1L; |
| |
| /** Error code used by the Web Services binding. */ |
| private BigInteger code = BigInteger.ZERO; |
| |
| /** |
| * Content the of the error page returned by the AtomPub or Browser Binding |
| * server. |
| */ |
| private String errorContent; |
| |
| /** Additional data of this exception. */ |
| private Map<String, String> additionalData; |
| |
| /** |
| * Default constructor. |
| */ |
| protected CmisBaseException() { |
| super(); |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param code |
| * error code |
| * @param cause |
| * the cause |
| */ |
| protected CmisBaseException(String message, BigInteger code, Throwable cause) { |
| super(message, cause); |
| this.code = code; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param errorContent |
| * error page content |
| * @param additionalData |
| * additional data |
| * @param cause |
| * the cause |
| */ |
| protected CmisBaseException(String message, String errorContent, Map<String, String> additionalData, Throwable cause) { |
| super(message, cause); |
| this.errorContent = errorContent; |
| this.additionalData = additionalData; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param errorContent |
| * error page content |
| * @param cause |
| * the cause |
| */ |
| protected CmisBaseException(String message, String errorContent, Throwable cause) { |
| this(message, errorContent, null, cause); |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param code |
| * error code |
| */ |
| protected CmisBaseException(String message, BigInteger code) { |
| super(message); |
| this.code = code; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param code |
| * error code |
| * @param errorContent |
| * error page content |
| */ |
| protected CmisBaseException(String message, BigInteger code, String errorContent) { |
| super(message); |
| this.code = code; |
| this.errorContent = errorContent; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param code |
| * error code |
| * @param errorContent |
| * error page content |
| * @param additionalData |
| * additional data |
| */ |
| protected CmisBaseException(String message, BigInteger code, String errorContent, Map<String, String> additionalData) { |
| this(message, code, errorContent); |
| this.additionalData = additionalData; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param errorContent |
| * error page content |
| */ |
| protected CmisBaseException(String message, String errorContent) { |
| super(message); |
| this.errorContent = errorContent; |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| * @param cause |
| * the cause |
| */ |
| protected CmisBaseException(String message, Throwable cause) { |
| this(message, (BigInteger) null, cause); |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param message |
| * error message |
| */ |
| protected CmisBaseException(String message) { |
| this(message, (BigInteger) null); |
| } |
| |
| /** |
| * Returns the error code sent by the CMIS repository (Web Services binding |
| * only). |
| * |
| * @return error code or {@code null} if the CMIS repository didn't send an |
| * error code or the binding doesn't support error codes. |
| */ |
| public BigInteger getCode() { |
| return code; |
| } |
| |
| /** |
| * Returns the content of the error page sent by the web server. |
| * |
| * @return the content of the error page or {@code null} if the server |
| * didn't send text content. |
| */ |
| public String getErrorContent() { |
| return errorContent; |
| } |
| |
| /** |
| * Returns additional data, if available. |
| * |
| * @return additional data, can be {@code null} |
| */ |
| public Map<String, String> getAdditionalData() { |
| return additionalData; |
| } |
| |
| /** |
| * Returns additional data, if available. |
| * |
| * @param key |
| * the data key |
| * |
| * @return additional data, can be {@code null} |
| */ |
| public String getAdditionalData(String key) { |
| if (additionalData == null) { |
| return null; |
| } |
| |
| return additionalData.get(key); |
| } |
| |
| /** |
| * Sets additional data. |
| * |
| * @param data |
| * the data |
| */ |
| public void setAdditionalData(Map<String, String> data) { |
| additionalData = data; |
| } |
| |
| /** |
| * Returns the name of the exception as defined in the CMIS specification. |
| * |
| * @return the exception name |
| */ |
| public abstract String getExceptionName(); |
| } |