[jboss-cvs] JBoss Profiler SVN: r524 - in branches/JBossProfiler2/src: main/org/jboss/profiler/client/web and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Apr 26 11:55:45 EDT 2009
Author: jesper.pedersen
Date: 2009-04-26 11:55:43 -0400 (Sun, 26 Apr 2009)
New Revision: 524
Added:
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/DecorateFrameInfo.java
branches/JBossProfiler2/src/main/www/connecterr.xhtml
branches/JBossProfiler2/src/main/www/profilersnapshot.xhtml
branches/JBossProfiler2/src/main/www/profilerstatus.xhtml
branches/JBossProfiler2/src/main/www/snapshotconfig.xhtml
branches/JBossProfiler2/src/main/www/snapshotoperations.xhtml
branches/JBossProfiler2/src/main/www/template/analyzetemplate.xhtml
branches/JBossProfiler2/src/main/www/template/serveropttemplate.xhtml
Removed:
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeFrameBean.java
branches/JBossProfiler2/src/main/www/addclasspanel.xhtml
branches/JBossProfiler2/src/main/www/index.html
branches/JBossProfiler2/src/main/www/listsnapshot.xhtml
branches/JBossProfiler2/src/main/www/removeclasspanel.xhtml
branches/JBossProfiler2/src/main/www/template/comparetemplate.xhtml
branches/JBossProfiler2/src/main/www/template/loadtemplate.xhtml
branches/JBossProfiler2/src/main/www/template/template.xhtml
Modified:
branches/JBossProfiler2/src/etc/faces-config.xml
branches/JBossProfiler2/src/etc/web.xml
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/BasicOptBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ClassBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/CompareSnapshotBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/LoadSnapshotBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/MethodBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/OverviewBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ThreadHotspotBean.java
branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeThreadBean.java
branches/JBossProfiler2/src/main/www/comparemethods.xhtml
branches/JBossProfiler2/src/main/www/comparesnapshots.xhtml
branches/JBossProfiler2/src/main/www/index.xhtml
branches/JBossProfiler2/src/main/www/loadhotspots.xhtml
branches/JBossProfiler2/src/main/www/loadoverview.xhtml
branches/JBossProfiler2/src/main/www/loadsnapshot.xhtml
branches/JBossProfiler2/src/main/www/loadthreadhotspots.xhtml
branches/JBossProfiler2/src/main/www/loadthreadtree.xhtml
branches/JBossProfiler2/src/main/www/template/head.xhtml
Log:
Web update from Huijuan Shao <hjshao at hitachi.cn> - modifications by Jesper Pedersen
Modified: branches/JBossProfiler2/src/etc/faces-config.xml
===================================================================
--- branches/JBossProfiler2/src/etc/faces-config.xml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/etc/faces-config.xml 2009-04-26 15:55:43 UTC (rev 524)
@@ -7,6 +7,7 @@
version="1.2">
<application>
+ <message-bundle>jboss-profiler</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
@@ -22,11 +23,21 @@
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
+ <managed-bean-name>frameInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.FrameInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
<managed-bean-name>methodBean</managed-bean-name>
<managed-bean-class>org.jboss.profiler.client.web.MethodBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
+ <managed-bean-name>threadInfoBean</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.ThreadInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
<managed-bean-name>treeThreadBean</managed-bean-name>
<managed-bean-class>org.jboss.profiler.client.web.TreeThreadBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
@@ -34,7 +45,7 @@
<managed-bean>
<managed-bean-name>treeFrameBean</managed-bean-name>
<managed-bean-class>org.jboss.profiler.client.web.TreeFrameBean</managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
+ <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>threadHotspotBean</managed-bean-name>
@@ -42,9 +53,39 @@
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
+ <managed-bean-name>snapshot</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.Snapshot</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
+ <managed-bean-name>allocationInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.AllocationInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
+ <managed-bean-name>threadInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.ThreadInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
+ <managed-bean-name>classInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.shared.ClassInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
+ <managed-bean-name>combinedFrameInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.client.CombinedFrameInfo</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
+ <managed-bean-name>selectItem</managed-bean-name>
+ <managed-bean-class>javax.faces.model.SelectItem</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+ <managed-bean>
<managed-bean-name>basicOptBean</managed-bean-name>
<managed-bean-class>org.jboss.profiler.client.web.BasicOptBean</managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
+ <managed-bean-scope>application</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>loadSnapshotBean</managed-bean-name>
@@ -61,4 +102,28 @@
<managed-bean-class>org.jboss.profiler.client.web.util.TreeDemoStateAdvisor</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
+ <managed-bean>
+ <managed-bean-name>timedClassInfo</managed-bean-name>
+ <managed-bean-class>org.jboss.profiler.client.TimedClassInfo</managed-bean-class>
+ <managed-bean-scope>request</managed-bean-scope>
+ <managed-property>
+ <property-name>className</property-name>
+ <property-class>java.lang.String</property-class>
+ <value>test</value>
+ </managed-property>
+ <managed-property>
+ <property-name>waitTime</property-name>
+ <property-class>double</property-class>
+ <value>3.0</value>
+ </managed-property>
+ </managed-bean>
+ <navigation-rule>
+ <display-name>profilerstatus.xhtml</display-name>
+ <from-view-id>/profilerstatus.xhtml</from-view-id>
+ <navigation-case>
+ <from-action>#{basicOptBean.connect}</from-action>
+ <from-outcome>org.jboss.remoting.CannotConnectException</from-outcome>
+ <to-view-id>/connecterr.xhtml</to-view-id>
+ </navigation-case>
+ </navigation-rule>
</faces-config>
Modified: branches/JBossProfiler2/src/etc/web.xml
===================================================================
--- branches/JBossProfiler2/src/etc/web.xml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/etc/web.xml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,33 +5,33 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
- <display-name>JBoss Profiler</display-name>
-
+ <display-name>JBoss Profiler 2</display-name>
+
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
-
+
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
-
+
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING_METHOD</param-name>
<param-value>false</param-value>
</context-param>
-
+
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING_DISPATCH_EVERY_TIME</param-name>
<param-value>true</param-value>
</context-param>
-
+
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>false</param-value>
</context-param>
-
+
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
@@ -46,21 +46,22 @@
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
+
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
- <param-name> org.richfaces.SKIN </param-name>
+ <param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
- <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
- <param-value>com.sun.facelets.FaceletViewHandler</param-value>
+ <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
+ <param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
-
+
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
@@ -71,33 +72,44 @@
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
-
+
<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
-
+
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>FacesServlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
- </filter-mapping>
-
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
-
+ </filter-mapping>
+
<error-page>
- <error-code>404</error-code>
- <location>/index.html</location>
+ <exception-type>org.jboss.remoting.CannotConnectException</exception-type>
+ <location>/connecterr.xhtml</location>
</error-page>
-
+
<error-page>
- <error-code>500</error-code>
- <location>/index.html</location>
+ <exception-type>java.lang.Throwable</exception-type>
+ <location>/connecterr.xhtml</location>
</error-page>
-
+
+ <error-page>
+ <exception-type>java.lang.Exception</exception-type>
+ <location>/connecterr.xhtml</location>
+ </error-page>
+
+ <error-page>
+ <exception-type>java.net.ConnectException</exception-type>
+ <location>/connecterr.xhtml</location>
+ </error-page>
+
+ <error-page>
+ <error-code>500</error-code>
+ <location>/connecterr.xhtml</location>
+ </error-page>
+
</web-app>
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/BasicOptBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/BasicOptBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/BasicOptBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -24,47 +24,48 @@
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
-import org.jboss.profiler.agent.Agent;
+import org.jboss.profiler.client.SnapshotUtil;
+import org.jboss.profiler.shared.Command;
+import org.jboss.profiler.shared.CommandType;
import org.jboss.profiler.shared.Snapshot;
import org.jboss.profiler.shared.SnapshotHelper;
+import org.jboss.profiler.shared.Visibility;
/**
* @author Huijuan Shao <hjshao at hitachi.cn>
*/
public class BasicOptBean implements Serializable {
- //Profiler profiler1 = new Profiler();
- private boolean start = false; //profiler1.isRunning();
- private boolean enabled = false; //Agent.isEnabled();
private String lastestOpts = "";
- private String addClass;
+ //private String addClass="org.jboss.profiler.*";
+ private String addClass = "";
private String visibility;
- private String removeClass;
+ //private String removeClass="org.apache.jsp.*";
+ private String removeClass = "";
private String selectSnapshot;
private String saveSnapshotName;
private boolean panelShows = false;
private String saveEcho = "";
- public boolean isStart() {
- return start;
- }
-
- public void setStart(boolean start) {
- this.start = start;
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
+ private String protocol = "socket";
+ private String host = "localhost";
+ private int port = 5400;
+ private String threshold = "1.0";
+ private static double digThreshold = 1.0;
+ private String plugin = "org.jboss.profiler.plugins.Hibernate";
+
+ private String path = LoadSnapshotBean.class.getResource("/").getFile() + "../../files/";
+ private ArrayList<String> interceptClassList = new ArrayList<String>();
+ private static ArrayList<Snapshot> snapshotsList = new ArrayList<Snapshot>();
+
+ private org.jboss.remoting.InvokerLocator locator;
+ private org.jboss.remoting.Client remotingClient;
+
public String getLastestOpts() {
return lastestOpts;
}
@@ -96,7 +97,23 @@
public void setRemoveClass(String removeClass) {
this.removeClass = removeClass;
}
+
+ public ArrayList<String> getInterceptClassList() {
+ return interceptClassList;
+ }
+ public void setInterceptClassList(ArrayList<String> interceptClassList) {
+ this.interceptClassList = interceptClassList;
+ }
+
+ public static ArrayList<Snapshot> getSnapshotsList() {
+ return snapshotsList;
+ }
+
+ public static void setSnapshotsList(ArrayList<Snapshot> snapshotsList) {
+ BasicOptBean.snapshotsList = snapshotsList;
+ }
+
public String getSelectSnapshot() {
return selectSnapshot;
}
@@ -113,6 +130,14 @@
this.saveSnapshotName = saveSnapshotName;
}
+ public static double getDigThreshold() {
+ return digThreshold;
+ }
+
+ public static void setDigThreshold(double digThreshold) {
+ BasicOptBean.digThreshold = digThreshold;
+ }
+
public boolean isPanelShows() {
return panelShows;
}
@@ -129,81 +154,137 @@
this.saveEcho = saveEcho;
}
- public void clickStart(){
- // start or stop, the profiler should be enabled.
- // TODO: cant use Agent / Profiler directly...
- if (Agent.isEnabled()) {
- if (this.start == false) {
- setStart(true);
- this.setLastestOpts("Profiler has started.");
- //profiler1.startProfiler();
- } else {
- setStart(false);
- this.setLastestOpts("Profiler has stopped.");
- //profiler1.stopProfiler();
- }
- }
+ public void clickStart() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+ this.connect();
+
+ Command cmd = new Command(CommandType.START_PROFILER);
+ String response = (String)remotingClient.invoke(cmd);
+ this.setLastestOpts("Profiler has started.");
+
+ remotingClient.disconnect();
}
- public void clickEnable(){
- // TODO: cant use Agent / Profiler directly...
- if (this.enabled == false && !Agent.isEnabled()) {
- this.setEnabled(true);
- this.setLastestOpts("Profiler has enabled.");
- //profiler1.enableProfiler();
- } else if (this.enabled == true && Agent.isEnabled()) {
- this.setEnabled(false);
- this.setLastestOpts("Profiler has disabled.");
- //profiler1.stopProfiler();
- //profiler1.disableProfiler();
- }
+ public void clickStop() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+ remotingClient.connect();
+
+ Command cmd3 = new Command(CommandType.STOP_PROFILER);
+ String response = (String)remotingClient.invoke(cmd3);
+ this.setLastestOpts("Profiler has stopped.");
+
+ remotingClient.disconnect();
}
- public void clearSnapshot(){
- // TODO: cant use Agent / Profiler directly...
- //this.setLastestOpts("clear all snapshots.");
- //profiler1.clearSnapshots();
- this.setPanelShows(false);
+ public void clickEnable() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+
+ Command cmd1 = new Command(CommandType.ENABLE);
+ String response = (String)remotingClient.invoke(cmd1);
+ this.setLastestOpts("Profiler has enabled.");
+
+ remotingClient.disconnect();
}
+
+ public void clickDisable() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+
+ Command cmd2 = new Command(CommandType.DISABLE);
+ String response = (String)remotingClient.invoke(cmd2);
+ this.setLastestOpts("Profiler has disabled.");
+
+ remotingClient.disconnect();
+ }
- public void gc(){
- // TODO: cant use Agent / Profiler directly...
- if(Agent.isEnabled()){
- this.setLastestOpts("begins garbage collection.");
- org.jboss.profiler.agent.Profiler.garbageCollection();
+ public void gc() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+ this.connect();
+
+ Command cmd = new Command(CommandType.START_PROFILER);
+ String response = (String)remotingClient.invoke(cmd);
+ this.setLastestOpts("begins garbage collection.");
+
+ remotingClient.disconnect();
+ }
+
+ public void takeSnapshot() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+
+ Command cmd = new Command(CommandType.SNAPSHOT);
+
+ Snapshot snapshot = (Snapshot)remotingClient.invoke(cmd);
+ if (snapshot != null) {
+ //SnapshotUtil su = new SnapshotUtil(new Double(threshold).doubleValue());
+ BasicOptBean.snapshotsList.add(snapshot);
}
+
+ remotingClient.disconnect();
}
- public void takeSnapshot(){
- // TODO: cant use Agent / Profiler directly...
- org.jboss.profiler.agent.Profiler.snapshot();
- //this.setLastestOpts("take snapshot.");
+ public void clearSnapshot() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+
+ Command cmd = new Command(CommandType.CLEAR_SNAPSHOTS);
+
+ String response = (String)remotingClient.invoke(cmd);
+
+ this.snapshotsList.clear();
+
+ remotingClient.disconnect();
this.setPanelShows(false);
}
- public String[] getSnapshots(){
- // TODO: cant use Agent / Profiler directly...
- String[] snapshots = org.jboss.profiler.agent.Profiler.listSnapshots();
+ /**
+ *
+ * @return all the snapshots string from the agent side
+ * @throws Throwable
+ */
+ public String[] getSnapshots() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+ remotingClient.connect();
+ Command cmd = new Command(CommandType.LIST_SNAPSHOTS);
+ String[] snapshots = (String[])remotingClient.invoke(cmd);
+ remotingClient.disconnect();
return snapshots;
}
- public void selectSnapshotAction(){
+ public void selectSnapshotAction() {
this.setPanelShows(true);
}
- public void selectSaveSnapshotAction(){
+ public void selectSaveSnapshotAction() throws Throwable {
String[] snapshots = this.getSnapshots();
- int k=0;
- for(int i = 0; i < snapshots.length; i++) {
+ int k = 0;
+ for (int i = 0; i < snapshots.length; i++) {
if(snapshots[i].equals(this.selectSnapshot))
k=i;
}
- Snapshot selectSnapshot1 = org.jboss.profiler.agent.Profiler.getSnapshot(k);
+ Snapshot selectSnapshot1 =(Snapshot)this.snapshotsList.get(k);
try {
if (this.saveSnapshotName == "")
- SnapshotHelper.save(selectSnapshot1);
+ SnapshotHelper.save(selectSnapshot1,new File(path+ SnapshotHelper.getName(selectSnapshot1) + ".jps"));
else
- SnapshotHelper.save(selectSnapshot1, new File(this.saveSnapshotName));
+ SnapshotHelper.save(selectSnapshot1, new File(path+this.saveSnapshotName));
this.saveEcho = "snapshot "+this.saveSnapshotName+" is just saved!";
this.saveSnapshotName = "";
@@ -212,7 +293,7 @@
}
}
- public List<SelectItem> getVisibilities(){
+ public List<SelectItem> getVisibilities() {
List<SelectItem> allSelectItems = new ArrayList<SelectItem>(4);
allSelectItems.add(new SelectItem("public"));
allSelectItems.add(new SelectItem("package"));
@@ -221,15 +302,131 @@
return allSelectItems;
}
- public void addClassAction(){
- // TODO: cant use Agent / Profiler directly...
- //Profiler profiler = new Profiler();
- //profiler.addClasses(this.addClass, this.visibility);
+ public void addClassAction() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+ remotingClient.connect();
+
+ String clz= this.addClass;
+ Visibility v = Visibility.PUBLIC;
+
+ if (this.visibility.endsWith("private")) {
+ v = Visibility.PRIVATE;
+ } else if (this.visibility.endsWith("protected")) {
+ v = Visibility.PROTECTED;
+ } else if (this.visibility.endsWith("package")) {
+ v = Visibility.PACKAGE;
+ }
+
+ Command cmd = new Command(CommandType.ADD_CLASSES, new Object[] { clz, v } );
+
+ String response = (String)remotingClient.invoke(cmd);
+ //this.setLastestOpts("Profiler has disabled.");
+ remotingClient.disconnect();
+
+ listClassAction();
}
- public void removeClassAction(){
- // TODO: cant use Agent / Profiler directly...
- //Profiler profiler = new Profiler();
- //profiler.removeClasses(this.removeClass);
+ public void removeClassAction() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+ remotingClient.connect();
+
+ String clz = this.removeClass;
+ Command cmd = new Command(CommandType.REMOVE_CLASSES, new Object[] { clz } );
+
+ String response = (String)remotingClient.invoke(cmd);
+
+ remotingClient.disconnect();
+
+ listClassAction();
}
+
+ public void listClassAction() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ remotingClient = new org.jboss.remoting.Client(locator);
+ remotingClient.connect();
+
+ Command cmd = new Command(CommandType.LIST_CLASSES);
+
+ this.interceptClassList.clear();
+ String[] result = (String[])remotingClient.invoke(cmd);
+ if (result != null) {
+ for (int j = 0; j < result.length; j++) {
+ this.interceptClassList.add(result[j]);
+ }
+ }
+ remotingClient.disconnect();
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public String getThreshold() {
+ return threshold;
+ }
+
+ public void setThreshold(String threshold) {
+ this.threshold = threshold;
+ BasicOptBean.setDigThreshold(new Double(threshold).doubleValue());
+ }
+
+ public String getPlugin() {
+ return plugin;
+ }
+
+ public void setPlugin(String plugin) {
+ this.plugin = plugin;
+ }
+
+ public List<SelectItem> getProtocols() {
+ List<SelectItem> allSelectItems = null;
+ allSelectItems = new ArrayList<SelectItem>(3);
+ allSelectItems.add(new SelectItem("socket"));
+ allSelectItems.add(new SelectItem("http"));
+ allSelectItems.add(new SelectItem("rmi"));
+ return allSelectItems;
+ }
+
+ public void connect() throws Throwable {
+ locator = new org.jboss.remoting.InvokerLocator(this.protocol + "://" + this.host + ":" + this.port);
+ org.jboss.remoting.Client remotingClient = new org.jboss.remoting.Client(locator);
+
+ remotingClient.connect();
+ remotingClient.disconnect();
+ }
+
+ public void protocolChanged(javax.faces.event.ValueChangeEvent evt) {
+ String protocol = (String)evt.getNewValue();
+ if (protocol.endsWith("socket")) {
+ this.setPort(5400);
+ } else if (protocol.endsWith("http")) {
+ this.setPort(5401);
+ } else {
+ this.setPort(5402);
+ }
+
+ this.setProtocol(protocol);
+ }
}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ClassBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ClassBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ClassBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -31,13 +31,13 @@
import org.jboss.profiler.client.CombinedFrameComparator;
import org.jboss.profiler.client.CombinedFrameInfo;
-import org.jboss.profiler.client.SnapshotUtil;
import org.jboss.profiler.client.TimedClassComparator;
import org.jboss.profiler.client.TimedClassInfo;
import org.jboss.profiler.client.Util;
import org.jboss.profiler.shared.AllocationInfo;
import org.jboss.profiler.shared.Math;
import org.jboss.profiler.shared.Snapshot;
+import org.jboss.profiler.client.SnapshotUtil;
/**
* @author Huijuan Shao <hjshao at hitachi.cn>
@@ -47,14 +47,13 @@
private String type;
private String totalTime;
private String waitTime;
- long allocCount;
- private String selectedClass = "";
-
+ private long allocCount;
+ private String selectedClass="";
+
private Map<String, List<CombinedFrameInfo>> info = null;
private List<TimedClassInfo> classes = null;
-
+
//the class info in which the methods will be shown.
-
public ClassBean(String className,String type, String totalTime) {
super();
this.className = className;
@@ -63,7 +62,7 @@
this.waitTime = "";
this.allocCount = -1;
}
-
+
public ClassBean(String className,String type, String totalTime,String waitTime, long allocations) {
super();
this.className = className;
@@ -72,60 +71,56 @@
this.waitTime = waitTime;
this.allocCount = allocations;
}
-
+
public ClassBean() {
super();
- // TODO Auto-generated constructor stub
}
-
+
public String getClassName() {
return className;
}
-
+
public void setClassName(String className) {
this.className = className;
}
-
+
public String getType() {
return type;
}
-
+
public void setType(String type) {
this.type = type;
}
-
+
public String getTotalTime() {
return totalTime;
}
-
+
public void setTotalTime(String totalTime) {
this.totalTime = totalTime;
}
-
+
public String getWaitTime() {
return waitTime;
}
-
+
public void setWaitTime(String waitTime) {
this.waitTime = waitTime;
}
-
+
public long getAllocCount() {
return allocCount;
}
-
+
public void setAllocCount(long allocCount) {
this.allocCount = allocCount;
}
-
- private long getAllocations(TimedClassInfo tci, List<AllocationInfo> allocs){
+
+ private long getAllocations(TimedClassInfo tci, List<AllocationInfo> allocs) {
String prettyClassName = Util.getPrettyName(tci);
- long alloc = 0;
-
+ long alloc = 0;
if (allocs != null && allocs.size() > 0) {
-
boolean found = false;
-
for (int i = 0; !found && i < allocs.size(); i++) {
AllocationInfo ai = allocs.get(i);
if (ai.getClassName().equals(prettyClassName)) {
@@ -136,29 +131,28 @@
}
return alloc;
}
-
+
public String getSelectedClass() {
return selectedClass;
}
-
+
public void setSelectedClass(String selectedClass) {
this.selectedClass = selectedClass;
}
-
+
public Set<String> getAjaxRowKeys(){
ClassBean[] clazz = this.getClasses();
Set<String> keys = new HashSet<String>();
- for(int i = 0; i < clazz.length; i++) {
+ for (int i = 0; i < clazz.length; i++) {
keys.add(clazz[i].className);
}
return keys;
}
-
- public void fireMethodsInfo(){
- //Maybe this part needs to integrate with getClasses to keep accord with snapshot.
- TimedClassInfo selectedTimedClassInfo = null, tmpTimedClassInfo = null;
+
+ public void fireMethodsInfo() {
+ TimedClassInfo selectedTimedClassInfo = null,tmpTimedClassInfo = null;
String tmpString;
- if (this.classes != null) {
+ if (this.classes!=null) {
for (int i = 0; i < classes.size(); i++) {
tmpTimedClassInfo = (TimedClassInfo)(classes.get(i));
tmpString = tmpTimedClassInfo.getClassName();
@@ -170,35 +164,32 @@
}
}
}
-
MethodBean.setTci(selectedTimedClassInfo);
List<CombinedFrameInfo> l = info.get(selectedTimedClassInfo.getClassName());
MethodBean.setCfs(l);
}
-
- public ClassBean[] getClasses(){
+
+ public ClassBean[] getClasses() {
ClassBean[] classBeans = null;
-
if (LoadSnapshotBean.getSnapshot() != null) {
DecimalFormat df = new DecimalFormat("#0.00");
- SnapshotUtil su = new SnapshotUtil();
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
-
List<TimedClassInfo> classes = su.getTimedClasses(LoadSnapshotBean.getSnapshot().getClasses(), info);
-
+
this.info = info;
this.classes = classes;
-
+
Collections.sort(classes, new TimedClassComparator(TimedClassComparator.NAME));
-
+
int j = 0;
long tmpCount = 0;
classBeans = new ClassBean[classes.size()];
-
+
for (TimedClassInfo tci: classes) {
tmpCount = this.getAllocations(tci, LoadSnapshotBean.getSnapshot().getAllocations());
classBeans[j++] = new ClassBean(Util.getPrettyName(tci),Util.getDescription(tci),
- df.format(tci.getTotalTime()), df.format(tci.getWaitTime()), tmpCount);
+ df.format(tci.getTotalTime()), df.format(tci.getWaitTime()),tmpCount);
}
}
return classBeans;
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/CompareSnapshotBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/CompareSnapshotBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/CompareSnapshotBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -36,34 +36,30 @@
import org.jboss.profiler.client.CombinedFrameComparator;
import org.jboss.profiler.client.CombinedFrameInfo;
-import org.jboss.profiler.client.SnapshotUtil;
import org.jboss.profiler.client.TimedClassInfo;
import org.jboss.profiler.shared.Snapshot;
import org.jboss.profiler.shared.SnapshotHelper;
+import org.jboss.profiler.client.SnapshotUtil;
/**
* @author Huijuan Shao <hjshao at hitachi.cn>
*/
public class CompareSnapshotBean implements Serializable {
- private String[] snapshotsToCompare=new String[2];
-
+ private String[] snapshotsToCompare = new String[2];
+
CompareSnapshotBean[] compareSnapshotBeans;
-
private String difftime;
-
private String oTime;
-
private String nTime;
-
private long diffCount;
-
private long oCount;
private long nCount;
private String methodName;
-
+ private String path = LoadSnapshotBean.class.getResource("/").getFile() + "../../files/";
+
public CompareSnapshotBean() {
}
-
+
public CompareSnapshotBean(String difftime,String oTime,String nTime,long diffCount,long oCount,long nCount, String methodName) {
this.difftime = difftime;
this.oTime = oTime;
@@ -73,121 +69,111 @@
this.nCount = nCount;
this.methodName = methodName;
}
-
+
public String getDifftime() {
return difftime;
}
-
+
public void setDifftime(String difftime) {
this.difftime = difftime;
}
-
+
public String getOTime() {
return oTime;
}
-
+
public void setOTime(String time) {
oTime = time;
}
-
+
public String getNTime() {
return nTime;
}
-
+
public void setNTime(String time) {
nTime = time;
}
-
+
public long getDiffCount() {
return diffCount;
}
-
+
public void setDiffCount(long diffCount) {
this.diffCount = diffCount;
}
-
+
public long getOCount() {
return oCount;
}
-
+
public void setOCount(long count) {
oCount = count;
}
-
+
public long getNCount() {
return nCount;
}
-
+
public void setNCount(long count) {
nCount = count;
}
-
+
public String getMethodName() {
return methodName;
}
-
+
public void setMethodName(String methodName) {
this.methodName = methodName;
}
-
+
public CompareSnapshotBean[] getCompareSnapshotBeans() {
return compareSnapshotBeans;
}
-
+
public String[] getSnapshotsToCompare() {
return snapshotsToCompare;
}
-
+
public void setSnapshotsToCompare(String[] snapshotsToCompare) {
this.snapshotsToCompare = snapshotsToCompare;
}
-
+
public List<SelectItem> getJPSs(){
List<SelectItem> allSelectItems = null;
- File tempFile = new File(".");
+ File tempFile = new File(path);
String[] fileStr = tempFile.list();
List<String> jpsFiles = new ArrayList<String>();
allSelectItems = new ArrayList<SelectItem>();
- for(int i = 0; i < fileStr.length; i++) {
+ for (int i = 0; i < fileStr.length; i++) {
if (fileStr[i].endsWith("jps")) {
jpsFiles.add(fileStr[i]);
allSelectItems.add(new SelectItem(fileStr[i]));
}
}
-
return allSelectItems;
}
-
+
public void analyzeAction() throws Exception{
- File file1 = new File(this.snapshotsToCompare[0]);
- File file2 = new File(this.snapshotsToCompare[1]);
-
+ File file1 = new File(path + this.snapshotsToCompare[0]);
+ File file2 = new File(path + this.snapshotsToCompare[1]);
+
try {
Snapshot os = SnapshotHelper.load(file1);
-
Snapshot ns = SnapshotHelper.load(file2);
-
- SnapshotUtil su = new SnapshotUtil();
-
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
Map<String, List<CombinedFrameInfo>> oInfo = su.getInformation(os);
-
Map<String, List<CombinedFrameInfo>> nInfo = su.getInformation(ns);
-
compareSnapshotBeans = this.compareMethods(oInfo, nInfo);
-
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
-
+
private CompareSnapshotBean[] compareMethods(Map<String, List<CombinedFrameInfo>> oInfo, Map<String, List<CombinedFrameInfo>> nInfo) throws Exception {
List<CombinedFrameInfo> methods = new ArrayList<CombinedFrameInfo>();
Map<String, CombinedFrameInfo> oMap = new HashMap<String, CombinedFrameInfo>();
Map<String, CombinedFrameInfo> nMap = new HashMap<String, CombinedFrameInfo>();
-
Map<String, CombinedFrameInfo> tMap = new HashMap<String, CombinedFrameInfo>();
-
Iterator it = oInfo.values().iterator();
while (it.hasNext()) {
List<CombinedFrameInfo> l = (List<CombinedFrameInfo>)it.next();
@@ -223,7 +209,6 @@
CombinedFrameInfo c = new CombinedFrameInfo(cfi.getClassName(), cfi.getPrettyName());
c.increaseTotalTime(cfi.getTotalTime() - oTime);
c.increaseCount(cfi.getCount() - oCount);
-
methods.add(c);
}
@@ -235,8 +220,7 @@
CombinedFrameInfo c = new CombinedFrameInfo(cfi.getClassName(), cfi.getPrettyName());
c.increaseTotalTime(-cfi.getTotalTime());
- c.increaseCount(-cfi.getCount());
-
+ c.increaseCount(-cfi.getCount());
methods.add(c);
}
@@ -244,9 +228,7 @@
Collections.reverse(methods);
DecimalFormat df = new DecimalFormat("#0.00");
-
this.compareSnapshotBeans=new CompareSnapshotBean[methods.size()];
-
for (int i = 0; i < methods.size(); i++) {
CombinedFrameInfo h = methods.get(i);
CombinedFrameInfo o = oMap.get(h.getPrettyName());
@@ -266,8 +248,8 @@
nCount = n.getCount();
}
- compareSnapshotBeans[i] = new CompareSnapshotBean(df.format(h.getTotalTime()),df.format(oTime),
- df.format(nTime),h.getCount(),oCount,nCount,h.getPrettyName());
+ compareSnapshotBeans[i]=new CompareSnapshotBean(df.format(h.getTotalTime()),df.format(oTime),
+ df.format(nTime),h.getCount(),oCount,nCount,h.getPrettyName());
}
return compareSnapshotBeans;
Added: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/DecorateFrameInfo.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/DecorateFrameInfo.java (rev 0)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/DecorateFrameInfo.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,117 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007-2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.profiler.client.web;
+
+import java.io.Serializable;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.profiler.shared.FrameInfo;
+import org.jboss.profiler.shared.Math;
+import org.jboss.profiler.shared.MethodInfo;
+import org.jboss.profiler.shared.MethodRepository;
+
+/**
+ * @author Huijuan Shao <hjshao at hitachi.cn>
+ */
+public class DecorateFrameInfo implements Serializable {
+ private MethodRepository methodRepository;
+ private FrameInfo frameInfo;
+ private List<DecorateFrameInfo> children;
+ private String pbar;
+ private long alltime = 0;
+
+ public DecorateFrameInfo(FrameInfo frameInfo, MethodRepository methodRepository) {
+ this.frameInfo = frameInfo;
+ this.methodRepository = methodRepository;
+ alltime = frameInfo.getTotalTime();
+ }
+
+ public String getPbar() {
+ if (pbar == null) {
+ long i = frameInfo.getTotalTime() * 100 / alltime;
+ if (i > 100)
+ i = 100;
+ pbar = i + ".png";
+ }
+ return pbar;
+ }
+
+ public long getAlltime() {
+ return alltime;
+ }
+
+ public void setAlltime(long alltime) {
+ this.alltime = alltime;
+ }
+
+ public void setPbar(String pbar) {
+ this.pbar = pbar;
+ }
+
+ public MethodRepository getMethodRepository() {
+ return methodRepository;
+ }
+
+ public void setMethodRepository(MethodRepository methodRepository) {
+ this.methodRepository = methodRepository;
+ }
+
+ public FrameInfo getFrameInfo() {
+ return frameInfo;
+ }
+
+ public void setFrameInfo(FrameInfo frameInfo) {
+ this.frameInfo = frameInfo;
+ }
+
+ public List<DecorateFrameInfo> getChildren() {
+ if (children == null) {
+ List<FrameInfo> frames = frameInfo.getChildren();
+ if (frames == null)
+ return null;
+ children = new ArrayList<DecorateFrameInfo>();
+ for (FrameInfo frame : frames) {
+ DecorateFrameInfo dframeInfo = new DecorateFrameInfo(frame,
+ methodRepository);
+ dframeInfo.alltime = alltime;
+ children.add(dframeInfo);
+ }
+ }
+ return children;
+ }
+
+ public String getMethod() {
+ return methodRepository.getInfo(frameInfo.getMethod()).getMethodName();
+ }
+
+ @Override
+ public String toString() {
+ MethodInfo minfo = methodRepository.getInfo(frameInfo.getMethod());
+ DecimalFormat df = new DecimalFormat("#0.00");
+ long total = frameInfo.getTotalTime();
+ return df.format(Math.toPercent(total, alltime)) + "% - "
+ + df.format(Math.nanoToMilli(total)) + " ms - "
+ + frameInfo.getCount() + " inv. - " + minfo.getMethodName();
+ }
+}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/LoadSnapshotBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/LoadSnapshotBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/LoadSnapshotBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -38,7 +38,10 @@
public class LoadSnapshotBean implements Serializable {
private String snapshotToLoad;
private static Snapshot snapshot = null;
-
+
+ private String threshold = "1.0";
+ private String path = LoadSnapshotBean.class.getResource("/").getFile() + "../../files/";
+
public static Snapshot getSnapshot() {
return snapshot;
}
@@ -46,22 +49,30 @@
public static void setSnapshot(Snapshot snapshot) {
LoadSnapshotBean.snapshot = snapshot;
}
+
+ public String getThreshold() {
+ return threshold;
+ }
+
+ public void setThreshold(String threshold) {
+ this.threshold = threshold;
+ }
public String getSnapshotToLoad() {
return snapshotToLoad;
}
-
+
public void setSnapshotToLoad(String snapshotToLoad) {
this.snapshotToLoad = snapshotToLoad;
}
-
+
public List<SelectItem> getJPSs(){
List<SelectItem> allSelectItems = null;
- File tempFile=new File(".");
+ File tempFile = new File(path);
String[] fileStr = tempFile.list();
List<String> jpsFiles = new ArrayList<String>();
allSelectItems = new ArrayList<SelectItem>();
- for(int i = 0; i < fileStr.length; i++){
+ for (int i = 0; i <fileStr.length; i++) {
if (fileStr[i].endsWith("jps")) {
jpsFiles.add(fileStr[i]);
allSelectItems.add(new SelectItem(fileStr[i]));
@@ -70,14 +81,13 @@
return allSelectItems;
}
- public void analyzeAction(){
- File file = new File(this.snapshotToLoad);
+ public void analyzeAction() {
+ File file = new File(path+this.snapshotToLoad);
Snapshot snapshot;
try {
snapshot = SnapshotHelper.load(file);
- LoadSnapshotBean.setSnapshot(snapshot);
+ LoadSnapshotBean.setSnapshot(snapshot);
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/MethodBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/MethodBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/MethodBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -46,7 +46,8 @@
//the class info in which the methods will be shown.
private static TimedClassInfo tci;
private static List<CombinedFrameInfo> cfs;
-
+ private int methodUnderThreshCount;
+
public MethodBean() {
}
@@ -67,6 +68,14 @@
this.count = count;
}
+ public int getMethodUnderThreshCount() {
+ return methodUnderThreshCount;
+ }
+
+ public void setMethodUnderThreshCount(int methodUnderThreshCount) {
+ this.methodUnderThreshCount = methodUnderThreshCount;
+ }
+
public String getTotalTime() {
return totalTime;
}
@@ -84,7 +93,7 @@
}
public String getTPercent() {
- return tPercent;
+ return tPercent;
}
public void setTPercent(String percent) {
@@ -98,7 +107,7 @@
public void setPrettyName(String prettyName) {
this.prettyName = prettyName;
}
-
+
public static TimedClassInfo getTci() {
return tci;
}
@@ -115,24 +124,28 @@
MethodBean.cfs = cfs;
}
- public void setMethods() {
+ public void setMethods(){
+ methodUnderThreshCount = 0;
if (cfs != null) {
DecimalFormat df = new DecimalFormat("#0.00");
Collections.sort(cfs, new CombinedFrameComparator(CombinedFrameComparator.TOTAL_TIME));
- int j=0;
+ int j = 0;
methods = new MethodBean[cfs.size()];
-
- for (CombinedFrameInfo cfi : cfs) {
+ for (CombinedFrameInfo cfi : cfs) {
methods[j++]= new MethodBean(cfi.getCount(),
df.format(cfi.getTotalTime()),
df.format(Math.toPercent(cfi.getTotalTime(), tci.getTotalTime())),
df.format(cfi.getPercent()),
cfi.getPrettyName());
+ if (cfi.getTotalTime() < BasicOptBean.getDigThreshold()) {
+ methodUnderThreshCount++;
+ }
}
+ this.setMethodUnderThreshCount(methodUnderThreshCount);
}
}
- public MethodBean[] getMethods(){
+ public MethodBean[] getMethods() {
this.setMethods();
return this.methods;
}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/OverviewBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/OverviewBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/OverviewBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -32,30 +32,35 @@
import org.jboss.profiler.client.CombinedFrameComparator;
import org.jboss.profiler.client.CombinedFrameInfo;
import org.jboss.profiler.client.SnapshotUtil;
+import org.jboss.profiler.client.TimedClassComparator;
import org.jboss.profiler.client.TimedClassInfo;
import org.jboss.profiler.shared.AllocationComparator;
import org.jboss.profiler.shared.AllocationInfo;
+import org.jboss.profiler.shared.ClassInfo;
import org.jboss.profiler.shared.ThreadComparator;
import org.jboss.profiler.shared.ThreadInfo;
/**
- *@author Huijuan Shao <hjshao at hitachi.cn>
+ * @author Huijuan Shao <hjshao at hitachi.cn>
*/
public class OverviewBean implements Serializable {
private String title;
private int packageUnderThreshCount;
+ private int hotspotsUnderThreshCount;
+ private int mosttimeUnderThreshCount;
+ private int waittimeUnderThreshCount;
public String getTitle() {
return title;
}
-
+
public void setTitle(String title) {
this.title = title;
}
-
+
public String[] getTitles(){
- String[] titles={
- "Threads","Most Time","Hotspots","Allocations","classes"
+ String[] titles= {
+ "Threads","Most Time","Hotspots","Allocations","classes"
};
return titles;
}
@@ -63,25 +68,48 @@
public int getPackageUnderThreshCount() {
return packageUnderThreshCount;
}
-
+
public void setPackageUnderThreshCount(int packageUnderThreshCount) {
this.packageUnderThreshCount = packageUnderThreshCount;
}
-
+
+ public int getWaittimeUnderThreshCount() {
+ return waittimeUnderThreshCount;
+ }
+
+ public void setWaittimeUnderThreshCount(int waittimeUnderThreshCount) {
+ this.waittimeUnderThreshCount = waittimeUnderThreshCount;
+ }
+
public List<AllocationInfo> getAllocations() {
List<AllocationInfo> allocationList = null;
if (LoadSnapshotBean.getSnapshot() != null) {
Collections.sort(LoadSnapshotBean.getSnapshot().getAllocations(), new AllocationComparator());
allocationList = LoadSnapshotBean.getSnapshot().getAllocations();
}
-
return allocationList;
}
- public List<CombinedFrameInfo> getHotspots() {
+ public int getHotspotsUnderThreshCount() {
+ return hotspotsUnderThreshCount;
+ }
+
+ public void setHotspotsUnderThreshCount(int hotspotsUnderThreshCount) {
+ this.hotspotsUnderThreshCount = hotspotsUnderThreshCount;
+ }
+
+ public int getMosttimeUnderThreshCount() {
+ return mosttimeUnderThreshCount;
+ }
+
+ public void setMosttimeUnderThreshCount(int mosttimeUnderThreshCount) {
+ this.mosttimeUnderThreshCount = mosttimeUnderThreshCount;
+ }
+
+ public List<CombinedFrameInfo> getHotspots(){
if (LoadSnapshotBean.getSnapshot() != null) {
- SnapshotUtil su = new SnapshotUtil();
- Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
+ Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
List<CombinedFrameInfo> hotspotsInfo = new ArrayList<CombinedFrameInfo>();
Iterator it = info.values().iterator();
while (it.hasNext()) {
@@ -89,21 +117,32 @@
hotspotsInfo.addAll(l);
}
Collections.sort(hotspotsInfo,new CombinedFrameComparator(CombinedFrameComparator.TOTAL_TIME_AVG));
+ //build new array list above threshold
+ List<CombinedFrameInfo> thresholdHotspots = new ArrayList<CombinedFrameInfo>();
+ it = hotspotsInfo.iterator();
+ while (it.hasNext()) {
+ CombinedFrameInfo tempCFI=(CombinedFrameInfo) it.next();
+ if (tempCFI.getTotalTime() >= BasicOptBean.getDigThreshold()) {
+ thresholdHotspots.add(tempCFI);
+ }
+ }
- return hotspotsInfo;
- }
+ this.hotspotsUnderThreshCount = hotspotsInfo.size() - thresholdHotspots.size();
+ if (thresholdHotspots.isEmpty()) {
+ return null;
+ } else {
+ return thresholdHotspots;
+ }
+ }
return null;
}
- public List<CombinedFrameInfo> getMostTime(){
- SnapshotUtil su = new SnapshotUtil();
-
+ public List<CombinedFrameInfo> getMostTime() {
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
if (LoadSnapshotBean.getSnapshot() != null) {
Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
List<TimedClassInfo> classes = su.getTimedClasses(LoadSnapshotBean.getSnapshot().getClasses(), info);
-
List<CombinedFrameInfo> allMethods = new ArrayList<CombinedFrameInfo>();
-
Iterator it = info.values().iterator();
while (it.hasNext()) {
List<CombinedFrameInfo> l = (List<CombinedFrameInfo>)it.next();
@@ -111,61 +150,105 @@
}
Collections.sort(allMethods, new CombinedFrameComparator(CombinedFrameComparator.TOTAL_TIME));
- return allMethods;
+ //build new array list above threshold
+ List<CombinedFrameInfo> thresholdMostTime = new ArrayList<CombinedFrameInfo>();
+ it = allMethods.iterator();
+ while (it.hasNext()) {
+ CombinedFrameInfo tempCFI = (CombinedFrameInfo)it.next();
+ if (tempCFI.getTotalTime()>=BasicOptBean.getDigThreshold()) {
+ thresholdMostTime.add(tempCFI);
+ }
+ }
+ this.mosttimeUnderThreshCount = allMethods.size() - thresholdMostTime.size();
+ if (thresholdMostTime.isEmpty()) {
+ return null;
+ } else {
+ return thresholdMostTime;
+ }
}
- return null;
+ return null;
}
- public List<ThreadInfo> getThreads(){
+ public List<ThreadInfo> getThreads(){
List<ThreadInfo> threads = null;
if (LoadSnapshotBean.getSnapshot() != null) {
Collections.sort(LoadSnapshotBean.getSnapshot().getThreads(), new ThreadComparator());
threads = LoadSnapshotBean.getSnapshot().getThreads();
+ return threads;
}
- return threads;
+ return null;
}
- public List<CombinedFrameInfo> getPackages(){
+ public List<CombinedFrameInfo> getPackages(){
if (LoadSnapshotBean.getSnapshot() != null) {
- SnapshotUtil su = new SnapshotUtil();
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
List<TimedClassInfo> classes = su.getTimedClasses(LoadSnapshotBean.getSnapshot().getClasses(), info);
-
Map<String, CombinedFrameInfo> packages = new HashMap<String, CombinedFrameInfo>();
-
Iterator it = info.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String key = (String)entry.getKey();
List<CombinedFrameInfo> value = (List<CombinedFrameInfo>)entry.getValue();
-
for (CombinedFrameInfo cfi : value) {
- String cn = cfi.getClassName();
- cn = cn.replace('/', '.');
- if (cn.lastIndexOf(".") != -1) {
- cn = cn.substring(0, cn.lastIndexOf("."));
+ if (cfi.getTotalTime() > BasicOptBean.getDigThreshold()) {
+ String cn = cfi.getClassName();
+ cn = cn.replace('/', '.');
+ if (cn.lastIndexOf(".") != -1) {
+ cn = cn.substring(0, cn.lastIndexOf("."));
+ }
+ CombinedFrameInfo ci = packages.get(cn);
+ if (ci == null) {
+ ci = new CombinedFrameInfo(cn, cn);
+ }
+ ci.increaseTotalTime(cfi.getTotalTime());
+ ci.increasePercent(cfi.getPercent());
+ packages.put(cn, ci);
}
-
- CombinedFrameInfo ci = packages.get(cn);
- if (ci == null) {
- ci = new CombinedFrameInfo(cn, cn);
- }
- ci.increaseTotalTime(cfi.getTotalTime());
- ci.increasePercent(cfi.getPercent());
- packages.put(cn, ci);
}
}
-
List<CombinedFrameInfo> result = new ArrayList<CombinedFrameInfo>(packages.values());
Collections.sort(result, new CombinedFrameComparator(CombinedFrameComparator.TOTAL_TIME));
+ //build new array list above threshold
+ List<CombinedFrameInfo> thresholdPackages = new ArrayList<CombinedFrameInfo>();
+ it = result.iterator();
+ while (it.hasNext()) {
+ CombinedFrameInfo tempCFI = (CombinedFrameInfo) it.next();
+ if(tempCFI.getTotalTime() >= BasicOptBean.getDigThreshold()) {
+ thresholdPackages.add(tempCFI);
+ }
+ }
+ this.packageUnderThreshCount = result.size() - thresholdPackages.size();
- int count = 0;
+ if (thresholdPackages.isEmpty()) {
+ return null;
+ } else {
+ return thresholdPackages;
+ }
+ }
+ return null;
+ }
+
+ public List<TimedClassInfo> getClasses() {
+ List<TimedClassInfo> thresholdClasses = new ArrayList<TimedClassInfo>();
+ if (LoadSnapshotBean.getSnapshot() != null) {
+ SnapshotUtil su = new SnapshotUtil(BasicOptBean.getDigThreshold());
+ Map<String, List<CombinedFrameInfo>> info = su.getInformation(LoadSnapshotBean.getSnapshot());
+ List<TimedClassInfo> classes = su.getTimedClasses(LoadSnapshotBean.getSnapshot().getClasses(), info);
+ Collections.sort(classes, new TimedClassComparator(TimedClassComparator.WAIT_TIME));
- int j=0;
+ //build new array list of wait time above threshold
+ thresholdClasses.clear();
+ Iterator<TimedClassInfo> it = classes.iterator();
+ while (it.hasNext()) {
+ TimedClassInfo tempTCI = it.next();
+ if (tempTCI.getWaitTime() >= BasicOptBean.getDigThreshold()) {
+ thresholdClasses.add(tempTCI);
+ }
+ }
- this.packageUnderThreshCount = count;
- return result;
+ this.waittimeUnderThreshCount = classes.size() - thresholdClasses.size();
}
- return null;
+ return thresholdClasses;
}
}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ThreadHotspotBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ThreadHotspotBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/ThreadHotspotBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -40,15 +40,17 @@
import org.jboss.profiler.client.Util;
import org.jboss.profiler.shared.FrameInfo;
import org.jboss.profiler.shared.Math;
+import org.jboss.profiler.shared.MethodInfo;
+import org.jboss.profiler.shared.MethodRepository;
import org.jboss.profiler.shared.ThreadInfo;
+import org.jboss.profiler.shared.ThreadInfoProxy;
/**
- *@author Huijuan Shao <hjshao at hitachi.cn>
+ * @author Huijuan Shao <hjshao at hitachi.cn>
*/
public class ThreadHotspotBean implements Serializable {
private String selectItem = null;
private ThreadInfo selectThreadInfo = null;
-
private ArrayList<String> mainKeys;
private ArrayList<String> subKeys;
private ArrayList<CombinedFrameInfo> subValues;
@@ -60,7 +62,7 @@
public String getSelectItem() {
return selectItem;
}
-
+
public void setSelectItem(String selectItem) {
this.selectItem = selectItem;
}
@@ -68,7 +70,7 @@
public ThreadInfo getSelectThreadInfo() {
return selectThreadInfo;
}
-
+
public void setSelectThreadInfo(ThreadInfo selectThreadInfo) {
this.selectThreadInfo = selectThreadInfo;
this.selectItem = selectThreadInfo.getName();
@@ -85,7 +87,7 @@
public ArrayList<String> getSubKeys() {
return subKeys;
}
-
+
public void setSubKeys(ArrayList<String> subKeys) {
this.subKeys = subKeys;
}
@@ -93,7 +95,7 @@
public ArrayList<CombinedFrameInfo> getSubValues() {
return subValues;
}
-
+
public void setSubValues(ArrayList<CombinedFrameInfo> subValues) {
this.subValues = subValues;
}
@@ -111,13 +113,11 @@
if (LoadSnapshotBean.getSnapshot() != null) {
threadsList = LoadSnapshotBean.getSnapshot().getThreads();
}
-
return threadsList;
}
public void selectionChanged(javax.faces.event.ValueChangeEvent evt){
this.setSelectItem(((String)evt.getNewValue()));
-
//get the selected thread
List<ThreadInfo> allThreads = this.getAllThreads();
Iterator<ThreadInfo> it = allThreads.iterator();
@@ -130,25 +130,23 @@
generateArrayFromMap(tmpThreadInfo);
}
- public List<SelectItem> getAllSelectItems() {
- List<SelectItem> allSelectItems = null;
+ public List<SelectItem> getAllSelectItems(){
+ List<SelectItem> allSelectItems = new ArrayList<SelectItem>();
List<ThreadInfo> threadsList = null;
if (LoadSnapshotBean.getSnapshot() != null) {
threadsList = LoadSnapshotBean.getSnapshot().getThreads();
- allSelectItems = new ArrayList<SelectItem>(threadsList.size());
- for (int i = 0; i<threadsList.size(); i++) {
+ //allSelectItems=new ArrayList<SelectItem>(threadsList.size());
+ for (int i = 0; i < threadsList.size(); i++) {
allSelectItems.add(new SelectItem(threadsList.get(i).getName()));
}
}
return allSelectItems;
}
- public void showMapInfo(ThreadInfo threadInfo){
+ public void showMapInfo(ThreadInfo threadInfo) {
Map<String, Map<String, CombinedFrameInfo>> data = new HashMap<String, Map<String, CombinedFrameInfo>>();
-
- //only one thread information, not all threadList
for (FrameInfo fi: threadInfo.getFrames()) {
- getCallerInformation(fi, data);
+ getCallerInformation(LoadSnapshotBean.getSnapshot().getMethodRepository(), fi, data);
}
Iterator dit = data.entrySet().iterator();
@@ -158,12 +156,11 @@
Map.Entry entry = (Map.Entry)dit.next();
String key = (String)entry.getKey();
Map<String, CombinedFrameInfo> value = (Map<String, CombinedFrameInfo>)entry.getValue();
-
Map<String, List<CombinedFrameInfo>> m = new HashMap<String, List<CombinedFrameInfo>>();
Iterator vit = value.values().iterator();
+
while (vit.hasNext()) {
CombinedFrameInfo cfi = (CombinedFrameInfo)vit.next();
-
List<CombinedFrameInfo> l = m.get(cfi.getClassName());
if (l == null) {
l = new ArrayList<CombinedFrameInfo>();
@@ -182,34 +179,33 @@
}//show map information
}
- public void generateArrayFromMap(ThreadInfo threadInfo){
+ public void generateArrayFromMap(ThreadInfo threadInfo) {
Map<String, Map<String, CombinedFrameInfo>> map = new HashMap<String, Map<String, CombinedFrameInfo>>();
for (FrameInfo fi: threadInfo.getFrames()) {
- getCallerInformation(fi, map);
+ getCallerInformation(LoadSnapshotBean.getSnapshot().getMethodRepository(),fi, map);
}
- HashMap<String,CombinedFrameInfo> newMap=new HashMap();
- Set<String> set=map.keySet();
- ArrayList<String> mainKeys=new ArrayList(set);
- this.mainKeys=mainKeys;
+ HashMap<String,CombinedFrameInfo> newMap = new HashMap();
+ Set<String> set = map.keySet();
+ ArrayList<String> mainKeys = new ArrayList(set);
+ this.mainKeys = mainKeys;
- ArrayList subKeys=new ArrayList();
- ArrayList subValues=new ArrayList();
+ ArrayList subKeys = new ArrayList();
+ ArrayList subValues = new ArrayList();
Iterator it = map.values().iterator();
while(it.hasNext()){
Map<String, CombinedFrameInfo> subMap=(Map<String, CombinedFrameInfo>) it.next();
- Set entrySet=subMap.entrySet();
- Iterator entryIt=entrySet.iterator();
- while(entryIt.hasNext()){
- Map.Entry<String, CombinedFrameInfo> entry=(Entry<String, CombinedFrameInfo>) entryIt.next();
+ Set entrySet = subMap.entrySet();
+ Iterator entryIt = entrySet.iterator();
+ while (entryIt.hasNext()) {
+ Map.Entry<String, CombinedFrameInfo> entry = (Entry<String, CombinedFrameInfo>)entryIt.next();
subKeys.add(entry.getKey());
subValues.add(entry.getValue());
newMap.put(entry.getKey(), entry.getValue());
}
}
-
this.setSubKeys(subKeys);
this.setSubValues(subValues);
this.setNewMap(newMap);
@@ -217,24 +213,23 @@
/**
* Get caller information
- * @param fi The frame
- * @param data The data
- */
- public void getCallerInformation(FrameInfo fi, Map<String, Map<String, CombinedFrameInfo>> data) {
- /*
-
- TODO -- common implementation should be placed in the client
-
- Map<String, CombinedFrameInfo> entry = data.get(fi.getMethod().getClassName());
+ * @param mr The method repository
+ * @param fi The frame
+ * @param data The data
+ * */
+ protected void getCallerInformation(MethodRepository mr, FrameInfo fi, Map<String, Map<String, CombinedFrameInfo>> data) {
+ MethodInfo mi = mr.getInfo(fi.getMethod());
+ Map<String, CombinedFrameInfo> entry = data.get(mi.getClassName());
if (entry == null) {
entry = new HashMap<String, CombinedFrameInfo>();
- data.put(fi.getMethod().getClassName(), entry);
+ data.put(mi.getClassName(), entry);
}
if (fi.getParent() != null) {
- String parentName = Util.getPrettyName(fi.getParent().getMethod());
+ MethodInfo pmi = mr.getInfo(fi.getParent().getMethod());
+ String parentName = Util.getPrettyName(pmi);
CombinedFrameInfo cfi = entry.get(parentName);
if (cfi == null) {
- cfi = new CombinedFrameInfo(Util.getPrettyName(fi.getMethod()), parentName);
+ cfi = new CombinedFrameInfo(Util.getPrettyName(mi), parentName);
entry.put(parentName, cfi);
}
@@ -244,10 +239,8 @@
if (fi.getChildren() != null && fi.getChildren().size() > 0) {
for (FrameInfo child : fi.getChildren()) {
- getCallerInformation(child, data);
+ getCallerInformation(mr, child, data);
}
}
-
- */
}
}
Deleted: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeFrameBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeFrameBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeFrameBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,55 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007-2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.profiler.client.web;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import org.jboss.profiler.shared.FrameInfo;
-
-/**
- *@author Huijuan Shao <hjshao at hitachi.cn>
- */
-public class TreeFrameBean implements Serializable {
-
- private static List<FrameInfo> enterFrames = null;
- private List<FrameInfo> srcRoots = null;
-
- public static List<FrameInfo> getEnterFrames() {
- return enterFrames;
- }
-
- public static void setEnterFrames(List<FrameInfo> enterFrames) {
- TreeFrameBean.enterFrames = enterFrames;
- }
-
- public synchronized List<FrameInfo> getSrcRoots() {
- if (enterFrames == null)
- return null;
-
- srcRoots = new ArrayList<FrameInfo>(enterFrames.size());
- for (int i = 0; i < enterFrames.size(); i++) {
- srcRoots.add(enterFrames.get(i));
- }
- return srcRoots;
- }
-}
Modified: branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeThreadBean.java
===================================================================
--- branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeThreadBean.java 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/org/jboss/profiler/client/web/TreeThreadBean.java 2009-04-26 15:55:43 UTC (rev 524)
@@ -21,25 +21,12 @@
*/
package org.jboss.profiler.client.web;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
import java.io.Serializable;
-import java.io.Writer;
-import java.text.DecimalFormat;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
-import javax.swing.tree.DefaultMutableTreeNode;
-
-import org.jboss.profiler.client.Util;
import org.jboss.profiler.shared.FrameInfo;
-import org.jboss.profiler.shared.Math;
-import org.jboss.profiler.shared.Snapshot;
import org.jboss.profiler.shared.ThreadInfo;
-import org.richfaces.model.TreeNode;
-import org.richfaces.model.TreeNodeImpl;
/**
* @author Huijuan Shao <hjshao at hitachi.cn>
@@ -47,36 +34,68 @@
public class TreeThreadBean implements Serializable {
//the id of selectedThread
private long selectedThread;
+ private volatile LoadSnapshotBean loadSnapshotBean;
+ private List<FrameInfo> frames;
+ private FrameInfo frame;
+ public FrameInfo getFrame() {
+ return frame;
+ }
+
+ public void setFrame(FrameInfo frame) {
+ this.frame = frame;
+ }
+
+ public LoadSnapshotBean getLoadSnapshotBean() {
+ return loadSnapshotBean;
+ }
+
+ public void setLoadSnapshotBean(LoadSnapshotBean loadSnapshotBean) {
+ this.loadSnapshotBean = loadSnapshotBean;
+ }
+
public TreeThreadBean() {
}
public long getSelectedThread() {
return selectedThread;
}
-
+
public void setSelectedThread(long selectedThread) {
this.selectedThread = selectedThread;
}
-
+
public List<ThreadInfo> getAllThreads(){
List<ThreadInfo> threadsList = null;
- if (LoadSnapshotBean.getSnapshot() != null) {
- threadsList=LoadSnapshotBean.getSnapshot().getThreads();
+ if (loadSnapshotBean.getSnapshot() != null) {
+ threadsList = loadSnapshotBean.getSnapshot().getThreads();
}
return threadsList;
}
public void fireSelectedThread(){
List<ThreadInfo> allthreads = this.getAllThreads();
- ThreadInfo tmpThreadInfo=null;
- for(int i = 0; i < allthreads.size(); i++) {
+ ThreadInfo tmpThreadInfo = null;
+ for (int i=0; i < allthreads.size(); i++) {
tmpThreadInfo = allthreads.get(i);
- if (tmpThreadInfo.getId() == this.getSelectedThread())
+ if (tmpThreadInfo.getId() == this.getSelectedThread())
break;
}
-
- List<FrameInfo> frames = tmpThreadInfo.getFrames();
- TreeFrameBean.setEnterFrames(tmpThreadInfo.getFrames());
+ frames = tmpThreadInfo.getFrames();
+ //TreeFrameBean.setEnterFrames(tmpThreadInfo.getFrames());
}
+
+ public synchronized List<DecorateFrameInfo> getSrcRoots() {
+ if (frames == null)
+ return null;
+
+ ArrayList<DecorateFrameInfo> ret = new ArrayList<DecorateFrameInfo>();
+ for (FrameInfo frameInfo : frames)
+ ret.add(new DecorateFrameInfo(frameInfo,loadSnapshotBean.getSnapshot().getMethodRepository()));
+ return ret;
+ }
+
+ public String getFrameInfo(){
+ return frame == null ? "" : frame.toString();
+ }
}
Deleted: branches/JBossProfiler2/src/main/www/addclasspanel.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/addclasspanel.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/addclasspanel.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,63 +0,0 @@
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:ui="http://java.sun.com/jsf/facelets">
-
- <rich:modalPanel id="addClassPanel" width="350" height="250" onhide="false">
- <a4j:region id="addClassRegion">
- <a4j:form id="addClassFrom" ajaxSubmit="true" rendered="true">
- <a4j:outputPanel layout="block">
-
- <f:facet name="controls">
- <h:panelGroup>
- <h:graphicImage value="/images/modal/close.png" style="cursor:pointer" id="hidelink1"/>
- <rich:componentControl for="addClassPanel" attachTo="hidelink1" operation="hide" event="onclick"/>
- </h:panelGroup>
- </f:facet>
- <h:panelGroup>
- <rich:panel>
- <f:facet name="header">
- <h:outputText value="Add Class to Intercept During Runtime"/>
- </f:facet>
-
- <h:outputText value="Class to add (e.g. org.jboss.*)"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
-
- <h:inputText value="#{basicOptBean.addClass}"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
-
- <h:outputText value="Choose the visibility for above class"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
-
- <a4j:outputPanel layout="block" id="visibilitySelect">
- <h:selectOneMenu value="#{basicOptBean.visibility}" style="width: 200px" lable="#{basicOptBean.visibility}">
- <a4j:support event="onchange" reRender="port,protocolSelect"/>
- <f:selectItems value="#{basicOptBean.visibilities}" />
- </h:selectOneMenu>
- </a4j:outputPanel>
-
- <br/>
-
- <a4j:commandButton id="addButton1"
- value="add class"
- action="#{basicOptBean.addClassAction}"
- onclick="this.disable=true">
- <rich:componentControl for="addClassPanel" attachTo="addButton1" operation="hide" event="onclick"/>
- </a4j:commandButton>
-
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <a4j:commandButton id="closebutton1" value="cancel">
- <rich:componentControl for="addClassPanel" attachTo="closebutton1" operation="hide" event="onclick"/>
- </a4j:commandButton>
- </rich:panel>
- </h:panelGroup>
- </a4j:outputPanel>
- </a4j:form>
- </a4j:region>
- </rich:modalPanel>
-</ui:composition>
\ No newline at end of file
Modified: branches/JBossProfiler2/src/main/www/comparemethods.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/comparemethods.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/comparemethods.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,84 +1,75 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
- <ui:composition template="/template/comparetemplate.xhtml">
- <ui:define name="compareContent">
- <h:form>
- <h:outputText value="The methods #{compareSnapshotBean.snapshotsToCompare[0]} and #{compareSnapshotBean.snapshotsToCompare[1]} comparing results is: ">
- <p></p>
- <rich:datascroller align="left" for="compareSnapshotsTable" maxPages="20"/>
- <rich:spacer height="30"/>
-
- <rich:dataTable id="compareSnapshotsTable"
- rows="10"
- value="#{compareSnapshotBean.compareSnapshotBeans}"
- var="compareResult"
- width="500px"
- columnClasses="center"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
- <f:facet name="label">
- <h:outputText value="Diff(Total Time) Old(ms) New(ms) Diff(Invocations) Old(#) New(#) Method"/>
- </f:facet>
-
- <rich:column style="width:500px" sortBy="#{compareResult.difftime}">
- <f:facet name="header">
- <h:outputText value="Diff(Total Time)"/>
- </f:facet>
- <h:outputText value="#{compareResult.difftime}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.OTime}">
- <f:facet name="header">
- <h:outputText value="Old(ms)"/>
- </f:facet>
- <h:outputText value="#{compareResult.OTime}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.NTime}">
- <f:facet name="header">
- <h:outputText value="New(ms)"/>
- </f:facet>
- <h:outputText value="#{compareResult.NTime}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.diffCount}">
- <f:facet name="header">
- <h:outputText value="Diff(Invocations)"/>
- </f:facet>
- <h:outputText value="#{compareResult.diffCount}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.OCount}">
- <f:facet name="header">
- <h:outputText value="Old(#)"/>
- </f:facet>
- <h:outputText value="#{compareResult.OCount}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.NCount}">
- <f:facet name="header">
- <h:outputText value="New(#)"/>
- </f:facet>
- <h:outputText value="#{compareResult.NCount}"/>
- </rich:column>
-
- <rich:column style="width:500px" sortBy="#{compareResult.methodName}">
- <f:facet name="header">
- <h:outputText value="Method"/>
- </f:facet>
- <h:outputText value="#{compareResult.methodName}"/>
- </rich:column>
-
- </rich:dataTable>
- </h:form>
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
+ <h:form>
+ <h:outputText value="Compare two snapshots #{compareSnapshotBean.snapshotsToCompare[0]} and #{compareSnapshotBean.snapshotsToCompare[1]}."/>
+ <p></p>
+ <rich:datascroller align="left" for="compareSnapshotsTable" maxPages="20"/>
+ <rich:spacer height="30"/>
+
+ <rich:dataTable id="compareSnapshotsTable" rows="16" value="#{compareSnapshotBean.compareSnapshotBeans}" var="compareResult" width="790px" columnClasses="center" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <f:facet name="label">
+ <h:outputText value="Diff(Total Time) Old(ms) New(ms) Diff(Invocations) Old(#) New(#) Method"/>
+ </f:facet>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.difftime}">
+ <f:facet name="header">
+ <h:outputText value="Diff(TotalTime)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.difftime}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.OTime}">
+ <f:facet name="header">
+ <h:outputText value="Old(ms)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.OTime}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.NTime}">
+ <f:facet name="header">
+ <h:outputText value="New(ms)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.NTime}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.diffCount}">
+ <f:facet name="header">
+ <h:outputText value="Diff(Inv)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.diffCount}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.OCount}">
+ <f:facet name="header">
+ <h:outputText value="Old(#)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.OCount}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.NCount}">
+ <f:facet name="header">
+ <h:outputText value="New(#)"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.NCount}"/>
+ </rich:column>
+
+ <rich:column style="width:500px" sortBy="#{compareResult.methodName}">
+ <f:facet name="header">
+ <h:outputText value="Method"/>
+ </f:facet>
+ <h:outputText value="#{compareResult.methodName}"/>
+ </rich:column>
+ </rich:dataTable>
+ </h:form>
</ui:define>
- </ui:composition>
-
+ </ui:composition>
</html>
\ No newline at end of file
Modified: branches/JBossProfiler2/src/main/www/comparesnapshots.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/comparesnapshots.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/comparesnapshots.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -7,20 +7,18 @@
xmlns:rich="http://richfaces.org/rich"
xmlns:richfaces="http://richfaces.ajax4jsf.org/rich"
xmlns:ajax="https://ajax4jsf.dev.java.net/ajax">
-
- <ui:composition template="/template/comparetemplate.xhtml">
- <ui:define name="compareContent">
- <h:outputText value="Please choose two snapshots *.jps file for analyzing."/>
- <p></p>
-
- <h:selectManyListbox value="#{compareSnapshotBean.snapshotsToCompare}" style="height:300px;width:500px">
- <f:selectItems value="#{compareSnapshotBean.JPSs}" />
- </h:selectManyListbox>
- <p></p>
- <a4j:commandLink action="#{compareSnapshotBean.analyzeAction}" onclick="document.location.href='./comparemethods.xhtml'">
- <h:outputText value="Compare the selected two snapshots" />
- </a4j:commandLink>
- </ui:define>
+
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
+ <h:outputText value="Please choose two snapshots *.jps file for analyzing."/>
+ <p></p>
+ <h:selectManyListbox value="#{compareSnapshotBean.snapshotsToCompare}" style="height:300px;width:500px">
+ <f:selectItems value="#{compareSnapshotBean.JPSs}" />
+ </h:selectManyListbox>
+ <p></p>
+ <a4j:commandLink action="#{compareSnapshotBean.analyzeAction}" onclick="document.location.href='./comparemethods.xhtml'">
+ <h:outputText value="Compare the selected two snapshots" />
+ </a4j:commandLink>
+ </ui:define>
</ui:composition>
-
</html>
Added: branches/JBossProfiler2/src/main/www/connecterr.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/connecterr.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/connecterr.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/serveropttemplate.xhtml">
+ <ui:define name="optContent">
+ Can not get connection to remote JVM to be monitored and profiled:
+ <br></br>
+ host = <h:outputText value="#{basicOptBean.host}"> </h:outputText>
+ <br></br>
+ protocol = <h:outputText value="#{basicOptBean.protocol}"> </h:outputText>
+ <br></br>
+ port = <h:outputText value="#{basicOptBean.port}"> </h:outputText>
+ <br></br>
+ <br></br>
+ <a href="profilerstatus.xhtml"> Back to configure and re-connect!</a>
+ </ui:define>
+ </ui:composition>
+</html>
Deleted: branches/JBossProfiler2/src/main/www/index.html
===================================================================
--- branches/JBossProfiler2/src/main/www/index.html 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/index.html 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,11 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <meta http-equiv="refresh" content="0; url=listsnapshot.xhtml"/>
- <title>JBoss Profiler 2</title>
- </head>
- <body>
- </body>
-</html>
Modified: branches/JBossProfiler2/src/main/www/index.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/index.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/index.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,20 +0,0 @@
-<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:jsp="http://java.sun.com/JSP/Page"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.ajax4jsf.org/rich"
- template="/template/template.xhtml">
-
- <ui:define name="centerContent">
-
- <f:subview id="frontPage">
- <h:form>
-
- </h:form>
- </f:subview>
- </ui:define>
-</ui:composition>
Deleted: branches/JBossProfiler2/src/main/www/listsnapshot.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/listsnapshot.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/listsnapshot.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/head.xhtml">
- <ui:define name="mainContent">
- <h:panelGrid border="0" columns="2" columnClasses="wholecol" style="width: 150px">
- <h:form>
- <rich:panel style="background-color: AliceBlue; height: 915px; width: 150px; background-position: left center; padding-right: 1px; padding-left: 1px; padding-top: 1px; border-top-style: solid; margin-bottom: 1px; border-right-style: solid; padding-bottom: 1px; border-bottom-color: LightBlue; border-bottom-style: solid; margin-right: 1px; border-left-color: LightBlue; border-top-color: LightBlue; border-right-color: LightBlue; border-left-style: solid; margin-left: 1px; margin-top: 1px; font-size:32px" >
- <h:outputLabel value="Snapshot Operations"/>
- <p></p>
- <h:commandLink action="${basicOptBean.takeSnapshot}">Take Snapshot</h:commandLink>
- <p></p>
- <a href="./listsnapshot.xhtml">List Snapshots</a>
- <p></p>
- <h:commandLink action="${basicOptBean.clearSnapshot}">Clear Snapshots</h:commandLink>
- </rich:panel>
- </h:form>
-
- <a4j:region id="listSnapshotRegion">
- <a4j:form id="listSnapshotForm" ajaxSubmit="true" rendered="true">
- <a4j:outputPanel id="listSnapshotPanel" layout="block">
-
- <rich:panel style="height:919px;width:822px">
- <h:outputText value="All the snapshots are listed here"/>
- <h:form>
- <rich:panel>
- <rich:datascroller align="left" for="snapshotsTable" maxPages="20" reRender="sc2" id="sc1"/>
- <rich:spacer height="30"/>
-
- <rich:dataTable id="snapshotsTable"
- rows="10"
- value="#{basicOptBean.snapshots}"
- var="snapshot"
- width="500px"
- columnClasses="center"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
- <f:facet name="label">
- <h:outputText value="Snapshot start time --> stop time"/>
- </f:facet>
-
- <rich:column style="width:500px" sortBy="#{snapshot}"
- onclick="document.location.href='./listsnapshot.xhtml'">
- <h:outputText value="#{snapshot}"/>
- <rich:toolTip direction="top-right" showDelay="500">
- <span style="white-space:nowrap"> Click to choose one snapshot for save!<br/></span>
- </rich:toolTip>
- </rich:column>
-
- <a4j:support event="onRowClick"
- action="#{basicOptBean.selectSnapshotAction}"
- reRender="listSnapshotPanel,selectedOutput">
- <a4j:actionparam name="selected" value="#{snapshot}" assignTo="#{basicOptBean.selectSnapshot}"/>
- </a4j:support>
- </rich:dataTable>
- </rich:panel>
-
- <rich:spacer height="30"/>
-
- <rich:panel id="savePanel" rendered="#{basicOptBean.panelShows}">
- <h:outputText id="selectedOutput" value="the selected snapshot is No.#{basicOptBean.selectSnapshot}"/>
- <p></p>
- <h:outputText value="Input the snapshot name. If it's blank, the name based on time is generated."/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
-
- <h:inputText id="inputSaveName" value="#{basicOptBean.saveSnapshotName}"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
- <br/>
-
- <a4j:commandButton id="savebutton"
- value="Save"
- action="#{basicOptBean.selectSaveSnapshotAction}"
- reRender="inputSaveName,saveEcho">
- <rich:componentControl for="saveSnapshotPanel" attachTo="savebutton" operation="hide" event="onclick"/>
- </a4j:commandButton>
- <p></p>
-
- <h:outputText id="saveEcho" value="#{basicOptBean.saveEcho}"/>
- </rich:panel>
- </h:form>
-
- </rich:panel>
- </a4j:outputPanel>
- </a4j:form>
- </a4j:region>
- </h:panelGrid>
- </ui:define>
- </ui:composition>
-
-</html>
Modified: branches/JBossProfiler2/src/main/www/loadhotspots.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/loadhotspots.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/loadhotspots.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,79 +5,72 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/loadtemplate.xhtml">
- <ui:define name="loadContent">
- <rich:tabPanel id="classTabPanel" width="40%" headerAlignment="left">
+
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
+ <h:outputText value="One snapshot #{loadSnapshotBean.snapshotToLoad} is profiled. Threshold is #{basicOptBean.threshold}"/>
+ <rich:tabPanel id="classTabPanel" width="800px" headerAlignment="left">
<rich:tab label="hotspot" styleClass="cc">
<h:form>
<rich:datascroller align="left" for="hotspots" maxPages="20"/>
<rich:spacer height="30"/>
- <rich:dataTable width="483"
- id="hotspots"
- rows="12"
- columnClasses="wholecol"
- value="#{overviewBean.hotspots}"
- var="hsb"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <rich:dataTable width="483" id="hotspots" rows="25" columnClasses="wholecol" value="#{overviewBean.hotspots}" var="hsb" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+
<rich:column id="Count" sortBy="#{hsb.count}">
<f:facet name="header"><h:outputText value="Count"/></f:facet>
<h:outputText value="#{hsb.count}"/>
</rich:column>
+
<rich:column id="MostTimeMs" sortBy="#{hsb.totalTime}">
<f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
<h:outputText value="#{hsb.totalTime}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
+
<rich:column id="Avg" sortBy="#{hsb.totalTime/hsb.count}">
<f:facet name="header"><h:outputText value="Average"/></f:facet>
<h:outputText value="#{hsb.totalTime/hsb.count}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
+
<rich:column id="Percentage" sortBy="#{hsb.percent}">
<f:facet name="header"><h:outputText value="Percentage"/></f:facet>
<h:outputText value="#{hsb.percent}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
+
<rich:column id="Method" sortBy="#{hsb.prettyName}" width="250">
<f:facet name="header"><h:outputText value="Method"/></f:facet>
<h:outputText value="#{hsb.prettyName}"/>
</rich:column>
</rich:dataTable>
+ <h:outputText value="#{overviewBean.mosttimeUnderThreshCount} most time below threshold #{basicOptBean.threshold}"></h:outputText>
</h:form>
<br/>
</rich:tab>
-
+
<rich:tab label="package" styleClass="cc">
<h:form>
<rich:datascroller align="left" for="hotspots" maxPages="20"/>
<rich:spacer height="30"/>
- <rich:dataTable width="483"
- id="hotspots"
- rows="20"
- columnClasses="wholecol"
- value="#{overviewBean.packages}"
- var="pgb"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <rich:dataTable width="483" id="package" rows="20" columnClasses="wholecol" value="#{overviewBean.packages}" var="pgb" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
<rich:column id="Percentage" sortBy="#{pgb.percent}">
<f:facet name="header"><h:outputText value="Percentage"/></f:facet>
<h:outputText value="#{pgb.percent}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column id="TotalTime" sortBy="#{pgb.totalTime}">
<f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
<h:outputText value="#{pgb.totalTime}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column id="Packagename" sortBy="#{pgb.prettyName}">
<f:facet name="header"><h:outputText value="Package Name"/></f:facet>
<h:outputText value="#{pgb.prettyName}">
@@ -85,113 +78,97 @@
</h:outputText>
</rich:column>
</rich:dataTable>
+
+ <h:outputText value="#{overviewBean.packageUnderThreshCount} package below threshold #{basicOptBean.threshold}"></h:outputText>
</h:form>
<br/>
</rich:tab>
-
+
<rich:tab label="class/method">
-
<h:outputText value="Please click one class for detailed method info."/>
<h:form>
<rich:datascroller align="left" for="classes" maxPages="20"/>
<rich:spacer height="30"/>
- <rich:dataTable width="483"
- id="classes"
- rows="20"
- columnClasses="wholecol"
- value="#{classBean.classes}"
- var="clazzb"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'"
- rowKeyVar="rowClassVar">
+ <rich:dataTable width="483" id="classes" rows="20" columnClasses="wholecol" value="#{classBean.classes}" var="clazzb" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'" rowKeyVar="rowClassVar">
<rich:column sortBy="#{clazzb.className}">
<f:facet name="header"><h:outputText value="Class Name"/></f:facet>
<h:outputText value="#{clazzb.className}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{clazzb.type}">
<f:facet name="header"><h:outputText value="Type"/></f:facet>
<h:outputText value="#{clazzb.type}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{clazzb.totalTime}">
<f:facet name="header"><h:outputText value="Total Time"/></f:facet>
<h:outputText value="#{clazzb.totalTime}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{clazzb.waitTime}">
<f:facet name="header"><h:outputText value="Wait Time"/></f:facet>
<h:outputText value="#{clazzb.waitTime}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{clazzb.allocCount}">
<f:facet name="header"><h:outputText value="Invocations"/></f:facet>
<h:outputText value="#{clazzb.allocCount}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
- <a4j:support event="onRowClick"
- action="#{classBean.fireMethodsInfo}"
- reRender="methodsDataTable,classOutputText">
- <a4j:actionparam name="selected" value="#{clazzb.className}" assignTo="#{classBean.selectedClass}"/>
+
+ <a4j:support event="onRowClick" action="#{classBean.fireMethodsInfo}" reRender="methodsDataTable,classOutputText">
+ <a4j:actionparam name="selected" value="#{clazzb.className}" assignTo="#{classBean.selectedClass}">
+ </a4j:actionparam>
</a4j:support>
</rich:dataTable>
</h:form>
-
+
<br/>
<p></p>
-
- <h:outputText id="classOutputText"
- value="Class #{classBean.selectedClass} is chosen,please see the methods info below!"/>
-
+
+ <h:outputText id="classOutputText" value="Class #{classBean.selectedClass} is chosen,please see the
+ methods info below!"/>
<h:form>
- <rich:datascroller align="left" for="classes" maxPages="20"/>
+ <rich:datascroller align="left" for="methodsDataTable" maxPages="20"/>
<rich:spacer height="30"/>
- <rich:dataTable width="483"
- id="methodsDataTable"
- rows="20"
- columnClasses="wholecol"
- value="#{methodBean.methods}"
- var="methodb"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <rich:dataTable width="483" id="methodsDataTable" rows="20" columnClasses="wholecol" value="#{methodBean.methods}" var="methodb" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
<rich:column sortBy="#{methodb.count}">
<f:facet name="header"><h:outputText value="Counts"/></f:facet>
<h:outputText value="#{methodb.count}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{methodb.totalTime}">
<f:facet name="header"><h:outputText value="Total Time"/></f:facet>
<h:outputText value="#{methodb.totalTime}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{methodb.CPercent}">
<f:facet name="header"><h:outputText value="Class Percent"/></f:facet>
<h:outputText value="#{methodb.CPercent}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{methodb.TPercent}">
<f:facet name="header"><h:outputText value="Total Percent"/></f:facet>
<h:outputText value="#{methodb.TPercent}">
<f:convertNumber maxFractionDigits="2"></f:convertNumber>
</h:outputText>
</rich:column>
-
+
<rich:column sortBy="#{methodb.prettyName}">
<f:facet name="header"><h:outputText value="Method Name"/></f:facet>
<h:outputText value="#{methodb.prettyName}">
@@ -199,10 +176,11 @@
</h:outputText>
</rich:column>
</rich:dataTable>
+ <h:outputText value="#{methodBean.methodUnderThreshCount} methods below threshold #{basicOptBean.threshold}"></h:outputText>
</h:form>
</rich:tab>
</rich:tabPanel>
</ui:define>
</ui:composition>
-
-</html>
\ No newline at end of file
+
+</html>
Modified: branches/JBossProfiler2/src/main/www/loadoverview.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/loadoverview.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/loadoverview.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,143 +5,156 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/loadtemplate.xhtml">
- <ui:define name="loadContent">
+
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
+ <h:outputText value="One snapshot #{loadSnapshotBean.snapshotToLoad} is profiled. Threshold is #{basicOptBean.threshold}. "/>
<h:panelGrid border="0" columns="2" columnClasses="col" style="color: Black; background-color: WhiteSmoke; left: auto; clear: left; font-size: 12px; margin-top: auto; margin-bottom: auto; margin-right: auto; margin-left: auto; bottom: auto; right: auto; background-position: left left; top: auto; vertical-align: top; background-attachment: scroll; background-repeat: repeat">
- <f:facet name="header"><h:outputText value="Overview"/></f:facet>
- <rich:panel style="middlepanel">
- <f:facet name="header"><h:outputText value="Hotspots"/></f:facet>
- <rich:scrollableDataTable value="#{overviewBean.hotspots}"
- var="hsb"
- id="HotSpot"
- rows="0"
- style="middlepanel"
- height="200px"
- width="360px">
- <rich:column id="Count" sortBy="#{hsb.count}">
- <f:facet name="header"><h:outputText value="Count"/></f:facet>
- <h:outputText value="#{hsb.count}"/>
- </rich:column>
- <rich:column id="MostTimeMs" sortBy="#{hsb.totalTime}">
- <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
- <h:outputText value="#{hsb.totalTime}">
- <f:convertNumber maxFractionDigits="2"/>
- </h:outputText>
- </rich:column>
- <rich:column id="Avg" sortBy="#{hsb.totalTime/hsb.count}">
- <f:facet name="header"><h:outputText value="Average"/></f:facet>
- <h:outputText value="#{hsb.totalTime/hsb.count}">
- <f:convertNumber maxFractionDigits="2"/>
- </h:outputText>
- </rich:column>
- <rich:column id="Percentage" sortBy="#{hsb.percent}">
- <f:facet name="header"><h:outputText value="Percentage"/></f:facet>
- <h:outputText value="#{hsb.percent}">
- <f:convertNumber maxFractionDigits="2"/>
- </h:outputText>
- </rich:column>
- <rich:column id="Method" sortBy="#{hsb.prettyName}" width="250">
- <f:facet name="header"><h:outputText value="Method"/></f:facet>
- <h:outputText value="#{hsb.prettyName}"/>
- </rich:column>
- </rich:scrollableDataTable>
- </rich:panel>
-
- <rich:panel style="middlepanel">
- <f:facet name="header">
- <h:outputText value="Most Time"/>
- </f:facet>
- <rich:scrollableDataTable value="#{overviewBean.mostTime}"
- var="mts"
- id="MostTime"
- rows="0"
- style="middlescroll"
- width="360px"
- height="200px">
- <rich:column id="Count">
- <f:facet name="header"><h:outputText value="Count"/></f:facet>
- <h:outputText value="#{mts.count}">
- <f:convertNumber maxFractionDigits="2"></f:convertNumber>
- </h:outputText>
- </rich:column>
- <rich:column id="MostTimeMs">
- <f:facet name="header"><h:outputText value="Most Time(ms)"/></f:facet>
- <h:outputText value="#{mts.totalTime}">
- <f:convertNumber maxFractionDigits="2"></f:convertNumber>
- </h:outputText>
- </rich:column>
- <rich:column id="Percentage">
- <f:facet name="header"><h:outputText value="Percent"/></f:facet>
- <h:outputText value="#{mts.percent}">
- <f:convertNumber maxFractionDigits="2"></f:convertNumber>
- </h:outputText>
- </rich:column>
- <rich:column id="Method" width="500">
- <f:facet name="header"><h:outputText value="Method"/></f:facet>
- <h:outputText value="#{mts.prettyName}"/>
- </rich:column>
- </rich:scrollableDataTable>
- </rich:panel>
-
- <rich:panel style="middlepanel">
- <f:facet name="header"><h:outputText value="Classes"/></f:facet>
- <rich:scrollableDataTable value="#{classBean.classes}"
- var="classb"
- id="Classes"
- rows="0"
- style="middlescroll"
- height="200px"
- width="360px">
- <rich:column id="ClassCname">
- <f:facet name="header"><h:outputText value="Class Name"/></f:facet>
- <h:outputText value="#{classb.className}"/>
- </rich:column>
- <rich:column id="ClassCtype">
- <f:facet name="header"><h:outputText value="Type"/></f:facet>
- <h:outputText value="#{classb.type}"/>
- </rich:column>
- <rich:column id="ClassCms">
- <f:facet name="header"><h:outputText value="Ms"/></f:facet>
- <h:outputText value="#{classb.totalTime}"/>
- </rich:column>
- </rich:scrollableDataTable>
- </rich:panel>
-
- <rich:panel style="middlepanel">
- <f:facet name="header">
- <h:outputText value="Threads Info"/>
- </f:facet>
- <rich:scrollableDataTable value="#{overviewBean.threads}" var="ths" id="Overview" rows="0" sortOrder="#{threadsBean.millionSeconds}" style="middlescroll" height="200px" width="360px">
- <rich:column id="Threads">
- <f:facet name="header"><h:outputText value="Threads"/></f:facet>
- <h:outputText value="#{ths.name}"/>
- </rich:column>
- <rich:column id="Ms">
- <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
- <h:outputText value="#{ths.totalTime/1000000}">
- <f:convertNumber maxFractionDigits="2"></f:convertNumber>
- </h:outputText>
- </rich:column>
- </rich:scrollableDataTable>
- </rich:panel>
-
- <rich:panel style="middlepanel">
- <f:facet name="header"><h:outputText value="Allocations"/></f:facet>
- <rich:scrollableDataTable value="#{overviewBean.allocations}" var="allob" id="Allocations" rows="0" style="middlescroll" height="200px" width="360px">
- <rich:column id="AlloMethodName" width="250">
- <f:facet name="header"><h:outputText value="Class Name"/></f:facet>
- <h:outputText value="#{allob.className}"/>
- </rich:column>
- <rich:column id="AlloTimes">
- <f:facet name="header"><h:outputText value="Times"/></f:facet>
- <h:outputText value="#{allob.count}"/>
- </rich:column>
- </rich:scrollableDataTable>
- </rich:panel>
-
+ <f:facet name="header">
+ <h:outputText value="Overview"/>
+ </f:facet>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Hotspots"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{overviewBean.hotspots}" var="hsb" id="HotSpot" rows="0" style="middlepanel" height="200px" width="360px">
+ <rich:column id="Count" sortBy="#{hsb.count}">
+ <f:facet name="header"><h:outputText value="Count"/></f:facet>
+ <h:outputText value="#{hsb.count}"/>
+ </rich:column>
+ <rich:column id="MostTimeMs" sortBy="#{hsb.totalTime}">
+ <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
+ <h:outputText value="#{hsb.totalTime}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="Avg" sortBy="#{hsb.totalTime/hsb.count}">
+ <f:facet name="header"><h:outputText value="Average"/></f:facet>
+ <h:outputText value="#{hsb.totalTime/hsb.count}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="Percentage" sortBy="#{hsb.percent}">
+ <f:facet name="header"><h:outputText value="Percentage"/></f:facet>
+ <h:outputText value="#{hsb.percent}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="Method" sortBy="#{hsb.prettyName}" width="250">
+ <f:facet name="header"><h:outputText value="Method"/></f:facet>
+ <h:outputText value="#{hsb.prettyName}"/>
+ </rich:column>
+ </rich:scrollableDataTable>
+ <h:outputText value="#{overviewBean.hotspotsUnderThreshCount} methods below threshold #{basicOptBean.threshold}"></h:outputText>
+ </rich:panel>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Most Time"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{overviewBean.mostTime}" var="mts" id="MostTime" rows="0" style="middlescroll" width="360px" height="200px">
+ <rich:column id="Count">
+ <f:facet name="header"><h:outputText value="Count"/></f:facet>
+ <h:outputText value="#{mts.count}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="MostTimeMs">
+ <f:facet name="header"><h:outputText value="Most Time(ms)"/></f:facet>
+ <h:outputText value="#{mts.totalTime}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="Percentage">
+ <f:facet name="header"><h:outputText value="Percent"/></f:facet>
+ <h:outputText value="#{mts.percent}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ <rich:column id="Method" width="500">
+ <f:facet name="header"><h:outputText value="Method"/></f:facet>
+ <h:outputText value="#{mts.prettyName}"/>
+ </rich:column>
+ </rich:scrollableDataTable>
+ <h:outputText value="#{overviewBean.mosttimeUnderThreshCount} most time below threshold #{basicOptBean.threshold}"></h:outputText>
+ </rich:panel>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Classes"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{classBean.classes}" var="classb" id="Classes" rows="0" style="middlescroll" height="200px" width="360px">
+ <rich:column id="ClassCname">
+ <f:facet name="header"><h:outputText value="Class Name"/></f:facet>
+ <h:outputText value="#{classb.className}"/>
+ </rich:column>
+ <rich:column id="ClassCtype">
+ <f:facet name="header"><h:outputText value="Type"/></f:facet>
+ <h:outputText value="#{classb.type}"/>
+ </rich:column>
+ <rich:column id="ClassCms">
+ <f:facet name="header"><h:outputText value="Ms"/></f:facet>
+ <h:outputText value="#{classb.totalTime}"/>
+ </rich:column>
+ </rich:scrollableDataTable>
+ </rich:panel>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Threads Info"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{overviewBean.threads}" var="ths" id="Overview" rows="0" sortOrder="#{threadsBean.millionSeconds}" style="middlescroll" height="200px" width="360px">
+ <rich:column id="Threads">
+ <f:facet name="header"><h:outputText value="Threads"/></f:facet>
+ <h:outputText value="#{ths.name}"/>
+ </rich:column>
+ <rich:column id="Ms">
+ <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
+ <h:outputText value="#{ths.totalTime/1000000}">
+ <f:convertNumber maxFractionDigits="2"></f:convertNumber>
+ </h:outputText>
+ </rich:column>
+ </rich:scrollableDataTable>
+ </rich:panel>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Allocations"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{overviewBean.allocations}" var="allob" id="Allocations" rows="0" style="middlescroll" height="200px" width="360px">
+ <rich:column id="AlloMethodName" width="250">
+ <f:facet name="header"><h:outputText value="Class Name"/></f:facet>
+ <h:outputText value="#{allob.className}"/>
+ </rich:column>
+ <rich:column id="AlloTimes">
+ <f:facet name="header"><h:outputText value="Times"/></f:facet>
+ <h:outputText value="#{allob.count}"/>
+ </rich:column>
+ </rich:scrollableDataTable>
+ <h:outputText value=" "></h:outputText>
+ </rich:panel>
+
+ <rich:panel style="middlepanel">
+ <f:facet name="header">
+ <h:outputText value="Wait Time"/>
+ </f:facet>
+ <rich:scrollableDataTable value="#{overviewBean.classes}" var="wt" id="WaitTime" rows="0" style="middlescroll" height="200px" width="360px">
+ <rich:column width="250">
+ <f:facet name="header"><h:outputText value="Class Name"/></f:facet>
+ <h:outputText value="#{wt.className}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header"><h:outputText value="Wait Time"/></f:facet>
+ <h:outputText value="#{wt.waitTime}"/>
+ </rich:column>
+ </rich:scrollableDataTable>
+ <h:outputText value="#{overviewBean.waittimeUnderThreshCount} most time below threshold #{basicOptBean.threshold}"></h:outputText>
+ </rich:panel>
+
</h:panelGrid>
</ui:define>
</ui:composition>
+
+</html>
-</html>
\ No newline at end of file
Modified: branches/JBossProfiler2/src/main/www/loadsnapshot.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/loadsnapshot.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/loadsnapshot.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,21 +5,25 @@
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
- xmlns:richfaces="http://richfaces.ajax4jsf.org/rich"
xmlns:ajax="https://ajax4jsf.dev.java.net/ajax">
-
- <ui:composition template="/template/loadtemplate.xhtml">
- <ui:define name="loadContent">
+
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
<h:outputText value="Please choose one snapshot *.jps file for analyzing."/>
<p></p>
<h:selectOneListbox value="#{loadSnapshotBean.snapshotToLoad}" style="height:300px;width:500px">
<f:selectItems value="#{loadSnapshotBean.JPSs}" />
</h:selectOneListbox>
<p></p>
+ <h:outputText value="Input inital the total time threshold in million seconds.">
+ </h:outputText>
+ <p></p>
+ <p></p>
<a4j:commandLink action="#{loadSnapshotBean.analyzeAction}" onclick="document.location.href='./loadoverview.xhtml'">
- <h:outputText value="Analyze this snapshot" />
+ <h:outputText value="Analyze this snapshot" />
</a4j:commandLink>
</ui:define>
</ui:composition>
+
+</html>
-</html>
Modified: branches/JBossProfiler2/src/main/www/loadthreadhotspots.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/loadthreadhotspots.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/loadthreadhotspots.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,68 +1,64 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
- <ui:composition template="/template/loadtemplate.xhtml">
- <ui:define name="loadContent">
- <h:form>
- <h:panelGrid columns="2">
- <h:outputText value="Thread Selection:" style="width:150px"/>
- <h:selectOneMenu value="#{threadHotspotBean.selectItem}"
- style="width: 500px"
- valueChangeListener="#{threadHotspotBean.selectionChanged}"
- label="#{threadHotspotBean.selectItem}">
- <a4j:support event="onchange" reRender="selectedOutput,callerTable"/>
- <f:selectItems value="#{threadHotspotBean.allSelectItems}" />
- </h:selectOneMenu>
- </h:panelGrid>
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
+ <h:outputText value="One snapshot #{loadSnapshotBean.snapshotToLoad} is profiled. Threshold is #{basicOptBean.threshold}. "/>
+ <h:form>
+
+ <h:panelGrid columns="2">
+
+ <h:outputText value="Thread Selection:" style="width:150px"/>
+ <h:selectOneMenu value="#{threadHotspotBean.selectItem}" style="width: 500px" valueChangeListener="#{threadHotspotBean.selectionChanged}"
+ lable="#{threadHotspotBean.selectItem}">
+ <a4j:support event="onchange" reRender="selectedOutput,callerTable">
+ </a4j:support>
+ <f:selectItems value="#{threadHotspotBean.allSelectItems}" />
+ </h:selectOneMenu>
+ </h:panelGrid>
+
+ <h:outputText id="selectedOutput" value="the selected thread is #{threadHotspotBean.selectItem}"/>
+ </h:form>
+
+ <rich:separator height="1" style="background-color: white"/>
+ <h:form>
+ <rich:scrollableDataTable id="callerTable" value="#{threadHotspotBean.subKeys}" style="middlescroll" var="key" width="800px" columnClasses="center" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <rich:column style="width:200px" sortBy="#{key}">
+ <f:facet name="header"><h:outputText value="caller"/></f:facet>
+ <h:outputText value="#{key}"/>
+ </rich:column>
+
+ <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].className}">
+ <f:facet name="header"><h:outputText value="callee"/></f:facet>
+ <h:outputText value="#{threadHotspotBean.newMap[key].className}"/>
+ </rich:column>
+
+ <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].totalTime}">
+ <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
+ <h:outputText value="#{threadHotspotBean.newMap[key].totalTime}">
+ <f:convertNumber maxFractionDigits="2"/>
+ </h:outputText>
+ </rich:column>
+
+ <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].totalTime/threadHotspotBean.newMap[key].count}">
+ <f:facet name="header"><h:outputText value="Average Time(ms)"/></f:facet>
+ <h:outputText value="#{threadHotspotBean.newMap[key].totalTime/threadHotspotBean.newMap[key].count}">
+ <f:convertNumber maxFractionDigits="2"/>
+ </h:outputText>
+ </rich:column>
+
+ <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].count}">
+ <f:facet name="header"><h:outputText value="Invocations"/></f:facet>
+ <h:outputText value="#{threadHotspotBean.newMap[key].count}"/>
+ </rich:column>
- <h:outputText id="selectedOutput" value="the selected thread is #{threadHotspotBean.selectItem}"/>
- </h:form>
-
- <rich:separator height="1" style="background-color: white"/>
- <h:form>
- <rich:dataTable id="callerTable"
- value="#{threadHotspotBean.subKeys}"
- var="key"
- width="300px"
- columnClasses="center" rows="25"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
- <rich:column style="width:200px" sortBy="#{key}">
- <f:facet name="header"><h:outputText value="caller"/></f:facet>
- <h:outputText value="#{key}"/>
- </rich:column>
-
- <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].className}">
- <f:facet name="header"><h:outputText value="callee"/></f:facet>
- <h:outputText value="#{threadHotspotBean.newMap[key].className}"/>
- </rich:column>
-
- <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].totalTime}">
- <f:facet name="header"><h:outputText value="Total Time(ms)"/></f:facet>
- <h:outputText value="#{threadHotspotBean.newMap[key].totalTime}">
- <f:convertNumber maxFractionDigits="2"/>
- </h:outputText>
- </rich:column>
-
- <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].totalTime/threadHotspotBean.newMap[key].count}">
- <f:facet name="header"><h:outputText value="Average Time(ms)"/></f:facet>
- <h:outputText value="#{threadHotspotBean.newMap[key].totalTime/threadHotspotBean.newMap[key].count}">
- <f:convertNumber maxFractionDigits="2"/>
- </h:outputText>
- </rich:column>
-
- <rich:column style="width:150px" sortBy="#{threadHotspotBean.newMap[key].count}">
- <f:facet name="header"><h:outputText value="Invocations"/></f:facet>
- <h:outputText value="#{threadHotspotBean.newMap[key].count}"/>
- </rich:column>
-
- </rich:dataTable>
- </h:form>
- </ui:define>
- </ui:composition>
+ </rich:scrollableDataTable>
+ </h:form>
+ </ui:define>
+ </ui:composition>
</html>
\ No newline at end of file
Modified: branches/JBossProfiler2/src/main/www/loadthreadtree.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/loadthreadtree.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/loadthreadtree.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,26 +5,19 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/loadtemplate.xhtml">
- <ui:define name="loadContent">
+
+ <ui:composition template="/template/analyzetemplate.xhtml">
+ <ui:define name="analyzeContent">
<f:facet name="header">
- <h:outputText value="Threads tree"/>
+ <h:outputText value="Threads tree"/>
</f:facet>
-
+ <h:outputText value="One snapshot #{loadSnapshotBean.snapshotToLoad} is profiled. Threshold is #{basicOptBean.threshold}."/>
<rich:panel id="threadPanel">
+
<h:form>
<rich:datascroller align="left" for="threads" maxPages="20"/>
<rich:spacer height="30"/>
- <rich:dataTable width="483"
- id="threads"
- rows="20"
- columnClasses="wholecol"
- value="#{treeThreadBean.allThreads}"
- var="threadInfoB"
- onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
- onRowMouseOut="this.style.backgroundColor='#FFFFFF'"
- rowKeyVar="rowClassVar">
+ <rich:dataTable width="483" id="threads" rows="20" columnClasses="wholecol" value="#{treeThreadBean.allThreads}" var="threadInfoB" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'" rowKeyVar="rowClassVar">
<f:facet name="header">
<rich:columnGroup>
<h:column>
@@ -44,7 +37,7 @@
</h:column>
</rich:columnGroup>
</f:facet>
-
+
<h:column>
<h:outputText value="#{threadInfoB.id}"/>
</h:column>
@@ -61,9 +54,7 @@
<h:outputText value="#{threadInfoB.groups}"/>
</h:column>
- <a4j:support event="onRowClick"
- action="#{treeThreadBean.fireSelectedThread}"
- reRender="threadOutputText,threadTree">
+ <a4j:support event="onRowClick" action="#{treeThreadBean.fireSelectedThread}" reRender="threadOutputText,threadTree">
<a4j:actionparam name="selected" value="#{threadInfoB.id}" assignTo="#{treeThreadBean.selectedThread}">
</a4j:actionparam>
<rich:toolTip direction="top-right" showDelay="500">
@@ -71,25 +62,26 @@
</rich:toolTip>
</a4j:support>
</rich:dataTable>
-
+
</h:form>
- </rich:panel>
+ </rich:panel>
- <br/>
+ <br/>
<h:outputText id="threadOutputText" value="Thread #{treeThreadBean.selectedThread} is chosen,please see the
- threads info below!"/>
+ threads info below!"/>
- <rich:panel>
+ <rich:panel>
<h:form>
- <h:form>
- <rich:tree id="threadTree" style="width:300px" switchType="ajax" stateAdvisor="#{treeDemoStateAdvisor}">
- <rich:recursiveTreeNodesAdaptor roots="#{treeFrameBean.srcRoots}" var="item" nodes="#{item.children}">
- </rich:recursiveTreeNodesAdaptor>
- </rich:tree>
- </h:form>
-
+ <rich:tree id="threadTree" style="width:300px" switchType="ajax" stateAdvisor="#{treeDemoStateAdvisor}">
+ <rich:recursiveTreeNodesAdaptor roots="#{treeThreadBean.srcRoots}" var="item" nodes="#{item.children}">
+ <rich:treeNode iconLeaf="/images/treeicon.gif" icon="/images/treeicon.gif" >
+ <img src="images/pbar/#{item.pbar}" alt="#{item.frameInfo.totalTime*100/item.alltime}%"/>
+ <h:outputText value="#{item}"/>
+ </rich:treeNode>
+ </rich:recursiveTreeNodesAdaptor>
+ </rich:tree>
</h:form>
- </rich:panel>
+ </rich:panel>
</ui:define>
</ui:composition>
Added: branches/JBossProfiler2/src/main/www/profilersnapshot.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/profilersnapshot.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/profilersnapshot.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/serveropttemplate.xhtml">
+ <ui:define name="optContent">
+ <a4j:region id="listSnapshotRegion">
+ <a4j:form id="listSnapshotForm" ajaxSubmit="true" rendered="true">
+ <a4j:outputPanel id="listSnapshotPanel" layout="block">
+ <h:outputText value="All the snapshots are listed here"/>
+ <h:form>
+ <rich:panel>
+ <rich:datascroller align="left" for="snapshotsTable" maxPages="20" reRender="sc2" id="sc1"/>
+ <rich:spacer height="30"/>
+
+ <rich:dataTable id="snapshotsTable" rows="10" value="#{basicOptBean.snapshots}" var="snapshot" width="500px" columnClasses="center" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <f:facet name="label">
+ <h:outputText value="Snapshot start time --> stop time"/>
+ </f:facet>
+
+ <rich:column style="width:500px" sortBy="#{snapshot}" onclick="document.location.href='./listSnapshot.xhtml'">
+ <h:outputText value="#{snapshot}"/>
+ <rich:toolTip direction="top-right" showDelay="500">
+ <span style="white-space:nowrap"> Click to choose one snapshot for save!<br/></span>
+ </rich:toolTip>
+ </rich:column>
+
+ <a4j:support event="onRowClick" action="#{basicOptBean.selectSnapshotAction}" reRender="listSnapshotPanel,selectedOutput">
+ <a4j:actionparam name="selected" value="#{snapshot}" assignTo="#{basicOptBean.selectSnapshot}">
+ </a4j:actionparam>
+ </a4j:support>
+ </rich:dataTable>
+ </rich:panel>
+
+ <rich:spacer height="30"/>
+ <rich:panel id="savePanel" rendered="#{basicOptBean.panelShows}">
+ <h:outputText id="selectedOutput" value="the selected snapshot is No.#{basicOptBean.selectSnapshot}"/>
+
+ <p></p>
+ <h:outputText value="Input the snapshot name. If it's blank, the name based on time is generated."/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+
+ <h:inputText id="inputSaveName" value="#{basicOptBean.saveSnapshotName}"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+ <br/>
+
+ <a4j:commandButton id="savebutton" value="Save" action="#{basicOptBean.selectSaveSnapshotAction}" reRender="inputSaveName,saveEcho">
+ <rich:componentControl for="saveSnapshotPanel" attachTo="savebutton" operation="hide" event="onclick"/>
+ </a4j:commandButton>
+ <p>
+ </p>
+
+ <h:outputText id="saveEcho" value="#{basicOptBean.saveEcho}"/>
+ </rich:panel>
+ </h:form>
+ </a4j:outputPanel>
+ </a4j:form>
+ </a4j:region>
+ </ui:define>
+ </ui:composition>
+</html>
Added: branches/JBossProfiler2/src/main/www/profilerstatus.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/profilerstatus.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/profilerstatus.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/serveropttemplate.xhtml">
+ <ui:define name="optContent">
+ <rich:panel>
+ <a4j:region id="connectRegion">
+ <a4j:form id="connectForm" ajaxSubmit="true" rendered="true">
+ <a4j:outputPanel layout="block">
+ <f:facet name="controls">
+ <h:panelGroup>
+ <h:graphicImage value="/images/modal/close.png" style="cursor:pointer" id="hidelink"/>
+ <rich:componentControl for="connectPanel" attachTo="hidelink" operation="hide" event="onclick"/>
+ </h:panelGroup>
+ </f:facet>
+ <h:panelGroup>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="Connection Configuration for Remote Java Application"/>
+ </f:facet>
+ <h:outputText value="host"/>
+ <br/>
+ <h:inputText id="inputhost" value="#{basicOptBean.host}" size="20">
+ <a4j:support event="onkeyup" rendered="inputhost"/>
+ </h:inputText>
+ <br/>
+
+ <h:outputText value="protocol"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+
+ <a4j:outputPanel id="protocolSelect" ajaxRendered="true">
+ <h:selectOneMenu value="#{basicOptBean.protocol}" style="width: 200px" valueChangeListener="#{basicOptBean.protocolChanged}"
+ label="#{basicOptBean.protocol}">
+ <a4j:support event="change" reRender="protocolSelect" />
+ <f:selectItems value="#{basicOptBean.protocols}" />
+ </h:selectOneMenu>
+ <br/>
+
+ <h:outputText value="port"/>
+ <br/>
+ <h:inputText id="portvalue" value="#{basicOptBean.port}" size="20">
+ <f:validateLongRange minimum="1" maximum="65535"></f:validateLongRange>
+ </h:inputText>
+ </a4j:outputPanel>
+
+ <br/>
+ <h:outputText value="threshold"/>
+ <br/>
+ <h:inputText value="#{basicOptBean.threshold}" size="20">
+ <f:validateDoubleRange maximum="100" minimum="0"></f:validateDoubleRange>
+ </h:inputText>
+ <br/>
+
+ <h:outputText value="plugin.1"/>
+ <br/>
+ <h:inputText value="#{basicOptBean.plugin}" size="30">
+ <f:validateLength maximum="100"/>
+ </h:inputText>
+
+ <br/>
+ <br/>
+
+ <a4j:commandButton id="connectbutton" value="connect" action="#{basicOptBean.connect}" onclick="this.disable=true">
+ <rich:componentControl for="connectPanel" attachTo="connectbutton" operation="hide" event="onclick"/>
+ </a4j:commandButton>
+
+ </rich:panel>
+ </h:panelGroup>
+ </a4j:outputPanel>
+ </a4j:form>
+ </a4j:region>
+ </rich:panel>
+ <p>
+ </p>
+
+ <rich:panel>
+ <h:panelGrid columns="2" title="jboss-profiler.properties">
+ <h:outputText value="Operations" style="bg-color:"/>
+ <h:outputText value="Description"/>
+
+ <h:outputLink reRender="operationoutput">
+ Start Profiler
+ <a4j:support event="onclick" action="#{basicOptBean.clickStart}" reRender="operationoutput" />
+ </h:outputLink>
+ <h:outputText value="start profiler in the server."/>
+
+ <h:outputLink reRender="operationoutput">
+ Stop Profiler
+ <a4j:support event="onclick" action="#{basicOptBean.clickStop}" reRender="operationoutput" />
+ </h:outputLink>
+ <h:outputText value="Stop profiler in the server."/>
+
+ <h:outputLink reRender="operationoutput">
+ Enable Profiler
+ <a4j:support event="onclick" action="#{basicOptBean.clickEnable}" reRender="operationoutput" />
+ </h:outputLink>
+ <h:outputText value="Enable profiler in the server. "/>
+
+ <h:outputLink reRender="operationoutput">
+ Disable Profiler
+ <a4j:support event="onclick" action="#{basicOptBean.clickDisable}" reRender="operationoutput" />
+ </h:outputLink>
+ <h:outputText value="Disable profiler in the server."/>
+
+ <h:outputLink reRender="operationoutput">
+ Garbage Collection
+ <a4j:support event="onclick" action="#{basicOptBean.gc}" reRender="operationoutput" />
+ </h:outputLink>
+ <h:outputText value="Begins Garbage Collection in the server."/>
+ </h:panelGrid>
+ <p></p>
+ <h:outputText id="operationoutput" value="Operation: #{basicOptBean.lastestOpts}"></h:outputText>
+ </rich:panel>
+ </ui:define>
+ </ui:composition>
+
+</html>
Deleted: branches/JBossProfiler2/src/main/www/removeclasspanel.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/removeclasspanel.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/removeclasspanel.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,51 +0,0 @@
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:ui="http://java.sun.com/jsf/facelets">
-
- <rich:modalPanel id="removeClassPanel" width="350" height="250" onhide="false">
- <a4j:region id="removeClassAddRegion">
- <a4j:form id="removeClassForm" ajaxSubmit="true" rendered="true">
- <a4j:outputPanel layout="block">
-
- <f:facet name="controls">
- <h:panelGroup>
- <h:graphicImage value="/images/modal/close.png" style="cursor:pointer" id="hidelink2"/>
- <rich:componentControl for="removeClassPanel" attachTo="hidelink2" operation="hide" event="onclick"/>
- </h:panelGroup>
- </f:facet>
- <h:panelGroup>
- <rich:panel>
- <f:facet name="header">
- <h:outputText value="Remove Class to Intercept During Runtime"/>
- </f:facet>
-
- <h:outputText value="Class to remove (e.g. org.jboss.*)"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
-
- <h:inputText value="#{basicOptBean.removeClass}"/>
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <br/>
- <br/>
-
- <a4j:commandButton id="removebutton"
- value="Remove"
- action="#{basicOptBean.removeClassAction}"
- onclick="this.disable=true">
- <rich:componentControl for="removeClassPanel" attachTo="removebutton" operation="hide" event="onclick"/>
- </a4j:commandButton>
-
- <rich:spacer width="50" height="20" title="Here is a spacer..."/>
- <a4j:commandButton id="closebutton2" value="close">
- <rich:componentControl for="removeClassPanel" attachTo="closebutton2" operation="hide" event="onclick"/>
- </a4j:commandButton>
- </rich:panel>
- </h:panelGroup>
- </a4j:outputPanel>
- </a4j:form>
- </a4j:region>
- </rich:modalPanel>
-</ui:composition>
\ No newline at end of file
Added: branches/JBossProfiler2/src/main/www/snapshotconfig.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/snapshotconfig.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/snapshotconfig.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/serveropttemplate.xhtml">
+ <ui:define name="optContent">
+ <a4j:region id="configSnapshotRegion">
+ <a4j:form id="addClassFrom" ajaxSubmit="true" rendered="true">
+ <a4j:outputPanel layout="block">
+ <f:facet name="controls">
+ </f:facet>
+ <h:panelGroup>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="Add Class to Intercept During Runtime"/>
+ </f:facet>
+ <h:outputText value="Class to add (e.g. org.jboss.*)"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+ <h:inputText value="#{basicOptBean.addClass}"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+
+ <h:outputText value="Choose the visibility for above class"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+
+ <a4j:outputPanel layout="block" id="visibilitySelect">
+ <h:selectOneMenu value="#{basicOptBean.visibility}" style="width: 200px" lable="#{basicOptBean.visibility}">
+ <a4j:support event="onchange" reRender="port,protocolSelect">
+ </a4j:support>
+ <f:selectItems value="#{basicOptBean.visibilities}" />
+ </h:selectOneMenu>
+ </a4j:outputPanel>
+
+ <br/>
+
+ <a4j:commandButton id="addButton1" value="add class" action="#{basicOptBean.addClassAction}" onclick="this.disable=true" reRender="interceptClassesList">
+ <rich:componentControl for="addClassPanel" attachTo="addButton1" operation="hide" event="onclick"/>
+ </a4j:commandButton>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+
+ </rich:panel>
+ </h:panelGroup>
+ </a4j:outputPanel>
+ </a4j:form>
+ </a4j:region>
+
+ <a4j:region id="removeClassAddRegion">
+ <a4j:form id="removeClassForm" ajaxSubmit="true" rendered="true">
+ <a4j:outputPanel layout="block">
+
+ <f:facet name="controls">
+ <h:panelGroup>
+ <h:graphicImage value="/images/modal/close.png" style="cursor:pointer" id="hidelink2"/>
+ <rich:componentControl for="removeClassPanel" attachTo="hidelink2" operation="hide" event="onclick"/>
+ </h:panelGroup>
+ </f:facet>
+ <h:panelGroup>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="Remove Class to Intercept During Runtime"/>
+ </f:facet>
+
+ <h:outputText value="Class to remove (e.g. org.jboss.*)"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+
+ <h:inputText value="#{basicOptBean.removeClass}"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+ <br/>
+
+ <a4j:commandButton id="removebutton" value="Remove" action="#{basicOptBean.removeClassAction}" onclick="this.disable=true" reRender="interceptClassesList">
+ <rich:componentControl for="removeClassPanel" attachTo="removebutton" operation="hide" event="onclick"/>
+ </a4j:commandButton>
+
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+
+ </rich:panel>
+ </h:panelGroup>
+ </a4j:outputPanel>
+ </a4j:form>
+ </a4j:region>
+
+ <h:panelGroup>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="All the Classes to be Intecepted During Runtime"/>
+ </f:facet>
+
+ <rich:dataList id="interceptClassesList" value="#{basicOptBean.interceptClassList}" var="clazz" rows="10">
+ <h:outputText value="#{clazz}"/><br/>
+ </rich:dataList>
+ <p></p>
+
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ </rich:panel>
+ </h:panelGroup>
+
+ </ui:define>
+ </ui:composition>
+</html>
Added: branches/JBossProfiler2/src/main/www/snapshotoperations.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/snapshotoperations.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/snapshotoperations.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/serveropttemplate.xhtml">
+ <ui:define name="optContent">
+ <h:form>
+ <h:commandLink action="${basicOptBean.takeSnapshot}"> Take Snapshot
+ <a4j:support event="onclick" reRender="listSnapshotRegion"></a4j:support>
+ </h:commandLink>
+ <p>
+ </p>
+ <h:commandLink action="${basicOptBean.clearSnapshot}"> Clear Snapshots
+ <a4j:support event="onclick" reRender="listSnapshotRegion"></a4j:support>
+ </h:commandLink>
+ <p></p>
+ </h:form>
+ <a4j:region id="listSnapshotRegion">
+ <a4j:form id="listSnapshotForm" ajaxSubmit="true" rendered="true">
+ <a4j:outputPanel id="listSnapshotPanel" layout="block">
+ <h:outputText value="All the snapshots are listed here"/>
+ <h:form>
+ <rich:panel>
+ <rich:datascroller align="left" for="snapshotsTable" maxPages="20" reRender="sc2" id="sc1"/>
+ <rich:spacer height="30"/>
+ <rich:dataTable id="snapshotsTable" rows="10" value="#{basicOptBean.snapshots}" var="snapshot" width="500px" columnClasses="center" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#FFFFFF'">
+ <f:facet name="label">
+ <h:outputText value="Snapshot start time --> stop time"/>
+ </f:facet>
+
+ <rich:column style="width:500px" sortBy="#{snapshot}" onclick="document.location.href='./snapshotoperations.xhtml'">
+ <h:outputText value="#{snapshot}"/>
+ <rich:toolTip direction="top-right" showDelay="500">
+ <span style="white-space:nowrap"> Click to choose one snapshot for save!<br/></span>
+ </rich:toolTip>
+ </rich:column>
+
+ <a4j:support event="onRowClick" action="#{basicOptBean.selectSnapshotAction}" reRender="listSnapshotPanel,savePanel,selectedOutput">
+ <a4j:actionparam name="selected" value="#{snapshot}" assignTo="#{basicOptBean.selectSnapshot}">
+ </a4j:actionparam>
+ </a4j:support>
+ </rich:dataTable>
+ </rich:panel>
+
+ <rich:spacer height="30"/>
+ <rich:panel id="savePanel" rendered="#{basicOptBean.panelShows}">
+ <h:outputText id="selectedOutput" value="the selected snapshot is No.#{basicOptBean.selectSnapshot}"/>
+ <p></p>
+ <h:outputText value="Input the snapshot name. If it's blank, the name based on time is generated."/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+ <h:inputText id="inputSaveName" value="#{basicOptBean.saveSnapshotName}"/>
+ <rich:spacer width="50" height="20" title="Here is a spacer..."/>
+ <br/>
+ <br/>
+
+ <a4j:commandButton id="savebutton" value="Save" action="#{basicOptBean.selectSaveSnapshotAction}" reRender="inputSaveName,saveEcho">
+ <rich:componentControl for="saveSnapshotPanel" attachTo="savebutton" operation="hide" event="onclick"/>
+ </a4j:commandButton>
+ <p>
+ </p>
+ <h:outputText id="saveEcho" value="#{basicOptBean.saveEcho}"/>
+ </rich:panel>
+ </h:form>
+ </a4j:outputPanel>
+ </a4j:form>
+ </a4j:region>
+ </ui:define>
+ </ui:composition>
+</html>
Added: branches/JBossProfiler2/src/main/www/template/analyzetemplate.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/analyzetemplate.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/template/analyzetemplate.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/head.xhtml">
+ <ui:define name="mainContent">
+
+ <h:panelGrid border="0" columns="2" columnClasses="wholecol" style="width: 150px">
+ <rich:panel style="background-color: AliceBlue; height: 915px; width: 150px; background-position: left center; padding-right: 1px; padding-left: 1px; padding-top: 1px; border-top-style: solid; margin-bottom: 1px; border-right-style: solid; padding-bottom: 1px; border-bottom-color: LightBlue; border-bottom-style: solid; margin-right: 1px; border-left-color: LightBlue; border-top-color: LightBlue; border-right-color: LightBlue; border-left-style: solid; margin-left: 1px; margin-top: 1px; font-size:32px" >
+ <h:outputLabel value="Snapshot Analyzer"/>
+ <rich:panelMenu style="width:135px" mode="ajax"
+ iconExpandedGroup="disc" iconCollapsedGroup="disc"
+ iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
+ iconCollapsedTopGroup="chevronDown" iconCollapsedTopPosition="right" >
+ <rich:panelMenuGroup label="Analyze One Snapshot" expanded="true">
+ <rich:panelMenuItem label="Select Snapshot" onclick="document.location.href='./loadsnapshot.xhtml'">
+ <f:param name="current" value="Server Config"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Snapshot Overview" onclick="document.location.href='./loadoverview.xhtml'">
+ <f:param name="current" value="Server Config"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Methods Hotspots" onclick="document.location.href='./loadhotspots.xhtml'">
+ <f:param name="current" value="Server Config"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Threads Tree" onclick="document.location.href='./loadthreadtree.xhtml'">
+ <f:param name="current" value="Server Config"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Threads Caller" onclick="document.location.href='./loadthreadhotspots.xhtml'">
+ <f:param name="current" value="Server Config"/>
+ </rich:panelMenuItem>
+ </rich:panelMenuGroup>
+
+ <rich:panelMenuGroup label="Compare Two Snapshots" expanded="true">
+ <rich:panelMenuItem label="Select Snapshots" onclick="document.location.href='./comparesnapshots.xhtml'">
+ <f:param name="current" value="Profiler Status"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Comare Snapshots" onclick="document.location.href='./comparemethods.xhtml'">
+ <f:param name="current" value="Profiler Status"/>
+ </rich:panelMenuItem>
+ </rich:panelMenuGroup>
+
+ </rich:panelMenu>
+ </rich:panel>
+ <rich:panel style="height:919px;width: 822px">
+ <ui:insert name="analyzeContent"></ui:insert>
+ </rich:panel>
+ </h:panelGrid>
+ </ui:define>
+ </ui:composition>
+
+</html>
Deleted: branches/JBossProfiler2/src/main/www/template/comparetemplate.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/comparetemplate.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/template/comparetemplate.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/head.xhtml">
- <ui:define name="mainContent">
-
- <h:panelGrid border="0" columns="2" columnClasses="wholecol" style="width: 150px">
- <rich:panel style="background-color: AliceBlue; height: 915px; width: 150px; background-position: left center; padding-right: 1px; padding-left: 1px; padding-top: 1px; border-top-style: solid; margin-bottom: 1px; border-right-style: solid; padding-bottom: 1px; border-bottom-color: LightBlue; border-bottom-style: solid; margin-right: 1px; border-left-color: LightBlue; border-top-color: LightBlue; border-right-color: LightBlue; border-left-style: solid; margin-left: 1px; margin-top: 1px; font-size:32px" >
- <h:outputLabel value="Compare Operations"/>
- <p>
- </p>
- <a href="comparemethods.xhtml">Methods Compare</a>
- <p>
- </p>
- </rich:panel>
- <rich:panel style="height:919px;width: 822px">
- <ui:insert name="compareContent"/>
- </rich:panel>
- </h:panelGrid>
- </ui:define>
- </ui:composition>
-
-</html>
Modified: branches/JBossProfiler2/src/main/www/template/head.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/head.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/template/head.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -5,75 +5,36 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
- <title>Insert title here</title>
-</head>
-<body>
-
- <style type="text/css">
- .wholecol {
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
+ <title>JBoss Profiler 2</title>
+ </head>
+ <body>
+
+ <style type="text/css">
+ .wholecol {
padding:10px;
padding: 0px 30px 0px 0px;
vertical-align: top;
- }
- </style>
-
-<f:view>
- <h:form>
- <ui:include src="/addclasspanel.xhtml"></ui:include>
- <ui:include src="/removeclasspanel.xhtml"></ui:include>
- <rich:toolBar>
- <rich:dropDownMenu id="dropDownMenu">
- <f:facet name="label">
- <h:panelGroup>
- <h:outputText value="Operations for Server"/>
- </h:panelGroup>
- </f:facet>
- <rich:menuItem id="addClassMenuItem" value="add classes" submitMode="none">
- <rich:componentControl for="addClassPanel" attachTo="addClassMenuItem" operation="show" event="onclick"/>
- </rich:menuItem>
- <rich:menuItem id="removeClassMenuItem" value="remove classes" submitMode="none">
- <rich:componentControl for="removeClassPanel" attachTo="removeClassMenuItem" operation="show" event="onclick"/>
- </rich:menuItem>
- <rich:menuSeparator/>
-
- <rich:menuItem submitMode="ajax" value="startProfile" action="#{basicOptBean.clickStart}" reRender="optoutput"/>
- <rich:menuItem submitMode="ajax" value="stopProfile" action="#{basicOptBean.clickStart}" reRender="optoutput"/>
- <rich:menuItem submitMode="ajax" value="enableProfile" action="#{basicOptBean.clickEnable}" reRender="optoutput"/>
- <rich:menuItem submitMode="ajax" value="disableProfile" action="#{basicOptBean.clickEnable}" reRender="optoutput"/>
- <rich:menuSeparator/>
-
- <rich:menuItem submitMode="ajax" value="gc" action="#{basicOptBean.gc}" reRender="optoutput"/>
- <rich:menuSeparator/>
-
- <rich:menuItem submitMode="ajax"
- value="runtime snapshots operations"
- onclick="document.location.href='./listsnapshot.xhtml'"
- reRender="optoutput"/>
-
- </rich:dropDownMenu>
- <rich:separator width="500" height="50"></rich:separator>
-
- <rich:dropDownMenu>
- <f:facet name="label">
- <h:panelGroup>
- <h:outputText value="Analyze Snapshots"/>
- </h:panelGroup>
- </f:facet>
- <rich:menuItem submitMode="ajax"
- value="load one snapshot"
- reRender="optoutput"
- onclick="document.location.href='./loadsnapshot.xhtml'"/>
- <rich:menuItem submitMode="ajax" value="compare snapshots" reRender="optoutput"
- onclick="document.location.href='./comparesnapshots.xhtml'"/>
- </rich:dropDownMenu>
- </rich:toolBar>
- <h:outputText id="optoutput" value=" #{basicOptBean.lastestOpts}"></h:outputText>
- </h:form>
-
- <ui:insert name="mainContent">
- </ui:insert>
-
-</f:view></body>
+ }
+ </style>
+
+
+ <f:view>
+ <h:form>
+ <ui:include src="/addclasspanel.xhtml"></ui:include>
+ <ui:include src="/removeclasspanel.xhtml"></ui:include>
+ <rich:toolBar>
+ <a href="profilerstatus.xhtml"> Operations</a>
+ <rich:separator width="500" height="50"></rich:separator>
+
+ <a href="loadsnapshot.xhtml"> Analyze Snapshots</a>
+ </rich:toolBar>
+ </h:form>
+
+ <ui:insert name="mainContent">
+ </ui:insert>
+
+ </f:view>
+ </body>
</html>
Deleted: branches/JBossProfiler2/src/main/www/template/loadtemplate.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/loadtemplate.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/template/loadtemplate.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
-
- <ui:composition template="/template/head.xhtml">
- <ui:define name="mainContent">
-
- <h:panelGrid border="0" columns="2" columnClasses="wholecol" style="width: 150px">
- <rich:panel style="background-color: AliceBlue; height: 915px; width: 150px; background-position: left center; padding-right: 1px; padding-left: 1px; padding-top: 1px; border-top-style: solid; margin-bottom: 1px; border-right-style: solid; padding-bottom: 1px; border-bottom-color: LightBlue; border-bottom-style: solid; margin-right: 1px; border-left-color: LightBlue; border-top-color: LightBlue; border-right-color: LightBlue; border-left-style: solid; margin-left: 1px; margin-top: 1px; font-size:32px" >
- <h:outputLabel value="View one Snapshot"/>
- <p>
- </p>
- <a href="loadoverview.xhtml">Overview</a>
- <p>
- </p>
- <a href="loadhotspots.xhtml">Methods Hot Spots</a>
- <p>
- </p>
- <a href="loadthreadtree.xhtml">Threads Tree</a>
- <p>
- </p>
- <a href="loadthreadhotspots.xhtml">Threads Caller</a>
- </rich:panel>
- <rich:panel style="height:919px;width: 822px">
- <ui:insert name="loadContent"></ui:insert>
- </rich:panel>
- </h:panelGrid>
- </ui:define>
- </ui:composition>
-
-</html>
Added: branches/JBossProfiler2/src/main/www/template/serveropttemplate.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/serveropttemplate.xhtml (rev 0)
+++ branches/JBossProfiler2/src/main/www/template/serveropttemplate.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="/template/head.xhtml">
+ <ui:define name="mainContent">
+
+ <h:panelGrid border="0" columns="2" columnClasses="wholecol" style="width: 150px">
+ <rich:panel style="background-color: AliceBlue; height: 915px; width: 150px; background-position: left center; padding-right: 1px; padding-left: 1px; padding-top: 1px; border-top-style: solid; margin-bottom: 1px; border-right-style: solid; padding-bottom: 1px; border-bottom-color: LightBlue; border-bottom-style: solid; margin-right: 1px; border-left-color: LightBlue; border-top-color: LightBlue; border-right-color: LightBlue; border-left-style: solid; margin-left: 1px; margin-top: 1px; font-size:32px" >
+ <h:outputLabel value="Operations on Agent"/>
+ <rich:panelMenu style="width:135px" mode="ajax"
+ iconExpandedGroup="disc" iconCollapsedGroup="disc"
+ iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
+ iconCollapsedTopGroup="chevronDown" iconCollapsedTopPosition="right" >
+
+ <rich:panelMenuGroup label="Operate Profiler Agent" expanded="true">
+ <rich:panelMenuItem label="Config and Agent Status" onclick="document.location.href='./profilerstatus.xhtml'">
+ <f:param name="current" value="Config and Agent Status"/>
+ </rich:panelMenuItem>
+ </rich:panelMenuGroup>
+
+ <rich:panelMenuGroup label="Operate Snapshots" expanded="true">
+ <rich:panelMenuItem label="Snapshot Config" onclick="document.location.href='./snapshotconfig.xhtml'">
+ <f:param name="current" value="Add/remove Class"/>
+ </rich:panelMenuItem>
+ <rich:panelMenuItem label="Snapshot Operations" onclick="document.location.href='./snapshotoperations.xhtml'">
+ <f:param name="current" value="Take Snapshot"/>
+ </rich:panelMenuItem>
+ </rich:panelMenuGroup>
+
+ </rich:panelMenu>
+ </rich:panel>
+ <rich:panel style="height:919px;width: 822px">
+ <ui:insert name="optContent"></ui:insert>
+ </rich:panel>
+ </h:panelGrid>
+ </ui:define>
+ </ui:composition>
+
+</html>
Deleted: branches/JBossProfiler2/src/main/www/template/template.xhtml
===================================================================
--- branches/JBossProfiler2/src/main/www/template/template.xhtml 2009-04-20 12:41:54 UTC (rev 523)
+++ branches/JBossProfiler2/src/main/www/template/template.xhtml 2009-04-26 15:55:43 UTC (rev 524)
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:jsp="http://java.sun.com/JSP/Page"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.ajax4jsf.org/rich">
-
-<head>
- <title>JBoss Profiler 2</title>
- <meta name="description" content="The JBoss Profiler 2"/>
- <meta name="keywords" content="jboss, profiler"/>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <meta http-equiv="Expires" content="-1" />
- <link rel="stylesheet" type="text/css" href="/css/style.css" />
-</head>
-
-<f:view contentType="text/html">
-
- <body>
- <table>
- <tr>
- <td colspan="2">
- <h1><h:outputText escape="false" value="#{messages['header']}" /></h1>
- </td>
- </tr>
-
- <tr>
- <td class="leftPanel"></td>
-
- <td class="centerPanel">
- <table width="100%">
- <tr>
- <td class="dataContent">
- <f:subview id="content">
- <ui:insert name="centerContent"/>
- </f:subview>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</f:view>
-</html>
More information about the jboss-cvs-commits
mailing list