Skip to content

Commit

Permalink
remove guava completely
Browse files Browse the repository at this point in the history
  • Loading branch information
Josh Gordineer committed Nov 23, 2023
1 parent 5fb3531 commit 991dbff
Show file tree
Hide file tree
Showing 40 changed files with 235 additions and 242 deletions.
17 changes: 17 additions & 0 deletions ribbon-core/src/main/java/com/netflix/client/util/ThreadUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.netflix.client.util;

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

public class ThreadUtils {

public static ThreadFactory createThreadFactory(String name) {
return r -> {
Thread thread = Executors.defaultThreadFactory().newThread(r);
thread.setName(name);
thread.setDaemon(true);
return thread;
};
}

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.netflix.niws.loadbalancer;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.netflix.config.DynamicIntProperty;
import com.netflix.discovery.CacheRefreshedEvent;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaEvent;
import com.netflix.discovery.EurekaEventListener;
import com.netflix.loadbalancer.*;
import java.util.concurrent.Executors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -45,15 +45,17 @@ private static class LazyHolder {
private LazyHolder() {
int corePoolSize = getCorePoolSize();
defaultServerListUpdateExecutor = new ThreadPoolExecutor(
corePoolSize,
corePoolSize * 5,
0,
TimeUnit.NANOSECONDS,
new ArrayBlockingQueue<Runnable>(queueSizeProp.get()),
new ThreadFactoryBuilder()
.setNameFormat("EurekaNotificationServerListUpdater-%d")
.setDaemon(true)
.build()
corePoolSize,
corePoolSize * 5,
0,
TimeUnit.NANOSECONDS,
new ArrayBlockingQueue<Runnable>(queueSizeProp.get()),
r -> {
Thread thread = Executors.defaultThreadFactory().newThread(r);
thread.setName("EurekaNotificationServerListUpdater-%d");
thread.setDaemon(true);
return thread;
}
);

poolSizeProp.addCallback(new Runnable() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.netflix.niws.loadbalancer;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.netflix.discovery.CacheRefreshedEvent;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaEventListener;
import com.netflix.loadbalancer.ServerListUpdater;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import javax.inject.Provider;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.RejectedExecutionException;
Expand Down Expand Up @@ -42,10 +42,12 @@ public void setUp() {
0,
TimeUnit.NANOSECONDS,
new ArrayBlockingQueue<Runnable>(1000),
new ThreadFactoryBuilder()
.setNameFormat("EurekaNotificationServerListUpdater-%d")
.setDaemon(true)
.build()
r -> {
Thread thread = Executors.defaultThreadFactory().newThread(r);
thread.setName("EurekaNotificationServerListUpdater-%d");
thread.setDaemon(true);
return thread;
}
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.netflix.niws.loadbalancer;

import com.google.common.collect.Lists;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.client.config.DefaultClientConfigImpl;
import com.netflix.client.config.IClientConfig;
Expand All @@ -23,6 +22,9 @@
import com.netflix.loadbalancer.ServerListUpdater;
import com.netflix.loadbalancer.ZoneAffinityServerListFilter;
import com.netflix.loadbalancer.ZoneAwareLoadBalancer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.apache.commons.configuration.Configuration;
import org.junit.Before;
import org.junit.Ignore;
Expand Down Expand Up @@ -90,7 +92,7 @@ public void testBuildWithDiscoveryEnabledNIWSServerList() {
.withServerListFilter(filter)
.buildDynamicServerListLoadBalancer();
assertNotNull(lb);
assertEquals(Lists.newArrayList(expected), lb.getAllServers());
assertEquals(Collections.singletonList(expected), lb.getAllServers());
assertSame(filter, lb.getFilter());
assertSame(list, lb.getServerListImpl());
Server server = lb.chooseServer();
Expand All @@ -111,7 +113,7 @@ public void testBuildWithDiscoveryEnabledNIWSServerListAndUpdater() {
.withServerListUpdater(updater)
.buildDynamicServerListLoadBalancerWithUpdater();
assertNotNull(lb);
assertEquals(Lists.newArrayList(expected), lb.getAllServers());
assertEquals(Collections.singletonList(expected), lb.getAllServers());
assertSame(filter, lb.getFilter());
assertSame(list, lb.getServerListImpl());
assertSame(updater, lb.getServerListUpdater());
Expand Down Expand Up @@ -139,12 +141,12 @@ public void testBuildWithArchaiusProperties() {
assertTrue(dynamicLB.getFilter() instanceof ZoneAffinityServerListFilter);
assertTrue(dynamicLB.getRule() instanceof RoundRobinRule);
assertTrue(dynamicLB.getPing() instanceof DummyPing);
assertEquals(Lists.newArrayList(expected), lb.getAllServers());
assertEquals(Collections.singletonList(expected), lb.getAllServers());
}

@Test
public void testBuildStaticServerListLoadBalancer() {
List<Server> list = Lists.newArrayList(expected, expected);
List<Server> list = new ArrayList<>(Arrays.asList(expected, expected));
IRule rule = new AvailabilityFilteringRule();
IClientConfig clientConfig = IClientConfig.Builder.newBuilder()
.withDefaultValues()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import rx.Observable;

import com.google.common.collect.Lists;
import com.netflix.client.DefaultLoadBalancerRetryHandler;
import com.netflix.client.RetryHandler;
import com.netflix.loadbalancer.BaseLoadBalancer;
Expand Down Expand Up @@ -57,10 +58,11 @@ public LoadBalancerStats getLoadBalancerStats() {
}

public static void main(String[] args) throws Exception {
URLConnectionLoadBalancer urlLoadBalancer = new URLConnectionLoadBalancer(Lists.newArrayList(
URLConnectionLoadBalancer urlLoadBalancer = new URLConnectionLoadBalancer(new ArrayList<>(
Arrays.asList(
new Server("www.google.com", 80),
new Server("www.linkedin.com", 80),
new Server("www.yahoo.com", 80)));
new Server("www.yahoo.com", 80))));
for (int i = 0; i < 6; i++) {
System.out.println(urlLoadBalancer.call("/"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@
import io.reactivex.netty.protocol.http.client.HttpClientRequest;
import io.reactivex.netty.protocol.http.client.HttpClientResponse;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CountDownLatch;

import rx.Observer;

import com.google.common.collect.Lists;
import com.netflix.ribbon.transport.netty.RibbonTransport;
import com.netflix.ribbon.transport.netty.http.LoadBalancingHttpClient;
import com.netflix.loadbalancer.BaseLoadBalancer;
Expand All @@ -19,7 +20,8 @@

public class LoadBalancingExample {
public static void main(String[] args) throws Exception {
List<Server> servers = Lists.newArrayList(new Server("www.google.com:80"), new Server("www.examples.com:80"), new Server("www.wikipedia.org:80"));
List<Server> servers = new ArrayList<>(
Arrays.asList(new Server("www.google.com:80"), new Server("www.examples.com:80"), new Server("www.wikipedia.org:80")));
BaseLoadBalancer lb = LoadBalancerBuilder.newBuilder()
.buildFixedServerListLoadBalancer(servers);

Expand Down
1 change: 1 addition & 0 deletions ribbon-httpclient/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ dependencies {
testImplementation 'com.google.mockwebserver:mockwebserver:20130505'
testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.4.3'
testImplementation project(':ribbon-archaius')
testImplementation "com.google.guava:guava:32.1.3-jre"
testImplementation project(":ribbon-loadbalancer").sourceSets.test.output
}
Original file line number Diff line number Diff line change
@@ -1,43 +1,45 @@
package com.netflix.client.http;

import static com.netflix.utils.MultiMapUtil.getStringCollectionMap;

import com.sun.jersey.core.util.StringKeyStringValueIgnoreCaseMultivaluedMap;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.AbstractMap.SimpleEntry;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import java.util.Set;

public class CaseInsensitiveMultiMap implements HttpHeaders {
Multimap<String, Entry<String, String>> map = ArrayListMultimap.create();
private final StringKeyStringValueIgnoreCaseMultivaluedMap map =
new StringKeyStringValueIgnoreCaseMultivaluedMap();

@Override
public String getFirstValue(String headerName) {
Collection<Entry<String, String>> entries = map.get(headerName.toLowerCase());
if (entries == null || entries.isEmpty()) {
final List<String> strings = map.get(headerName);
if (strings == null || strings.isEmpty()) {
return null;
}
return entries.iterator().next().getValue();
return strings.get(0);
}

@Override
public List<String> getAllValues(String headerName) {
Collection<Entry<String, String>> entries = map.get(headerName.toLowerCase());
List<String> values = new ArrayList<>();
if (entries != null) {
for (Entry<String, String> entry: entries) {
values.add(entry.getValue());
}
}
return values;
return map.get(headerName);
}

@Override
public List<Entry<String, String>> getAllHeaders() {
Collection<Entry<String, String>> all = map.values();
return new ArrayList<Entry<String, String>>(all);
final Set<Entry<String, List<String>>> entries = map.entrySet();
List<Entry<String, String>> list = new ArrayList<>();
for (Entry<String, List<String>> entry : entries) {
final List<String> values = entry.getValue();
for (String value : values) {
list.add(new SimpleEntry<>(entry.getKey(), value));
}
}
return list;
}

@Override
Expand All @@ -46,19 +48,10 @@ public boolean containsHeader(String name) {
}

public void addHeader(String name, String value) {
if (getAllValues(name).contains(value)) {
return;
}
SimpleEntry<String, String> entry = new SimpleEntry<String, String>(name, value);
map.put(name.toLowerCase(), entry);
map.add(name, value);
}

Map<String, Collection<String>> asMap() {
Multimap<String, String> result = ArrayListMultimap.create();
Collection<Entry<String, String>> all = map.values();
for (Entry<String, String> entry: all) {
result.put(entry.getKey(), entry.getValue());
}
return result.asMap();
return getStringCollectionMap(map);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@
*/
package com.netflix.client.http;

import com.netflix.utils.MultiMapUtil;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;


import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.netflix.client.ClientRequest;
import com.netflix.client.config.IClientConfig;
import javax.ws.rs.core.MultivaluedMap;

/**
* Request for HTTP communication.
Expand Down Expand Up @@ -56,7 +57,7 @@ public String verb() {
}

protected CaseInsensitiveMultiMap httpHeaders = new CaseInsensitiveMultiMap();
protected Multimap<String, String> queryParams = ArrayListMultimap.create();
protected MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
private Object entity;
protected Verb verb;

Expand Down Expand Up @@ -94,7 +95,7 @@ public Builder header(String name, String value) {
return this;
}

Builder queryParams(Multimap<String, String> queryParams) {
Builder queryParams(MultivaluedMap<String, String> queryParams) {
request.queryParams = queryParams;
return this;
}
Expand Down Expand Up @@ -124,12 +125,12 @@ public Builder setRetriable(boolean retriable) {
*/
@Deprecated
public Builder queryParams(String name, String value) {
request.queryParams.put(name, value);
request.queryParams.add(name, value);
return this;
}

public Builder queryParam(String name, String value) {
request.queryParams.put(name, value);
request.queryParams.add(name, value);
return this;
}

Expand All @@ -155,7 +156,7 @@ public HttpRequest build() {
}

public Map<String, Collection<String>> getQueryParams() {
return queryParams.asMap();
return MultiMapUtil.getStringCollectionMap(queryParams);
}

public Verb getVerb() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
*/
package com.netflix.client.http;

import com.google.common.reflect.TypeToken;
import com.netflix.client.IResponse;

import java.io.Closeable;
Expand Down Expand Up @@ -61,10 +60,4 @@ public interface HttpResponse extends IResponse, Closeable {
public <T> T getEntity(Class<T> type) throws Exception;

public <T> T getEntity(Type type) throws Exception;

/**
* @deprecated use {@link #getEntity(Type)}
*/
@Deprecated
public <T> T getEntity(TypeToken<T> type) throws Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.HttpParams;

import com.google.common.annotations.VisibleForTesting;

/**
* A connection manager that uses {@link NamedConnectionPool}, which provides
* connection reuse statistics, as its underlying connection pool.
Expand Down Expand Up @@ -72,7 +70,6 @@ protected ConnPoolByRoute createConnectionPool(long connTTL,
return new NamedConnectionPool(connOperator, connPerRoute, 20, connTTL, connTTLTimeUnit);
}

@VisibleForTesting
ConnPoolByRoute getConnectionPool() {
return this.pool;
}
Expand Down

0 comments on commit 991dbff

Please sign in to comment.