package com.justdebugit.thrift.consumer; import java.util.Collection; import java.util.List; import com.google.common.collect.Lists; import com.justdebugit.thrift.client.DefaultThrfitClientFactory; import com.justdebugit.thrift.client.ThriftClientFactory; import com.justdebugit.thrift.common.ServiceConfig; import com.justdebugit.thrift.constants.Constants; public class RpcConsumerFactory { public static Builder builder(){ return new Builder() { }; } public static RpcConsumer newRpcConsumer(String zkConnectString,List<ServiceConfig> list) { return builder().connectStringForZk(zkConnectString).addAllRpcServices(list) .connectTimeoutForZk(6000) .sessionTimeoutForZk(2000).build(); } public static RpcConsumer newRpcConsumer(String connectString, int sessionTimeout, int connectTimeout,List<ServiceConfig> list) { return builder().connectStringForZk(connectString).addAllRpcServices(list) .sessionTimeoutForZk(sessionTimeout).connectTimeoutForZk(connectTimeout) .build(); } public static class Builder{ private String connectString; private int sessionTimeout = Constants.DEFAULT_SESSION_TIMEOUT; private int connectTimeout = Constants.DEFAULT_CONNECT_TIMEOUT; private ThriftClientFactory defaultThriftClientFactory = new DefaultThrfitClientFactory(); private List<ServiceConfig> list = Lists.newArrayList(); public static Builder builder(){ return new Builder(); } public RpcConsumer build(){ return new RpcConsumer(this); } public Builder addAllRpcServices(Collection<? extends ServiceConfig> rpcServices){ list.addAll(rpcServices); return this; } public Builder addRpcService(ServiceConfig rpcService){ list.add(rpcService); return this; } public Builder connectStringForZk(String connectString){ this.connectString = connectString; return this; } public Builder sessionTimeoutForZk(int sessionTimeout){ this.sessionTimeout = sessionTimeout; return this; } public Builder connectTimeoutForZk(int connectTimeout){ this.connectTimeout = connectTimeout; return this; } public String getConnectString() { return connectString; } public int getSessionTimeout() { return sessionTimeout; } public int getConnectTimeout() { return connectTimeout; } public ThriftClientFactory getDefaultThriftClientFactory() { return defaultThriftClientFactory; } public List<ServiceConfig> getRpcServices(){ return list; } public Builder defaultThriftClientFactory( ThriftClientFactory defaultThriftClientFactory) { this.defaultThriftClientFactory = defaultThriftClientFactory; return this; } } }