KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jibx > runtime > ValidationException


1 /*
2 Copyright (c) 2002-2004, Dennis M. Sosnoski.
3 All rights reserved.
4
5 Redistribution and use in source and binary forms, with or without modification,
6 are permitted provided that the following conditions are met:
7
8  * Redistributions of source code must retain the above copyright notice, this
9    list of conditions and the following disclaimer.
10  * Redistributions in binary form must reproduce the above copyright notice,
11    this list of conditions and the following disclaimer in the documentation
12    and/or other materials provided with the distribution.
13  * Neither the name of JiBX nor the names of its contributors may be used
14    to endorse or promote products derived from this software without specific
15    prior written permission.
16
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
21 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */

28
29 package org.jibx.runtime;
30
31 /**
32  * Validation exception class. This is used for marshalling and unmarshalling
33  * errors that relate to data content.
34  *
35  * @author Dennis M. Sosnoski
36  * @version 1.0
37  */

38
39 public class ValidationException extends RecoverableException
40 {
41     //
42
// Instance data
43

44     /** Source object for exception (may be <code>null</code> if unknown). */
45     private Object JavaDoc m_object;
46     
47     /**
48      * Constructor from message.
49      *
50      * @param msg message describing the exception condition
51      */

52      
53     public ValidationException(String JavaDoc msg) {
54         super(msg);
55     }
56     
57     /**
58      * Constructor from message and wrapped exception.
59      *
60      * @param msg message describing the exception condition
61      * @param root exception which caused this exception
62      */

63     
64     public ValidationException(String JavaDoc msg, Throwable JavaDoc root) {
65         super(msg, root);
66     }
67     
68     /**
69      * Constructor from message and validation object.
70      *
71      * @param msg message describing the exception condition
72      * @param obj source object for validation error
73      */

74      
75     public ValidationException(String JavaDoc msg, Object JavaDoc obj) {
76         super(addDescription(msg, obj));
77     }
78     
79     /**
80      * Constructor from message, wrapped exception, and validation object.
81      *
82      * @param msg message describing the exception condition
83      * @param root exception which caused this exception
84      * @param obj source object for validation error
85      */

86     
87     public ValidationException(String JavaDoc msg, Throwable JavaDoc root, Object JavaDoc obj) {
88         super(addDescription(msg, obj), root);
89     }
90     
91     /**
92      * Constructor from message, validation object, and unmarshalling context.
93      *
94      * @param msg message describing the exception condition
95      * @param obj source object for validation error
96      * @param ctx context used for unmarshalling
97      */

98     
99     public ValidationException(String JavaDoc msg, Object JavaDoc obj,
100         IUnmarshallingContext ctx) {
101         super(addDescription(msg, obj));
102     }
103     
104     /**
105      * Get description information for a validation object. For an unmarshalled
106      * object with source references available this returns the source position
107      * description. Otherwise, it returns the result of a {@link
108      * java.lang.Object#toString} method call.
109      *
110      * @param obj source object for validation error
111      * @return object description text
112      */

113      
114     public static String JavaDoc describe(Object JavaDoc obj) {
115         if (obj instanceof ITrackSource) {
116             ITrackSource track = (ITrackSource)obj;
117             StringBuffer JavaDoc text = new StringBuffer JavaDoc();
118             text.append("(line ");
119             text.append(track.jibx_getLineNumber());
120             text.append(", col ");
121             text.append(track.jibx_getColumnNumber());
122             if (track.jibx_getDocumentName() != null) {
123                 text.append(", in ");
124                 text.append(track.jibx_getDocumentName());
125             }
126             text.append(')');
127             return text.toString();
128         } else {
129             return "(unknown source for object of type " +
130                 obj.getClass().getName();
131         }
132     }
133     
134     /**
135      * Add description information for a validation object to message. This just
136      * appends the result of a {@link #describe} call to the supplied message,
137      * with some appropriate formatting.
138      *
139      * @param msg base message text
140      * @param obj source object for validation error
141      * @return message with object description appended
142      */

143      
144     public static String JavaDoc addDescription(String JavaDoc msg, Object JavaDoc obj) {
145         return msg + " (" + describe(obj) + ")";
146     }
147     
148     /**
149      * Get exception description.
150      *
151      * @return message describing the exception condition
152      */

153      
154     public String JavaDoc getMessage() {
155         return super.getMessage();
156     }
157 }
158
Popular Tags