/* (c) 2017 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.rest.wrapper;
import org.geoserver.config.util.XStreamPersister;
import org.geoserver.rest.RestBaseController;
import org.geoserver.rest.converters.FreemarkerHTMLMessageConverter;
import org.geoserver.rest.converters.XStreamMessageConverter;
import freemarker.template.Template;
/**
* Default implementation of {@link RestWrapper}
*/
public class RestWrapperAdapter<T> implements RestWrapper<T> {
Object object;
Class<T> clazz;
Template template;
RestBaseController controller;
public RestWrapperAdapter(Object object, Class<T> advertisedClass, RestBaseController controller) {
this(object, advertisedClass, controller, null);
}
public RestWrapperAdapter(Object object, Class<T> advertisedClass, RestBaseController controller, Template template) {
this.object = object;
this.clazz = advertisedClass;
this.template = template;
this.controller = controller;
}
@Override
public Class<T> getObjectClass() {
return clazz;
}
@Override
public Object getObject() {
return object;
}
/**
* Default implementation.
* Calls {@link RestBaseController#configurePersister(XStreamPersister, XStreamMessageConverter)}
*/
@Override
public void configurePersister(XStreamPersister persister, XStreamMessageConverter converter) {
controller.configurePersister(persister, converter);
}
/**
* Default implementation.
* Subclasses should override this to implement custom functionality
* @return freemarker template
*/
@Override
public Template getTemplate() {
return template;
}
/**
* Default implementation.
* Calls {@link RestBaseController#configureFreemarker(FreemarkerHTMLMessageConverter, Template)}
*/
@Override
public void configureFreemarker(FreemarkerHTMLMessageConverter converter) {
controller.configureFreemarker(converter, getTemplate());
}
}