KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > classycle > classfile > ConstantPoolPrinter


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

25 package classycle.classfile;
26
27 import java.io.DataInputStream JavaDoc;
28 import java.io.FileInputStream JavaDoc;
29 import java.io.IOException JavaDoc;
30
31 /**
32  * Application which prints the {@link Constant} pool of a class file onto the
33  * console.
34  *
35  * @author Franz-Josef Elmer
36  */

37 public class ConstantPoolPrinter {
38   /**
39    * Reads a class file and prints the constant pool onto <tt>System.out</tt>.
40    * @param args File name of the class file in <tt>args[0]</tt>
41    */

42   public static void main(String JavaDoc[] args) {
43     if (args.length == 0) {
44       System.out.println(
45         "Usage: java classycle.classfile.ConstantPoolPrinter <class files>");
46     }
47     for (int i = 0; i < args.length; i++) {
48       investigate(args[i]);
49     }
50   }
51
52   private static void investigate(String JavaDoc fileName) {
53     DataInputStream JavaDoc stream = null;
54     try {
55       stream = new DataInputStream JavaDoc(new FileInputStream JavaDoc(fileName));
56       Constant[] pool = Constant.extractConstantPool(stream);
57       printConstantPool(pool);
58     } catch (IOException JavaDoc e) {
59       System.out.println(e);
60     } finally {
61       try {
62         stream.close();
63       } catch (IOException JavaDoc e) {
64       }
65     }
66   }
67
68   private static void printConstantPool(Constant[] pool) {
69     for (int i = 0; i < pool.length; i++) {
70       System.out.println(i + ": " + pool[i]);
71     }
72   }
73 } //class
Popular Tags