Create Pipe With Config
package org.aerogear.android.impl.pipeline;
import java.net.URL;
public final class PipeConfig {
private final String name;
private final String endpoint;
private final Type type;
public PipeConfig(String name) {
this(name, name);
}
public PipeConfig(String name, String endpoint) {
this(name, endpoint, Type.REST);
}
public PipeConfig(String name, Type type) {
this(name, name, type);
}
public PipeConfig(String name, String endpoint, Type type) {
this.name = name;
this.endpoint = endpoint;
this.type = type;
}
public String getName() {
return name;
}
public String getEndpoint() {
return endpoint;
}
public Type getType() {
return type;
}
}
public class Pipeline {
private final URL baseURL;
private final Map<String, Pipe> pipes = new HashMap<String, Pipe>();
public Pipe pipe(Class klass) {
PipeConfig config = new PipeConfig(klass.getSimpleName(), baseURL);
return pipe(klass, config);
}
public Pipe pipe(Class klass, PipeConfig config) {
Pipe pipe = AdapterFactory.createPipe(klass, config);
pipes.put(config.getName(), pipe);
return pipe;
}
. . .
}
final class AdapterFactory {
private AdapterFactory() {}
public static Pipe createPipe(Class klass, PipeConfig config) {
if (config.getType().equals(Type.REST)) {
return new RestAdapter(klass, new HttpRestProvider(appendEndpoint(config.getUrl(), config.getEndpoint())));
}
throw new IllegalArgumentException("Type is not supported yet");
}
}