* LensKit, an open source recommender systems toolkit.
* Copyright 2010-2013 Regents of the University of Minnesota and contributors
* Work on LensKit has been funded by the National Science Foundation under
* grants IIS 05-34939, 08-08692, 08-12148, and 10-17697.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* This class exists to be a base class for LensKit configuration scripts. Java does not have
* multiple inheritance, but Groovy has mixins via its meta object protocol. We mix the
* LensKit config DSL into this class; all the methods are available to scripts, and we can get
* the configuration by asking the metaclass for the "config" property. These extra methods
* and properties won't be easily available from Java, but that's OK, this class is only ever
* used as the base class for Groovy scripts.