class EntryStorage implements ISchedulerEntryStorage {

    @Override
    public ISchedulerEntry getEntry(final String id)
            throws EntryStorageAccessException, EntryNotFoundException {
        try {
            ISchedulerEntry localEntry = getLocalEntry(id);

            if (null != localEntry) {
                return localEntry;
            }

            IObject savedEntryState = remoteEntryStorage.querySingleEntry(id);

            return IOC.resolve(Keys.getOrAdd("restore scheduler entry"), savedEntryState, this);
        } catch (ResolutionException e) {
            throw new EntryStorageAccessException("Error occurred restoring required entry from state saved in remote storage.");
        } catch (CancelledLocalEntryRequestException e) {
            throw new EntryNotFoundException("The entry was not found as it was cancelled recently.");
        }
    }

    public  EntryStorage(final IRemoteEntryStorage remoteEntryStorage, final ISchedulerEntryStorageObserver observer, final ITimer timer);
    public  EntryStorage(final IRemoteEntryStorage remoteEntryStorage, final ISchedulerEntryStorageObserver observer);

}