Skip to content

Commit

Permalink
Merge pull request Netflix#855 from Netflix/contrib/jersey2-compatibi…
Browse files Browse the repository at this point in the history
…lity

Contrib/jersey2 compatibility
  • Loading branch information
qiangdavidliu authored Sep 30, 2016
2 parents c7d4238 + 7cb2e47 commit 9909951
Show file tree
Hide file tree
Showing 50 changed files with 1,997 additions and 514 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.netflix.appinfo.ApplicationInfoManager;
import com.netflix.appinfo.EurekaInstanceConfig;
import com.netflix.appinfo.InstanceInfo;
Expand All @@ -13,13 +14,15 @@
import com.netflix.appinfo.providers.VipAddressResolver;
import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;
import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.DiscoveryClient;
import com.netflix.discovery.EurekaArchaius2ClientConfig;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaClientConfig;
import com.netflix.discovery.shared.transport.EurekaArchaius2TransportConfig;
import com.netflix.discovery.shared.transport.EurekaTransportConfig;
import com.netflix.discovery.shared.transport.jersey.Jersey1DiscoveryClientOptionalArgs;

import javax.inject.Named;
import javax.inject.Singleton;
Expand Down Expand Up @@ -70,6 +73,10 @@ protected void configure() {
bind(VipAddressResolver.class).to(Archaius2VipAddressResolver.class);
bind(InstanceInfo.class).toProvider(EurekaConfigBasedInstanceInfoProvider.class);
bind(EurekaClient.class).to(DiscoveryClient.class);


// Default to the jersey1 discovery client optional args
bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON);
}

@Provides
Expand Down
3 changes: 1 addition & 2 deletions eureka-client-jersey2/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
This is work in progress. DiscoveryClient has hard dependency on Jersey 1.x, and it must be removed first
before Jersey 2.x transport can be injected.
Please note that this jersey2 compatible Eureka client (eureka-client-jersey2) is created and maintained by the community. Netflix does not currently use this library internally.
12 changes: 10 additions & 2 deletions eureka-client-jersey2/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,25 @@
apply plugin: 'nebula.test-jar'

configurations.all {
// jersey1
exclude group: 'com.sun.jersey'
exclude group: 'com.sun.jersey.contribs'
exclude module: 'jsr311-api'
}

dependencies {
compile project(':eureka-client')
compile "org.glassfish.jersey.core:jersey-client:2.8"
compile 'org.glassfish.jersey.core:jersey-client:2.23.1'
compile 'org.glassfish.jersey.connectors:jersey-apache-connector:2.23.1'
compile "javax.mail:mail:1.4.7"

testCompile project(':eureka-test-utils')
testCompile (project(':eureka-test-utils')) {
// exclude all transitives to avoid bringing in jersey1 eureka-core
transitive = false
}
// bring in jersey2 compatible eureka-core-jersey2 directly
testCompile project(':eureka-core-jersey2')

testCompile "junit:junit:${junit_version}"
testCompile "org.mockito:mockito-core:${mockitoVersion}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.netflix.discovery;

import javax.ws.rs.client.ClientRequestFilter;

/**
* Jersey2 implementation of DiscoveryClientOptionalArgs that supports supplying {@link ClientRequestFilter}
*/
public class Jersey2DiscoveryClientOptionalArgs extends AbstractDiscoveryClientOptionalArgs<ClientRequestFilter> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.netflix.discovery.guice;

import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.netflix.appinfo.ApplicationInfoManager;
import com.netflix.appinfo.EurekaInstanceConfig;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.appinfo.providers.CloudInstanceConfigProvider;
import com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider;
import com.netflix.discovery.AbstractDiscoveryClientOptionalArgs;
import com.netflix.discovery.DiscoveryClient;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaClientConfig;
import com.netflix.discovery.Jersey2DiscoveryClientOptionalArgs;
import com.netflix.discovery.providers.DefaultEurekaClientConfigProvider;
import com.netflix.discovery.shared.transport.jersey.TransportClientFactories;
import com.netflix.discovery.shared.transport.jersey2.Jersey2TransportClientFactories;

/**
* @author David Liu
*/
public final class Jersey2EurekaModule extends AbstractModule {
@Override
protected void configure() {
// need to eagerly initialize
bind(ApplicationInfoManager.class).asEagerSingleton();

//
// override these in additional modules if necessary with Modules.override()
//

bind(EurekaInstanceConfig.class).toProvider(CloudInstanceConfigProvider.class).in(Scopes.SINGLETON);
bind(EurekaClientConfig.class).toProvider(DefaultEurekaClientConfigProvider.class).in(Scopes.SINGLETON);

// this is the self instanceInfo used for registration purposes
bind(InstanceInfo.class).toProvider(EurekaConfigBasedInstanceInfoProvider.class).in(Scopes.SINGLETON);

bind(EurekaClient.class).to(DiscoveryClient.class).in(Scopes.SINGLETON);

// jersey2 support bindings
bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey2DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON);
}

@Provides
public TransportClientFactories getTransportClientFactories() {
return Jersey2TransportClientFactories.getInstance();
}

@Override
public boolean equals(Object obj) {
return obj != null && getClass().equals(obj.getClass());
}

@Override
public int hashCode() {
return getClass().hashCode();
}
}
Loading

0 comments on commit 9909951

Please sign in to comment.