001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.camel.component.http;
018
019 import java.util.Map;
020
021 import org.apache.camel.CamelException;
022 import org.apache.camel.util.ObjectHelper;
023
024 public class HttpOperationFailedException extends CamelException {
025 private static final long serialVersionUID = -8721487434390572634L;
026 private final String uri;
027 private final String redirectLocation;
028 private final int statusCode;
029 private final String statusText;
030 private final Map<String, String> responseHeaders;
031 private final String responseBody;
032
033 public HttpOperationFailedException(String uri, int statusCode, String statusText, String location, Map<String, String> responseHeaders, String responseBody) {
034 super("HTTP operation failed invoking " + uri + " with statusCode: " + statusCode + (location != null ? ", redirectLocation: " + location : ""));
035 this.uri = uri;
036 this.statusCode = statusCode;
037 this.statusText = statusText;
038 this.redirectLocation = location;
039 this.responseHeaders = responseHeaders;
040 this.responseBody = responseBody;
041 }
042
043 public String getUri() {
044 return uri;
045 }
046
047 public boolean isRedirectError() {
048 return statusCode >= 300 && statusCode < 400;
049 }
050
051 public boolean hasRedirectLocation() {
052 return ObjectHelper.isNotEmpty(redirectLocation);
053 }
054
055 public String getRedirectLocation() {
056 return redirectLocation;
057 }
058
059 public int getStatusCode() {
060 return statusCode;
061 }
062
063 public String getStatusText() {
064 return statusText;
065 }
066
067 public Map<String, String> getResponseHeaders() {
068 return responseHeaders;
069 }
070
071 public String getResponseBody() {
072 return responseBody;
073 }
074
075 }