Skip to content

Instantly share code, notes, and snippets.

@He-Pin
Created August 9, 2013 07:15
Show Gist options
  • Save He-Pin/6191724 to your computer and use it in GitHub Desktop.
Save He-Pin/6191724 to your computer and use it in GitHub Desktop.
Builder
package com.pekall.cd.mdm.web.admin.rpc.builder;
import com.ning.http.client.Request;
import com.ning.http.client.RequestBuilder;
/**
* Author: kerr
* Mail: pin.he@pekall.com
*/
public abstract class AbstractBuilder implements Builder {
private final RequestBuilder builder;
protected String token;
// public AbstractBuilder() {
// this.builder = new RequestBuilder();
// }
public AbstractBuilder setToken(String token) {
this.token = token;
return this;
}
protected AbstractBuilder(final String method) {
this.builder = new RequestBuilder(method);
}
/**
* need override
*/
public AbstractBuilder newBuilder() {
return null;
}
public AbstractBuilder setURl(final String url) {
builder.setUrl(url);
return this;
}
public AbstractBuilder setHeader(final String key, final String value) {
builder.setHeader(key, value);
return this;
}
public AbstractBuilder addHeader(final String key, final String value) {
builder.addHeader(key, value);
return this;
}
public AbstractBuilder addParameter(final String key, final String value) {
builder.addParameter(key, value);
return this;
}
public AbstractBuilder addQueryParameter(final String key, final String value) {
builder.addQueryParameter(key, value);
return this;
}
public AbstractBuilder setBody(final String body) {
builder.setBody(body);
return this;
}
public AbstractBuilder authorization(final String token) {
builder.addHeader("Authorization", token);
return this;
}
@Override
public Request build() {
if (!validated()) {
throw new IllegalStateException("is not validated,need more stable state");
}
preBuild();
return builder.build();
}
abstract protected void preBuild();
protected boolean validated() {
return false;
}
}
package com.pekall.cd.mdm.web.admin.rpc.builder;
import com.ning.http.client.Request;
/**
* Author: kerr
* Mail: pin.he@pekall.com
*/
public interface Builder {
Request build();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment