Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for jakartaee and jersey 3 #1442

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eureka-client-archaius2/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sourceSets {
}

dependencies {
compile project(':eureka-client')
compile project(':eureka-client-core')

// archaius2
compile "com.netflix.archaius:archaius2-core:${archaius2Version}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.internal.util.InternalPrefixedConfig;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;

import static com.netflix.appinfo.PropertyBasedAmazonInfoConfigConstants.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.netflix.appinfo;

import javax.inject.Inject;
import com.google.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.google.inject.Singleton;

import com.netflix.discovery.CommonConstants;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import java.util.HashMap;
import java.util.Map;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;

import com.google.common.collect.Sets;
import com.netflix.archaius.api.Config;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.net.SocketTimeoutException;
import java.net.URL;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import com.netflix.discovery.DiscoveryManager;

import com.google.inject.Inject;
import javax.inject.Named;
import com.google.inject.name.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.google.inject.Singleton;

@Singleton
public class CustomAmazonInfoProviderInstanceConfigFactory implements EurekaInstanceConfigFactory {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import com.netflix.discovery.internal.util.InternalPrefixedConfig;
import com.netflix.discovery.shared.transport.EurekaTransportConfig;

import javax.inject.Singleton;
import com.google.inject.Singleton;

import static com.netflix.discovery.PropertyBasedClientConfigConstants.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@
import com.netflix.discovery.shared.resolver.ResolverUtils;
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;
import com.google.inject.name.Named;
import com.google.inject.Singleton;

final class InternalEurekaClientModule extends AbstractModule {

Expand Down Expand Up @@ -74,9 +73,6 @@ protected void configure() {
bind(EurekaClient.class).to(DiscoveryClient.class);
bind(EndpointRandomizer.class).toInstance(ResolverUtils::randomize);


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

@Provides
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.internal.util.InternalPrefixedConfig;

import javax.inject.Singleton;
import com.google.inject.Singleton;

import static com.netflix.discovery.shared.transport.PropertyBasedTransportConfigConstants.*;

Expand Down
41 changes: 41 additions & 0 deletions eureka-client-core/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
apply plugin: 'nebula.test-jar'

configurations.all {
// jersey2
exclude group: 'org.glassfish.jersey'
}

dependencies {
compile "com.netflix.netflix-commons:netflix-eventbus:0.3.0"
compile 'com.thoughtworks.xstream:xstream:1.4.18'
compile "com.netflix.archaius:archaius-core:${archaiusVersion}"
compile 'javax.ws.rs:jsr311-api:1.1.1'
compile "com.netflix.servo:servo-core:${servoVersion}"
compile "org.apache.httpcomponents:httpclient:${apacheHttpClientVersion}"
compile "com.google.code.findbugs:jsr305:${jsr305Version}"
compile "commons-configuration:commons-configuration:${commonsConfigurationVersion}"
compile "com.google.inject:guice:${guiceVersion}"

compile "com.github.vlsi.compactmap:compactmap:2.0"

compile "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}"
compile "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
compile "com.fasterxml.jackson.core:jackson-databind:${jacksonDatabindVersion}"

// Eureka client uses JSON encoding by default
compileOnly "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jacksonVersion}"
// Prefered jackson Stax serializer. Default Oracle has issues (adds empty namespace) and is slower
compileOnly "com.fasterxml.woodstox:woodstox-core:${woodstoxVersion}"

runtimeOnly "org.codehaus.jettison:jettison:${jettisonVersion}"

testCompile project(':eureka-test-utils')
testCompile "junit:junit:${junit_version}"
testCompile 'org.mortbay.jetty:jetty:6.1H.22'
testCompile "org.mockito:mockito-core:${mockitoVersion}"
testCompile "org.mock-server:mockserver-netty:${mockserverVersion}"
testCompile "com.netflix.governator:governator:${governatorVersion}"
testCompile "com.github.tomakehurst:wiremock-jre8:2.25.1"
testCompile "org.assertj:assertj-core:3.11.1"
testCompile "javax.servlet:javax.servlet-api:4.0.1"
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

package com.netflix.appinfo;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Singleton;
import com.google.inject.Singleton;

/**
* An {@link InstanceInfo} configuration for AWS cloud deployments.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import com.google.inject.ProvidedBy;
import com.netflix.appinfo.providers.MyDataCenterInstanceConfigProvider;

import javax.inject.Singleton;
import com.google.inject.Singleton;

/**
* An {@link InstanceInfo} configuration for the non-AWS datacenter.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.netflix.appinfo.providers;

import javax.inject.Singleton;
import com.google.inject.Singleton;
import javax.inject.Provider;
import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import com.netflix.appinfo.HealthCheckCallback;
import com.netflix.appinfo.HealthCheckHandler;
import com.netflix.discovery.shared.transport.TransportClientFactory;
import com.netflix.discovery.shared.transport.jersey.EurekaJerseyClient;
import com.netflix.discovery.shared.transport.jersey.TransportClientFactories;
import com.netflix.eventbus.spi.EventBus;

Expand All @@ -30,8 +29,6 @@ public abstract class AbstractDiscoveryClientOptionalArgs<T> {

Collection<T> additionalFilters;

EurekaJerseyClient eurekaJerseyClient;

TransportClientFactory transportClientFactory;

TransportClientFactories transportClientFactories;
Expand Down Expand Up @@ -85,11 +82,6 @@ public void setAdditionalFilters(Collection<T> additionalFilters) {
this.additionalFilters = additionalFilters;
}

@Inject(optional = true)
public void setEurekaJerseyClient(EurekaJerseyClient eurekaJerseyClient) {
this.eurekaJerseyClient = eurekaJerseyClient;
}

Set<EurekaEventListener> getEventListeners() {
return eventListeners == null ? Collections.<EurekaEventListener>emptySet() : eventListeners;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package com.netflix.discovery;

import javax.annotation.Nullable;
import javax.inject.Singleton;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@
import javax.annotation.Nullable;
import javax.annotation.PreDestroy;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.google.inject.Singleton;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.ws.rs.core.Response.Status;

import com.netflix.discovery.shared.resolver.EndpointRandomizer;
import com.netflix.discovery.shared.resolver.ResolverUtils;
import com.netflix.discovery.shared.transport.jersey.TransportClientFactories;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -78,10 +79,6 @@
import com.netflix.discovery.shared.transport.EurekaHttpResponse;
import com.netflix.discovery.shared.transport.EurekaTransportConfig;
import com.netflix.discovery.shared.transport.TransportClientFactory;
import com.netflix.discovery.shared.transport.jersey.EurekaJerseyClient;
import com.netflix.discovery.shared.transport.jersey.Jersey1DiscoveryClientOptionalArgs;
import com.netflix.discovery.shared.transport.jersey.Jersey1TransportClientFactories;
import com.netflix.discovery.shared.transport.jersey.TransportClientFactories;
import com.netflix.discovery.util.ThresholdLevelsMetric;
import com.netflix.servo.annotations.DataSourceType;
import com.netflix.servo.monitor.Counter;
Expand Down Expand Up @@ -231,10 +228,6 @@ void shutdown() {
}
}

public static class DiscoveryClientOptionalArgs extends Jersey1DiscoveryClientOptionalArgs {

}

/**
* Assumes applicationInfoManager is already initialized
*
Expand All @@ -245,16 +238,6 @@ public DiscoveryClient(InstanceInfo myInfo, EurekaClientConfig config) {
this(myInfo, config, null);
}

/**
* Assumes applicationInfoManager is already initialized
*
* @deprecated use constructor that takes ApplicationInfoManager instead of InstanceInfo directly
*/
@Deprecated
public DiscoveryClient(InstanceInfo myInfo, EurekaClientConfig config, DiscoveryClientOptionalArgs args) {
this(ApplicationInfoManager.getInstance(), config, args);
}

/**
* @deprecated use constructor that takes ApplicationInfoManager instead of InstanceInfo directly
*/
Expand All @@ -267,14 +250,6 @@ public DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClie
this(applicationInfoManager, config, null);
}

/**
* @deprecated use the version that take {@link com.netflix.discovery.AbstractDiscoveryClientOptionalArgs} instead
*/
@Deprecated
public DiscoveryClient(ApplicationInfoManager applicationInfoManager, final EurekaClientConfig config, DiscoveryClientOptionalArgs args) {
this(applicationInfoManager, config, (AbstractDiscoveryClientOptionalArgs) args);
}

public DiscoveryClient(ApplicationInfoManager applicationInfoManager, final EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args) {
this(applicationInfoManager, config, args, ResolverUtils::randomize);
}
Expand Down Expand Up @@ -493,40 +468,24 @@ public synchronized BackupRegistry get() {
initTimestampMs, initRegistrySize);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
private void scheduleServerEndpointTask(EurekaTransport eurekaTransport,
AbstractDiscoveryClientOptionalArgs args) {

if (args == null) {
throw new IllegalArgumentException("args can not be null");
}

Collection<?> additionalFilters = args == null
? Collections.emptyList()
: args.additionalFilters;
Collection<?> additionalFilters = args.additionalFilters;

EurekaJerseyClient providedJerseyClient = args == null
? null
: args.eurekaJerseyClient;

TransportClientFactories argsTransportClientFactories = null;
if (args != null && args.getTransportClientFactories() != null) {
argsTransportClientFactories = args.getTransportClientFactories();
}

// Ignore the raw types warnings since the client filter interface changed between jersey 1/2
@SuppressWarnings("rawtypes")
TransportClientFactories transportClientFactories = argsTransportClientFactories == null
? new Jersey1TransportClientFactories()
: argsTransportClientFactories;
TransportClientFactories transportClientFactories = args.getTransportClientFactories();

Optional<SSLContext> sslContext = args == null
? Optional.empty()
: args.getSSLContext();
Optional<HostnameVerifier> hostnameVerifier = args == null
? Optional.empty()
: args.getHostnameVerifier();
Optional<SSLContext> sslContext = args.getSSLContext();
Optional<HostnameVerifier> hostnameVerifier = args.getHostnameVerifier();

// If the transport factory was not supplied with args, assume they are using jersey 1 for passivity
eurekaTransport.transportClientFactory = providedJerseyClient == null
? transportClientFactories.newTransportClientFactory(clientConfig, additionalFilters, applicationInfoManager.getInfo(), sslContext, hostnameVerifier)
: transportClientFactories.newTransportClientFactory(additionalFilters, providedJerseyClient);
eurekaTransport.transportClientFactory = transportClientFactories.newTransportClientFactory(clientConfig, additionalFilters, applicationInfoManager.getInfo(), sslContext, hostnameVerifier);

ApplicationsResolver.ApplicationsSource applicationsSource = new ApplicationsResolver.ApplicationsSource() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Singleton;
import com.google.inject.Singleton;
import java.util.concurrent.atomic.AtomicLong;

import com.google.inject.Inject;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.netflix.discovery;

import javax.inject.Inject;
import com.google.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.google.inject.Singleton;

import com.google.common.base.Supplier;
import com.google.inject.AbstractModule;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.netflix.discovery;

import javax.inject.Singleton;
import com.google.inject.Singleton;

import com.netflix.discovery.shared.Applications;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.netflix.discovery.converters;

import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.inject.Inject;
import com.google.inject.Singleton;

import com.netflix.discovery.EurekaClientConfig;

Expand Down
Loading