Commit baa6d4e1 by Johannes Stelzer

normalize eol via .gitattributes

closes #49
parent 62b5eeaa
# All text files should have the "lf" (Unix) line endings
* text eol=lf
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.java text
*.js text
*.css text
*.html text
*.properties text
*.xml text
*.yml text
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.jar binary
<div class="alert alert-error" ng-if="error">
<b>Error:</b> {{ error }}
</div>
<div class="container">
<accordion close-others="true">
<accordion-group ng-repeat="domain in domains track by domain.name">
<accordion-heading>
<small class="muted">Domain</small> {{domain.name}}
</accordion-heading>
<tabset class="tabs-left" ng-init="visible = []">
<tab ng-repeat="bean in domain.beans track by bean.id" select="visible[bean.id] = true" deselect="visible[bean.id] = false">
<tab-heading>
<small class="muted">MBean</small> {{bean.name }}
</tab-heading>
<div ng-if="visible[bean.id]">
<h2>
{{bean.name}}<br/><small>{{bean.description}}</small>
</h2>
<dl>
<dt>Id</dt>
<dd style="word-break: break-all;">{{ bean.id }}</dd>
<dt ng-repeat-start="(name, value) in bean.nameProps">{{ name }}</dt>
<dd ng-repeat-end>{{ value }}</dd>
</dl>
<form class="form-horizontal" ng-if="bean.attributes !== undefinded">
<legend>
Attributes
<button class="btn" type="button" ng-click="readAllAttr(bean)">read</button>
</legend>
<div ng-show="bean.error" class="alert alert-error">
<b>Error:</b> {{ bean.error }}
</div>
<div class="control-group" ng-repeat="(name, attr) in bean.attributes track by name" ng-class="{error: attr.error}">
<label class="control-label" for="{{name}}" style="word-break: break-all;">
{{name}}<br/>
<small class="muted">{{attr.type}}</small>
</label>
<div class="controls">
<div class="input-prepend" ng-switch="attr.type.toLowerCase()">
<button class="btn" type="button" ng-click="writeAttr(bean, name, attr)" ng-disabled="!attr.rw">write</button>
<input ng-switch-when="java.lang.string" class="span5" type="text" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="long" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="int" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="double" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<select ng-switch-when="boolean" class="span5" ng-model="attr.value" ng-disabled="!attr.rw" ng-options="val for val in [true, false]" />
<textarea ng-switch-default style="word-break: break-all;" class="span5" ng-model="attr.jsonValue" ng-disabled="!attr.rw" />
</div>
<span class="help-block">{{attr.desc}}</span>
<span class="help-inline">{{attr.error}}</span>
</div>
</div>
</form>
<form class="form" ng-if="bean.operations !== undefinded">
<legend>Operations</legend>
<div class="control-group" ng-repeat="(name, op) in bean.operations track by name">
<button class="btn span6" style="text-align: left; padding-left: 5px;" ng-click="prepareInvoke(bean, name, op)">
{{name}}<br/>
<small class="muted" style="word-break: break-all;">{{op.ret}}</small>
<span class="help-block">{{op.desc}}</span>
</button>
</div>
</form>
</div>
</tab>
</tabset>
</accordion-group>
</accordion>
</div>
<script type="text/ng-template" id="invocationPrepareDialog.html">
<div class="modal-header">
<h3>Arguments for {{ invocation.opname }}</h3>
</div>
<div class="modal-body">
<p>Please input the arguments</p>
<form class="form">
<div class="control-group" ng-repeat="arg in invocation.opdesc.args">
<label class="control-label" for="{{arg.name}}" style="word-break: break-all;">
{{arg.name}} <small class="muted" style="word-break: break-all;">{{arg.type}}</small>
</label>
<div class="controls" ng-switch="arg.type.toLowerCase()" >
<input ng-switch-when="java.lang.string" class="span6" type="text" ng-model="invocation.args[$index]"/>
<input ng-switch-when="long" class="span6" type="number" ng-model="invocation.args[$index]" />
<input ng-switch-when="int" class="span6" type="number" ng-model="invocation.args[$index]" />
<input ng-switch-when="double" class="span6" type="number" ng-model="invocation.args[$index]" />
<select ng-switch-when="boolean" class="span6" ng-model="invocation.args[$index]" ng-options="val for val in [true, false]" />
<textarea ng-switch-default style="word-break: break-all;" class="span6" ng-model="invocation.args[$index]" />
<span class="help-block">{{arg.desc}}</span>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$dismiss()" >Abort</button>
<button class="btn btn-inverse" ng-click="$close()">Execute</button>
</div>
</script>
<script type="text/ng-template" id="invocationVariantDialog.html">
<div class="modal-header">
<h3>Variant for {{ invocation.opname }}</h3>
</div>
<div class="modal-body">
<p>The method is overloaded. Please choose a variant.</p>
<form>
<div class="control-group" >
<button class="btn btn-block" style="text-align: left; padding-left: 5px;" ng-repeat="op in invocation.opdesc" ng-click="$close(op)">
<b>{{invocation.opname}}</b> (
<span ng-repeat-start="arg in op.args" data-toggle="tooltip" title="{{arg.desc}}">{{arg.type}} {{arg.name}}</span>
<span ng-repeat-end ng-if="!$last">, </span>
)<br/><small class="muted">{{op.ret}}</small>
<span class="help-block">{{op.desc}}</span>
</button>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$dismiss()">Abort</button>
</div>
</script>
<script type="text/ng-template" id="invocationResultDialog.html">
<div class="modal-header">
<h3>Executing {{ invocation.opname }}</h3>
</div>
<div class="modal-body" ng-switch="invocation.state">
<div ng-switch-when="executing" class="progress progress-striped active">
<div class="bar">executing ... </div>
</div>
<div ng-switch-when="success" >
<div class="alert alert-success">
<b>Success</b>
</div>
<h4>Result <small class="muted"> {{invocation.opdesc.ret}}</small></h4>
<pre>{{ invocation.result | json }}</pre>
</div>
<div ng-switch-when="error">
<div class="alert alert-error">
<b>Error:</b> {{ invocation.error }}
</div>
<h4>Stacktrace:</h4>
<pre>{{ invocation.stacktrace }}</pre>
</div>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$close()">Close</button>
</div>
</script>
<div class="alert alert-error" ng-if="error">
<b>Error:</b> {{ error }}
</div>
<div class="container">
<accordion close-others="true">
<accordion-group ng-repeat="domain in domains track by domain.name">
<accordion-heading>
<small class="muted">Domain</small> {{domain.name}}
</accordion-heading>
<tabset class="tabs-left" ng-init="visible = []">
<tab ng-repeat="bean in domain.beans track by bean.id" select="visible[bean.id] = true" deselect="visible[bean.id] = false">
<tab-heading>
<small class="muted">MBean</small> {{bean.name }}
</tab-heading>
<div ng-if="visible[bean.id]">
<h2>
{{bean.name}}<br/><small>{{bean.description}}</small>
</h2>
<dl>
<dt>Id</dt>
<dd style="word-break: break-all;">{{ bean.id }}</dd>
<dt ng-repeat-start="(name, value) in bean.nameProps">{{ name }}</dt>
<dd ng-repeat-end>{{ value }}</dd>
</dl>
<form class="form-horizontal" ng-if="bean.attributes !== undefinded">
<legend>
Attributes
<button class="btn" type="button" ng-click="readAllAttr(bean)">read</button>
</legend>
<div ng-show="bean.error" class="alert alert-error">
<b>Error:</b> {{ bean.error }}
</div>
<div class="control-group" ng-repeat="(name, attr) in bean.attributes track by name" ng-class="{error: attr.error}">
<label class="control-label" for="{{name}}" style="word-break: break-all;">
{{name}}<br/>
<small class="muted">{{attr.type}}</small>
</label>
<div class="controls">
<div class="input-prepend" ng-switch="attr.type.toLowerCase()">
<button class="btn" type="button" ng-click="writeAttr(bean, name, attr)" ng-disabled="!attr.rw">write</button>
<input ng-switch-when="java.lang.string" class="span5" type="text" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="long" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="int" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<input ng-switch-when="double" class="span5" type="number" ng-model="attr.value" ng-disabled="!attr.rw" />
<select ng-switch-when="boolean" class="span5" ng-model="attr.value" ng-disabled="!attr.rw" ng-options="val for val in [true, false]" />
<textarea ng-switch-default style="word-break: break-all;" class="span5" ng-model="attr.jsonValue" ng-disabled="!attr.rw" />
</div>
<span class="help-block">{{attr.desc}}</span>
<span class="help-inline">{{attr.error}}</span>
</div>
</div>
</form>
<form class="form" ng-if="bean.operations !== undefinded">
<legend>Operations</legend>
<div class="control-group" ng-repeat="(name, op) in bean.operations track by name">
<button class="btn span6" style="text-align: left; padding-left: 5px;" ng-click="prepareInvoke(bean, name, op)">
{{name}}<br/>
<small class="muted" style="word-break: break-all;">{{op.ret}}</small>
<span class="help-block">{{op.desc}}</span>
</button>
</div>
</form>
</div>
</tab>
</tabset>
</accordion-group>
</accordion>
</div>
<script type="text/ng-template" id="invocationPrepareDialog.html">
<div class="modal-header">
<h3>Arguments for {{ invocation.opname }}</h3>
</div>
<div class="modal-body">
<p>Please input the arguments</p>
<form class="form">
<div class="control-group" ng-repeat="arg in invocation.opdesc.args">
<label class="control-label" for="{{arg.name}}" style="word-break: break-all;">
{{arg.name}} <small class="muted" style="word-break: break-all;">{{arg.type}}</small>
</label>
<div class="controls" ng-switch="arg.type.toLowerCase()" >
<input ng-switch-when="java.lang.string" class="span6" type="text" ng-model="invocation.args[$index]"/>
<input ng-switch-when="long" class="span6" type="number" ng-model="invocation.args[$index]" />
<input ng-switch-when="int" class="span6" type="number" ng-model="invocation.args[$index]" />
<input ng-switch-when="double" class="span6" type="number" ng-model="invocation.args[$index]" />
<select ng-switch-when="boolean" class="span6" ng-model="invocation.args[$index]" ng-options="val for val in [true, false]" />
<textarea ng-switch-default style="word-break: break-all;" class="span6" ng-model="invocation.args[$index]" />
<span class="help-block">{{arg.desc}}</span>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$dismiss()" >Abort</button>
<button class="btn btn-inverse" ng-click="$close()">Execute</button>
</div>
</script>
<script type="text/ng-template" id="invocationVariantDialog.html">
<div class="modal-header">
<h3>Variant for {{ invocation.opname }}</h3>
</div>
<div class="modal-body">
<p>The method is overloaded. Please choose a variant.</p>
<form>
<div class="control-group" >
<button class="btn btn-block" style="text-align: left; padding-left: 5px;" ng-repeat="op in invocation.opdesc" ng-click="$close(op)">
<b>{{invocation.opname}}</b> (
<span ng-repeat-start="arg in op.args" data-toggle="tooltip" title="{{arg.desc}}">{{arg.type}} {{arg.name}}</span>
<span ng-repeat-end ng-if="!$last">, </span>
)<br/><small class="muted">{{op.ret}}</small>
<span class="help-block">{{op.desc}}</span>
</button>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$dismiss()">Abort</button>
</div>
</script>
<script type="text/ng-template" id="invocationResultDialog.html">
<div class="modal-header">
<h3>Executing {{ invocation.opname }}</h3>
</div>
<div class="modal-body" ng-switch="invocation.state">
<div ng-switch-when="executing" class="progress progress-striped active">
<div class="bar">executing ... </div>
</div>
<div ng-switch-when="success" >
<div class="alert alert-success">
<b>Success</b>
</div>
<h4>Result <small class="muted"> {{invocation.opdesc.ret}}</small></h4>
<pre>{{ invocation.result | json }}</pre>
</div>
<div ng-switch-when="error">
<div class="alert alert-error">
<b>Error:</b> {{ invocation.error }}
</div>
<h4>Stacktrace:</h4>
<pre>{{ invocation.stacktrace }}</pre>
</div>
</div>
<div class="modal-footer">
<button class="btn" ng-click="$close()">Close</button>
</div>
</script>
<div class="container">
<form ng-init="showPackageLoggers = false">
<div class="input-prepend input-append">
<button class="btn" title="Show package-level loggers" ng-class="{'btn-inverse': showPackageLoggers}" ng-model="showPackageLoggers" btn-checkbox ><i class="icon-folder-open" ng-class="{'icon-white': showPackageLoggers}"></i></button>
<input placeholder="Filter by name ..." class="span10" type="search" ng-model="filterLogger.name" />
<button class="btn" title="reload list" ng-click="reload()"><i class="icon-refresh"></i></button>
<span title="filtered / total" class="add-on">{{ filteredLoggers.length }}/{{ loggers.length }}</span>
</div>
</form>
<table class="table">
<tbody>
<tr ng-repeat="logger in (filteredLoggers = (loggers | classNameLoggerOnly:!showPackageLoggers | filter:filterLogger) ) | limitTo: limit track by logger.name">
<td>
{{ logger.name }}
<div class="btn-group pull-right">
<label class="btn btn-small" ng-class="{'active btn-danger': logger.level== 'TRACE'}" ng-click="setLogLevel(logger.name, 'TRACE')">TRACE</label>
<label class="btn btn-small" ng-class="{'active btn-warning': logger.level=='DEBUG'}" ng-click="setLogLevel(logger.name, 'DEBUG')">DEBUG</label>
<label class="btn btn-small" ng-class="{'active btn-info': logger.level=='INFO'}" ng-click="setLogLevel(logger.name, 'INFO')">INFO</label>
<label class="btn btn-small" ng-class="{'active btn-success': logger.level == 'WARN'}" ng-click="setLogLevel(logger.name, 'WARN')">WARN</label>
<label class="btn btn-small" ng-class="{'active btn-primary': logger.level == 'ERROR'}" ng-click="setLogLevel(logger.name, 'ERROR')">ERROR</label>
<label class="btn btn-small" ng-class="{'active btn-inverse': logger.level == 'OFF'}" ng-click="setLogLevel(logger.name, 'OFF')">OFF</label>
</div>
</td>
</tr>
<tr ng-show="limit < loggers.length" >
<td>
<button class="btn btn-link btn-block" ng-click="limit = limit + 10">show more</button>
</td>
</tr>
<tr ng-show="limit < loggers.length" >
<td>
<button class="btn btn-link btn-block" ng-click="limit = loggers.length">show all</button>
</td>
</tr>
</tbody>
</table>
<div class="container">
<form ng-init="showPackageLoggers = false">
<div class="input-prepend input-append">
<button class="btn" title="Show package-level loggers" ng-class="{'btn-inverse': showPackageLoggers}" ng-model="showPackageLoggers" btn-checkbox ><i class="icon-folder-open" ng-class="{'icon-white': showPackageLoggers}"></i></button>
<input placeholder="Filter by name ..." class="span10" type="search" ng-model="filterLogger.name" />
<button class="btn" title="reload list" ng-click="reload()"><i class="icon-refresh"></i></button>
<span title="filtered / total" class="add-on">{{ filteredLoggers.length }}/{{ loggers.length }}</span>
</div>
</form>
<table class="table">
<tbody>
<tr ng-repeat="logger in (filteredLoggers = (loggers | classNameLoggerOnly:!showPackageLoggers | filter:filterLogger) ) | limitTo: limit track by logger.name">
<td>
{{ logger.name }}
<div class="btn-group pull-right">
<label class="btn btn-small" ng-class="{'active btn-danger': logger.level== 'TRACE'}" ng-click="setLogLevel(logger.name, 'TRACE')">TRACE</label>
<label class="btn btn-small" ng-class="{'active btn-warning': logger.level=='DEBUG'}" ng-click="setLogLevel(logger.name, 'DEBUG')">DEBUG</label>
<label class="btn btn-small" ng-class="{'active btn-info': logger.level=='INFO'}" ng-click="setLogLevel(logger.name, 'INFO')">INFO</label>
<label class="btn btn-small" ng-class="{'active btn-success': logger.level == 'WARN'}" ng-click="setLogLevel(logger.name, 'WARN')">WARN</label>
<label class="btn btn-small" ng-class="{'active btn-primary': logger.level == 'ERROR'}" ng-click="setLogLevel(logger.name, 'ERROR')">ERROR</label>
<label class="btn btn-small" ng-class="{'active btn-inverse': logger.level == 'OFF'}" ng-click="setLogLevel(logger.name, 'OFF')">OFF</label>
</div>
</td>
</tr>
<tr ng-show="limit < loggers.length" >
<td>
<button class="btn btn-link btn-block" ng-click="limit = limit + 10">show more</button>
</td>
</tr>
<tr ng-show="limit < loggers.length" >
<td>
<button class="btn btn-link btn-block" ng-click="limit = loggers.length">show all</button>
</td>
</tr>
</tbody>
</table>
</div>
\ No newline at end of file
<div class="alert alert-error" ng-if="error">
<b>Error:</b> {{ error }}
</div>
<div class="container">
<div class="row">
<div class="span12 text-center" >
<form>
<button class="btn" ng-click="dumpThreads()"><i class="icon-screenshot"></i> Dump all threads!</button>
</form>
</div>
</div>
<div class="row" ng-show="threadStats" >
<div class="span12">
<div class="progress">
<div ng-if="threadStats.NEW &gt; 0" class="bar bar-info" style="width:{{ threadStats.NEW / threadStats.total * 100 | number:2 }}%;">
New {{ threadStats.NEW }}
</div>
<div ng-if="threadStats.RUNNABLE &gt; 0" class="bar bar-success" style="width:{{ threadStats.RUNNABLE / threadStats.total * 100 | number:2 }}%;">
Runnable {{ threadStats.RUNNABLE }}
</div>
<div ng-if="threadStats.BLOCKED &gt; 0" class="bar bar-danger" style="width:{{ threadStats.BLOCKED / threadStats.total * 100 | number:2 }}%;">
Blocked {{ threadStats.BLOCKED }}
</div>
<div ng-if="threadStats.WAITING &gt; 0" class="bar bar-warning" style="width:{{ threadStats.WAITING / threadStats.total * 100 | number:2 }}%;">
Waiting {{ threadStats.WAITING }}
</div>
<div ng-if="threadStats.TIMED_WAITING &gt; 0" class="bar bar-warning bar-striped" style="width:{{ threadStats.TIMED_WAITING / threadStats.total * 100 | number:2 }}%;">
Timed waiting {{ threadStats.TIMED_WAITING }}
</div>
<div ng-if="threadStats.TERMINATED &gt; 0" class="bar bar-info" style="width:{{ threadStats.TERMINATED / threadStats.total * 100 | number:2 }}%;">
Terminated {{ threadStats.TERMINATED }}
</div>
</div>
</div>
</div>
<div class="row" ng-show="dump">
<div class="span12">
<accordion close-others="true">
<accordion-group ng-repeat="thread in dump | orderBy:'threadName' track by thread.threadId">
<accordion-heading>
<small class="muted">{{thread.threadId}}</small>
{{thread.threadName}}
<span class="pull-right label" ng-class="{ 'label-info': thread.threadState == 'NEW', 'label-success': thread.threadState == 'RUNNABLE', 'label-important': thread.threadState == 'BLOCKED', 'label-warning': thread.threadState == 'TIMED_WAITING' || thread.threadState == 'WAITING', 'label-info': thread.threadState == 'TERMINATED'}">{{thread.threadState}}</span> <span class="label label-warning" ng-if="thread.suspended">suspended</span>
</accordion-heading>
<div class="container">
<div class="row" >
<table class="span6">
<colgroup>
<col style="min-width: 10em;"/>
</colgroup>
<tr><td>Blocked count</td><td>{{thread.blockedCount}}</td></tr>
<tr><td>Blocked time</td><td>{{thread.blockedTime}}</td></tr>
<tr><td>Waited count</td><td>{{thread.waitedCount}}</td></tr>
<tr><td>Waited time</td><td>{{thread.waitedTime}}</td></tr>
</table>
<table class="span6">
<colgroup>
<col style="min-width: 10em;"/>
</colgroup>
<tr><td>Lock name</td><td style="word-break: break-word;">{{thread.lockName}}</td></tr>
<tr><td>Lock owner id</td><td>{{thread.lockOwnerId}}</td></tr>
<tr><td>Lock owner name</td><td style="word-break: break-word;">{{thread.lockOwnerName}}</td></tr>
</table>
</div>
</div>
<pre style="overflow: auto; max-height: 20em" ng-if="thread.stackTrace"><span ng-repeat="el in thread.stackTrace">{{el.className}}.{{el.methodName}}({{el.fileName}}:{{el.lineNumber}}) <span class="label" ng-if="el.nativeMethod">native</span>
</span></pre>
</accordion-group>
</accordion>
</div>
</div>
</div>
<div class="alert alert-error" ng-if="error">
<b>Error:</b> {{ error }}
</div>
<div class="container">
<div class="row">
<div class="span12 text-center" >
<form>
<button class="btn" ng-click="dumpThreads()"><i class="icon-screenshot"></i> Dump all threads!</button>
</form>
</div>
</div>
<div class="row" ng-show="threadStats" >
<div class="span12">
<div class="progress">
<div ng-if="threadStats.NEW &gt; 0" class="bar bar-info" style="width:{{ threadStats.NEW / threadStats.total * 100 | number:2 }}%;">
New {{ threadStats.NEW }}
</div>
<div ng-if="threadStats.RUNNABLE &gt; 0" class="bar bar-success" style="width:{{ threadStats.RUNNABLE / threadStats.total * 100 | number:2 }}%;">
Runnable {{ threadStats.RUNNABLE }}
</div>
<div ng-if="threadStats.BLOCKED &gt; 0" class="bar bar-danger" style="width:{{ threadStats.BLOCKED / threadStats.total * 100 | number:2 }}%;">
Blocked {{ threadStats.BLOCKED }}
</div>
<div ng-if="threadStats.WAITING &gt; 0" class="bar bar-warning" style="width:{{ threadStats.WAITING / threadStats.total * 100 | number:2 }}%;">
Waiting {{ threadStats.WAITING }}
</div>
<div ng-if="threadStats.TIMED_WAITING &gt; 0" class="bar bar-warning bar-striped" style="width:{{ threadStats.TIMED_WAITING / threadStats.total * 100 | number:2 }}%;">
Timed waiting {{ threadStats.TIMED_WAITING }}
</div>
<div ng-if="threadStats.TERMINATED &gt; 0" class="bar bar-info" style="width:{{ threadStats.TERMINATED / threadStats.total * 100 | number:2 }}%;">
Terminated {{ threadStats.TERMINATED }}
</div>
</div>
</div>
</div>
<div class="row" ng-show="dump">
<div class="span12">
<accordion close-others="true">
<accordion-group ng-repeat="thread in dump | orderBy:'threadName' track by thread.threadId">
<accordion-heading>
<small class="muted">{{thread.threadId}}</small>
{{thread.threadName}}
<span class="pull-right label" ng-class="{ 'label-info': thread.threadState == 'NEW', 'label-success': thread.threadState == 'RUNNABLE', 'label-important': thread.threadState == 'BLOCKED', 'label-warning': thread.threadState == 'TIMED_WAITING' || thread.threadState == 'WAITING', 'label-info': thread.threadState == 'TERMINATED'}">{{thread.threadState}}</span> <span class="label label-warning" ng-if="thread.suspended">suspended</span>
</accordion-heading>
<div class="container">
<div class="row" >
<table class="span6">
<colgroup>
<col style="min-width: 10em;"/>
</colgroup>
<tr><td>Blocked count</td><td>{{thread.blockedCount}}</td></tr>
<tr><td>Blocked time</td><td>{{thread.blockedTime}}</td></tr>
<tr><td>Waited count</td><td>{{thread.waitedCount}}</td></tr>
<tr><td>Waited time</td><td>{{thread.waitedTime}}</td></tr>
</table>
<table class="span6">
<colgroup>
<col style="min-width: 10em;"/>
</colgroup>
<tr><td>Lock name</td><td style="word-break: break-word;">{{thread.lockName}}</td></tr>
<tr><td>Lock owner id</td><td>{{thread.lockOwnerId}}</td></tr>
<tr><td>Lock owner name</td><td style="word-break: break-word;">{{thread.lockOwnerName}}</td></tr>
</table>
</div>
</div>
<pre style="overflow: auto; max-height: 20em" ng-if="thread.stackTrace"><span ng-repeat="el in thread.stackTrace">{{el.className}}.{{el.methodName}}({{el.fileName}}:{{el.lineNumber}}) <span class="label" ng-if="el.nativeMethod">native</span>
</span></pre>
</accordion-group>
</accordion>
</div>
</div>
</div>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment