Introduced the notion of TypedKey for a parameter map or spec
This commit is contained in:
parent
9c8e8bd77e
commit
1925fb966c
|
@ -31,6 +31,10 @@ public final class HeaderMap extends ParamMap {
|
||||||
super(spec);
|
super(spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> Builder put(TypedKey<T> paramKey, T content) {
|
||||||
|
return put(paramKey.getName(), content);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Builder put(String paramName, Object content) {
|
public Builder put(String paramName, Object content) {
|
||||||
return (Builder) super.put(paramName, content);
|
return (Builder) super.put(paramName, content);
|
||||||
|
|
|
@ -63,6 +63,10 @@ class ParamMap {
|
||||||
return contents.get(paramName);
|
return contents.get(paramName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> T get(TypedKey<T> key) {
|
||||||
|
return get(key.getName(), key.getClassOfT());
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T> T get(String key, Type typeOfValue) {
|
public <T> T get(String key, Type typeOfValue) {
|
||||||
Preconditions.checkArgument(spec.checkIfCompatible(key, typeOfValue));
|
Preconditions.checkArgument(spec.checkIfCompatible(key, typeOfValue));
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.google.gson.webservice.definition;
|
||||||
|
|
||||||
|
public class TypedKey<T> {
|
||||||
|
private final String name;
|
||||||
|
private final Class<T> classOfT;
|
||||||
|
|
||||||
|
public TypedKey(String name, Class<T> classOfT) {
|
||||||
|
this.name = name;
|
||||||
|
this.classOfT = classOfT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class<T> getClassOfT() {
|
||||||
|
return classOfT;
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,18 +55,37 @@ public final class WebServiceCallSpec {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> Builder addRequestParam(TypedKey<T> paramKey, Class<T> typeOfParam) {
|
||||||
|
return addRequestParam(paramKey.getName(), typeOfParam);
|
||||||
|
}
|
||||||
|
|
||||||
public Builder addRequestParam(String paramName, Type type) {
|
public Builder addRequestParam(String paramName, Type type) {
|
||||||
reqParamsSpecBuilder.put(paramName, type);
|
reqParamsSpecBuilder.put(paramName, type);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> Builder addRequestBodyParam(TypedKey<T> paramKey, Class<T> typeOfParam) {
|
||||||
|
return addRequestBodyParam(paramKey.getName(), typeOfParam);
|
||||||
|
}
|
||||||
|
|
||||||
public Builder addRequestBodyParam(String paramName, Type type) {
|
public Builder addRequestBodyParam(String paramName, Type type) {
|
||||||
reqBodySpecBuilder.add(paramName, type);
|
reqBodySpecBuilder.add(paramName, type);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> Builder addResponseParam(TypedKey<T> paramKey, Class<T> typeOfParam) {
|
||||||
|
return addResponseParam(paramKey.getName(), typeOfParam);
|
||||||
|
}
|
||||||
|
|
||||||
public Builder addResponseParam(String paramName, Type type) {
|
public Builder addResponseParam(String paramName, Type type) {
|
||||||
resParamsSpecBuilder.put(paramName, type);
|
resParamsSpecBuilder.put(paramName, type);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> Builder addResponseBodyParam(TypedKey<T> paramKey, Class<T> typeOfParam) {
|
||||||
|
return addResponseBodyParam(paramKey.getName(), typeOfParam);
|
||||||
|
}
|
||||||
|
|
||||||
public Builder addResponseBodyParam(String paramName, Type type) {
|
public Builder addResponseBodyParam(String paramName, Type type) {
|
||||||
resBodySpecBuilder.add(paramName, type);
|
resBodySpecBuilder.add(paramName, type);
|
||||||
return this;
|
return this;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user