PropagateEvaluationExceptionHandler.java

  1. /*
  2.  * $Source$
  3.  * $Revision$
  4.  *
  5.  * Copyright (C) 2000 Tim Joyce
  6.  *
  7.  * Part of Melati (http://melati.org), a framework for the rapid
  8.  * development of clean, maintainable web applications.
  9.  *
  10.  * Melati is free software; Permission is granted to copy, distribute
  11.  * and/or modify this software under the terms either:
  12.  *
  13.  * a) the GNU General Public License as published by the Free Software
  14.  *    Foundation; either version 2 of the License, or (at your option)
  15.  *    any later version,
  16.  *
  17.  *    or
  18.  *
  19.  * b) any version of the Melati Software License, as published
  20.  *    at http://melati.org
  21.  *
  22.  * You should have received a copy of the GNU General Public License and
  23.  * the Melati Software License along with this program;
  24.  * if not, write to the Free Software Foundation, Inc.,
  25.  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
  26.  * GNU General Public License and visit http://melati.org to obtain the
  27.  * Melati Software License.
  28.  *
  29.  * Feel free to contact the Developers of Melati (http://melati.org),
  30.  * if you would like to work out a different arrangement than the options
  31.  * outlined here.  It is our intention to allow Melati to be used by as
  32.  * wide an audience as possible.
  33.  *
  34.  * This program is distributed in the hope that it will be useful,
  35.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  36.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  37.  * GNU General Public License for more details.
  38.  *
  39.  * Contact details for copyright holder:
  40.  *
  41.  *     Tim Joyce <timj At paneris.org>
  42.  */

  43. package org.melati.template.webmacro;

  44. import org.webmacro.PropertyException;
  45. import org.webmacro.Context;
  46. import org.webmacro.Broker;
  47. import org.webmacro.engine.EvaluationExceptionHandler;
  48. import org.webmacro.engine.Variable;
  49. import org.webmacro.util.Settings;

  50. /**
  51.  * An implementation of EvaluationExceptionHandler which throws an exception
  52.  * whenever it is called.  
  53.  *
  54.  * This will generally cause the exception to be
  55.  * displayed to the user -- useful for debugging.
  56.  *
  57.  * Modified to allow #if ($null).
  58.  *
  59.  * @author Tim Joyce
  60.  * @since 2001-11-05
  61.  */

  62. public class PropagateEvaluationExceptionHandler
  63.   implements EvaluationExceptionHandler {

  64.    /**
  65.    * Constructor.
  66.    */
  67.   public PropagateEvaluationExceptionHandler() {
  68.    }

  69.   /**
  70.    * Forced upon us by the interface, but unused.
  71.    */
  72.   @Override
  73.   public void init(Broker b, Settings config) {
  74.    }

  75.   @Override
  76.   public void evaluate(Variable variable,
  77.                         Context context,
  78.                         Exception problem)
  79.    throws PropertyException {
  80.      if (problem instanceof PropertyException.NoSuchVariableException
  81.       || problem instanceof PropertyException.NullValueException
  82.       || problem instanceof PropertyException.NullToStringException)
  83.        return;
  84.      if (problem instanceof PropertyException)
  85.        throw (PropertyException) problem;
  86.      else
  87.        throw new PropertyException("Error evaluating variable "
  88.                                    + variable.getVariableName() + ": "
  89.                                    + problem, problem);
  90.    }

  91.    /**
  92.    * {@inheritDoc}
  93.    * @see org.webmacro.engine.EvaluationExceptionHandler#expand(
  94.    *          org.webmacro.engine.Variable, org.webmacro.Context, java.lang.Exception)
  95.    */
  96.   public String expand(Variable variable,
  97.                         Context context,
  98.                         Exception problem)
  99.    throws PropertyException {
  100.      if (problem instanceof PropertyException)
  101.        throw (PropertyException) problem;
  102.      else
  103.        throw new PropertyException("Error evaluating variable "
  104.                                    + variable.getVariableName() + ": "
  105.                                    + problem, problem);
  106.    }


  107.    /**
  108.    * {@inheritDoc}
  109.    * @see org.webmacro.engine.EvaluationExceptionHandler#warningString(java.lang.String)
  110.    */
  111.   public String warningString(String warningText) throws PropertyException {
  112.       throw new PropertyException("Evaluation warning: " + warningText);
  113.    }


  114.    /**
  115.    * {@inheritDoc}
  116.    *
  117.    * I do not believe that this can be exercised, without a bug in webmacro.
  118.    * @see org.webmacro.engine.EvaluationExceptionHandler#errorString(java.lang.String)
  119.    */
  120.   public String errorString(String errorText) throws PropertyException {
  121.       throw new PropertyException("Evaluation error: " + errorText);
  122.    }
  123. }