1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
package org.apache.tapestry.html; |
16 |
|
|
17 |
|
import java.util.Collections; |
18 |
|
import java.util.Iterator; |
19 |
|
import java.util.List; |
20 |
|
import java.util.Properties; |
21 |
|
import java.util.StringTokenizer; |
22 |
|
|
23 |
|
import org.apache.tapestry.BaseComponent; |
24 |
|
import org.apache.tapestry.IMarkupWriter; |
25 |
|
import org.apache.tapestry.IRender; |
26 |
|
import org.apache.tapestry.IRequestCycle; |
27 |
|
import org.apache.tapestry.describe.ReportStatusHub; |
28 |
|
import org.apache.tapestry.web.WebUtils; |
29 |
|
|
30 |
|
|
31 |
|
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
|
|
37 |
|
|
38 |
0 |
public abstract class RequestDisplay extends BaseComponent |
39 |
|
{ |
40 |
|
|
41 |
|
private boolean _even; |
42 |
|
|
43 |
|
|
44 |
|
|
45 |
|
public abstract ReportStatusHub getReportStatusHub(); |
46 |
|
|
47 |
|
public void renderSystemProperties(IMarkupWriter writer) |
48 |
|
{ |
49 |
0 |
_even = true; |
50 |
|
|
51 |
0 |
Properties p = System.getProperties(); |
52 |
|
|
53 |
0 |
String pathSeparator = p.getProperty("path.separator"); |
54 |
|
|
55 |
0 |
writer.begin("div"); |
56 |
0 |
writer.attribute("class", "described-object-title"); |
57 |
0 |
writer.print("JVM System Properties"); |
58 |
0 |
writer.end(); |
59 |
0 |
writer.println(); |
60 |
|
|
61 |
0 |
writer.begin("table"); |
62 |
0 |
writer.attribute("class", "described-object"); |
63 |
|
|
64 |
0 |
Iterator i = WebUtils.toSortedList(p.keys()).iterator(); |
65 |
|
|
66 |
0 |
while(i.hasNext()) |
67 |
|
{ |
68 |
0 |
String key = (String) i.next(); |
69 |
0 |
String value = p.getProperty(key); |
70 |
|
|
71 |
0 |
renderKeyAndValue(writer, key, value, pathSeparator); |
72 |
0 |
} |
73 |
|
|
74 |
0 |
writer.end(); |
75 |
0 |
} |
76 |
|
|
77 |
|
private void renderKeyAndValue(IMarkupWriter writer, String key, |
78 |
|
String value, String pathSeparator) |
79 |
|
{ |
80 |
0 |
String[] values = split(key, value, pathSeparator); |
81 |
|
|
82 |
0 |
for(int i = 0; i < values.length; i++) |
83 |
|
{ |
84 |
0 |
writer.begin("tr"); |
85 |
|
|
86 |
0 |
writer.attribute("class", _even ? "even" : "odd"); |
87 |
|
|
88 |
0 |
_even = !_even; |
89 |
|
|
90 |
0 |
writer.begin("th"); |
91 |
|
|
92 |
0 |
if (i == 0) writer.print(key); |
93 |
|
|
94 |
0 |
writer.end(); |
95 |
0 |
writer.begin("td"); |
96 |
0 |
writer.print(values[i]); |
97 |
0 |
writer.end("tr"); |
98 |
0 |
writer.println(); |
99 |
|
} |
100 |
0 |
} |
101 |
|
|
102 |
|
private String[] split(String key, String value, String pathSeparator) |
103 |
|
{ |
104 |
0 |
if (!key.endsWith(".path")) return new String[] { value }; |
105 |
|
|
106 |
0 |
StringTokenizer tokenizer = new StringTokenizer(value, pathSeparator); |
107 |
0 |
List values = Collections.list(tokenizer); |
108 |
|
|
109 |
0 |
return (String[]) values.toArray(new String[values.size()]); |
110 |
|
} |
111 |
|
|
112 |
|
public IRender getSystemPropertiesRenderer() |
113 |
|
{ |
114 |
0 |
return new IRender() |
115 |
0 |
{ |
116 |
|
|
117 |
|
public void render(IMarkupWriter writer, IRequestCycle cycle) |
118 |
|
{ |
119 |
0 |
renderSystemProperties(writer); |
120 |
0 |
} |
121 |
|
}; |
122 |
|
} |
123 |
|
|
124 |
|
public IRender getReportStatusRenderer() |
125 |
|
{ |
126 |
0 |
return new IRender() |
127 |
0 |
{ |
128 |
|
|
129 |
|
public void render(IMarkupWriter writer, IRequestCycle cycle) |
130 |
|
{ |
131 |
0 |
getReportStatusHub().fireReportStatus(writer); |
132 |
0 |
} |
133 |
|
}; |
134 |
|
} |
135 |
|
} |