/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved. * * The contents of this file are subject to the terms of the GNU * General Public License Version 3 only ("GPL"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html * See the License for the specific language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each file. * */ package org.jopendocument.dom.template.engine; import org.jopendocument.dom.template.TemplateException; import java.util.Map; public abstract class DataModel { public abstract void put(String name, Object value); /** * Copies all of the mappings from the specified map to this. This implementation simply calls * {@link #put(String,Object) put(k, v)} once for each entry in the specified map. * * @param toMerge mappings to be stored. */ public void putAll(Map<? extends String, ?> toMerge) { for (final Map.Entry<? extends String, ?> e : toMerge.entrySet()) { this.put(e.getKey(), e.getValue()); } } protected abstract Object _eval(String expression) throws Exception; public final Object eval(String expression) throws TemplateException { try { return this._eval(expression); } catch (Throwable t) { throw new TemplateException("invalid expression: \"" + expression + "\"", t); } } /** * Copy this engine and especially its bindings. * * @return an independant copy of this. */ public abstract DataModel copy(); }