@SuppressWarnings("unchecked") public synchronized <T> DataRewinder<T> build(T data) { Preconditions.checkNotNull(data); DataRewinder.Factory result = rewinders.get(data.getClass()); if (result == null) { for (DataRewinder.Factory<?> registeredFactory : rewinders.values()) { if (registeredFactory.getDataClass().isAssignableFrom(data.getClass())) { result = registeredFactory; break; } } } if (result == null) { result = DEFAULT_FACTORY; } return result.build(data); }
public synchronized void register(DataRewinder.Factory factory) { rewinders.put(factory.getDataClass(), factory); }