All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mageddo.featureswitch.repository.InMemoryFeatureRepository Maven / Gradle / Ivy

The newest version!
package com.mageddo.featureswitch.repository;

import com.mageddo.featureswitch.DefaultFeatureMetadata;
import com.mageddo.featureswitch.Feature;
import com.mageddo.featureswitch.FeatureMetadata;

import java.util.LinkedHashMap;
import java.util.Map;

public class InMemoryFeatureRepository implements FeatureRepository {

	private final Map> featureMap = new LinkedHashMap<>();
	private final Map> featureByUserMap = new LinkedHashMap<>();

	@Override
	public FeatureMetadata getMetadata(Feature feature, String user) {
		if(user == null){
			if(!featureMap.containsKey(feature.name())){
				return null;
			}
			return new DefaultFeatureMetadata(feature, featureMap.get(feature.name()));
		}
		if(!featureByUserMap.containsKey(toKey(feature, user))){
			return null;
		}
		return new DefaultFeatureMetadata(feature, featureByUserMap.get(toKey(feature, user)));
	}

	@Override
	public int updateMetadata(FeatureMetadata featureMetadata, String user) {
		if(user == null){
			featureMap.put(featureMetadata.feature().name(), featureMetadata.parameters());
		} else {
			featureByUserMap.put(toKey(featureMetadata.feature(), user), featureMetadata.parameters());
		}
		return 1;
	}

	public String toKey(Feature feature, String user){
		return feature.name() + user;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy