class Fabric8ConfigMapPropertySourceLocator extends ConfigMapPropertySourceLocator {

	private final KubernetesClient client;

	private final KubernetesNamespaceProvider provider;

	Fabric8ConfigMapPropertySourceLocator(KubernetesClient client, ConfigMapConfigProperties properties,
			KubernetesNamespaceProvider provider) {
		super(properties, new Fabric8ConfigMapsCache());
		this.client = client;
		this.provider = provider;
	}

	@Override
	protected MapPropertySource getMapPropertySource(NormalizedSource normalizedSource,
			ConfigurableEnvironment environment) {<FILL_FUNCTION_BODY>}

}

		// NormalizedSource has a namespace, but users can skip it.
		// In such cases we try to get it elsewhere
		String namespace = getApplicationNamespace(this.client, normalizedSource.namespace().orElse(null),
				normalizedSource.target(), provider);
		Fabric8ConfigContext context = new Fabric8ConfigContext(client, normalizedSource, namespace, environment);
		return new Fabric8ConfigMapPropertySource(context);
	
<methods>public void <init>(ConfigMapConfigProperties) ,public void <init>(ConfigMapConfigProperties, org.springframework.cloud.kubernetes.commons.config.ConfigMapCache) ,public PropertySource<?> locate(org.springframework.core.env.Environment) ,public Collection<PropertySource<?>> locateCollection(org.springframework.core.env.Environment) <variables>private static final org.apache.commons.logging.Log LOG,private final non-sealed org.springframework.cloud.kubernetes.commons.config.ConfigMapCache cache,protected final non-sealed ConfigMapConfigProperties properties