// Path: src/main/java/org/droolsfiddle/persistence/beans/KieBaseWrapper.java
// public class KieBaseWrapper implements Serializable {
// 
//     private static final long serialVersionUID = 7526471155622776147L;
// 
//     private transient KieBase kieBase;
// 
//     private String drl;
//     
//     private String json;
// 
//     public KieBaseWrapper(String drl, KieBase kieBase, String json) {
//         this.drl = drl;
//         this.kieBase = kieBase;
//         this.json = json;
//     }
// 
//     public KieBase getKieBase() {
//         return kieBase;
//     }
// 
//     public void setKieBase(KieBase kieBase) {
//         this.kieBase = kieBase;
//     }
// 
//     public String getDrl() {
//         return drl;
//     }
// 
//     public void setDrl(String drl) {
//         this.drl = drl;
//     }
//     
//     public String getJson() {
//         return json;
//     }
// 
//     public void setJson(String json) {
//         this.json = json;
//     }
// 
//     public void dispose() {
//         if (kieBase != null) {
//             for (KieSession ks : kieBase.getKieSessions()) {
//                 ks.halt();
//                 ks.dispose();
//             }
//         }
//     }
// }


import org.droolsfiddle.persistence.beans.KieBaseWrapper;
import org.hashids.Hashids;
import org.kie.api.KieBase;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicLong;
import org.springframework.data.redis.support.collections.DefaultRedisMap;
import javax.inject.Inject;
import javax.inject.Named;

        @Override
        public KieContainer deserialize(byte[] bytes) throws SerializationException {
            return null;
        }
    }
*/
    @Inject
    DrlRepository(RedisTemplate<String, DroolsFiddleSession> template) {
        this.template = template;
        contextIdCounter = new RedisAtomicLong("global:cid", template.getConnectionFactory());
    }

    public String post(KieBaseWrapper container) {

        String cid = hashids.encode(contextIdCounter.incrementAndGet());

        contexts().put(cid,container);

        return cid;
    }

    public void put(String cid, KieBaseWrapper kieBase) {
        contexts().put(cid,kieBase);
    }

    public boolean has(String cid) {
        return contexts().containsKey(cid);
    }



// Path: src/main/java/org/droolsfiddle/persistence/beans/KieBaseWrapper.java
// public class KieBaseWrapper implements Serializable {
// 
//     private static final long serialVersionUID = 7526471155622776147L;
// 
//     private transient KieBase kieBase;
// 
//     private String drl;
//     
//     private String json;
// 
//     public KieBaseWrapper(String drl, KieBase kieBase, String json) {
//         this.drl = drl;
//         this.kieBase = kieBase;
//         this.json = json;
//     }
// 
//     public KieBase getKieBase() {
//         return kieBase;
//     }
// 
//     public void setKieBase(KieBase kieBase) {
//         this.kieBase = kieBase;
//     }
// 
//     public String getDrl() {
//         return drl;
//     }
// 
//     public void setDrl(String drl) {
//         this.drl = drl;
//     }
//     
//     public String getJson() {
//         return json;
//     }
// 
//     public void setJson(String json) {
//         this.json = json;
//     }
// 
//     public void dispose() {
//         if (kieBase != null) {
//             for (KieSession ks : kieBase.getKieSessions()) {
//                 ks.halt();
//                 ks.dispose();
//             }
//         }
//     }
// }


// Path: src/main/java/org/droolsfiddle/persistence/redis/DrlRepository.java
import org.droolsfiddle.persistence.beans.KieBaseWrapper;
import org.hashids.Hashids;
import org.kie.api.KieBase;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicLong;
import org.springframework.data.redis.support.collections.DefaultRedisMap;
import javax.inject.Inject;
import javax.inject.Named;

        @Override
        public KieContainer deserialize(byte[] bytes) throws SerializationException {
            return null;
        }
    }
*/
    @Inject
    DrlRepository(RedisTemplate<String, DroolsFiddleSession> template) {
        this.template = template;
        contextIdCounter = new RedisAtomicLong("global:cid", template.getConnectionFactory());
    }

    public String post(KieBaseWrapper container) {

        String cid = hashids.encode(contextIdCounter.incrementAndGet());

        contexts().put(cid,container);

        return cid;
    }

    public void put(String cid, KieBaseWrapper kieBase) {
        contexts().put(cid,kieBase);
    }

    public boolean has(String cid) {
        return contexts().containsKey(cid);
    }



    public KieBaseWrapper get(String cid) {
