/* (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.converters.FreemarkerHTMLMessageConverter; import org.geoserver.rest.converters.XStreamMessageConverter; import freemarker.template.Template; /** * Wrapper for objects returned by MVC Rest endpoints */ public interface RestWrapper<T> { /** * Get the class of object or collection contents, if the object is a collection * * @return class of the object */ Class<T> getObjectClass(); /** * Get the wrapped object * * May return either an instace of {@link #getObjectClass()} or a collection of instances of that class. * * @return wrapped object */ Object getObject(); /** * Apply configuration to the XStreamPersister based on the converter * * @param persister The XStream persister * @param xStreamMessageConverter * */ void configurePersister(XStreamPersister persister, XStreamMessageConverter xStreamMessageConverter); /** * Apply configuration to the template based on the data format * * @param converter the {@link FreemarkerHTMLMessageConverter} to use * */ void configureFreemarker(FreemarkerHTMLMessageConverter converter); /** * Get the freemarker template associated with this response * * @return the freemarker template */ Template getTemplate(); }