View Javadoc
1   /*
2    * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package javax.xml.bind.helpers;
27  
28  import java.text.MessageFormat;
29  
30  import javax.xml.bind.ValidationEvent;
31  import javax.xml.bind.ValidationEventLocator;
32  
33  /**
34   * Default implementation of the ValidationEvent interface.
35   *
36   * <p>
37   * JAXB providers are allowed to use whatever class that implements
38   * the ValidationEvent interface. This class is just provided for a
39   * convenience.
40   *
41   * @author <ul><li>Kohsuke Kawaguchi, Sun Microsystems, Inc.</li></ul>
42   * @see javax.xml.bind.Validator
43   * @see javax.xml.bind.ValidationEventHandler
44   * @see javax.xml.bind.ValidationEvent
45   * @see javax.xml.bind.ValidationEventLocator
46   * @since JAXB1.0
47   */
48  public class ValidationEventImpl implements ValidationEvent
49  {
50  
51      /**
52       * Create a new ValidationEventImpl.
53       *
54       * @param _severity The severity value for this event.  Must be one of
55       * ValidationEvent.WARNING, ValidationEvent.ERROR, or
56       * ValidationEvent.FATAL_ERROR
57       * @param _message The text message for this event - may be null.
58       * @param _locator The locator object for this event - may be null.
59       * @throws IllegalArgumentException if an illegal severity field is supplied
60       */
61      public ValidationEventImpl( int _severity, String _message,
62                                   ValidationEventLocator _locator ) {
63  
64          this(_severity,_message,_locator,null);
65      }
66  
67      /**
68       * Create a new ValidationEventImpl.
69       *
70       * @param _severity The severity value for this event.  Must be one of
71       * ValidationEvent.WARNING, ValidationEvent.ERROR, or
72       * ValidationEvent.FATAL_ERROR
73       * @param _message The text message for this event - may be null.
74       * @param _locator The locator object for this event - may be null.
75       * @param _linkedException An optional linked exception that may provide
76       * additional information about the event - may be null.
77       * @throws IllegalArgumentException if an illegal severity field is supplied
78       */
79      public ValidationEventImpl( int _severity, String _message,
80                                   ValidationEventLocator _locator,
81                                   Throwable _linkedException ) {
82  
83          setSeverity( _severity );
84          this.message = _message;
85          this.locator = _locator;
86          this.linkedException = _linkedException;
87      }
88  
89      private int severity;
90      private String message;
91      private Throwable linkedException;
92      private ValidationEventLocator locator;
93  
94      public int getSeverity() {
95          return severity;
96      }
97  
98  
99      /**
100      * Set the severity field of this event.
101      *
102      * @param _severity Must be one of ValidationEvent.WARNING,
103      * ValidationEvent.ERROR, or ValidationEvent.FATAL_ERROR.
104      * @throws IllegalArgumentException if an illegal severity field is supplied
105      */
106     public void setSeverity( int _severity ) {
107 
108         if( _severity != ValidationEvent.WARNING &&
109             _severity != ValidationEvent.ERROR &&
110             _severity != ValidationEvent.FATAL_ERROR ) {
111                 throw new IllegalArgumentException(
112                     Messages.format( Messages.ILLEGAL_SEVERITY ) );
113         }
114 
115         this.severity = _severity;
116     }
117 
118     public String getMessage() {
119         return message;
120     }
121     /**
122      * Set the message field of this event.
123      *
124      * @param _message String message - may be null.
125      */
126     public void setMessage( String _message ) {
127         this.message = _message;
128     }
129 
130     public Throwable getLinkedException() {
131         return linkedException;
132     }
133     /**
134      * Set the linked exception field of this event.
135      *
136      * @param _linkedException Optional linked exception - may be null.
137      */
138     public void setLinkedException( Throwable _linkedException ) {
139         this.linkedException = _linkedException;
140     }
141 
142     public ValidationEventLocator getLocator() {
143         return locator;
144     }
145     /**
146      * Set the locator object for this event.
147      *
148      * @param _locator The locator - may be null.
149      */
150     public void setLocator( ValidationEventLocator _locator ) {
151         this.locator = _locator;
152     }
153 
154     /**
155      * Returns a string representation of this object in a format
156      * helpful to debugging.
157      *
158      * @see Object#equals(Object)
159      */
160     public String toString() {
161         String s;
162         switch(getSeverity()) {
163         case WARNING:   s="WARNING";break;
164         case ERROR: s="ERROR";break;
165         case FATAL_ERROR: s="FATAL_ERROR";break;
166         default: s=String.valueOf(getSeverity());break;
167         }
168         return MessageFormat.format("[severity={0},message={1},locator={2}]",
169             new Object[]{
170                 s,
171                 getMessage(),
172                 getLocator()
173             });
174     }
175 }