com.github.mati1979.play.soyplugin.global.runtime.DefaultGlobalRuntimeModelResolver Maven / Gradle / Ivy
package com.github.mati1979.play.soyplugin.global.runtime;
import java.util.Optional;
import com.google.common.collect.Lists;
import com.google.template.soy.data.SoyMapData;
import play.mvc.Http;
import scala.io.BytePickle;
import java.util.List;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* User: mati
* Date: 14/07/2013
* Time: 16:46
*
* A default implementation of GlobalModelResolver contains a list of resolvers,
* each resolver can decide what data should be injected.
*/
public class DefaultGlobalRuntimeModelResolver implements GlobalRuntimeModelResolver {
private static final play.Logger.ALogger logger = play.Logger.of(DefaultGlobalRuntimeModelResolver.class);
private List resolvers = Lists.newArrayList();
private List userResolvers = Lists.newArrayList();
public DefaultGlobalRuntimeModelResolver(final List resolvers) {
this.resolvers = resolvers;
}
public DefaultGlobalRuntimeModelResolver(final List resolvers,
final List userResolvers) {
this.resolvers = resolvers;
this.userResolvers = userResolvers;
}
@Override
public Optional resolveData(final Http.Request request, final Http.Response response, final Map model) {
final SoyMapData root = new SoyMapData();
for (final RuntimeDataResolver runtimeDataResolver : resolvers) {
logger.debug("resolving:{}", runtimeDataResolver);
runtimeDataResolver.resolveData(request, response, model, root);
}
for (final RuntimeDataResolver runtimeDataResolver : userResolvers) {
logger.debug("user data resolving:{}", runtimeDataResolver);
runtimeDataResolver.resolveData(request, response, model, root);
}
return Optional.of(root);
}
}