1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/*
2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project
3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License");
5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License.
6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at
7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *      http://www.apache.org/licenses/LICENSE-2.0
9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software
11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS,
12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and
14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License.
15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */
16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley.mock;
18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.HttpEntity;
20d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.HttpHost;
21d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.HttpRequest;
22d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.HttpResponse;
23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.HttpStatus;
24d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.ProtocolVersion;
25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.StatusLine;
26d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.client.HttpClient;
27d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.client.ResponseHandler;
28d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.client.methods.HttpUriRequest;
29d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.conn.ClientConnectionManager;
30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.message.BasicHttpResponse;
31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.message.BasicStatusLine;
32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.params.HttpParams;
33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.protocol.HttpContext;
34d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupublic class MockHttpClient implements HttpClient {
37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    private int mStatusCode = HttpStatus.SC_OK;
38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    private HttpEntity mResponseEntity = null;
39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public void setResponseData(HttpEntity entity) {
41d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mStatusCode = HttpStatus.SC_OK;
42d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mResponseEntity = entity;
43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public void setErrorCode(int statusCode) {
46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        if (statusCode == HttpStatus.SC_OK) {
47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            throw new IllegalArgumentException("statusCode cannot be 200 for an error");
48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        }
49d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mStatusCode = statusCode;
50d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
51d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpUriRequest requestExecuted = null;
53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    // This is the only one we actually use.
55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpResponse execute(HttpUriRequest request, HttpContext context) {
57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        requestExecuted = request;
58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        StatusLine statusLine = new BasicStatusLine(
59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                new ProtocolVersion("HTTP", 1, 1), mStatusCode, "");
60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        HttpResponse response = new BasicHttpResponse(statusLine);
61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        response.setEntity(mResponseEntity);
62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        return response;
64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    // Unimplemented methods ahoy
68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
69d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpResponse execute(HttpUriRequest request) {
71d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
72d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
73d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
74d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
75d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpResponse execute(HttpHost target, HttpRequest request) {
76d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
77d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
78d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
79d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
80d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public <T> T execute(HttpUriRequest arg0, ResponseHandler<? extends T> arg1) {
81d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
82d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
83d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
84d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
85d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpResponse execute(HttpHost target, HttpRequest request, HttpContext context) {
86d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
87d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
88d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
89d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
90d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public <T> T execute(HttpUriRequest arg0, ResponseHandler<? extends T> arg1, HttpContext arg2) {
91d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
92d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
93d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
94d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
95d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public <T> T execute(HttpHost arg0, HttpRequest arg1, ResponseHandler<? extends T> arg2) {
96d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
97d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
98d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
99d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
100d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public <T> T execute(HttpHost arg0, HttpRequest arg1, ResponseHandler<? extends T> arg2,
101d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            HttpContext arg3) {
102d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
103d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
104d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
105d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
106d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public ClientConnectionManager getConnectionManager() {
107d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
108d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
109d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
110d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
111d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public HttpParams getParams() {
112d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        throw new UnsupportedOperationException();
113d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
114d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru}
115