blob: 917194e38168b02e95c355ec30021d9308858c26 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2005 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26
27/*
28 * The contents of this file are subject to the Sun Public License
29 * Version 1.0 (the "License"); you may not use this file except in
30 * compliance with the License. A copy of the License is available at
31 * http://www.sun.com/, and in the file LICENSE.html in the
32 * doc directory.
33 *
34 * The Original Code is HAT. The Initial Developer of the
35 * Original Code is Bill Foote, with contributions from others
36 * at JavaSoft/Sun. Portions created by Bill Foote and others
37 * at Javasoft/Sun are Copyright (C) 1997-2004. All Rights Reserved.
38 *
39 * In addition to the formal license, I ask that you don't
40 * change the history or donations files without permission.
41 *
42 */
43
44package com.sun.tools.hat.internal.server;
45
46import com.sun.tools.hat.internal.model.*;
47import java.util.Iterator;
48
49/**
50 *
51 * @author Bill Foote
52 */
53
54
55class AllClassesQuery extends QueryHandler {
56
57 boolean excludePlatform;
58 boolean oqlSupported;
59
60 public AllClassesQuery(boolean excludePlatform, boolean oqlSupported) {
61 this.excludePlatform = excludePlatform;
62 this.oqlSupported = oqlSupported;
63 }
64
65 public void run() {
66 if (excludePlatform) {
67 startHtml("All Classes (excluding platform)");
68 } else {
69 startHtml("All Classes (including platform)");
70 }
71
72 Iterator classes = snapshot.getClasses();
73 String lastPackage = null;
74 while (classes.hasNext()) {
75 JavaClass clazz = (JavaClass) classes.next();
76 if (excludePlatform && PlatformClasses.isPlatformClass(clazz)) {
77 // skip this..
78 continue;
79 }
80 String name = clazz.getName();
81 int pos = name.lastIndexOf(".");
82 String pkg;
83 if (name.startsWith("[")) { // Only in ancient heap dumps
84 pkg = "<Arrays>";
85 } else if (pos == -1) {
86 pkg = "<Default Package>";
87 } else {
88 pkg = name.substring(0, pos);
89 }
90 if (!pkg.equals(lastPackage)) {
91 out.print("<h2>Package ");
92 print(pkg);
93 out.println("</h2>");
94 }
95 lastPackage = pkg;
96 printClass(clazz);
97 if (clazz.getId() != -1) {
98 out.print(" [" + clazz.getIdString() + "]");
99 }
100 out.println("<br>");
101 }
102
103 out.println("<h2>Other Queries</h2>");
104 out.println("<ul>");
105
106 out.println("<li>");
107 printAnchorStart();
108 if (excludePlatform) {
109 out.print("allClassesWithPlatform/\">");
110 print("All classes including platform");
111 } else {
112 out.print("\">");
113 print("All classes excluding platform");
114 }
115 out.println("</a>");
116
117 out.println("<li>");
118 printAnchorStart();
119 out.print("showRoots/\">");
120 print("Show all members of the rootset");
121 out.println("</a>");
122
123 out.println("<li>");
124 printAnchorStart();
125 out.print("showInstanceCounts/includePlatform/\">");
126 print("Show instance counts for all classes (including platform)");
127 out.println("</a>");
128
129 out.println("<li>");
130 printAnchorStart();
131 out.print("showInstanceCounts/\">");
132 print("Show instance counts for all classes (excluding platform)");
133 out.println("</a>");
134
135 out.println("<li>");
136 printAnchorStart();
137 out.print("histo/\">");
138 print("Show heap histogram");
139 out.println("</a>");
140
141 out.println("<li>");
142 printAnchorStart();
143 out.print("finalizerSummary/\">");
144 print("Show finalizer summary");
145 out.println("</a>");
146
147 if (oqlSupported) {
148 out.println("<li>");
149 printAnchorStart();
150 out.print("oql/\">");
151 print("Execute Object Query Language (OQL) query");
152 out.println("</a>");
153 }
154
155 out.println("</ul>");
156
157 endHtml();
158 }
159
160
161}