/* * Copyright 2014 Jesse Morgan */ package com.p4square.grow.provider; import java.io.IOException; /** * DelegateProvider wraps an existing Provider an transforms the key from * type K to type D. * * @author Jesse Morgan */ public abstract class DelegateProvider implements Provider { private Provider mProvider; public DelegateProvider(final Provider provider) { mProvider = provider; } @Override public V get(final K key) throws IOException { return mProvider.get(makeKey(key)); } @Override public void put(final K key, final V obj) throws IOException { mProvider.put(makeKey(key), obj); } /** * Make a Key for the delegated provider. * * @param input The pre-transform key. * @return the post-transform key. */ protected abstract D makeKey(final K input); }