package com.netflix.discovery.providers;

import com.google.inject.Inject;
import com.google.inject.Provider;
import com.netflix.discovery.DefaultEurekaClientConfig;
import com.netflix.discovery.EurekaClientConfig;
import com.netflix.discovery.EurekaNamespace;

/**
 * This provider is necessary because the namespace is optional.
 * @author elandau
 */
public class DefaultEurekaClientConfigProvider implements Provider<EurekaClientConfig> {

    @Inject(optional = true)
    @EurekaNamespace
    private String namespace;

    @Override
    public synchronized EurekaClientConfig get() {
        return namespace == null
                 ? new DefaultEurekaClientConfig()
                 : new DefaultEurekaClientConfig(namespace);
    }
}

@@ -151,32 +151,79 @@
 kaClientConfig;%0A
+import com.netflix.discovery.DiscoveryManager;%0A
 import com.netfl
@@ -247,32 +247,32 @@
 kaClientConfig;%0A
-
 import com.netfl
@@ -565,16 +565,67 @@
 space;%0A%0A
+    private DefaultEurekaClientConfig config;%0A    %0A
     @Ove
@@ -693,15 +693,52 @@
     
-return 
+if (config == null) %7B%0A            config = (
 name
@@ -750,17 +750,21 @@
  == null
-%0A
+)%0A   
         
@@ -823,16 +823,19 @@
         
+ 
+  
 : new De
@@ -870,16 +870,226 @@
 space);%0A
+                    %0A            // TODO: Remove this when DiscoveryManager is finally no longer used%0A            DiscoveryManager.getInstance().setEurekaClientConfig(config);%0A        %7D%0A%0A        return config;%0A
     %7D%0A%7D%0A

Revert DefaultEurekaClientConfigProvider singleton changes