// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/ICache.java
// public interface ICache {
// 
//     public void put (String key, JsonObject data);
// 
//     default void putArray (String key, JsonArray array) {
//         if (array == null) {
//             throw new NullPointerException("array cannot be null.");
//         }
// 
//         JsonObject obj = new JsonObject();
//         obj.put("array", array);
// 
//         put(key, obj);
//     }
// 
//     public void remove (String key);
// 
//     public void removeAll ();
// 
//     public boolean contains (String key);
// 
//     public JsonObject get (String key);
// 
//     default JsonArray getArray (String key) {
//         JsonObject obj = get(key);
// 
//         if (obj == null) {
//             return null;
//         }
// 
//         if (!obj.containsKey("array")) {
//             throw new IllegalStateException("cached object isnt an array.");
//         }
// 
//         return obj.getJsonArray("array");
//     }
// 
//     public void cleanUp ();
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.json.JsonObject;
package com.jukusoft.erp.lib.cache.impl;


public class HazelcastCache implements ICache {

    protected IMap<String,String> cacheMap = null;

    public HazelcastCache (HazelcastInstance hazelcastInstance, String cacheName, ILogging logger) {
        this.cacheMap = hazelcastInstance.getMap("cache-" + cacheName);
    }

    @Override
    public void put(String key, JsonObject data) {
        if (data == null) {
            throw new NullPointerException("json object cannot be null.");
        }

        this.cacheMap.put(key, data.encode());
    }

    @Override
    public void remove(String key) {
        this.cacheMap.remove(key);
    }

    @Override
    public void removeAll() {
        this.cacheMap.clear();
    }

    @Override
    public boolean contains(String key) {
        return this.cacheMap.containsKey(key);
    }

    @Override
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/ICache.java
// public interface ICache {
// 
//     public void put (String key, JsonObject data);
// 
//     default void putArray (String key, JsonArray array) {
//         if (array == null) {
//             throw new NullPointerException("array cannot be null.");
//         }
// 
//         JsonObject obj = new JsonObject();
//         obj.put("array", array);
// 
//         put(key, obj);
//     }
// 
//     public void remove (String key);
// 
//     public void removeAll ();
// 
//     public boolean contains (String key);
// 
//     public JsonObject get (String key);
// 
//     default JsonArray getArray (String key) {
//         JsonObject obj = get(key);
// 
//         if (obj == null) {
//             return null;
//         }
// 
//         if (!obj.containsKey("array")) {
//             throw new IllegalStateException("cached object isnt an array.");
//         }
// 
//         return obj.getJsonArray("array");
//     }
// 
//     public void cleanUp ();
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/impl/HazelcastCache.java
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.json.JsonObject;

package com.jukusoft.erp.lib.cache.impl;


public class HazelcastCache implements ICache {

    protected IMap<String,String> cacheMap = null;

    public HazelcastCache (HazelcastInstance hazelcastInstance, String cacheName, ILogging logger) {
        this.cacheMap = hazelcastInstance.getMap("cache-" + cacheName);
    }

    @Override
    public void put(String key, JsonObject data) {
        if (data == null) {
            throw new NullPointerException("json object cannot be null.");
        }

        this.cacheMap.put(key, data.encode());
    }

    @Override
    public void remove(String key) {
        this.cacheMap.remove(key);
    }

    @Override
    public void removeAll() {
        this.cacheMap.clear();
    }

    @Override
    public boolean contains(String key) {
        return this.cacheMap.containsKey(key);
    }

    @Override
    public JsonObject get(String key) {