Package voldemort.store.http

Source Code of voldemort.store.http.HttpResponseCodeErrorMapper

/*
* Copyright 2008-2009 LinkedIn, Inc
*
* Licensed 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 voldemort.store.http;

import java.net.HttpURLConnection;

import voldemort.VoldemortException;
import voldemort.store.UnknownFailure;
import voldemort.versioning.ObsoleteVersionException;

/**
* A Mapping of HTTP response codes to exceptions
*
* You must add matching entries in both mapResponseCodeToError and
* mapErrorToResponseCode
*
*
*/
public class HttpResponseCodeErrorMapper {

    public VoldemortException mapResponseCodeToError(int responseCode, String message) {
        // 200 range response code is okay!
        if(responseCode >= 200 && responseCode < 300)
            return null;
        else if(responseCode == HttpURLConnection.HTTP_CONFLICT)
            throw new ObsoleteVersionException(message);
        else
            throw new UnknownFailure("Unknown failure occured in HTTP operation: " + responseCode
                                     + " - " + message);
    }

    public ResponseCode mapErrorToResponseCode(VoldemortException v) {
        if(v instanceof ObsoleteVersionException)
            return new ResponseCode(HttpURLConnection.HTTP_CONFLICT, v.getMessage());
        else
            return new ResponseCode(HttpURLConnection.HTTP_BAD_GATEWAY, v.getMessage());
    }

    public void throwError(int responseCode, String message) {
        // 200 range response code is okay!
        if(responseCode >= 200 && responseCode < 300)
            return;
        else
            throw mapResponseCodeToError(responseCode, message);
    }

    /**
     * A struct to hold the response code and response text for an HTTP error.
     *
     *
     */
    public static final class ResponseCode {

        private final int responseCode;
        private final String responseText;

        public ResponseCode(int responseCode, String responseText) {
            super();
            this.responseCode = responseCode;
            this.responseText = responseText;
        }

        public int getCode() {
            return responseCode;
        }

        public String getText() {
            return responseText;
        }

    }

}
TOP

Related Classes of voldemort.store.http.HttpResponseCodeErrorMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.