/*
         * Adds or update the object with the given partition or key
         * The object must be previously locked
         * Throws InvalidOpertationException if the object is not previously
         * locked
         */
        public void AddOrUpdate(string partitionId, string objectId, string value)
        {
            SingleKeyValueStore partitionStore = GetOrAddStore(partitionId);

            partitionStore.AddOrUpdate(objectId, value);
        }
        /*
         * Tries to returns a given object with a given partition and key
         * If the object exists and has a value, returns true and out value is
         * updated, otherwise returns false and out value = null
         */
        public bool TryGet(string partitionId, string objectId, out string value)
        {
            SingleKeyValueStore partitionStore = GetOrAddStore(partitionId);

            return(partitionStore.TryGet(objectId, out value));
        }
        /*
         * Locks the object with the given partition and key
         */
        public void Lock(string partitionId, string objectId)
        {
            SingleKeyValueStore partitionStore = GetOrAddStore(partitionId);

            partitionStore.LockValue(objectId);
        }