]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
84b82226f1e553633e571da674d7fc7c8555cff8
[packages/trusty/mysql-wsrep-5.6.git] /
1 /*
2  *  Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
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 as published by
6  *  the Free Software Foundation; version 2 of the License.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
16  */
17
18 package com.mysql.clusterj.jdbc.antlr;
19
20 import org.antlr.runtime.RecognitionException;
21 import org.antlr.runtime.BaseRecognizer;
22
23 import java.util.List;
24 import java.util.ArrayList;
25
26 /**
27  * Author: kroepke
28  */
29 public class QueuingErrorListener extends BaseErrorListener implements ErrorListener {
30
31     private List<RecognitionException> exceptions;
32     private String[] tokenNames;
33     private StringBuilder errorBuffer;
34     
35     public QueuingErrorListener(RecognizerErrorDelegate recognizerErrorDelegate) {
36         super(recognizerErrorDelegate);
37         exceptions = new ArrayList<RecognitionException>();
38     }
39
40     /**
41      * Do not display any errors, but queue them up to inspect at a later stage.
42      * Useful for writing tests that look for RecognitionExceptions.
43      *
44      * @param tokenNames
45      * @param e
46      */
47     @Override
48     public void displayRecognitionError(String[] tokenNames, RecognitionException e) {
49         if (this.tokenNames == null)
50             this.tokenNames = tokenNames;
51         exceptions.add(e);
52     }
53     
54     @Override
55     public void emitErrorMessage(String msg) {
56         errorBuffer.append(msg);
57         errorBuffer.append("--------------------\n");
58     }
59
60     @Override
61     public boolean hasErrors() {
62         return !exceptions.isEmpty();
63     }
64
65     @Override
66     public String toString() {
67         if (errorBuffer == null) {
68             errorBuffer = new StringBuilder();
69             for (RecognitionException e : exceptions) {
70                 super.displayRecognitionError(tokenNames, e);
71             }
72         }
73         return errorBuffer.toString();
74     }
75
76     @Override
77     public List<RecognitionException> getErrors() {
78         return exceptions;
79     }
80 }