class Fabric8SecretsPropertySourceLocator extends SecretsPropertySourceLocator {

	private final KubernetesClient client;

	private final KubernetesNamespaceProvider provider;

	Fabric8SecretsPropertySourceLocator(KubernetesClient client, SecretsConfigProperties properties,
			KubernetesNamespaceProvider provider) {
		super(properties, new Fabric8SecretsCache());
		this.client = client;
		this.provider = provider;
	}

	@Override
	protected SecretsPropertySource getPropertySource(ConfigurableEnvironment environment,
			NormalizedSource normalizedSource) {<FILL_FUNCTION_BODY>}

}

		// NormalizedSource has a namespace, but users can skip it.
		// In such cases we try to get it elsewhere
		String namespace = getApplicationNamespace(client, normalizedSource.namespace().orElse(null),
				normalizedSource.target(), provider);
		Fabric8ConfigContext context = new Fabric8ConfigContext(client, normalizedSource, namespace, environment);
		return new Fabric8SecretsPropertySource(context);
	
<methods>public void <init>(SecretsConfigProperties) ,public void <init>(SecretsConfigProperties, org.springframework.cloud.kubernetes.commons.config.SecretsCache) ,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.SecretsCache cache,protected final non-sealed SecretsConfigProperties properties