package com.github.dreamhead.moco.resource; import com.github.dreamhead.moco.ConfigApplier; import com.github.dreamhead.moco.MocoConfig; import com.github.dreamhead.moco.Request; import com.github.dreamhead.moco.model.MessageContent; import com.google.common.base.Optional; public class Resource implements Identifiable, ConfigApplier<Resource>, ResourceReader { private final Identifiable identifiable; private final ResourceConfigApplier configApplier; private final ResourceReader reader; public Resource(final Identifiable identifiable, final ResourceConfigApplier configApplier, final ResourceReader reader) { this.identifiable = identifiable; this.configApplier = configApplier; this.reader = reader; } @Override public Resource apply(final MocoConfig config) { return configApplier.apply(config, this); } @Override public String id() { return identifiable.id(); } @Override public MessageContent readFor(final Optional<? extends Request> request) { return reader.readFor(request); } protected <T extends ResourceReader> T reader(final Class<T> clazz) { return clazz.cast(reader); } }