View Javadoc

1   /*
2   Copyright (C) 2000 - 2007 Grid Systems, S.A.
3   
4   This program is free software; you can redistribute it and/or modify
5   it under the terms of the GNU General Public License, version 2, as
6   published by the Free Software Foundation.
7   
8   This program is distributed in the hope that it will be useful,
9   but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12  
13  You should have received a copy of the GNU General Public License
14  along with this program; if not, write to the Free Software
15  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  */
17  package com.gridsystems.innergrid.api;
18  
19  import java.util.ResourceBundle;
20  
21  import com.gridsystems.innergrid.kernel.KernelException;
22  
23  /**
24   * KernelException that takes care of some codes that can
25   * only appear on the client side.
26   * <p>
27   * The following is a list of the client-side known codes and their meanings:
28   * <ul>
29   * <li><code>UNK000</code> Unknown Error
30   * <li><code>CLT000</code> Cannot connect to the Server
31   * <li><code>CLT001</code> Connection refused. Remote port is not open.
32   * <li><code>CLT002</code> Connection closed by Server
33   * <li><code>CLT003</code> Service not found in Server.
34   * <li><code>CLT004</code> Bean cannot be serialized by the Server.
35   * <li><code>CLT005</code> Bean used as a parameter could not be deserialized by the
36   *                         Server
37   * <li><code>CLT006</code> Could not find the SOAP servlet in the remote Server; it may
38   *                         not be an appropriate Server.
39   * <li><code>CLT007</code> Unknown client error
40   * <li><code>CLT008</code> Malformed URL
41   * <li><code>CLT009</code> Unknown error parsing response
42   * <li><code>CLT011</code> Null connection
43   * <li><code>CLT012</code> Null host
44   * <li><code>CLT013</code> Invalid port (negative or zero)
45   * <li><code>CLT014</code> A default connection must be defined, using
46   *                         <code>ConnectionProvider.setDefaultConnection()</code>
47   * <li><code>CLT015</code> Interface implementation not found
48   * <li><code>CLT016</code> The method cannot be called statically. You need to instantiate
49   *                         the class
50   * <li><code>CLT017</code> Connection parameter expected
51   * <li><code>CLT020</code> Attachment filename is not valid
52   * <li><code>CLT021</code> Attached file not found
53   * <li><code>CLT031</code> Certificate verification failed
54   * <li><code>CLT030</code> CA file cannot be read
55   * <li><code>CLT032</code> Keystore file cannot be read
56   * <li><code>CLT033</code> Keystore file is not valid, or the password is incorrect
57   * <li><code>CLT040</code> Method <code>initialize(...)</code> must be called to define
58   *                         the connection parameters
59   * <li><code>CLT041</code> Method <code>setConnection(conn)</code> must be called to
60   *                         define a connection for this API
61   * <li><code>CLT042</code> Method <code>initialize(...)</code> cannot be called twice
62   * <li><code>CLT050</code> The active Server is down. Wait a few minutes for a backup
63   *                         Server to become active, and try again.
64   * <li><code>CLT060</code> Port not answering; it could not be checked
65   * <li><code>CLT061</code> Incorrect protocol
66   * <li><code>CLT062</code> Cannot check port because a proper URL could not be created
67   * <li><code>CLT063</code> SSL Handshake Exception
68   * </ul>
69   *
70   * @author Rodrigo Ruiz
71   * @version 1.0
72   */
73  public class CKernelException extends KernelException {
74  
75    /**
76     * Serial Version UID.
77     */
78    private static final long serialVersionUID = 18765876580897L;
79  
80    /** Resource Bundle for translations. */
81    private static ResourceBundle translations =
82      ResourceBundle.getBundle("clienterrors");
83  
84    /**
85     * Creates a new instance without parameters and cause.
86     *
87     * @param code a string with the error code
88     */
89    public CKernelException(String code) {
90      super(null, code, getTranslation(code));
91    }
92  
93    /**
94     * Creates a new instance.
95     *
96     * @param code  a string with the error code
97     * @param cause a string with the error cause
98     * @deprecated Use {@link #CKernelException(Throwable, String, String...)} instead
99     */
100   public CKernelException(String code, Throwable cause) {
101     super(cause, code, getTranslation(code));
102   }
103 
104 
105   /**
106    * Creates a new instance without cause.
107    *
108    * @param code   a string with the error code
109    * @param params an array of string with the message parameters
110    */
111   public CKernelException(String code, String... params) {
112     super(null, code, getTranslation(code), (Object[])params);
113   }
114 
115   /**
116    * Creates a new instance.
117    *
118    * @param code   a string with the error code
119    * @param params an array of string with the message parameters
120    * @param cause  a string with the error cause
121    * @deprecated Use {@link #CKernelException(Throwable, String, String...)} instead
122    */
123   public CKernelException(String code, String[] params, Throwable cause) {
124     super(cause, code, getTranslation(code), (Object[])params);
125   }
126 
127   /**
128    * Creates a new instance.
129    *
130    * @param cause  a string with the error cause
131    * @param code   a string with the error code
132    * @param params an array of string with the message parameters
133    */
134   public CKernelException(Throwable cause, String code, String... params) {
135     super(cause, code, getTranslation(code), (Object[])params);
136   }
137 
138   /**
139    * Gets the translation for the specified error code.
140    *
141    * @param errorCode the code of the error
142    * @return the message for the error code
143    */
144   private static String getTranslation(String errorCode) {
145     String msg = "Translation not found  for " + errorCode + " error code.";
146     if (translations == null) {
147       return msg;
148     }
149     String trans;
150 
151     try {
152       trans = (String)translations.getString(errorCode);
153     } catch (Exception e) {
154       //e.printStackTrace();
155       return (msg);
156     }
157     return trans;
158   }
159 }