History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/jvmstat/perfdata/monitor/AliasFileParser.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/jvmstat/perfdata/monitor/AliasFileParser.java+165−0
@@ -0,0 +1,165 @@
1/*
2 * Copyright (c) 2004, 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
26package sun.jvmstat.perfdata.monitor;
27
28import java.net.*;
29import java.io.*;
30import java.util.*;
31import java.util.regex.*;
32
33/**
34 * Class for parsing alias files. File format is expected to follow
35 * the following syntax:
36 *
37 * alias name [alias]*
38 *
39 * Java style comments can occur anywhere within the file.
40 * @author Brian Doherty
41 * @since 1.5
42 */
43public class AliasFileParser {
44 private static final String ALIAS = "alias";
45 private static final boolean DEBUG = false;
46
47 // other variables
48 private URL inputfile;
49 private StreamTokenizer st;
50 private Token currentToken;
51
52 AliasFileParser(URL inputfile) {
53 this.inputfile = inputfile;
54 }
55
56 // value class to hold StreamTokenizer token values
57 private class Token {
58 public String sval;
59 public int ttype;
60
61 public Token(int ttype, String sval) {
62 this.ttype = ttype;
63 this.sval = sval;
64 }
65 }
66
67 private void logln(String s) {
68 if (DEBUG) {
69 System.err.println(s);
70 }
71 }
72
73 /**
74 * method to get the next token as a Token type
75 */
76 private void nextToken() throws IOException {
77 st.nextToken();
78 currentToken = new Token(st.ttype, st.sval);
79
80 logln("Read token: type = " + currentToken.ttype
81 + " string = " + currentToken.sval);
82 }
83
84 /**
85 * method to match the current Token to a specified token type and
86 * value Throws a SyntaxException if token doesn't match.
87 */
88 private void match(int ttype, String token)
89 throws IOException, SyntaxException {
90
91 if ((currentToken.ttype == ttype)
92 && (currentToken.sval.compareTo(token) == 0)) {
93 logln("matched type: " + ttype + " and token = "
94 + currentToken.sval);
95 nextToken();
96 } else {
97 throw new SyntaxException(st.lineno());
98 }
99 }
100
101
102 /*
103 * method to match the current Token to a specified token type.
104 * Throws a SyntaxException if token doesn't match.
105 */
106 private void match(int ttype) throws IOException, SyntaxException {
107 if (currentToken.ttype == ttype) {
108 logln("matched type: " + ttype + ", token = " + currentToken.sval);
109 nextToken();
110 } else {
111 throw new SyntaxException(st.lineno());
112 }
113 }
114
115 private void match(String token) throws IOException, SyntaxException {
116 match(StreamTokenizer.TT_WORD, token);
117 }
118
119 /**
120 * method to parse the given input file.
121 */
122 public void parse(Map<String, ArrayList<String>> map) throws SyntaxException, IOException {
123
124 if (inputfile == null) {
125 return;
126 }
127
128 BufferedReader r = new BufferedReader(
129 new InputStreamReader(inputfile.openStream()));
130 st = new StreamTokenizer(r);
131
132 // allow both forms of commenting styles
133 st.slashSlashComments(true);
134 st.slashStarComments(true);
135 st.wordChars('_','_');
136
137 nextToken();
138
139 while (currentToken.ttype != StreamTokenizer.TT_EOF) {
140 // look for the start symbol
141 if ((currentToken.ttype != StreamTokenizer.TT_WORD)
142 || (currentToken.sval.compareTo(ALIAS) != 0)) {
143 nextToken();
144 continue;
145 }
146
147 match(ALIAS);
148 String name = currentToken.sval;
149 match(StreamTokenizer.TT_WORD);
150
151 ArrayList<String> aliases = new ArrayList<String>();
152
153 do {
154 aliases.add(currentToken.sval);
155 match(StreamTokenizer.TT_WORD);
156
157 } while ((currentToken.ttype != StreamTokenizer.TT_EOF)
158 && (currentToken.sval.compareTo(ALIAS) != 0));
159
160 logln("adding map entry for " + name + " values = " + aliases);
161
162 map.put(name, aliases);
163 }
164 }
165}