001package org.nuxeo.template.fm;
002
003import java.util.List;
004
005import org.apache.commons.logging.Log;
006import org.apache.commons.logging.LogFactory;
007import org.nuxeo.ecm.core.api.DocumentModel;
008import org.nuxeo.ecm.core.api.NuxeoException;
009import org.nuxeo.ecm.platform.audit.api.LogEntry;
010import org.nuxeo.ecm.platform.rendering.fm.adapters.DocumentObjectWrapper;
011import org.nuxeo.template.api.context.DocumentWrapper;
012import org.nuxeo.template.context.AbstractContextBuilder;
013
014import freemarker.template.TemplateModelException;
015
016public class FMContextBuilder extends AbstractContextBuilder {
017
018    protected static final Log log = LogFactory.getLog(FMContextBuilder.class);
019
020    protected DocumentWrapper nuxeoWrapper;
021
022    public FMContextBuilder() {
023        final DocumentObjectWrapper fmWrapper = new DocumentObjectWrapper(null);
024
025        nuxeoWrapper = new DocumentWrapper() {
026            @Override
027            public Object wrap(DocumentModel doc) {
028                try {
029                    return fmWrapper.wrap(doc);
030                } catch (TemplateModelException e) {
031                    throw new NuxeoException(e);
032                }
033            }
034
035            public Object wrap(List<LogEntry> auditEntries) {
036                try {
037                    return fmWrapper.wrap(auditEntries);
038                } catch (TemplateModelException e) {
039                    throw new NuxeoException(e);
040                }
041            }
042        };
043    }
044
045    @Override
046    protected DocumentWrapper getWrapper() {
047        return nuxeoWrapper;
048    }
049
050}