aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/aai/util/CacheProvider.java
blob: 63615f4921951a546784a5373589a9332e49c32a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package org.onap.vid.aai.util;

import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;

public interface CacheProvider {
    String KEY_DELIMITER = "!@#'";
    /*
    Returns the cache associated with given name; creates one if wasn't any
    */
    <K, V> Cache<K, V> aaiClientCacheFor(String name, Function<K, V> loader);

    /*
    reset cache if exist. Otherwise do nothing
     */
    void resetCache(String name);

    interface Cache<K, V> {
        V get(K key);
    }

    static String compileKey(List<String> args) {
        return compileKey(args.toArray(new String[0]));
    }

    static String compileKey(String... args) {
        return Stream.of(args).map(arg->defaultIfNull(arg, "")).collect( Collectors.joining( KEY_DELIMITER ) );
    }

    static String[] decompileKey(String key) {
        return key.split(KEY_DELIMITER);
    }
}