106 lines
3.0 KiB
Java
106 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2008 Google 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 com.google.gson.wsf;
|
|
|
|
import java.lang.reflect.Type;
|
|
|
|
/**
|
|
* The data associated with a Web service response. This includes http response header parameters,
|
|
* and {@link ResponseBody}.
|
|
*
|
|
* @author inder
|
|
*/
|
|
public final class WebServiceResponse {
|
|
|
|
private final HeaderMap headers;
|
|
private final ResponseBody body;
|
|
private final ResponseSpec spec;
|
|
|
|
public static class Builder {
|
|
private final HeaderMap.Builder headers;
|
|
private final ResponseBody.Builder body;
|
|
private final ResponseSpec spec;
|
|
|
|
public Builder(ResponseSpec spec) {
|
|
this.spec = spec;
|
|
headers = new HeaderMap.Builder(spec.getHeadersSpec());
|
|
body = new ResponseBody.Builder(spec.getBodySpec());
|
|
}
|
|
|
|
public Builder putHeader(String paramName, Object content) {
|
|
headers.put(paramName, content);
|
|
return this;
|
|
}
|
|
|
|
public Builder putHeader(String paramName, Object content, Type typeOfContent) {
|
|
headers.put(paramName, content, typeOfContent);
|
|
return this;
|
|
}
|
|
|
|
public Builder putBody(String paramName, Object content) {
|
|
body.put(paramName, content);
|
|
return this;
|
|
}
|
|
|
|
public Builder put(String paramName, Object content, Type typeOfContent) {
|
|
body.put(paramName, content, typeOfContent);
|
|
return this;
|
|
}
|
|
|
|
public WebServiceResponse create() {
|
|
return new WebServiceResponse(spec, headers.create(), body.create());
|
|
}
|
|
}
|
|
|
|
private WebServiceResponse(ResponseSpec spec, HeaderMap headers, ResponseBody body) {
|
|
this.spec = spec;
|
|
this.headers = headers;
|
|
this.body = body;
|
|
}
|
|
|
|
public WebServiceResponse(HeaderMap responseHeaders, ResponseBody responseBody) {
|
|
this.spec = new ResponseSpec(responseHeaders.getSpec(), responseBody.getSpec());
|
|
this.headers = responseHeaders;
|
|
this.body = responseBody;
|
|
}
|
|
|
|
public ResponseSpec getSpec() {
|
|
return spec;
|
|
}
|
|
|
|
public HeaderMap getHeaders() {
|
|
return headers;
|
|
}
|
|
|
|
public ResponseBody getBody() {
|
|
return body;
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public <T> T getHeader(String headerName) {
|
|
return (T) headers.get(headerName);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
StringBuilder sb = new StringBuilder("{headers:");
|
|
sb.append(headers);
|
|
sb.append(",body:").append(body);
|
|
sb.append("}");
|
|
return sb.toString();
|
|
}
|
|
}
|