org.eclipse.mylyn.internal.provisional.commons.soap.AxisHttpFault.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.mylyn.internal.provisional.commons.soap.AxisHttpFault.java

Source

/*******************************************************************************
 * 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;
    }

}