View Javadoc

1   /*
2    * This file is part of Domingo
3    * an Open Source Java-API to Lotus Notes/Domino
4    * hosted at http://domingo.sourceforge.net
5    *
6    * Copyright (c) 2003-2007 Beck et al. projects GmbH Munich, Germany (http://www.bea.de)
7    *
8    * This library is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU Lesser General Public
10   * License as published by the Free Software Foundation; either
11   * version 2.1 of the License, or (at your option) any later version.
12   *
13   * This library is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   * Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public
19   * License along with this library; if not, write to the Free Software
20   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21   */
22  
23  package de.bea.domingo.server;
24  
25  import java.io.IOException;
26  import java.io.PrintWriter;
27  import java.util.Map;
28  
29  import de.bea.domingo.DNotesException;
30  import de.bea.domingo.DSession;
31  import de.bea.domingo.exception.ExceptionUtil;
32  
33  /***
34   * Writes an error to the response writer.
35   *
36   * @author <a href=mailto:kriede@users.sourceforge.net>Kurt Riede</a>
37   */
38  public final class ErrorCommand implements Command {
39  
40      /***
41       * {@inheritDoc}
42       *
43       * @see de.bea.domingo.server.Command#execute(de.bea.domingo.DSession, java.util.Map, java.io.PrintWriter)
44       */
45      public void execute(final DSession session, final Map parameters, final PrintWriter printWriter)
46          throws DNotesException, IOException {
47          Exception e = (Exception) parameters.get("exception");
48          String id = (String) parameters.get("error_id");
49          printError(printWriter, "", id, e);
50      }
51  
52      /***
53       * Prints an error to the output stream.
54       *
55       * @param message the error message
56       * @param e optional exception causing the error
57       */
58      private void printError(final PrintWriter agentOutput, final String message, final String id, final Throwable t) {
59          agentOutput.println("<?xml version=\"1.0\" ?>");
60          agentOutput.println("<error>");
61          agentOutput.println("  <id>" + id + "</id");
62          agentOutput.println("  <message>" + message + "</message");
63          if (t != null) {
64              agentOutput.print("  <exception>" + ExceptionUtil.getStackTrace(t) + "</eception>");
65          }
66          agentOutput.print("</error>");
67      }
68  }