org.jopendocument.dom.template.engine.DataModel Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2008-2013 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 toMerge) {
for (final Map.Entry 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();
}