beta_tools 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +11 -0
- data/Capfile +2 -0
- data/Gemfile +4 -0
- data/README +7 -0
- data/Rakefile +7 -0
- data/beta_tools.gemspec +31 -0
- data/bin/deploy +9 -0
- data/bin/documentation_daemon +12 -0
- data/bin/loginToUrl +6 -0
- data/bin/onVpn +6 -0
- data/bin/pub +91 -0
- data/bin/query_solr +11 -0
- data/bin/solrWebApp +6 -0
- data/conf/schema.xml +220 -0
- data/config/deploy.rb +44 -0
- data/config.ru +2 -0
- data/docs/#next_design.mmd# +0 -0
- data/features/deploy.feature +9 -0
- data/features/git.feature +15 -0
- data/features/maven.feature +21 -0
- data/features/step_definitions/deploy_steps.rb +11 -0
- data/features/step_definitions/git_steps.rb +20 -0
- data/features/step_definitions/maven_steps.rb +35 -0
- data/features/support/env.rb +8 -0
- data/int/it_tools/suite_it_tools.rb +2 -0
- data/int/it_tools/test_integ1.rb +17 -0
- data/lib/beta_tools/version.rb +3 -0
- data/lib/beta_tools.rb +5 -0
- data/lib/it_tools/calc.rb +14 -0
- data/lib/it_tools/config.ru +2 -0
- data/lib/it_tools/environment.rb +86 -0
- data/lib/it_tools/git.rb +3 -0
- data/lib/it_tools/html_publish.rb +287 -0
- data/lib/it_tools/mail.rb +21 -0
- data/lib/it_tools/maven.rb +101 -0
- data/lib/it_tools/md5.rb +4 -0
- data/lib/it_tools/multipart.rb +78 -0
- data/lib/it_tools/network_tools.rb +72 -0
- data/lib/it_tools/options.rb +46 -0
- data/lib/it_tools/pub_driver.rb +188 -0
- data/lib/it_tools/publisher2.rb +232 -0
- data/lib/it_tools/sample.rb +9 -0
- data/lib/it_tools/shared.rb +22 -0
- data/lib/it_tools/solr.rb +157 -0
- data/lib/it_tools/views/search_results.erb +16 -0
- data/log/thin.log +177 -0
- data/spec/it_tools/deploy_spec.rb +20 -0
- data/spec/spec_helper.rb +0 -0
- data/test/bin/test_pub.rb +30 -0
- data/test/cleaner.rb +6 -0
- data/test/driver.rb +24 -0
- data/test/integration/tp.rb +107 -0
- data/test/it_tools/for_debugger.rb +4 -0
- data/test/it_tools/publisher2.rb +13 -0
- data/test/it_tools/suite_it_tools.rb +6 -0
- data/test/it_tools/suite_it_tools.rb~ +13 -0
- data/test/it_tools/test_deploy.rb +83 -0
- data/test/it_tools/test_html_publish.rb +54 -0
- data/test/it_tools/test_maven.rb +31 -0
- data/test/it_tools/test_multipart.rb +31 -0
- data/test/it_tools/test_network_tools.rb +14 -0
- data/test/it_tools/test_publisher2.rb +42 -0
- data/test/it_tools/test_publisher2_support.rb +16 -0
- data/test/it_tools/test_sample.rb +10 -0
- data/test/it_tools/test_shared.rb +36 -0
- data/test/it_tools/test_solr.rb +22 -0
- data/test/it_tools/test_solr2.rb +22 -0
- data/testdata/assembly_pom.xml +157 -0
- data/testdata/desir.txt +39 -0
- data/testdata/ear_pom.xml +82 -0
- data/testdata/java.html +524 -0
- data/testdata/pom.xml +174 -0
- data/testdata/publish/src_dir/#arch.mmd# +0 -0
- data/testdata/publish/src_dir/ajax-loader.gif +0 -0
- data/testdata/publish/src_dir/file1.mmd +5 -0
- data/testdata/publish/src_dir/file2.mmd +3 -0
- data/testdata/publish/src_dir/file3.abc +0 -0
- data/testdata/publish/src_dir/file4.mmd +3 -0
- data/testdata/publish/src_dir/help.png +0 -0
- data/testdata/publish/src_dir/images/linux.jpeg +0 -0
- data/testdata/publish/src_dir/inputStyles.css +0 -0
- data/testdata/publish/src_dir/search.html +0 -0
- data/testdata/publish/src_dir/search.js +0 -0
- data/testdata/publish/target_dir/.@arch.html +0 -0
- data/testdata/publish/target_dir/file1.html +7 -0
- data/testdata/publish/target_dir/file2.html +5 -0
- data/testdata/publish/target_dir/search.js +0 -0
- data/testdata/publish/target_dir_static/.@arch.html +1 -0
- data/testdata/publish/target_dir_static/file1.html +7 -0
- data/testdata/publish/target_dir_static/index.html +1 -0
- data/testdata/publish/target_dir_static/style.css +61 -0
- data/testdata/ruby.mmd +404 -0
- data/testdata/simple.mmd +3 -0
- data/testdata/simple.xml +3 -0
- data/testdata/small.txt +2 -0
- data/testdata/utf8_chars.txt +1 -0
- metadata +338 -0
data/testdata/java.html
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
<head><link rel='stylesheet' type='text/css' href='style.css' /></head>
|
|
2
|
+
<body>
|
|
3
|
+
|
|
4
|
+
<div class="toc1"><a href="#Installation_Considerations">1 - Installation Considerations</a></div><br/>
|
|
5
|
+
<div class="toc1"><a href="#VisualVM">2 - VisualVM</a></div><br/>
|
|
6
|
+
<div class="toc1"><a href="#Logging">3 - Logging</a></div><br/>
|
|
7
|
+
<div class="toc2"><a href="#Tips:">3.1 - Tips:</a></div><br/>
|
|
8
|
+
<div class="toc2"><a href="#Error_Log_File">3.2 - Error Log File</a></div><br/>
|
|
9
|
+
<div class="toc1"><a href="#Application_Configuration">4 - Application Configuration</a></div><br/>
|
|
10
|
+
<div class="toc2"><a href="#External_Config">4.1 - External Config</a></div><br/>
|
|
11
|
+
<div class="toc2"><a href="#Resource_Files">4.2 - Resource Files</a></div><br/>
|
|
12
|
+
<div class="toc2"><a href="#Properties_File">4.3 - Properties File</a></div><br/>
|
|
13
|
+
<div class="toc2"><a href="#Load_from_classpath">4.4 - Load from classpath</a></div><br/>
|
|
14
|
+
<div class="toc2"><a href="#The_Best_Way">4.5 - The Best Way</a></div><br/>
|
|
15
|
+
<div class="toc1"><a href="#Loops">5 - Loops</a></div><br/>
|
|
16
|
+
<div class="toc2"><a href="#foreach">5.1 - foreach</a></div><br/>
|
|
17
|
+
<div class="toc3"><a href="#List">5.1.1 - List</a></div><br/>
|
|
18
|
+
<div class="toc3"><a href="#Map">5.1.2 - Map</a></div><br/>
|
|
19
|
+
<div class="toc2"><a href="#Control">5.2 - Control</a></div><br/>
|
|
20
|
+
<div class="toc3"><a href="#switch">5.2.1 - switch</a></div><br/>
|
|
21
|
+
<div class="toc1"><a href="#Misc">6 - Misc</a></div><br/>
|
|
22
|
+
<div class="toc2"><a href="#Class_Loaders">6.1 - Class Loaders</a></div><br/>
|
|
23
|
+
<div class="toc2"><a href="#Dates">6.2 - Dates</a></div><br/>
|
|
24
|
+
<div class="toc2"><a href="#Regex">6.3 - Regex</a></div><br/>
|
|
25
|
+
<div class="toc1"><a href="#XML_&_Java">7 - XML & Java</a></div><br/>
|
|
26
|
+
<div class="toc2"><a href="#Javadoc">7.1 - Javadoc</a></div><br/>
|
|
27
|
+
<div class="toc2"><a href="#Decompiling">7.2 - Decompiling</a></div><br/>
|
|
28
|
+
<div class="toc2"><a href="#Visual_VM">7.3 - Visual VM</a></div><br/>
|
|
29
|
+
<p><a href="../../index.html">home</a> > <a href="../index.html">training</a> > Java</p>
|
|
30
|
+
|
|
31
|
+
<p>Table of Contents</p>
|
|
32
|
+
|
|
33
|
+
<p>{toc}</p>
|
|
34
|
+
|
|
35
|
+
<h1 id="Installation_Considerations">1 - Installation Considerations</h1>
|
|
36
|
+
|
|
37
|
+
<p><img src="/images/mac.jpeg" alt="image"></p>
|
|
38
|
+
|
|
39
|
+
<p>Mac JVMs are installed to here:
|
|
40
|
+
<code>/System/Library/Frameworks/JavaVM.framework/Versions</code></p>
|
|
41
|
+
|
|
42
|
+
<h1 id="VisualVM">2 - VisualVM</h1>
|
|
43
|
+
|
|
44
|
+
<p>To see the memory profile of a running java process…can use
|
|
45
|
+
VisualVM.</p>
|
|
46
|
+
|
|
47
|
+
<h1 id="Logging">3 - Logging</h1>
|
|
48
|
+
|
|
49
|
+
<p><a href="http://logback.qos.ch/manual/layouts.html">Reference</a></p>
|
|
50
|
+
|
|
51
|
+
<p>Maven pom.xml</p>
|
|
52
|
+
<div class="highlight"><pre><span class="nt"><dependency></span>
|
|
53
|
+
<span class="nt"><groupId></span>org.slf4j<span class="nt"></groupId></span>
|
|
54
|
+
<span class="nt"><artifactId></span>slf4j-api<span class="nt"></artifactId></span>
|
|
55
|
+
<span class="nt"><version></span>1.6.1<span class="nt"></version></span>
|
|
56
|
+
<span class="nt"></dependency></span>
|
|
57
|
+
<span class="nt"><dependency></span>
|
|
58
|
+
<span class="nt"><groupId></span>ch.qos.logback<span class="nt"></groupId></span>
|
|
59
|
+
<span class="nt"><artifactId></span>logback-classic<span class="nt"></artifactId></span>
|
|
60
|
+
<span class="nt"><version></span>0.9.28<span class="nt"></version></span>
|
|
61
|
+
<span class="nt"></dependency></span>
|
|
62
|
+
|
|
63
|
+
import org.slf4j.Logger;
|
|
64
|
+
import org.slf4j.LoggerFactory;
|
|
65
|
+
static final Logger log = LoggerFactory.getLogger(ServiceProxy.class);
|
|
66
|
+
log.debug("After transformation params:\n{}", afterTransformation);
|
|
67
|
+
</pre>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<p>Dir layout:</p>
|
|
71
|
+
<div class="highlight"><pre><span class="p">.</span>
|
|
72
|
+
`<span class="o">--</span> <span class="n">src</span>
|
|
73
|
+
<span class="o">|--</span> <span class="n">main</span>
|
|
74
|
+
<span class="o">|</span> `<span class="o">--</span> <span class="n">resources</span>
|
|
75
|
+
<span class="o">|</span> `<span class="o">--</span> <span class="n">logback</span><span class="p">.</span><span class="n">xml</span>
|
|
76
|
+
`<span class="o">--</span> <span class="nb">test</span>
|
|
77
|
+
`<span class="o">--</span> <span class="n">resources</span>
|
|
78
|
+
`<span class="o">--</span> <span class="n">logback</span><span class="o">-</span><span class="nb">test</span><span class="p">.</span><span class="n">xml</span>
|
|
79
|
+
</pre>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<p>Ensure src/test/resources is a source folder in eclipse</p>
|
|
83
|
+
|
|
84
|
+
<p>Config files: logback.xml: You use this for production. Notice
|
|
85
|
+
there<br>
|
|
86
|
+
is an added Date to the Timestamp.</p>
|
|
87
|
+
<div class="highlight"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
|
88
|
+
<span class="nt"><configuration></span>
|
|
89
|
+
<span class="nt"><appender</span> <span class="na">name=</span><span class="s">"STDOUT"</span> <span class="na">class=</span><span class="s">"ch.qos.logback.core.ConsoleAppender"</span><span class="nt">></span>
|
|
90
|
+
<span class="nt"><layout</span> <span class="na">class=</span><span class="s">"ch.qos.logback.classic.PatternLayout"</span><span class="nt">></span>
|
|
91
|
+
<span class="nt"><Pattern></span>%date{MMM dd yy ;HH:mm:ss} [%thread] %-5level %logger{36}:%line - %msg%n<span class="nt"></Pattern></span>
|
|
92
|
+
<span class="nt"></layout></span>
|
|
93
|
+
<span class="nt"></appender></span>
|
|
94
|
+
<span class="nt"><logger</span> <span class="na">name=</span><span class="s">"com.base22"</span> <span class="na">level=</span><span class="s">"TRACE"</span><span class="nt">/></span>
|
|
95
|
+
<span class="nt"><root</span> <span class="na">level=</span><span class="s">"debug"</span><span class="nt">></span>
|
|
96
|
+
<span class="nt"><appender-ref</span> <span class="na">ref=</span><span class="s">"STDOUT"</span> <span class="nt">/></span>
|
|
97
|
+
<span class="nt"></root></span>
|
|
98
|
+
<span class="nt"></configuration></span>
|
|
99
|
+
</pre>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<p>Config files: logback-test.xml:</p>
|
|
103
|
+
<div class="highlight"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
|
104
|
+
<span class="nt"><configuration></span>
|
|
105
|
+
<span class="nt"><appender</span> <span class="na">name=</span><span class="s">"STDOUT"</span> <span class="na">class=</span><span class="s">"ch.qos.logback.core.ConsoleAppender"</span><span class="nt">></span>
|
|
106
|
+
<span class="nt"><layout</span> <span class="na">class=</span><span class="s">"ch.qos.logback.classic.PatternLayout"</span><span class="nt">></span>
|
|
107
|
+
<span class="nt"><Pattern></span>%-5level %logger{100} - %msg%n<span class="nt"></Pattern></span>
|
|
108
|
+
<span class="nt"></layout></span>
|
|
109
|
+
<span class="nt"></appender></span>
|
|
110
|
+
<span class="nt"><logger</span> <span class="na">name=</span><span class="s">"com.oracle.git.ngsp.crmodRestServer.hasExternDep"</span> <span class="na">level=</span><span class="s">"DEBUG"</span><span class="nt">/></span>
|
|
111
|
+
<span class="nt"><root</span> <span class="na">level=</span><span class="s">"debug"</span><span class="nt">></span>
|
|
112
|
+
<span class="nt"><appender-ref</span> <span class="na">ref=</span><span class="s">"STDOUT"</span><span class="nt">/></span>
|
|
113
|
+
<span class="nt"></root></span>
|
|
114
|
+
<span class="nt"></configuration></span>
|
|
115
|
+
</pre>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<h2 id="Tips:">3.1 - Tips:</h2>
|
|
119
|
+
|
|
120
|
+
<p>More than 2 object in one line:</p>
|
|
121
|
+
|
|
122
|
+
<p>If three or more arguments need to be passed, an Object[] variant
|
|
123
|
+
is also availalble. For example, you can write:</p>
|
|
124
|
+
<div class="highlight"><pre><span class="n">Object</span><span class="p">[]</span> <span class="n">paramArray</span> <span class="p">=</span> <span class="p">{</span><span class="n">newVal</span><span class="p">,</span> <span class="n">below</span><span class="p">,</span> <span class="n">above</span><span class="p">};</span>
|
|
125
|
+
<span class="n">logger</span><span class="p">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Value {} was inserted between {} and {}."</span><span class="p">,</span> <span class="n">paramArray</span><span class="p">);</span>
|
|
126
|
+
</pre>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<h2 id="Error_Log_File">3.2 - Error Log File</h2>
|
|
130
|
+
<div class="highlight"><pre> <span class="nt"><appender</span> <span class="na">name=</span><span class="s">"ERROR-LOG"</span> <span class="na">class=</span><span class="s">"ch.qos.logback.core.FileAppender"</span><span class="nt">></span>
|
|
131
|
+
<span class="nt"><file></span>logs/HRMS-CRMOD-DataIntegration-ERRORS.log<span class="nt"></file></span>
|
|
132
|
+
<span class="nt"><append></span>true<span class="nt"></append></span>
|
|
133
|
+
<span class="nt"><encoder></span>
|
|
134
|
+
<span class="nt"><pattern></span>%-5level %date{MMM dd yy ;HH:mm:ss} %msg \(%logger{0}.java:%line\)%n<span class="nt"></pattern></span>
|
|
135
|
+
<span class="nt"></encoder></span>
|
|
136
|
+
<span class="nt"><filter</span> <span class="na">class=</span><span class="s">"ch.qos.logback.classic.filter.ThresholdFilter"</span><span class="nt">></span>
|
|
137
|
+
<span class="nt"><level></span>ERROR<span class="nt"></level></span>
|
|
138
|
+
<span class="nt"></filter></span>
|
|
139
|
+
<span class="nt"></appender></span>
|
|
140
|
+
<span class="nt"><root</span> <span class="na">level=</span><span class="s">"</span><span class="cp">${</span><span class="n">log</span><span class="o">.</span><span class="n">level</span><span class="cp">}</span><span class="s">"</span><span class="nt">></span>
|
|
141
|
+
<span class="nt"><appender</span><span class="err">-ref</span> <span class="na">ref=</span><span class="s">"STDOUT"</span> <span class="nt">/></span>
|
|
142
|
+
<span class="nt"><appender</span><span class="err">-ref</span> <span class="na">ref=</span><span class="s">"FILE"</span> <span class="nt">/></span>
|
|
143
|
+
<span class="nt"><appender</span><span class="err">-ref</span> <span class="na">ref=</span><span class="s">"ERROR-LOG"</span> <span class="nt">/></span>
|
|
144
|
+
<span class="nt"></root></span>
|
|
145
|
+
</pre>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<h1 id="Application_Configuration">4 - Application Configuration</h1>
|
|
149
|
+
|
|
150
|
+
<h2 id="External_Config">4.1 - External Config</h2>
|
|
151
|
+
|
|
152
|
+
<p>There may be information that is specific to the environment you
|
|
153
|
+
are<br>
|
|
154
|
+
deploying your web applications to. Like database URL, username,<br>
|
|
155
|
+
password. Use the following Spring formula to deal with this.</p>
|
|
156
|
+
|
|
157
|
+
<p>in: <code>src/main/resources/applicationContext.xml</code> put:</p>
|
|
158
|
+
<div class="highlight"><pre><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="na">xmlns:context=</span><span class="s">"http://www.springframework.org/schema/context"</span>
|
|
159
|
+
<span class="na">xsi:schemaLocation=</span><span class="s">"</span>
|
|
160
|
+
<span class="s">http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</span>
|
|
161
|
+
<span class="s">http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"</span><span class="nt">></span>
|
|
162
|
+
<span class="nt"><context:property</span><span class="err">-placeholder</span> <span class="na">location=</span><span class="s">"file:</span><span class="cp">${</span><span class="n">user</span><span class="o">.</span><span class="n">dir</span><span class="cp">}</span><span class="s">/application.properties"</span> <span class="nt">/></span>
|
|
163
|
+
<span class="nt"><bean</span> <span class="na">id=</span><span class="s">"crmodServer"</span> <span class="na">class=</span><span class="s">"com.oracle.git.ngsp.crmodRestServer.isExternDep.CrmodServer"</span><span class="nt">></span>
|
|
164
|
+
<span class="nt"><property</span> <span class="na">name=</span><span class="s">"companyId"</span> <span class="na">value=</span><span class="s">"</span><span class="cp">${</span><span class="n">crmod</span><span class="o">.</span><span class="n">companyId</span><span class="cp">}</span><span class="s">"</span> <span class="nt">/></span>
|
|
165
|
+
<span class="nt"><property</span> <span class="na">name=</span><span class="s">"serverUrl"</span> <span class="na">value=</span><span class="s">"</span><span class="cp">${</span><span class="n">crmod</span><span class="o">.</span><span class="n">password</span><span class="cp">}</span><span class="s">"</span> <span class="nt">/></span>
|
|
166
|
+
<span class="nt"><property</span> <span class="na">name=</span><span class="s">"username"</span> <span class="na">value=</span><span class="s">"</span><span class="cp">${</span><span class="n">crmod</span><span class="o">.</span><span class="n">username</span><span class="cp">}</span><span class="s">"</span> <span class="nt">/></span>
|
|
167
|
+
<span class="nt"><property</span> <span class="na">name=</span><span class="s">"password"</span> <span class="na">value=</span><span class="s">"</span><span class="cp">${</span><span class="n">crmod</span><span class="o">.</span><span class="n">serverUrl</span><span class="cp">}</span><span class="s">"</span> <span class="nt">/></span>
|
|
168
|
+
<span class="nt"></bean></span>
|
|
169
|
+
<span class="nt"></beans></span>
|
|
170
|
+
</pre>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<p>have a file called: <code>application.properties</code> with the following<br>
|
|
174
|
+
contents:</p>
|
|
175
|
+
<div class="highlight"><pre><span class="n">crmod</span><span class="p">.</span><span class="n">companyId</span><span class="p">=</span><span class="n">ONGS</span>
|
|
176
|
+
<span class="n">crmod</span><span class="p">.</span><span class="n">password</span><span class="p">=</span><span class="n">mySecretPassword</span>
|
|
177
|
+
<span class="n">crmod</span><span class="p">.</span><span class="n">username</span><span class="p">=</span><span class="n">ftravers</span>
|
|
178
|
+
<span class="n">crmod</span><span class="p">.</span><span class="n">serverUrl</span><span class="p">=</span><span class="n">secure</span><span class="o">-</span><span class="n">ausomxfca</span><span class="p">.</span><span class="n">crmondemand</span><span class="p">.</span><span class="n">com</span>
|
|
179
|
+
</pre>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<p>ensure class:<br>
|
|
183
|
+
<code>com.oracle.git.ngsp.crmodRestServer.isExternDep.CrmodServer</code></p>
|
|
184
|
+
|
|
185
|
+
<p>has appropriate properties/getters/setters to be a bean:</p>
|
|
186
|
+
<div class="highlight"><pre><span class="n">private</span> <span class="n">String</span> <span class="n">companyId</span><span class="p">;</span>
|
|
187
|
+
<span class="n">public</span> <span class="n">String</span> <span class="n">getCompanyId</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">companyId</span><span class="p">;</span> <span class="p">}</span>
|
|
188
|
+
<span class="n">public</span> <span class="n">void</span> <span class="n">setCompanyId</span><span class="p">(</span><span class="n">String</span> <span class="n">companyId</span><span class="p">)</span> <span class="p">{</span> <span class="n">this</span><span class="p">.</span><span class="n">companyId</span> <span class="p">=</span> <span class="n">companyId</span><span class="p">;</span> <span class="p">}</span>
|
|
189
|
+
</pre>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<h2 id="Resource_Files">4.2 - Resource Files</h2>
|
|
193
|
+
|
|
194
|
+
<p>These are okay if you want hard package a properties file with your
|
|
195
|
+
jar. However, if you want the end user to configure your
|
|
196
|
+
application then you should use a properties file like the next
|
|
197
|
+
section recommends.</p>
|
|
198
|
+
<div class="highlight"><pre><span class="n">ResourceBundle</span> <span class="n">props</span> <span class="o">=</span> <span class="n">ResourceBundle</span><span class="o">.</span><span class="na">getBundle</span> <span class="o">(</span><span class="s">"some.pkg.resource"</span><span class="o">);</span>
|
|
199
|
+
<span class="n">String</span> <span class="n">host</span> <span class="o">=</span> <span class="n">props</span><span class="o">.</span><span class="na">getString</span><span class="o">(</span><span class="s">"host"</span><span class="o">);</span>
|
|
200
|
+
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"This is the host: "</span> <span class="o">+</span> <span class="n">host</span><span class="o">);</span>
|
|
201
|
+
</pre>
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<p>in this case you’d have a file called <code>resource.properties</code> located
|
|
205
|
+
in the <code>some.pkg</code> package.</p>
|
|
206
|
+
|
|
207
|
+
<p>In the above scenario this would be located at:
|
|
208
|
+
<code>some/pkg/resource.properties</code>. Then you’d jar up your sources,
|
|
209
|
+
including the resource.properties file and your code would still
|
|
210
|
+
work when deployed in different scenarios…however it is very
|
|
211
|
+
difficult for the end user to modify…since they don’t have a simple
|
|
212
|
+
text file separate from your jar in which to place settings. In
|
|
213
|
+
that scenario use a property file as described next.</p>
|
|
214
|
+
|
|
215
|
+
<h2 id="Properties_File">4.3 - Properties File</h2>
|
|
216
|
+
<div class="highlight"><pre><span class="n">Properties</span> <span class="k">properties</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Properties</span><span class="p">();</span>
|
|
217
|
+
<span class="n">String</span> <span class="n">filename</span> <span class="p">=</span> <span class="s">"application.properties"</span><span class="p">;</span>
|
|
218
|
+
<span class="n">File</span> <span class="n">file</span> <span class="p">=</span> <span class="n">new</span> <span class="n">File</span><span class="p">(</span><span class="n">filename</span><span class="p">);</span>
|
|
219
|
+
<span class="k">properties</span><span class="p">.</span><span class="nb">load</span><span class="p">(</span><span class="n">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">));</span>
|
|
220
|
+
</pre>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<h2 id="Load_from_classpath">4.4 - Load from classpath</h2>
|
|
224
|
+
|
|
225
|
+
<p>Load an arbitrary file from the classpath. I.e. it gets compiled
|
|
226
|
+
into<br>
|
|
227
|
+
the jar…so not good for settings that will only be changed after<br>
|
|
228
|
+
deployment. Drop <code>myfile.txt</code> in the root of your classpath…or<br>
|
|
229
|
+
elsewhere (but then put a path in front such as:<br>
|
|
230
|
+
<code>/com/oracle/myfile.txt</code>.</p>
|
|
231
|
+
<div class="highlight"><pre><span class="n">InputStream</span> <span class="n">stream</span> <span class="p">=</span> <span class="n">this</span><span class="p">.</span><span class="n">getClass</span><span class="p">().</span><span class="n">getClassLoader</span><span class="p">().</span><span class="n">getResourceAsStream</span><span class="p">(</span><span class="s">"myfile.txt"</span><span class="p">);</span>
|
|
232
|
+
</pre>
|
|
233
|
+
</div>
|
|
234
|
+
|
|
235
|
+
<h2 id="The_Best_Way">4.5 - The Best Way</h2>
|
|
236
|
+
|
|
237
|
+
<p>The following loads a properties file (not resource file) from the
|
|
238
|
+
root of the classpath….without it needing to be compiled into the
|
|
239
|
+
jar.</p>
|
|
240
|
+
|
|
241
|
+
<p>Sometimes you want to find out what file it did find…you can use:</p>
|
|
242
|
+
|
|
243
|
+
<h1 id="Loops">5 - Loops</h1>
|
|
244
|
+
|
|
245
|
+
<h2 id="foreach">5.1 - foreach</h2>
|
|
246
|
+
|
|
247
|
+
<h3 id="List">5.1.1 - List</h3>
|
|
248
|
+
<div class="highlight"><pre><span class="n">List</span> <span class="n">listToLoopOver</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="p">();</span>
|
|
249
|
+
<span class="n">listToLoopOver</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="s">"a"</span><span class="p">);</span> <span class="n">listToLoopOver</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="s">"b"</span><span class="p">);</span>
|
|
250
|
+
<span class="k">for</span> <span class="p">(</span><span class="n">String</span> <span class="n">currString</span> <span class="p">:</span> <span class="n">listToLoopOver</span><span class="p">)</span>
|
|
251
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">currString</span><span class="p">);</span>
|
|
252
|
+
</pre>
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<h3 id="Map">5.1.2 - Map</h3>
|
|
256
|
+
<div class="highlight"><pre><span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="n">String</span><span class="o">></span> <span class="n">contactList</span> <span class="p">=</span> <span class="n">new</span> <span class="n">HashMap</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="n">String</span><span class="o">></span><span class="p">();</span>
|
|
257
|
+
<span class="n">contactList</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="s">"Fenton"</span><span class="p">,</span> <span class="s">"fenton@gmail.com"</span><span class="p">);</span> <span class="n">contactList</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="s">"joe"</span><span class="p">,</span> <span class="s">"joe@gmail.com"</span><span class="p">);</span>
|
|
258
|
+
<span class="k">for</span><span class="p">(</span><span class="n">Map</span><span class="p">.</span><span class="n">Entry</span><span class="o"><</span><span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="o">></span> <span class="nb">e</span> <span class="p">:</span> <span class="n">map</span><span class="p">.</span><span class="n">entrySet</span><span class="p">())</span>
|
|
259
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="nb">e</span><span class="p">.</span><span class="n">getKey</span><span class="p">()</span><span class="o">+</span><span class="s">": "</span><span class="o">+</span><span class="nb">e</span><span class="p">.</span><span class="n">getValue</span><span class="p">());</span>
|
|
260
|
+
</pre>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
<h2 id="Control">5.2 - Control</h2>
|
|
264
|
+
|
|
265
|
+
<h3 id="switch">5.2.1 - switch</h3>
|
|
266
|
+
<div class="highlight"><pre><span class="n">int</span> <span class="n">month</span> <span class="p">=</span> 8<span class="p">;</span>
|
|
267
|
+
<span class="k">switch</span> <span class="p">(</span><span class="n">month</span><span class="p">)</span> <span class="p">{</span>
|
|
268
|
+
<span class="k">case</span> 1<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"January"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
269
|
+
<span class="k">case</span> 2<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"February"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
270
|
+
<span class="k">case</span> 3<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"March"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
271
|
+
<span class="k">case</span> 4<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"April"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
272
|
+
<span class="k">case</span> 5<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"May"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
273
|
+
<span class="k">case</span> 6<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"June"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
274
|
+
<span class="k">case</span> 7<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"July"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
275
|
+
<span class="k">case</span> 8<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"August"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
276
|
+
<span class="k">case</span> 9<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"September"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
277
|
+
<span class="k">case</span> 10<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"October"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
278
|
+
<span class="k">case</span> 11<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"November"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
279
|
+
<span class="k">case</span> 12<span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"December"</span><span class="p">);</span> <span class="k">break</span><span class="p">;</span>
|
|
280
|
+
<span class="n">default</span><span class="p">:</span> <span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Invalid month."</span><span class="p">);</span><span class="k">break</span><span class="p">;</span>
|
|
281
|
+
<span class="p">}</span>
|
|
282
|
+
</pre>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<h1 id="Misc">6 - Misc</h1>
|
|
286
|
+
|
|
287
|
+
<h2 id="Class_Loaders">6.1 - Class Loaders</h2>
|
|
288
|
+
<div class="highlight"><pre> <span class="n">URL</span><span class="p">[]</span> <span class="n">urls</span> <span class="p">=</span> <span class="p">((</span><span class="n">URLClassLoader</span><span class="p">)</span> <span class="n">ClassLoader</span><span class="p">.</span><span class="n">getSystemClassLoader</span><span class="p">()).</span><span class="n">getURLs</span><span class="p">();</span>
|
|
289
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">urls</span><span class="p">);</span>
|
|
290
|
+
</pre>
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
<h2 id="Dates">6.2 - Dates</h2>
|
|
294
|
+
|
|
295
|
+
<p><a href="http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html">Date Reference</a></p>
|
|
296
|
+
|
|
297
|
+
<p>Convert String → Date</p>
|
|
298
|
+
<div class="highlight"><pre><span class="n">String</span> <span class="n">startDate</span> <span class="p">=</span> <span class="s">"2004-03-19"</span><span class="p">;</span>
|
|
299
|
+
<span class="n">DateFormat</span> <span class="n">df</span> <span class="p">=</span> <span class="n">new</span> <span class="n">SimpleDateFormat</span><span class="p">(</span><span class="s">"yyyy-MM-dd"</span><span class="p">);</span>
|
|
300
|
+
<span class="n">Date</span> <span class="nb">date</span> <span class="p">=</span> <span class="n">df</span><span class="p">.</span><span class="n">parse</span><span class="p">(</span><span class="n">startDate</span><span class="p">);</span>
|
|
301
|
+
</pre>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<p>Convert Date → String</p>
|
|
305
|
+
<div class="highlight"><pre><span class="n">Date</span> <span class="n">todaysDate</span> <span class="p">=</span> <span class="n">new</span> <span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">Date</span><span class="p">();</span>
|
|
306
|
+
<span class="n">SimpleDateFormat</span> <span class="n">formatter</span> <span class="p">=</span> <span class="n">new</span> <span class="n">SimpleDateFormat</span><span class="p">(</span><span class="s">"EEE MMM dd HH:mm:ss"</span><span class="p">);</span>
|
|
307
|
+
<span class="n">String</span> <span class="n">formattedDate</span> <span class="p">=</span> <span class="n">formatter</span><span class="p">.</span><span class="n">format</span><span class="p">(</span><span class="n">todaysDate</span><span class="p">);</span>
|
|
308
|
+
</pre>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<h2 id="Regex">6.3 - Regex</h2>
|
|
312
|
+
<div class="highlight"><pre><span class="n">String</span> <span class="n">pattern</span> <span class="p">=</span> <span class="s">"(^.+)(\\.[\\w]+$)"</span><span class="p">;</span>
|
|
313
|
+
<span class="n">Pattern</span> <span class="n">r</span> <span class="p">=</span> <span class="n">Pattern</span><span class="p">.</span><span class="n">compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>
|
|
314
|
+
<span class="n">Matcher</span> <span class="n">m</span> <span class="p">=</span> <span class="n">r</span><span class="p">.</span><span class="n">matcher</span><span class="p">(</span><span class="n">fullName</span><span class="p">);</span>
|
|
315
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="nb">find</span><span class="p">())</span> <span class="p">{</span>
|
|
316
|
+
<span class="n">String</span> <span class="n">pkgName</span> <span class="p">=</span> <span class="n">m</span><span class="p">.</span><span class="n">group</span><span class="p">(</span>1<span class="p">);</span>
|
|
317
|
+
<span class="k">return</span> <span class="n">pkgName</span><span class="p">;</span>
|
|
318
|
+
<span class="p">}</span>
|
|
319
|
+
|
|
320
|
+
<span class="n">String</span> <span class="n">aDate</span> <span class="p">=</span> <span class="s">"date: 12-15-2003"</span><span class="p">;</span>
|
|
321
|
+
<span class="n">Pattern</span> <span class="n">datePattern</span> <span class="p">=</span> <span class="n">Pattern</span><span class="p">.</span><span class="n">compile</span><span class="p">(</span><span class="s">"date: (\\d{2})-(\\d{2})-(\\d{4})"</span><span class="p">);</span>
|
|
322
|
+
<span class="n">Matcher</span> <span class="n">dateMatcher</span> <span class="p">=</span> <span class="n">datePattern</span><span class="p">.</span><span class="n">matcher</span><span class="p">(</span><span class="n">aDate</span><span class="p">);</span>
|
|
323
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">dateMatcher</span><span class="p">.</span><span class="nb">find</span><span class="p">())</span>
|
|
324
|
+
<span class="p">{</span>
|
|
325
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Month is: "</span> <span class="o">+</span> <span class="n">dateMatcher</span><span class="p">.</span><span class="n">group</span><span class="p">(</span>1<span class="p">));</span>
|
|
326
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Day is: "</span> <span class="o">+</span> <span class="n">dateMatcher</span><span class="p">.</span><span class="n">group</span><span class="p">(</span>2<span class="p">));</span>
|
|
327
|
+
<span class="n">System</span><span class="p">.</span><span class="n">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Year is: "</span> <span class="o">+</span> <span class="n">dateMatcher</span><span class="p">.</span><span class="n">group</span><span class="p">(</span>3<span class="p">));</span>
|
|
328
|
+
<span class="p">}</span>
|
|
329
|
+
|
|
330
|
+
<span class="o">//</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">oracle</span><span class="p">:</span><span class="n">thin</span><span class="p">:</span><span class="n">dbl_ongs_crmod</span><span class="o">/</span><span class="n">abcd1234</span><span class="o">//</span><span class="n">dbsv1005</span><span class="p">.</span><span class="n">us</span><span class="p">.</span><span class="n">oracle</span><span class="p">.</span><span class="n">com</span><span class="p">:</span>1523<span class="o">/</span><span class="n">fapad</span><span class="p">.</span><span class="n">us</span><span class="p">.</span><span class="n">oracle</span><span class="p">.</span><span class="n">com</span>
|
|
331
|
+
<span class="k">static</span> <span class="n">String</span> <span class="n">removePassword</span><span class="p">(</span><span class="n">String</span> <span class="n">urlWithPassword</span><span class="p">)</span> <span class="p">{</span>
|
|
332
|
+
<span class="n">String</span> <span class="n">regex</span> <span class="p">=</span> <span class="s">"/([^/]+)//"</span><span class="p">;</span>
|
|
333
|
+
<span class="n">Pattern</span> <span class="n">p</span> <span class="p">=</span> <span class="n">Pattern</span><span class="p">.</span><span class="n">compile</span><span class="p">(</span><span class="n">regex</span><span class="p">);</span>
|
|
334
|
+
<span class="n">Matcher</span> <span class="n">m</span> <span class="p">=</span> <span class="n">p</span><span class="p">.</span><span class="n">matcher</span><span class="p">(</span><span class="n">urlWithPassword</span><span class="p">);</span>
|
|
335
|
+
<span class="k">if</span> <span class="p">(</span> <span class="n">m</span><span class="p">.</span><span class="nb">find</span><span class="p">()</span> <span class="p">)</span> <span class="p">{</span>
|
|
336
|
+
<span class="n">String</span> <span class="n">password</span> <span class="p">=</span> <span class="n">m</span><span class="p">.</span><span class="n">group</span><span class="p">(</span>1<span class="p">);</span>
|
|
337
|
+
<span class="n">String</span> <span class="n">blankedOutPassword</span> <span class="p">=</span> <span class="n">urlWithPassword</span><span class="p">.</span><span class="n">replaceFirst</span><span class="p">(</span><span class="n">password</span><span class="p">,</span> <span class="s">"XXXXXXXX"</span><span class="p">);</span>
|
|
338
|
+
<span class="k">return</span> <span class="n">blankedOutPassword</span><span class="p">;</span>
|
|
339
|
+
<span class="p">}</span>
|
|
340
|
+
<span class="k">return</span> <span class="nb">null</span><span class="p">;</span>
|
|
341
|
+
<span class="p">}</span>
|
|
342
|
+
</pre>
|
|
343
|
+
</div>
|
|
344
|
+
|
|
345
|
+
<h1 id="XML_&_Java">7 - XML & Java</h1>
|
|
346
|
+
|
|
347
|
+
<p>Recommend using StAX (Streaming API for XML)</p>
|
|
348
|
+
|
|
349
|
+
<ul>
|
|
350
|
+
<li> reference: <a href="http://www.vogella.de/articles/JavaXML/article.html">http://www.vogella.de/articles/JavaXML/article.html</a></li>
|
|
351
|
+
</ul>
|
|
352
|
+
|
|
353
|
+
<p>Sample XML</p>
|
|
354
|
+
<div class="highlight"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
|
355
|
+
<span class="nt"><SOAP-ENV:Envelope</span> <span class="na">xmlns:SOAP-ENV=</span><span class="s">"http://schemas.xmlsoap.org/soap/envelope/"</span> <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="na">xmlns:xsd=</span><span class="s">"http://www.w3.org/2001/XMLSchema"</span><span class="nt">></span>
|
|
356
|
+
<span class="nt"><SOAP-ENV:Body></span>
|
|
357
|
+
<span class="nt"><ns:PicklistWS_GetPicklistValues_Output</span> <span class="na">xmlns:ns=</span><span class="s">"urn:crmondemand/ws/picklist/"</span><span class="nt">></span>
|
|
358
|
+
<span class="nt"><ListOfParentPicklistValue</span> <span class="na">xmlns=</span><span class="s">"urn:/crmondemand/xml/picklist"</span><span class="nt">></span>
|
|
359
|
+
<span class="nt"><ParentPicklistValue></span>
|
|
360
|
+
<span class="nt"><Language></span>ENU<span class="nt"></Language></span>
|
|
361
|
+
<span class="nt"><ParentFieldName/></span>
|
|
362
|
+
<span class="nt"><ParentDisplayValue/></span>
|
|
363
|
+
<span class="nt"><ParentCode/></span>
|
|
364
|
+
<span class="nt"><Disabled/></span>
|
|
365
|
+
<span class="nt"><ListOfPicklistValue></span>
|
|
366
|
+
<span class="nt"><PicklistValue></span>
|
|
367
|
+
<span class="nt"><Code></span>F<span class="nt"></Code></span>
|
|
368
|
+
<span class="nt"><DisplayValue></span>F<span class="nt"></DisplayValue></span>
|
|
369
|
+
<span class="nt"><Disabled></span>N<span class="nt"></Disabled></span>
|
|
370
|
+
<span class="nt"></PicklistValue></span>
|
|
371
|
+
<span class="nt"><PicklistValue></span>
|
|
372
|
+
<span class="nt"><Code></span>M<span class="nt"></Code></span>
|
|
373
|
+
<span class="nt"><DisplayValue></span>M<span class="nt"></DisplayValue></span>
|
|
374
|
+
<span class="nt"><Disabled></span>N<span class="nt"></Disabled></span>
|
|
375
|
+
<span class="nt"></PicklistValue></span>
|
|
376
|
+
<span class="nt"></ListOfPicklistValue></span>
|
|
377
|
+
<span class="nt"></ParentPicklistValue></span>
|
|
378
|
+
<span class="nt"></ListOfParentPicklistValue></span>
|
|
379
|
+
<span class="nt"></ns:PicklistWS_GetPicklistValues_Output></span>
|
|
380
|
+
<span class="nt"></SOAP-ENV:Body></span>
|
|
381
|
+
<span class="nt"></SOAP-ENV:Envelope></span>
|
|
382
|
+
</pre>
|
|
383
|
+
</div>
|
|
384
|
+
|
|
385
|
+
<p>Parsing Code:</p>
|
|
386
|
+
<div class="highlight"><pre> <span class="k">static</span> <span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="p">,</span> <span class="n">String</span><span class="o">></span> <span class="n">getPicklistFromSoapResponse</span><span class="p">(</span><span class="n">String</span> <span class="n">soapResponse</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ServiceException</span> <span class="p">{</span>
|
|
387
|
+
<span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="p">,</span> <span class="n">String</span><span class="o">></span> <span class="n">values</span> <span class="p">=</span> <span class="n">new</span> <span class="n">LinkedHashMap</span><span class="o"><</span><span class="n">String</span><span class="p">,</span> <span class="n">String</span><span class="o">></span><span class="p">();</span>
|
|
388
|
+
<span class="n">XMLInputFactory</span> <span class="n">inputFactory</span> <span class="p">=</span> <span class="n">XMLInputFactory</span><span class="p">.</span><span class="n">newInstance</span><span class="p">();</span>
|
|
389
|
+
<span class="n">String</span> <span class="n">code</span> <span class="p">=</span> <span class="nb">null</span><span class="p">;</span>
|
|
390
|
+
<span class="n">String</span> <span class="nb">display</span> <span class="p">=</span> <span class="nb">null</span><span class="p">;</span>
|
|
391
|
+
<span class="n">String</span> <span class="n">disabled</span> <span class="p">=</span> <span class="nb">null</span><span class="p">;</span>
|
|
392
|
+
<span class="k">try</span> <span class="p">{</span>
|
|
393
|
+
<span class="n">InputStream</span> <span class="n">in</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ByteArrayInputStream</span><span class="p">(</span><span class="n">soapResponse</span><span class="p">.</span><span class="n">getBytes</span><span class="p">(</span><span class="s">"UTF-8"</span><span class="p">));</span>
|
|
394
|
+
<span class="n">XMLEventReader</span> <span class="n">eventReader</span> <span class="p">=</span> <span class="n">inputFactory</span><span class="p">.</span><span class="n">createXMLEventReader</span><span class="p">(</span><span class="n">in</span><span class="p">);</span>
|
|
395
|
+
<span class="k">while</span> <span class="p">(</span><span class="n">eventReader</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span> <span class="p">{</span>
|
|
396
|
+
<span class="n">XMLEvent</span> <span class="n">event</span> <span class="p">=</span> <span class="n">eventReader</span><span class="p">.</span><span class="n">nextEvent</span><span class="p">();</span>
|
|
397
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span> <span class="p">{</span>
|
|
398
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="p">.</span><span class="n">asStartElement</span><span class="p">().</span><span class="n">getName</span><span class="p">().</span><span class="n">getLocalPart</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="s">"Code"</span><span class="p">))</span> <span class="p">{</span>
|
|
399
|
+
<span class="n">event</span> <span class="p">=</span> <span class="n">eventReader</span><span class="p">.</span><span class="n">nextEvent</span><span class="p">();</span>
|
|
400
|
+
<span class="n">code</span> <span class="p">=</span> <span class="n">event</span><span class="p">.</span><span class="n">asCharacters</span><span class="p">().</span><span class="n">getData</span><span class="p">();</span>
|
|
401
|
+
<span class="k">continue</span><span class="p">;</span>
|
|
402
|
+
<span class="p">}</span>
|
|
403
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="p">.</span><span class="n">asStartElement</span><span class="p">().</span><span class="n">getName</span><span class="p">().</span><span class="n">getLocalPart</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="s">"DisplayValue"</span><span class="p">))</span> <span class="p">{</span>
|
|
404
|
+
<span class="n">event</span> <span class="p">=</span> <span class="n">eventReader</span><span class="p">.</span><span class="n">nextEvent</span><span class="p">();</span>
|
|
405
|
+
<span class="nb">display</span> <span class="p">=</span> <span class="n">event</span><span class="p">.</span><span class="n">asCharacters</span><span class="p">().</span><span class="n">getData</span><span class="p">();</span>
|
|
406
|
+
<span class="k">continue</span><span class="p">;</span>
|
|
407
|
+
<span class="p">}</span>
|
|
408
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="p">.</span><span class="n">asStartElement</span><span class="p">().</span><span class="n">getName</span><span class="p">().</span><span class="n">getLocalPart</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="s">"Disabled"</span><span class="p">))</span> <span class="p">{</span>
|
|
409
|
+
<span class="n">event</span> <span class="p">=</span> <span class="n">eventReader</span><span class="p">.</span><span class="n">nextEvent</span><span class="p">();</span>
|
|
410
|
+
<span class="n">disabled</span> <span class="p">=</span> <span class="n">event</span><span class="p">.</span><span class="n">asCharacters</span><span class="p">().</span><span class="n">getData</span><span class="p">();</span>
|
|
411
|
+
<span class="k">if</span> <span class="p">(</span> <span class="s">"Y"</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">disabled</span><span class="p">))</span> <span class="n">values</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="nb">display</span><span class="p">);</span>
|
|
412
|
+
<span class="k">continue</span><span class="p">;</span>
|
|
413
|
+
<span class="p">}</span>
|
|
414
|
+
<span class="p">}</span>
|
|
415
|
+
<span class="p">}</span>
|
|
416
|
+
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">UnsupportedEncodingException</span> <span class="nb">e</span><span class="p">)</span> <span class="p">{</span>
|
|
417
|
+
<span class="n">throw</span> <span class="n">new</span> <span class="n">ServiceException</span><span class="p">(</span><span class="nb">e</span><span class="p">);</span>
|
|
418
|
+
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">XMLStreamException</span> <span class="nb">e</span><span class="p">)</span> <span class="p">{</span>
|
|
419
|
+
<span class="n">throw</span> <span class="n">new</span> <span class="n">ServiceException</span><span class="p">(</span><span class="nb">e</span><span class="p">);</span>
|
|
420
|
+
<span class="p">}</span>
|
|
421
|
+
<span class="k">return</span> <span class="n">values</span><span class="p">;</span>
|
|
422
|
+
<span class="p">}</span>
|
|
423
|
+
</pre>
|
|
424
|
+
</div>
|
|
425
|
+
|
|
426
|
+
<p>The line:</p>
|
|
427
|
+
<div class="highlight"><pre><span class="n">InputStream</span> <span class="n">in</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ByteArrayInputStream</span><span class="p">(</span><span class="n">soapResponse</span><span class="p">.</span><span class="n">getBytes</span><span class="p">(</span><span class="s">"UTF-8"</span><span class="p">));</span>
|
|
428
|
+
</pre>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
<p>can be switch for a file as the source of the xml with:</p>
|
|
432
|
+
<div class="highlight"><pre><span class="n">InputStream</span> <span class="n">in</span> <span class="p">=</span> <span class="n">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="s">"myFile.xml"</span><span class="p">);</span>
|
|
433
|
+
</pre>
|
|
434
|
+
</div>
|
|
435
|
+
|
|
436
|
+
<p>While looping through the events, the first thing we need to do is
|
|
437
|
+
get the XMLEvent with <code>eventReader.nextEvent()</code>. Normally we only
|
|
438
|
+
care for events that are start elements, which is retrieved with
|
|
439
|
+
the line:</p>
|
|
440
|
+
<div class="highlight"><pre><span class="n">event</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">()</span>
|
|
441
|
+
</pre>
|
|
442
|
+
</div>
|
|
443
|
+
|
|
444
|
+
<p>This checks to see if what we are looking at is an opening tag. For
|
|
445
|
+
example in: <code><name>Fenton</name></code> only the <code><name></code> part is the
|
|
446
|
+
start element. So taking that snippet of xml, calling the
|
|
447
|
+
following</p>
|
|
448
|
+
<div class="highlight"><pre><span class="n">event</span><span class="p">.</span><span class="n">asStartElement</span><span class="p">().</span><span class="n">getName</span><span class="p">().</span><span class="n">getLocalPart</span><span class="p">()</span>
|
|
449
|
+
</pre>
|
|
450
|
+
</div>
|
|
451
|
+
|
|
452
|
+
<p>results in the string: <code>name</code>. To get the string <code>Fenton</code> we call:
|
|
453
|
+
<code>event.asCharacters().getData()</code></p>
|
|
454
|
+
|
|
455
|
+
<p>Now sometimes an element will have attributes like:
|
|
456
|
+
<code><name type="User">Fenton</name></code>. In this case the part
|
|
457
|
+
<code>type="User"</code> is an attribute and it can be extracted with:</p>
|
|
458
|
+
<div class="highlight"><pre><span class="n">StartElement</span> <span class="n">startElement</span> <span class="p">=</span> <span class="n">event</span><span class="p">.</span><span class="n">asStartElement</span><span class="p">();</span>
|
|
459
|
+
<span class="n">Iterator</span><span class="o"><</span><span class="n">Attribute</span><span class="o">></span> <span class="n">attributes</span> <span class="p">=</span> <span class="n">startElement</span><span class="p">.</span><span class="n">getAttributes</span><span class="p">();</span>
|
|
460
|
+
<span class="k">while</span> <span class="p">(</span><span class="n">attributes</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span> <span class="p">{</span>
|
|
461
|
+
<span class="n">Attribute</span> <span class="n">attribute</span> <span class="p">=</span> <span class="n">attributes</span><span class="p">.</span><span class="n">next</span><span class="p">();</span>
|
|
462
|
+
<span class="k">if</span> <span class="p">(</span><span class="n">attribute</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">toString</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="s">"type"</span><span class="p">));</span>
|
|
463
|
+
<span class="n">String</span> <span class="n">typeIsUser</span> <span class="p">=</span> <span class="n">attribute</span><span class="p">.</span><span class="n">getValue</span><span class="p">();</span>
|
|
464
|
+
<span class="p">}</span>
|
|
465
|
+
</pre>
|
|
466
|
+
</div>
|
|
467
|
+
|
|
468
|
+
<h2 id="Javadoc">7.1 - Javadoc</h2>
|
|
469
|
+
|
|
470
|
+
<p>link to method in same class</p>
|
|
471
|
+
<div class="highlight"><pre><span class="p">{@</span><span class="nb">link</span> <span class="c">#createServiceRequest(Map)}</span>
|
|
472
|
+
</pre>
|
|
473
|
+
</div>
|
|
474
|
+
|
|
475
|
+
<p>link to another class called <code>Contact</code></p>
|
|
476
|
+
<div class="highlight"><pre><span class="p">{@</span><span class="nb">link</span> <span class="n">Contact</span><span class="p">}</span>
|
|
477
|
+
</pre>
|
|
478
|
+
</div>
|
|
479
|
+
|
|
480
|
+
<p>link to a methond in another class</p>
|
|
481
|
+
<div class="highlight"><pre><span class="p">{@</span><span class="nb">link</span> <span class="n">Contact</span><span class="c">#getId(Map)}</span>
|
|
482
|
+
</pre>
|
|
483
|
+
</div>
|
|
484
|
+
|
|
485
|
+
<h2 id="Decompiling">7.2 - Decompiling</h2>
|
|
486
|
+
|
|
487
|
+
<p>This command decompiles all .class files located in all<br>
|
|
488
|
+
subdirectories of ‘tree’ and creates output files in
|
|
489
|
+
subdirectories<br>
|
|
490
|
+
of ‘src’ according to package names of classes. For example, if
|
|
491
|
+
file<br>
|
|
492
|
+
‘tree/a/b/c.class’ contains class ‘c’ from package ‘a.b’, then<br>
|
|
493
|
+
output file will have a name ‘src/a/b/c.java’.</p>
|
|
494
|
+
|
|
495
|
+
<p>Note the use of the “two stars” wildcard (‘**’) in the previous<br>
|
|
496
|
+
command. It is handled by Jad rather than the command shell, so
|
|
497
|
+
on<br>
|
|
498
|
+
UNIX the last argument should be single-quoted:</p>
|
|
499
|
+
|
|
500
|
+
<p>bc.<br>
|
|
501
|
+
jad -r -sjava -dsrc ‘tree/<strong>/</strong>.class’</p>
|
|
502
|
+
|
|
503
|
+
<h2 id="Visual_VM">7.3 - Visual VM</h2>
|
|
504
|
+
|
|
505
|
+
<p>Can show you realtime heap usage info.</p>
|
|
506
|
+
<div class="highlight"><pre>cd <span class="cp">${</span><span class="n">JDK_HOME</span><span class="cp">}</span>/bin
|
|
507
|
+
vi jstatd.all.policy
|
|
508
|
+
</pre>
|
|
509
|
+
</div>
|
|
510
|
+
|
|
511
|
+
<p>Add the following:</p>
|
|
512
|
+
<div class="highlight"><pre>grant codebase "file:<span class="cp">${</span><span class="n">java</span><span class="o">.</span><span class="n">home</span><span class="cp">}</span>/../lib/tools.jar" {
|
|
513
|
+
permission java.security.AllPermission;
|
|
514
|
+
};
|
|
515
|
+
</pre>
|
|
516
|
+
</div>
|
|
517
|
+
|
|
518
|
+
<p>launch jstatd</p>
|
|
519
|
+
<div class="highlight"><pre><span class="o">./</span><span class="n">jstatd</span> <span class="o">-</span><span class="n">J</span><span class="o">-</span><span class="n">Djava</span><span class="p">.</span><span class="n">security</span><span class="p">.</span><span class="n">policy</span><span class="p">=</span><span class="n">jstatd</span><span class="p">.</span><span class="nb">all</span><span class="p">.</span><span class="n">policy</span> <span class="o">&</span>
|
|
520
|
+
</pre>
|
|
521
|
+
</div>
|
|
522
|
+
|
|
523
|
+
<p>Fire up Visual VM and connect to host.</p>
|
|
524
|
+
</body>
|