blob: 90efc82841246948f3b5b64cc87fb1954b89b4d8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2008 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.provisional.commons.soap;
import java.io.IOException;
import org.apache.axis.AxisFault;
import org.apache.axis.Constants;
import org.apache.axis.utils.Messages;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethodBase;
/**
* Indicates that the server returned an unexpected HTTP error in response to a SOAP call.
*
* @author Steffen Pingel
*/
public class AxisHttpFault extends AxisFault {
private static final long serialVersionUID = -7568493217182396309L;
public static AxisHttpFault makeFault(HttpMethodBase method) throws IOException {
int returnCode = method.getStatusCode();
String statusMessage = method.getStatusText();
AxisHttpFault fault = new AxisHttpFault("HTTP", "(" + returnCode + ")" + statusMessage, returnCode); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
fault.extractDetails(method);
fault.setFaultDetailString(Messages.getMessage("return01", "" + returnCode, //$NON-NLS-1$ //$NON-NLS-2$
method.getResponseBodyAsString()));
fault.addFaultDetail(Constants.QNAME_FAULTDETAIL_HTTPERRORCODE, Integer.toString(returnCode));
return fault;
}
private String location;
private final int returnCode;
public AxisHttpFault(String code, String faultString, int returnCode) {
super(code, faultString, null, null);
this.returnCode = returnCode;
}
private void extractDetails(HttpMethodBase method) {
Header locationHeader = method.getResponseHeader("location"); //$NON-NLS-1$
if (locationHeader != null) {
this.location = locationHeader.getValue();
}
}
public String getLocation() {
return location;
}
public int getReturnCode() {
return returnCode;
}
}