<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5134844746502330440</id><updated>2024-11-08T23:45:09.457+07:00</updated><category term="programming"/><category term="java"/><category term="groovy"/><category term="hibernate framework"/><category term="play framework"/><category term="python"/><category term="generic"/><category term="grails"/><category term="sonar"/><category term="technical debt"/><category term="unit test"/><category term="android"/><category term="angular.js"/><category term="apache poi"/><category term="camera"/><category term="cloud"/><category term="eclipse"/><category term="excel"/><category term="java8"/><category term="jpa"/><category term="junit4"/><category term="quartz"/><category term="sbt"/><category term="scala"/><category term="spring framewokr"/><category term="talend open studio"/><category term="thread"/><category term="thread pool"/><title type='text'>Boysbe&#39;s Blog</title><subtitle type='html'>Java Coder , Less Code More Life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-6086898993982764776</id><published>2015-08-12T00:00:00.001+07:00</published><updated>2015-08-12T00:03:06.933+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="unit test"/><title type='text'>ทำไมเรายังไม่ Test?</title><content type='html'>&lt;u&gt;ทำไมเรายังไม่ Test?&lt;/u&gt;&lt;br /&gt;
เป็นคำพูดที่ผมพูดกับน้อง ๆ ในทีมบ่อยมากช่วงนี้ เท้าความซักนิดช่วง 2 เดือนนี้ผมได้รับมอบหมายให้ขึ้นมาช่วยงานทีมทำเว็บ&lt;br /&gt;
เว็บที่พัฒนานั้นก็พัฒนาเฟรมเวิรค์และภาษาหนึ่งซึ่งก็รองรับการเทสทั้งในแบบ Unit test, Integration Test แต่ ..​ทำไมผมไม่เห็น Test case ซัก Test&lt;br /&gt;
&lt;br /&gt;
ไล่เรียงเคียงถามคำตอบที่ได้รับคือ&lt;br /&gt;
1. งานเร่ง&lt;br /&gt;
2. ไม่รู้จะเขียนยังไง&lt;br /&gt;
3. ให้ Tester Test&lt;br /&gt;
&lt;br /&gt;
พยายามคิดต่อว่าแต่ละปัญหาเกิดจากอะไรในเบื้องต้น&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;งานเร่ง&lt;/u&gt;&lt;br /&gt;
เร่งเพราะต้องแข่งขันกันเรื่อง &amp;nbsp;Product กับบริษัทคู่แข่ง ( มันต้องขนาดนั้นเลยรึ ) , ทางนู้นเร่งมาครับพี่ , เขาจะเอาเร็วครับ ,​ สารพัดเหตุผลการเร่งงาน มันจะเยอะไปไหน ทำไมเราไม่ต่อรอง?&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;ไม่รู้จะเขียนยังไง&lt;/u&gt;&lt;br /&gt;
พนักงานใหม่ก่อนเริ่มงานทุกคนถูกเทรนนิ่งบ้าง โดยซีเนียร์ประจำทีมอยู่แล้ว แต่ทำไมลืมไป? หรือเพราะ&lt;br /&gt;
ไม่มีตัวอย่างให้ทำตาม&lt;br /&gt;
มันเกิดจากคนแรกไม่ทำ คนที่สองไม่ทำตามรึเปล่า?&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;ให้ Tester Test&lt;/u&gt;&lt;br /&gt;
&amp;nbsp;มันเป็นวัฒนธรรมขององค์กรไปแล้วที่เรามีหน่วย &amp;nbsp;QA ไว้ค่อยอำนวยความสะดวกให้ Programmer ขี้เกียจ เป็นทุกที่ ๆ มี Tester รึเปล่าไปตายเอาดาบหน้าบน Production&lt;br /&gt;
&lt;br /&gt;
กลับมาคิดว่าเราช่วยอะไรพวกน้อง ๆ ได้บ้าง จริง ๆ ไม่ได้มีความรู้เรื่องเฟรมเวิรค์ตัวนี้มากซักเท่าไหร่ แต่ก็พอคลำ ๆ ทางไปได้บ้าง สิ่งที่ผมทำลงไปคือเขียนตัวอย่าง Test Case ง่าย ๆ ให้พวกเขาได้ดูเพื่อเป็นแนวทางต่อไป เผื่อวันไหนผมถามพวกเขาว่า &quot;ทำไมยังไม่เทส?&quot; เขาจะได้ตอบอย่างมั่นใจ &quot;ผมเทสแล้วครับ&quot;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/6086898993982764776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2015/08/test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/6086898993982764776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/6086898993982764776'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2015/08/test.html' title='ทำไมเรายังไม่ Test?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-761637701611251489</id><published>2015-06-09T13:54:00.004+07:00</published><updated>2015-08-12T00:00:47.305+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="angular.js"/><title type='text'>ลองใช้ angular-jsdoc ทำ javascript document</title><content type='html'>&lt;h2&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;u&gt;บันทึกช่วยจำการใช้งาน jsdoc ด้วย angular-jsdoc&lt;/u&gt;&lt;/span&gt;&lt;/h2&gt;
&amp;nbsp; &amp;nbsp; หลังจากได้รับการร้องขอให้ช่วยหาวิธีทำ document จาก code javascript ที่ vendor เขียนไว้ เผื่อการ MA จะได้ง่ายขึ้น คนใหม่ ๆ เขามาสามารถใช้ document นี้ในการไล่ code ได้ ( จริงเหรอ? )&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ที่นี้เนื่องจาก project ที่ทำอยู่เป็น angularjs, gruntjs ก็เลยมาไล่เทียบกันอันไหนสะดวกกว่า ก็เลยลองค้นหาวิธีการดู พบ tool ที่ใช้งานทางด้านนี้น่าสนใจอยู่ 3 ตัว&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;angular-ngdocs -&amp;gt; online document&lt;/li&gt;
&lt;li&gt;docular -&amp;gt; online document&lt;/li&gt;
&lt;li&gt;angular-jsdoc -&amp;gt; offline document&lt;/li&gt;
&lt;/ol&gt;
angular-ngdocs , docular นั้นหลังจาก generate document แล้วต้อง start server ให้ด้วยถึงจะอ่าน document ได้ ไม่งั้นจะไม่สามารถดึง content ที่ generate มาอ่านไม่ได้ ดังนั้นเลยเลือก angular-jsdoc ที่เป็น offline document แทน เพราะสามารถ generate ใหม่ซ้ำ ๆ ได้บ่อย ๆ และเข้าถึงได้ตลอดเวลา&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;การติดตั้ง&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
install angular-jsdoc แบบ global ก่อน&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
npm install -g angular-jsdoc&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ลงเก็บไว้ใน package.json&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
npm install angular-jsdoc --save-dev&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
&lt;u&gt;&lt;b&gt;การใช้งาน&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ใน git bash ที่ root project พิมพ์&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
node_modules/jsdoc/jsdoc.js -c node_modules/angular-jsdoc/conf.json -t node_modules/angular-jsdoc/template -d build/docs -r src/app&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
-c หมายถึงpath ที่เก็บ configuration file ของ jsdoc&lt;/div&gt;
&lt;div&gt;
-t หมายถึง path ที่เก็บ template ของ jsdoc&lt;/div&gt;
&lt;div&gt;
-d หมายถึง path output ที่จะให้ generate document ไป&lt;/div&gt;
&lt;div&gt;
-r หมายถึง recusive subdirectory ทั้งหมดภายใต้ src/app ด้วย&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
หน้าตา document จะได้ราว ๆ นี้&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEA7tAAV3IUAwYj5eP3kiFm-IueUFT0rp1l3tcF2rKQqxXeekXqaEcjjlreQ8MS8YH8vW-tkYtFE06xjs-vTqEn1107i8Ier_Y0Uctxu9xVMv4f73qcMMFFBC6see8KfyLcy550XvOTrU/s1600/change-to-jsdoc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEA7tAAV3IUAwYj5eP3kiFm-IueUFT0rp1l3tcF2rKQqxXeekXqaEcjjlreQ8MS8YH8vW-tkYtFE06xjs-vTqEn1107i8Ier_Y0Uctxu9xVMv4f73qcMMFFBC6see8KfyLcy550XvOTrU/s200/change-to-jsdoc.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3QbY9zsCsloGfv3ch6GOQmbCE_PRNC1tLEP2_h0NqxqdrCAxHhf3DPXbDBucIWzLqWRtmy98iUatPQeWZUqTDjN-LgZpI5qCO09ruvTuo3zS1AacJqjRuU2wF9P6qcHnQpJTZTB-fXSA/s1600/change-to-jsdoc2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3QbY9zsCsloGfv3ch6GOQmbCE_PRNC1tLEP2_h0NqxqdrCAxHhf3DPXbDBucIWzLqWRtmy98iUatPQeWZUqTDjN-LgZpI5qCO09ruvTuo3zS1AacJqjRuU2wF9P6qcHnQpJTZTB-fXSA/s200/change-to-jsdoc2.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/761637701611251489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2015/06/angular-jsdoc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/761637701611251489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/761637701611251489'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2015/06/angular-jsdoc.html' title='ลองใช้ angular-jsdoc ทำ javascript document'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEA7tAAV3IUAwYj5eP3kiFm-IueUFT0rp1l3tcF2rKQqxXeekXqaEcjjlreQ8MS8YH8vW-tkYtFE06xjs-vTqEn1107i8Ier_Y0Uctxu9xVMv4f73qcMMFFBC6see8KfyLcy550XvOTrU/s72-c/change-to-jsdoc.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-2222823957463607723</id><published>2015-05-24T19:46:00.000+07:00</published><updated>2015-05-24T19:47:18.619+07:00</updated><title type='text'>บอกเล่าหลัง Sustainable Test with TDD beta 0.1 ที่ SPRINT3R</title><content type='html'>เดือนนี้ผมมีเวลาว่างบาง ประจวบกับเห็น Course นี้โผล่มาเลยเลยสนใจจะเพิ่ม skill test ของตัวเองบ้า ประกอบกับราคา&amp;nbsp;&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: bold; letter-spacing: 0.5px; line-height: 20.7999992370605px;&quot;&gt;Early Bird&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: bold; letter-spacing: 0.5px; line-height: 20.7999992370605px;&quot;&gt;&amp;nbsp; กดจองเลยครับอย่าคิดมาก&amp;nbsp;&lt;/span&gt;ก่อนไปเรียนผมไม่ได้ศึกษาคำว่า &quot;Sustainable&quot; เลย ผมไม่ได้เตรียมตัวอะไรไปทั้งนั้น&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;สิ่งที่ผมหวังก่อนจะไปเรียน&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;เราจะได้เขียน Test ได้ดีขึ้น&lt;/li&gt;
&lt;li&gt;แน่นอนผมต้องเข้าใจ TDD ไปอีกขั้นแน่ ๆ หลังจากอ่านและทำเองคนเดียวอยู่พอสมควร&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;u&gt;สิ่งที่ผมได้รับหลังจากไปเรียนวันแรก&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;ทำไมเรามันโง่อย่างนี้&lt;/li&gt;
&lt;li&gt;หมดความมั่นใจ&lt;/li&gt;
&lt;li&gt;เข้าใจจุดอ่อนของตัวเราจริง สำหรับผม &quot;การเข้าใจปัญหา&quot;&lt;/li&gt;
&lt;li&gt;small step&lt;/li&gt;
&lt;li&gt;outside in&lt;/li&gt;
&lt;li&gt;BDD มันคือ TDD นั้นละ&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ถามตัวเองวันแรกนี่เราโง่ขนาดนี้เลยเหรอ สูญเสียความมั่นใจ .. ไม่ได้ ๆ กลับมาที่ห้องทำ dojo FizzBuzz เรียกความมั่นใจ ( ถุยยยย )&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;สิ่งที่ได้รับหลังจากไปเรียนวันที่สอง&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;ความมั่นใจกลับคืนจากโจทย์แรกของวัน&lt;/li&gt;
&lt;li&gt;เข้าใจหลักการ refactor มากขึ้น &amp;nbsp;( ถึงจะงง ๆ ก็เถอะ )&lt;/li&gt;
&lt;li&gt;ความมันส์ สะใจล้วน ๆ session สุดท้ายครับลบ code แม่งทิ้งแล้วให้ test บอก requirement แทน&lt;/li&gt;
&lt;li&gt;จงเคารพ test&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;สรุป&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
หลังจากคุณเรียนมาวันกว่า ๆ สิ่งที่จะเปิดกระโหลกแล้วเห็นมันอย่างถ่องแท้คือการลงมือทำแล้วให้ test บอกคุณ&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/2222823957463607723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2015/05/sustainable-test-with-tdd-beta-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/2222823957463607723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/2222823957463607723'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2015/05/sustainable-test-with-tdd-beta-01.html' title='บอกเล่าหลัง Sustainable Test with TDD beta 0.1 ที่ SPRINT3R'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-4872203494341692415</id><published>2014-06-13T12:09:00.000+07:00</published><updated>2014-06-13T14:18:53.761+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="sonar"/><category scheme="http://www.blogger.com/atom/ns#" term="technical debt"/><title type='text'>Technical Debt 2 : The type of the {...} object should be an interface such as &quot;List&quot; rather than the implementation &quot;ArrayList&quot;. </title><content type='html'>&lt;h2&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The type of the {...} object should be an interface such as &quot;List&quot; rather than the implementation &quot;ArrayList&quot;.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Declarations should use Java collection 
interfaces such as &quot;List&quot; rather than specific implementation classes 
such as &quot;LinkedList&quot;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;marginbottom10&quot;&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
The purpose of the Java Collections API is to provide a well defined 
hierarchy of interfaces in order to hide all implementation details.
Implementating classes must be used to instantiate a new collection, but
 the result of an instantiation should immediately be stored in a 
variable whose type is a Java Collection interface.
&lt;/span&gt;&lt;br /&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;จาก&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Effective Java 2nd Edition, Item 52: Refer to objects by their interfaces&lt;/em&gt;

&lt;blockquote&gt;
  If appropriate interface types exist, then parameters, return 
values, and fields should all be declared using interface types. If you 
get into the habit of using interface types, your program will be much 
more flexible. It is entirely appropriate to refer to an object by a 
class if no appropriate interface exists.&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;ก็ถ้ามี Interface class ให้ใช้ก็ใช้ซะ code เราะจะได้ยืดหยุ่น&lt;/span&gt;&lt;br /&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;ตัวอย่าง&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;ArrayList&amp;lt;String&amp;gt; stringList = new ArrayList&amp;lt;String&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;แก้เป็น&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;List&amp;lt;String&amp;gt; stringList = new ArrayList&amp;lt;String&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/4872203494341692415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2014/06/technical-debt-2-type-of-object-should.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4872203494341692415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4872203494341692415'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2014/06/technical-debt-2-type-of-object-should.html' title='Technical Debt 2 : The type of the {...} object should be an interface such as &quot;List&quot; rather than the implementation &quot;ArrayList&quot;. '/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-3161122236996893450</id><published>2014-06-13T01:28:00.001+07:00</published><updated>2014-06-13T01:29:14.476+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="sonar"/><category scheme="http://www.blogger.com/atom/ns#" term="technical debt"/><title type='text'>Technical Debt 1 : Avoid commented-out lines of code</title><content type='html'>&lt;h2&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Helvetica, sans-serif; font-weight: normal;&quot;&gt;This block of commented-out lines of code should be removed.&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;
Avoid commented-out lines of code&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-image: initial; list-style-position: inside; margin: 10px; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;It always raises more questions than it gives answers&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-image: initial; list-style-position: inside; margin: 10px; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Everybody will forget very quickly how relevant the commented code is&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-image: initial; list-style-position: inside; margin: 10px; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;This is distraction when going down the code as it stops the flow of eyes&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-image: initial; list-style-position: inside; margin: 10px; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;It is a bad SCM engine : Subversion, CVS and Git are really more trustworthy !&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-image: initial; list-style-position: inside; margin: 10px; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The simple fact of understanding why code was commented out in the first place can take a lot of time&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;marginbottom10&quot; style=&quot;line-height: 17.33333396911621px; margin: 0px 0px 10px; padding: 0px;&quot;&gt;
&lt;div style=&quot;margin-top: 10px; padding: 0px;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Here are the main reasons why commented code is a code smell :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;หมายความว่า comment บ้างข้อความเป็นขยะ ไม่มีความหมาย แทนที่จะอธิบาย code ที่มีความซับซ้อนกลับกลายเป็นว่าเราต้องมาเข้าใจ code ขยะที่ไม่ใช้แล้วซะมากกว่า&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;u&gt;ตัวอย่าง&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Validate cycleDate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // if(cycleDate== null &amp;amp;&amp;amp; cycleDate.equals(&quot;&quot;)) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // System.out.println(&quot;CycleDate does not found.&quot;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // return result;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // else {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // // Check cycleDate format&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/3161122236996893450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2014/06/technical-debt-1-avoid-commented-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3161122236996893450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3161122236996893450'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2014/06/technical-debt-1-avoid-commented-out.html' title='Technical Debt 1 : Avoid commented-out lines of code'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-1373308899397909005</id><published>2014-04-03T01:42:00.000+07:00</published><updated>2014-04-03T01:49:56.029+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="sbt"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><title type='text'>Run SBT command inside Eclipse</title><content type='html'>1. Import sbt project to eclipse with eclipse plugin &quot;sbteclipse-plugin&quot;&lt;br /&gt;
2. Menu &quot;Run&quot; -&amp;gt; &quot;External Tools&quot; -&amp;gt; &quot;External Tools Configurations ... &quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf17949FgDqCx_LPu0iZzGxoxEKbS0Mw-whcNSdHhSfbrQ8abMdshUme4pg7OE9LtK5DjXGg2Ni5inuRDtePf9dUb2X6LzmO42ZgZ_7nk-nAjBqvqQaWatfehd-xCSP31AmoPXzbFars/s1600/run-external-tools.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf17949FgDqCx_LPu0iZzGxoxEKbS0Mw-whcNSdHhSfbrQ8abMdshUme4pg7OE9LtK5DjXGg2Ni5inuRDtePf9dUb2X6LzmO42ZgZ_7nk-nAjBqvqQaWatfehd-xCSP31AmoPXzbFars/s1600/run-external-tools.png&quot; height=&quot;258&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3. Choose &quot;Program&quot; and click &quot;New&quot;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Dnk2mhP-WeViM_mcw0gD2GJQqxEU6LWX5i9ymTgyM2lmlauIWRHn7HyxRc44lFtS1GuU248kLMKElYqPy29BgelmHpRANf6ZpQbcWcEzRRYE3Kml17T9hRD1x4CDNre3xWVNxJJsFrs/s1600/new-lunch-program.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Dnk2mhP-WeViM_mcw0gD2GJQqxEU6LWX5i9ymTgyM2lmlauIWRHn7HyxRc44lFtS1GuU248kLMKElYqPy29BgelmHpRANf6ZpQbcWcEzRRYE3Kml17T9hRD1x4CDNre3xWVNxJJsFrs/s1600/new-lunch-program.png&quot; height=&quot;259&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
4. Set config for run program&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Set the Name of program.&lt;/li&gt;
&lt;li&gt;In location type your&amp;nbsp;sbt command location&amp;nbsp;{SBT_HOME}\bin\sbt.bat.&lt;/li&gt;
&lt;li&gt;Choose working directory for run this command.&lt;/li&gt;
&lt;li&gt;Type &quot;-Djline.WindowsTerminal.directConsole=false&quot; in &quot;Arguments&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyILxLtlWEbehbVm3lZb53Szzyo5ZqshMTb1GJWPhyk3HO5pWsrkFuUpan_xJR59LS6H-K3y4On5A4YIePXoDOtgFFvrhXmWAeeSSDEuxp1JC7HPbYV6t5NQxiRjC6FwnQAtUFqjfdPrU/s1600/setting-config.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyILxLtlWEbehbVm3lZb53Szzyo5ZqshMTb1GJWPhyk3HO5pWsrkFuUpan_xJR59LS6H-K3y4On5A4YIePXoDOtgFFvrhXmWAeeSSDEuxp1JC7HPbYV6t5NQxiRjC6FwnQAtUFqjfdPrU/s1600/setting-config.png&quot; height=&quot;256&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
5. Apply and try to Run. sbt console will show inside console view and you can use sbt command in the console.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFj-f2J1w-eu6jzPDFZvNCLhbqPaLyLVKJ_Y_Id7-ItY_Xn3uP01cA2FUUAsa6pTF_yUbOiygfIT9cg-wsp8h5BCOT80FKkMDzAyKLMolrVFepS_ksb-NTMObOpcuvxStrBCyocIFL6bQ/s1600/sbt-console.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFj-f2J1w-eu6jzPDFZvNCLhbqPaLyLVKJ_Y_Id7-ItY_Xn3uP01cA2FUUAsa6pTF_yUbOiygfIT9cg-wsp8h5BCOT80FKkMDzAyKLMolrVFepS_ksb-NTMObOpcuvxStrBCyocIFL6bQ/s1600/sbt-console.png&quot; height=&quot;209&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgotqyyszIBCvE4VkqJR7O6Fj9T2Pge9P6Ek_C1dQG7lNjUBy_DArixZg-nvwOA2Xa_mcxAyF8SO4BIAZsgkGiQYpvcThd6aBt_1LSGuQzdBDT8wH4wk-1awN-0TkNXNh5l_DQgJTnB3UA/s1600/can-type-command.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgotqyyszIBCvE4VkqJR7O6Fj9T2Pge9P6Ek_C1dQG7lNjUBy_DArixZg-nvwOA2Xa_mcxAyF8SO4BIAZsgkGiQYpvcThd6aBt_1LSGuQzdBDT8wH4wk-1awN-0TkNXNh5l_DQgJTnB3UA/s1600/can-type-command.png&quot; height=&quot;228&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference :&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/9778618/run-sbt-task-from-eclipse&quot;&gt;http://stackoverflow.com/questions/9778618/run-sbt-task-from-eclipse&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/1373308899397909005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2014/04/run-sbt-command-inside-eclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1373308899397909005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1373308899397909005'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2014/04/run-sbt-command-inside-eclipse.html' title='Run SBT command inside Eclipse'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf17949FgDqCx_LPu0iZzGxoxEKbS0Mw-whcNSdHhSfbrQ8abMdshUme4pg7OE9LtK5DjXGg2Ni5inuRDtePf9dUb2X6LzmO42ZgZ_7nk-nAjBqvqQaWatfehd-xCSP31AmoPXzbFars/s72-c/run-external-tools.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-806219515770437127</id><published>2014-04-02T11:56:00.001+07:00</published><updated>2014-04-02T11:56:15.036+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java8"/><category scheme="http://www.blogger.com/atom/ns#" term="talend open studio"/><title type='text'>Issue Java 8 with Talend Open Studio for Data Integration v5.3</title><content type='html'>&lt;div class=&quot;tr_bq&quot;&gt;
เจอปัญหาลง java 8 แล้วใช้งาน menu export job ของ Talend Open Studio ไม่ได้เจอ log ประมาณนี้&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
eclipse.buildId=unknown&lt;br /&gt;
java.version=1.8.0&lt;br /&gt;
java.vendor=Oracle Corporation&lt;br /&gt;
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US&lt;br /&gt;
Command-line arguments: &amp;nbsp;-os win32 -ws win32 -arch x86_64&lt;br /&gt;
!ENTRY org.eclipse.core.resources 4 567 2014-04-02 10:19:00.195&lt;br /&gt;
!MESSAGE Workspace restored, but some problems occurred.&lt;br /&gt;
!SUBENTRY 1 org.eclipse.core.resources 4 567 2014-04-02 10:19:00.195&lt;br /&gt;
!MESSAGE Could not read metadata for &#39;.org.eclipse.jdt.core.external.folders&#39;.&lt;br /&gt;
!STACK 1&lt;br /&gt;
org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for &#39;.org.eclipse.jdt.core.external.folders&#39; is missing. &amp;nbsp;This file contains important information about the project. &amp;nbsp;The project will not function properly until this file is restored.&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:756)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:852)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:832)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:681)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1503)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2134)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:1883)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:406)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.emf.ecore.plugin.EcorePlugin$Implementation.start(EcorePlugin.java:520)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.Class.getDeclaredConstructors0(Native Method)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.Class.getConstructor0(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.Class.newInstance(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.talend.core.GlobalServiceRegister.findService(GlobalServiceRegister.java:172)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.talend.core.GlobalServiceRegister.getService(GlobalServiceRegister.java:145)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.talend.rcp.intro.Application.start(Application.java:84)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at java.lang.reflect.Method.invoke(Unknown Source)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.equinox.launcher.Main.run(Main.java:1407)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;at org.eclipse.equinox.launcher.Main.main(Main.java:1383)&lt;br /&gt;
!SUBENTRY 2 org.eclipse.core.resources 4 567 2014-04-02 10:19:00.196&lt;br /&gt;
!MESSAGE The project description file (.project) for &#39;.org.eclipse.jdt.core.external.folders&#39; is missing. &amp;nbsp;This file contains important information about the project. &amp;nbsp;The project will not function properly until this file is restored.&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 10:19:02.354&lt;br /&gt;
!MESSAGE 2014-04-02 10:19:02,351 INFO &amp;nbsp;org.talend.repository.ui.login.LoginComposite &amp;nbsp;- validate updatesite...&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 10:19:42.653&lt;br /&gt;
!MESSAGE 2014-04-02 10:19:42,652 INFO &amp;nbsp;org.talend.core.repository.model.ProxyRepositoryFactory &amp;nbsp;- test@talend.com logged on KTCeLib&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 10:19:44.172&lt;br /&gt;
!MESSAGE 2014-04-02 10:19:44,172 INFO &amp;nbsp;org.talend.core.repository.GeneratedJetEmitersLoginTask &amp;nbsp;- Generating JetEmiters&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 10:19:44.256&lt;br /&gt;
!MESSAGE 2014-04-02 10:19:44,256 INFO &amp;nbsp;org.talend.core.repository.ReadOnlyProjectConfirm &amp;nbsp;- ReadOnly confirm&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.839&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/nio/file/Files.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.873&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/Instant.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.874&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/LocalDate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.874&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/LocalDateTime.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.875&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/LocalTime.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.876&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/MonthDay.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.877&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/OffsetDateTime.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.877&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/OffsetTime.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.878&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/Year.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.879&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/YearMonth.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.880&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/ZonedDateTime.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.881&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/chrono/AbstractChronology.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.883&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/chrono/HijrahChronology.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.887&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/format/DateTimeFormatter.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.889&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/format/DateTimeFormatterBuilder$ReducedPrinterParser.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.892&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/format/DateTimeFormatterBuilder.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.897&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/temporal/TemporalAdjusters.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.897&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/time/temporal/TemporalQueries.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.909&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Collections$CheckedMap.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.911&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Collections$CopiesList.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.914&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.926&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/PrimitiveIterator$OfDouble.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.926&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/PrimitiveIterator$OfInt.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.927&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/PrimitiveIterator$OfLong.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.930&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Spliterator$OfDouble.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.930&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Spliterator$OfInt.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.931&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Spliterator$OfLong.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.936&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/TreeMap$EntrySpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.938&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Tripwire.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:25.949&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/concurrent/ConcurrentSkipListMap$EntrySpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.023&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/BiConsumer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.023&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/BiPredicate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.023&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/BinaryOperator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.024&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/Consumer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.024&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/DoubleConsumer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.025&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/DoublePredicate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.025&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/DoubleUnaryOperator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.026&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/Function.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.026&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/IntConsumer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.027&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/IntPredicate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.027&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/IntUnaryOperator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.028&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/LongConsumer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.028&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/LongPredicate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.029&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/LongUnaryOperator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.029&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/Predicate.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.030&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/UnaryOperator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.045&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/regex/Pattern.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.048&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/AbstractPipeline.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.050&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Collectors.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.051&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/DistinctOps$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.052&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/DoublePipeline$5$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.053&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/DoublePipeline.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.054&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/FindOps.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.055&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/ForEachOps$ForEachOrderedTask.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.057&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/IntPipeline$7$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.058&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/IntPipeline.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.060&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/LongPipeline$6$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.062&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/LongPipeline.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.064&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/MatchOps.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.065&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Node$OfDouble.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.065&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Node$OfInt.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.066&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Node$OfLong.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.067&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Node.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.068&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Nodes$CollectorTask$OfDouble.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.068&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Nodes$CollectorTask$OfInt.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.069&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Nodes$CollectorTask$OfLong.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.069&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Nodes$CollectorTask$OfRef.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.079&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/ReferencePipeline$10$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.081&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/ReferencePipeline$8$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.083&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/ReferencePipeline$9$1.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.084&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/ReferencePipeline.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.085&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SliceOps$2.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.085&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SliceOps$3.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.086&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SliceOps$4.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.086&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SliceOps.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.087&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SortedOps$RefSortingSink.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.089&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/SpinedBuffer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.091&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$DistinctSpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.092&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$DoubleWrappingSpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.093&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$IntWrappingSpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.093&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$LongWrappingSpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.094&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$SliceSpliterator$OfDouble.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.094&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$SliceSpliterator$OfInt.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.094&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$SliceSpliterator$OfLong.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.095&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$SliceSpliterator$OfRef.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.097&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/StreamSpliterators$WrappingSpliterator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.119&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/stream/Tripwire.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.458&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|sun/applet/AppletPanel.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.772&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|sun/security/x509/X509CertImpl.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.937&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/function/BiFunction.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.941&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/concurrent/ConcurrentMap.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.947&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Map$Entry.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.952&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Comparator.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.955&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/BitSet.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.956&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/util/Arrays.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.968&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/nio/CharBuffer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.983&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/lang/reflect/AnnotatedElement.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:26.998&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/rt.jar|java/lang/CharSequence.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.934&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/AccessorPropertyDescriptor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.935&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/ArrayBufferView.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.936&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/DataPropertyDescriptor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.936&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/GenericPropertyDescriptor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.937&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/Global.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.938&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArray$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.939&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArray$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.939&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArray.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.939&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArrayBuffer$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.940&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArrayBuffer$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.940&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeArrayBuffer.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.940&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeBoolean$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.941&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeBoolean$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.941&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeDate$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.941&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeDate$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.942&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeDebug$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.943&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.943&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.943&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.944&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeEvalError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.944&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeEvalError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.945&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeEvalError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.945&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFloat32Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.946&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFloat32Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.946&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFloat64Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.947&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFloat64Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.947&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFunction$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.947&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeFunction$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.948&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt16Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.948&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt16Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.949&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt32Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.949&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt32Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.950&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt8Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.950&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeInt8Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.950&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeJava$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.951&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeJavaImporter$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.951&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeJavaImporter$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.951&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeJSAdapter$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.952&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeJSON$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.953&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeMath$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.953&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeNumber$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.953&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeNumber$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.954&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeObject$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.954&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeObject$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.955&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRangeError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.955&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRangeError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.956&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRangeError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.956&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeReferenceError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.956&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeReferenceError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.956&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeReferenceError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.957&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRegExp$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.957&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRegExp$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.957&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRegExp.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.957&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeRegExpExecResult.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.958&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeString$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.958&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeString$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.959&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeString.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.959&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeSyntaxError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.959&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeSyntaxError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.959&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeSyntaxError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.960&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeTypeError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.960&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeTypeError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.960&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeTypeError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.961&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint16Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.961&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint16Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.961&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint32Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.962&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint32Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.962&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint8Array$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.963&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint8Array$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.963&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint8ClampedArray$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.963&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeUint8ClampedArray$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.964&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeURIError$Constructor.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.964&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeURIError$Prototype.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.eclipse.jdt.core 2 0 2014-04-02 10:21:29.964&lt;br /&gt;
!MESSAGE The Java indexing could not index C:/Program Files/Java/jre8/lib/ext/nashorn.jar|jdk/nashorn/internal/objects/NativeURIError.class. This .class file doesn&#39;t follow the class file format specification. Please report this issue against the .class file vendor&lt;br /&gt;
!ENTRY org.talend.platform.logging 4 0 2014-04-02 10:25:04.889&lt;br /&gt;
!MESSAGE 2014-04-02 10:25:04,886 ERROR org.talend.designer.codegen.CodeGenerator &amp;nbsp;- InvocationTargetException&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
เลย downgrade java version ไปใช้ 1.6 แทนผลใช้งานได้ปกติ&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
eclipse.buildId=unknown&lt;br /&gt;
java.version=1.6.0_35&lt;br /&gt;
java.vendor=Sun Microsystems Inc.&lt;br /&gt;
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US&lt;br /&gt;
Command-line arguments: &amp;nbsp;-os win32 -ws win32 -arch x86_64&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 11:11:34.663&lt;br /&gt;
!MESSAGE 2014-04-02 11:11:34,660 INFO &amp;nbsp;org.talend.repository.ui.login.LoginComposite &amp;nbsp;- validate updatesite...&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 11:11:52.059&lt;br /&gt;
!MESSAGE 2014-04-02 11:11:52,058 INFO &amp;nbsp;org.talend.core.repository.model.ProxyRepositoryFactory &amp;nbsp;- test@talend.com logged on XXXXX&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 11:11:53.892&lt;br /&gt;
!MESSAGE 2014-04-02 11:11:53,891 INFO &amp;nbsp;org.talend.core.repository.GeneratedJetEmitersLoginTask &amp;nbsp;- Generating JetEmiters&lt;br /&gt;
&lt;br /&gt;
!ENTRY org.talend.platform.logging 1 0 2014-04-02 11:11:53.992&lt;br /&gt;
!MESSAGE 2014-04-02 11:11:53,992 INFO &amp;nbsp;org.talend.core.repository.ReadOnlyProjectConfirm &amp;nbsp;- ReadOnly confirm&lt;/blockquote&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/806219515770437127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2014/04/issue-java-8-with-talend-open-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/806219515770437127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/806219515770437127'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2014/04/issue-java-8-with-talend-open-studio.html' title='Issue Java 8 with Talend Open Studio for Data Integration v5.3'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-3346657304485685540</id><published>2013-02-08T02:04:00.000+07:00</published><updated>2013-02-08T02:05:23.725+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hibernate framework"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jpa"/><title type='text'>Hibernate ManyToOne: Unable to find with id error</title><content type='html'>&lt;h2&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hibernate ManyToOne: Unable to find with id error&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;When you see exception with stackTrace with like this&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;javax.persistence.EntityNotFoundException: Unable to find &amp;lt;&amp;lt; Entity&amp;gt;&amp;gt; with id XXXXX&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #474b4e; font-family: Arial, Helvetica, sans-serif; line-height: 18px;&quot;&gt;It&#39;s mean , If you &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; font-family: Arial, Helvetica, sans-serif; line-height: 18px;&quot;&gt;use the ManyToOne, may encounter a problem if the field is empty and not match with any record. To solve it, add a NotFound notation as shown in below:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@ManyToOne&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@NotFound(action=NotFoundAction.IGNORE)&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@JoinColumn(name=&quot;CUST_AREACD&quot;, referencedColumnName=&quot;S_AREA_CD&quot;, insertable=false, updatable=false)&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@ManyToOne&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@NotFound(action=NotFoundAction.IGNORE)&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #474b4e; line-height: 18px;&quot;&gt;@JoinColumn(name=&quot;CUST_AREACD&quot;, referencedColumnName=&quot;S_AREA_CD&quot;, insertable=false, updatable=false)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #474b4e; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
see :&amp;nbsp;&lt;a href=&quot;http://sekchee-programming.blogspot.com/2008/08/ejb3-hibernate-manytoone-unable-to-find.html&quot; target=&quot;_blank&quot;&gt;EJB3 Hibernate ManyToOne: Unable to find with id error&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/3346657304485685540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2013/02/hibernate-manytoone-unable-to-find-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3346657304485685540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3346657304485685540'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2013/02/hibernate-manytoone-unable-to-find-with.html' title='Hibernate ManyToOne: Unable to find with id error'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-4020405233935390294</id><published>2012-08-12T03:19:00.001+07:00</published><updated>2012-08-12T03:19:22.465+07:00</updated><title type='text'>Best Practices to write JUnit test cases in Java</title><content type='html'>&lt;a href=&quot;http://javarevisited.blogspot.com/2012/08/best-practices-to-write-junit-test.html#.UCa-NTI2lNM.blogger&quot;&gt;Best Practices to write JUnit test cases in Java&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/4020405233935390294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/best-practices-to-write-junit-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4020405233935390294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4020405233935390294'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/best-practices-to-write-junit-test.html' title='Best Practices to write JUnit test cases in Java'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-3361223512423466055</id><published>2012-08-02T16:54:00.001+07:00</published><updated>2012-08-02T16:54:55.539+07:00</updated><title type='text'>Inspired by Actual Events: Logging Method Entry/Exit with Spring/AspectJ</title><content type='html'>&lt;a href=&quot;http://marxsoftware.blogspot.com/2008/10/logging-method-entryexit-with.html?spref=bl&quot;&gt;Inspired by Actual Events: Logging Method Entry/Exit with Spring/AspectJ&lt;/a&gt;: The purpose of this blog entry is to show an extremely simple of example of &quot;logging&quot; entry into and exit from methods using the Spring Fram...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/3361223512423466055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/inspired-by-actual-events-logging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3361223512423466055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3361223512423466055'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/inspired-by-actual-events-logging.html' title='Inspired by Actual Events: Logging Method Entry/Exit with Spring/AspectJ'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-9087582151780502803</id><published>2012-08-02T02:22:00.001+07:00</published><updated>2012-08-02T02:22:05.589+07:00</updated><title type='text'>Mechanical Sympathy: Smart Batching</title><content type='html'>&lt;a href=&quot;http://mechanical-sympathy.blogspot.com/2011/10/smart-batching.html?spref=bl&quot;&gt;Mechanical Sympathy: Smart Batching&lt;/a&gt;: How often have we all heard that “batching” will increase latency?&amp;nbsp; As someone with a passion for low-latency systems this surprises me.&amp;nbsp; In...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/9087582151780502803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/mechanical-sympathy-smart-batching.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/9087582151780502803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/9087582151780502803'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/08/mechanical-sympathy-smart-batching.html' title='Mechanical Sympathy: Smart Batching'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-1558970669298425645</id><published>2012-06-19T14:27:00.001+07:00</published><updated>2012-06-19T14:27:55.244+07:00</updated><title type='text'>Sohel&#39;s Blog: Test Driven Development (TDD), Step by Step: Part ...</title><content type='html'>&lt;a href=&quot;http://ranaictiu-technicalblog.blogspot.com/2009/12/test-driven-development-tdd-step-by.html?spref=bl&quot;&gt;Sohel&#39;s Blog: Test Driven Development (TDD), Step by Step: Part ...&lt;/a&gt;: Introduction   So at first let’s ask ourselves what is Test Driven Development(TDD)?   “TDD is an evolutionary approach to development which...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/1558970669298425645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/06/sohels-blog-test-driven-development-tdd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1558970669298425645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1558970669298425645'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/06/sohels-blog-test-driven-development-tdd.html' title='Sohel&#39;s Blog: Test Driven Development (TDD), Step by Step: Part ...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-5108784074902439378</id><published>2012-03-28T02:14:00.001+07:00</published><updated>2012-03-28T02:33:21.310+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="play framework"/><title type='text'>You wanna Play!</title><content type='html'>&lt;strong&gt;&lt;u&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;em&gt;Prepare&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
To run the Play framework, you need &lt;a href=&quot;http://java.sun.com/&quot;&gt;Java 5 or later&lt;/a&gt; and set &lt;strong&gt;&lt;em&gt;&lt;a href=&quot;http://javarevisited.blogspot.com/2012/02/how-to-set-javahome-environment-in.html&quot; target=&quot;_blank&quot;&gt;JAVA_HOME&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;&lt;u&gt;Download&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
Download the latest &lt;a href=&quot;http://download.playframework.org/releases/&quot;&gt;Play binary package&lt;/a&gt;&lt;br /&gt;
&lt;u&gt;&lt;strong&gt;&lt;em&gt;Set PLAY_HOME&lt;/em&gt;&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;
Windows 7 :&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Right click on “My Computer”  &lt;/li&gt;
&lt;li&gt;select “propeties”  &lt;/li&gt;
&lt;li&gt;click on &quot;Advanced system setting&quot; &amp;gt; “Advanced” tab &amp;gt;&amp;nbsp; click “Environment variables”  &lt;/li&gt;
&lt;li&gt;In System variables &amp;gt; “New”  &lt;ol&gt;
&lt;li&gt;Variable name “PLAY_HOME”  &lt;/li&gt;
&lt;li&gt;Variable value “{drive}:{play directory}”&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;In the system properties area, find the &quot;Path&quot; property and edit it  &lt;ol&gt;
&lt;li&gt;Add %PLAY_HOME%; at the front of the property value - do not&lt;br /&gt;remove anything else from the property value!&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Opent dos and type “play” , you will see output from play script.&lt;/li&gt;
&lt;/ol&gt;
&lt;strong&gt;&lt;em&gt;First App&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
open dos prompt windows and type play new &amp;lt;application_name&amp;gt; for create your first application.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;play new myApp&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;pre&gt;second argument “new” tell play framework for create new application and third argument is name of application.So you have a first application ,Ok let’s start application with commmand ‘run’ for foreground process or ‘start’ for background process&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;play run myApp&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;or&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;play start myApp&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Open browser and type &lt;a href=&quot;http://localhost:9000/&quot;&gt;http://localhost:9000&lt;/a&gt; you will see.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Note : When you use ‘start’ command for run your application and you want to stop it, you can use ‘stop’ command&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;play stop myApp&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/5108784074902439378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/03/you-wanna-play.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/5108784074902439378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/5108784074902439378'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/03/you-wanna-play.html' title='You wanna Play!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-3017709639783899307</id><published>2012-03-02T13:56:00.000+07:00</published><updated>2012-03-02T13:56:34.713+07:00</updated><title type='text'>Sweeet Wine: Play Framework - Excel report example</title><content type='html'>&lt;a href=&quot;http://bnagur.blogspot.com/2011/09/play-framework-excel-report-example.html?spref=bl&quot;&gt;Sweeet Wine: Play Framework - Excel report example&lt;/a&gt;: It&#39;s breeze to create excel reports using Play framework. Let me run thru an example.  Let&#39;s create a sample project - excel-example.  $ pla...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/3017709639783899307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/03/sweeet-wine-play-framework-excel-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3017709639783899307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/3017709639783899307'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/03/sweeet-wine-play-framework-excel-report.html' title='Sweeet Wine: Play Framework - Excel report example'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-8379861011934092295</id><published>2012-02-17T16:23:00.000+07:00</published><updated>2012-02-17T16:23:33.273+07:00</updated><title type='text'>Diego Benna&#39;s Blog: Install Tomcat 7 on Ubuntu 10.10 and Ubuntu 10.04</title><content type='html'>&lt;a href=&quot;http://diegobenna.blogspot.com/2011/01/install-tomcat-7-in-ubuntu-1010.html?spref=bl&quot;&gt;Diego Benna&#39;s Blog: Install Tomcat 7 on Ubuntu 10.10 and Ubuntu 10.04&lt;/a&gt;: Apache has officially launched version 7.0 of the servlet container for Java applications, Tomcat. Major changes in this version, you c...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/8379861011934092295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/02/diego-bennas-blog-install-tomcat-7-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/8379861011934092295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/8379861011934092295'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/02/diego-bennas-blog-install-tomcat-7-on.html' title='Diego Benna&#39;s Blog: Install Tomcat 7 on Ubuntu 10.10 and Ubuntu 10.04'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-5530486141702624227</id><published>2012-02-15T17:33:00.000+07:00</published><updated>2012-02-15T17:35:36.084+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="play framework"/><title type='text'>Play framework on the cloud made easy: Openshift module</title><content type='html'>&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;Deploying a java web application to openshift is really easy, just &lt;/span&gt;&lt;code style=&quot;background-color: white; font-size: 14px;&quot;&gt;git add&lt;/code&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;, &lt;/span&gt;&lt;code style=&quot;background-color: white; font-size: 14px;&quot;&gt;git commit&lt;/code&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;, &lt;/span&gt;&lt;code style=&quot;background-color: white; font-size: 14px;&quot;&gt;git push&lt;/code&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;… and that’s it. But we, play developers, spoiled by our beloved framework as we are, would rather just type something like &lt;/span&gt;&lt;code style=&quot;background-color: white; font-size: 14px;&quot;&gt;play rhc:deploy&lt;/code&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt; and forget about it.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;That’s what openshift module for play framework is about.&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;br /&gt;Read more:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.javacodegeeks.com/2012/02/play-framework-on-cloud-made-easy.html#.TzuJoOxvmP8.blogger&quot;&gt;Play framework on the cloud made easy: Openshift module&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/5530486141702624227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/02/play-framework-on-cloud-made-easy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/5530486141702624227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/5530486141702624227'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/02/play-framework-on-cloud-made-easy.html' title='Play framework on the cloud made easy: Openshift module'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-2180183196564497750</id><published>2012-01-11T15:11:00.000+07:00</published><updated>2012-02-15T17:36:01.031+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="play framework"/><title type='text'>J2EE Spot: Grails vs. Play Framework comparison</title><content type='html'>&lt;a href=&quot;http://j2eespot.blogspot.com/2011/10/grails-vs-play-framework-comparison.html?spref=bl&quot;&gt;J2EE Spot: Grails vs. Play Framework comparison&lt;/a&gt;: By Mikhail Gavryuchkov          I like both frameworks.  Grails  or  Groovy on Rails  and  Play framework  which I would call  Java on R...</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/2180183196564497750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2012/01/j2ee-spot-grails-vs-play-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/2180183196564497750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/2180183196564497750'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2012/01/j2ee-spot-grails-vs-play-framework.html' title='J2EE Spot: Grails vs. Play Framework comparison'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-8297343137840325964</id><published>2011-09-09T18:13:00.000+07:00</published><updated>2011-09-12T10:27:09.723+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hibernate framework"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>How to call a Oracle function from hibernate?</title><content type='html'>&lt;p&gt;Hibernate Session provides a doWork() method that gives you direct access to java.sql.Connection. You can then create and use java.sql.CallableStatement to execute your function:&lt;/p&gt; &lt;p&gt;not parameter &lt;/p&gt;&lt;pre&gt;session.doWork(new Work() {&lt;br /&gt;&lt;br&gt;&amp;nbsp; public void execute(Connection connection) throws SQLException {&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CallableStatement call = connection.prepareCall(&quot;{ call MYSCHEMA.MYFUNC() }&quot;);&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call.execute();&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; }&lt;br&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;with parameter and return result&lt;/p&gt;&lt;pre&gt;session.doWork(new Work() {&lt;br /&gt;&lt;br&gt;&amp;nbsp; public void execute(Connection connection) throws SQLException {&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CallableStatement call = connection.prepareCall(&quot;{ ? = call MYSCHEMA.MYFUNC(?,?) }&quot;);&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call.registerOutParameter( 1, Types.INTEGER ); // or whatever it is&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call.setLong(2, id);&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call.setLong(3, transId);&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call.execute();&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int result = call.getInt(1); // propagate this back to enclosing class&lt;br&gt;&amp;nbsp; }&lt;br&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br&gt;reference : &lt;a href=&quot;http://stackoverflow.com/questions/1703351/how-to-call-a-oracle-function-from-hibernate-with-return-parameter&quot; target=&quot;_blank&quot;&gt;How to call a Oracle function from hibernate with return parameter?&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/8297343137840325964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/09/how-to-call-oracle-function-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/8297343137840325964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/8297343137840325964'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/09/how-to-call-oracle-function-from.html' title='How to call a Oracle function from hibernate?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-4602423634810635013</id><published>2011-07-06T15:15:00.001+07:00</published><updated>2011-07-06T15:15:24.383+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hibernate framework"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>DAO + Hibernate + Spring then!! java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found</title><content type='html'>&lt;p&gt;I&#39;m using Spring framework + Hibernate Oracle and DAO Pattern. I have over 1000 data for in a suite, When i use for loop for adding tests, I found Oracle error “ORA-12519, TNS:no appropriate service handler found” .Here some stack trace.&lt;/p&gt;&lt;pre&gt;WARN  JDBCExceptionReporter - SQL Error: 0, SQLState: null&lt;br /&gt;ERROR JDBCExceptionReporter - Listener refused the connection with the following error:&lt;br /&gt;ORA-12519, TNS:no appropriate service handler found&lt;br /&gt;The Connection descriptor used by the client was:&lt;br /&gt;localhost:1522:orcl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;&lt;strong&gt;Cause:&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;Oracle doesn&#39;t release connection resources as fast as you open/close them.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Resolve: use Thread.sleep()&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For loop {&lt;/p&gt;&lt;br /&gt;&lt;p&gt;….&lt;/p&gt;&lt;br /&gt;&lt;p&gt;// do statement &lt;/p&gt;&lt;br /&gt;&lt;p&gt;// save , update , delete or other command &lt;/p&gt;&lt;br /&gt;&lt;p&gt;// after save , update , delete or other command ,sleep for oracle release connection&lt;/p&gt;&lt;br /&gt;&lt;p&gt;try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(100);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (InterruptedException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp; }&lt;/p&gt;&lt;br /&gt;&lt;p&gt;} // end for&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Or Resolve : set &lt;strong&gt;Connection pool in proprety in hibernate configulation&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;hibernate.connection.pool_size=maximum number of pooled connections&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;here my ex. configulation&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-N681aFd6rHA/ThQZfzyfksI/AAAAAAAAA5E/BSZBCT1Ny9s/s1600-h/hibernate_conf_in_spring%25255B14%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; margin: 10px 15px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;hibernate_conf_in_spring&quot; border=&quot;0&quot; alt=&quot;hibernate_conf_in_spring&quot; src=&quot;http://lh5.ggpht.com/-FUAsILkmoPc/ThQZhgruuBI/AAAAAAAAA5I/FPPiam2W2_M/hibernate_conf_in_spring_thumb%25255B12%25255D.png?imgmax=800&quot; width=&quot;537&quot; height=&quot;342&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/4602423634810635013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/dao-hibernate-spring-then.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4602423634810635013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4602423634810635013'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/dao-hibernate-spring-then.html' title='DAO + Hibernate + Spring then!! java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-FUAsILkmoPc/ThQZhgruuBI/AAAAAAAAA5I/FPPiam2W2_M/s72-c/hibernate_conf_in_spring_thumb%25255B12%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-7026748420537727228</id><published>2011-07-05T00:16:00.000+07:00</published><updated>2011-07-05T00:29:04.188+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache poi"/><category scheme="http://www.blogger.com/atom/ns#" term="excel"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Read Excel file with Java</title><content type='html'>&lt;p&gt;Today a friend asked me to help guide him how to read data from a file excel wiht apache poi.&lt;br&gt;I said ‘ok’ and write this example code.&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFCell;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFRichTextString;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFRow;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFSheet;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFWorkbook;&lt;br /&gt;import org.apache.poi.poifs.filesystem.POIFSFileSystem;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class ReadXLS {&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		String path = &quot;D:\\&quot;;&lt;br /&gt;		String fileName = &quot;exelfile.xls&quot;;&lt;br /&gt;		String excelFile = path + fileName;&lt;br /&gt;		InputStream inputStream = null;&lt;br /&gt;		POIFSFileSystem fileSystem = null;&lt;br /&gt;&lt;br /&gt;		try {&lt;br /&gt;			inputStream = new FileInputStream(excelFile);&lt;br /&gt;			fileSystem = new POIFSFileSystem(inputStream);&lt;br /&gt;&lt;br /&gt;			HSSFWorkbook workBook = new HSSFWorkbook(fileSystem);&lt;br /&gt;			HSSFSheet sheet = null;&lt;br /&gt;			int sheetCounter = 0;&lt;br /&gt;			while ((sheet = workBook.getSheetAt(sheetCounter)) != null) {&lt;br /&gt;				System.out.println(&quot;############### SHEET [&quot;&lt;br /&gt;						+ workBook.getSheetName(sheetCounter)&lt;br /&gt;						+ &quot;] #################&quot;);&lt;br /&gt;				Iterator&lt;hssfrow&gt; rows = sheet.rowIterator();&lt;br /&gt;&lt;br /&gt;				while (rows.hasNext()) {&lt;br /&gt;					HSSFRow row = rows.next();&lt;br /&gt;&lt;br /&gt;					// display row number in the console.&lt;br /&gt;					System.out.println(&quot;Row No.: &quot; + row.getRowNum());&lt;br /&gt;&lt;br /&gt;					// once get a row its time to iterate through cells.&lt;br /&gt;					Iterator&lt;hssfcell&gt; cells = row.cellIterator();&lt;br /&gt;					StringBuilder sb = new StringBuilder();&lt;br /&gt;					while (cells.hasNext()) {&lt;br /&gt;						HSSFCell cell = cells.next();&lt;br /&gt;&lt;br /&gt;						sb.append(&quot;Cell No.: &quot; + cell.getColumnIndex());&lt;br /&gt;&lt;br /&gt;						/*&lt;br /&gt;						 * Now we will get the cell type and display the values&lt;br /&gt;						 * accordingly.&lt;br /&gt;						 */&lt;br /&gt;						switch (cell.getCellType()) {&lt;br /&gt;						case HSSFCell.CELL_TYPE_NUMERIC: {&lt;br /&gt;&lt;br /&gt;							// cell type numeric.&lt;br /&gt;							sb.append(&quot;\tNumeric value: &quot;&lt;br /&gt;									+ cell.getNumericCellValue());&lt;br /&gt;&lt;br /&gt;							break;&lt;br /&gt;						}&lt;br /&gt;&lt;br /&gt;						case HSSFCell.CELL_TYPE_STRING: {&lt;br /&gt;&lt;br /&gt;							// cell type string.&lt;br /&gt;							HSSFRichTextString richTextString = cell&lt;br /&gt;									.getRichStringCellValue();&lt;br /&gt;&lt;br /&gt;							sb.append(&quot;\tString value: &quot;&lt;br /&gt;									+ richTextString.getString());&lt;br /&gt;&lt;br /&gt;							break;&lt;br /&gt;						}&lt;br /&gt;&lt;br /&gt;						default: {&lt;br /&gt;&lt;br /&gt;							// types other than String and Numeric.&lt;br /&gt;							sb.append(&quot;\tType not supported.&quot;);&lt;br /&gt;&lt;br /&gt;							break;&lt;br /&gt;						}&lt;br /&gt;&lt;br /&gt;						}&lt;br /&gt;						sb.append(&quot; \n&quot;);&lt;br /&gt;					}&lt;br /&gt;					System.out.println(sb.toString());&lt;br /&gt;				}&lt;br /&gt;				System.out.println(&quot;############### END READ SHEET [&quot;&lt;br /&gt;						+ workBook.getSheetName(sheetCounter)&lt;br /&gt;						+ &quot;] #################&quot;);&lt;br /&gt;				sheetCounter++;&lt;br /&gt;&lt;br /&gt;				// if index is out of range break and exit reading xls file&lt;br /&gt;				try {&lt;br /&gt;					workBook.getSheetAt(sheetCounter);&lt;br /&gt;				} catch (Exception e) {&lt;br /&gt;					break;&lt;br /&gt;				}&lt;br /&gt;&lt;br /&gt;			}&lt;br /&gt;		} catch (IOException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/7026748420537727228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/read-excel-file-with-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/7026748420537727228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/7026748420537727228'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/read-excel-file-with-java.html' title='Read Excel file with Java'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-491191293778107505</id><published>2011-07-02T15:58:00.000+07:00</published><updated>2011-07-02T17:15:42.712+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="generic"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Basic Generic part 2</title><content type='html'>&lt;p&gt;From the old code thank you &lt;a href=&quot;http://rpgkan.blogspot.com/2009/08/java-batch-list-model.html&quot; target=&quot;_blank&quot;&gt;rpgkan&lt;/a&gt;, but it is not a generic code so flexible that we can convert it to a generic version is better.&lt;/p&gt; &lt;p&gt;This’s old code version&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.HashSet;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;public class OldBatchObjectModel {&lt;br /&gt;	/**&lt;br /&gt;	 * for key set&lt;br /&gt;	 */&lt;br /&gt;	private Set idSet;&lt;br /&gt;	/**&lt;br /&gt;	 * map of value&lt;br /&gt;	 */&lt;br /&gt;	private Map batchDataMap;&lt;br /&gt;&lt;br /&gt;	public OldBatchObjectModel() {&lt;br /&gt;		idSet = new HashSet();&lt;br /&gt;		batchDataMap = new HashMap();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * put key and object value&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 * @param obj&lt;br /&gt;	 */&lt;br /&gt;	public void putData(String id, Object obj) {&lt;br /&gt;		idSet.add(id);&lt;br /&gt;		Object item = batchDataMap.get(id);&lt;br /&gt;		if (null == item) {&lt;br /&gt;			batchDataMap.put(id, obj);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * get data from id&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 * @return&lt;br /&gt;	 */&lt;br /&gt;	public Object getData(String id) {&lt;br /&gt;		return batchDataMap.get(id);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * get all key&lt;br /&gt;	 * &lt;br /&gt;	 * @return&lt;br /&gt;	 */&lt;br /&gt;	public Set getId() {&lt;br /&gt;		return idSet;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove value&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 */&lt;br /&gt;	public void removeDataById(String id) {&lt;br /&gt;		batchDataMap.remove(id);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all data&lt;br /&gt;	 */&lt;br /&gt;	public void clear() {&lt;br /&gt;		this.clearId();&lt;br /&gt;		this.clearData();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all key set&lt;br /&gt;	 */&lt;br /&gt;	public void clearId() {&lt;br /&gt;		idSet.clear();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all map value&lt;br /&gt;	 */&lt;br /&gt;	public void clearData() {&lt;br /&gt;		batchDataMap.clear();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public int size() {&lt;br /&gt;		return batchDataMap.size();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Let&#39;s see the test code.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;import junit.framework.Assert;&lt;br /&gt;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class OldBathObjectModelTest {&lt;br /&gt;	@Test()&lt;br /&gt;	public void testAdd() {&lt;br /&gt;		OldBatchObjectModel ob = new OldBatchObjectModel();&lt;br /&gt;		ob.putData(&quot;1&quot;, 2);&lt;br /&gt;		ob.putData(&quot;2&quot;, &quot;3&quot;);&lt;br /&gt;		ob.putData(&quot;3&quot;, 2.0);&lt;br /&gt;&lt;br /&gt;		if (ob.getData(&quot;1&quot;) instanceof Integer) {&lt;br /&gt;			int x1 = ((Integer) ob.getData(&quot;1&quot;)).intValue();&lt;br /&gt;			Assert.assertEquals(2, x1);&lt;br /&gt;		}&lt;br /&gt;		if (ob.getData(&quot;2&quot;) instanceof String) {&lt;br /&gt;			String x2 = ((String) ob.getData(&quot;2&quot;)).toString();&lt;br /&gt;			Assert.assertEquals(&quot;3&quot;, x2);&lt;br /&gt;		}&lt;br /&gt;		if (ob.getData(&quot;3&quot;) instanceof Double) {&lt;br /&gt;			double x3 = ((Double) ob.getData(&quot;3&quot;)).doubleValue();&lt;br /&gt;			Assert.assertEquals(2.0, x3);&lt;br /&gt;		}&lt;br /&gt;		Set ids = ob.getId();&lt;br /&gt;		for (Iterator iterator = ids.iterator(); iterator.hasNext();) {&lt;br /&gt;			String key = (String) iterator.next();&lt;br /&gt;			if (ob.getData(key) instanceof Integer) {&lt;br /&gt;				Assert.assertTrue(ob.getData(key) instanceof Integer);&lt;br /&gt;			}else if (ob.getData(key)  instanceof String) {&lt;br /&gt;				Assert.assertTrue(ob.getData(key) instanceof String);&lt;br /&gt;			}&lt;br /&gt;			if (ob.getData(key)  instanceof Double) {&lt;br /&gt;				Assert.assertTrue(ob.getData(key) instanceof Double);&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You will see that it&#39;s quite a lot of casting, and it does not help me much in terms of reuse, because you will need to check before pulling up to the time that it takes a data type that you want to do it. Let&#39;s convert it to a generic version. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.HashSet;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;public class NewBatchObjectModel &lt;k v ,&gt; {&lt;br /&gt;	/**&lt;br /&gt;	 * for key set&lt;br /&gt;	 */&lt;br /&gt;	private Set&lt;k&gt; idSet;&lt;br /&gt;	/**&lt;br /&gt;	 * map of value&lt;br /&gt;	 */&lt;br /&gt;	private Map&lt;k v ,&gt; batchDataMap;&lt;br /&gt;&lt;br /&gt;	public NewBatchObjectModel() {&lt;br /&gt;		idSet = new HashSet&lt;k&gt;();&lt;br /&gt;		batchDataMap = new HashMap&lt;k v ,&gt;();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * put key and object value&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 * @param obj&lt;br /&gt;	 */&lt;br /&gt;	public void putData(K id, V obj) {&lt;br /&gt;		idSet.add(id);&lt;br /&gt;		Object item = batchDataMap.get(id);&lt;br /&gt;		if (null == item) {&lt;br /&gt;			batchDataMap.put(id, obj);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * get data from id&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 * @return&lt;br /&gt;	 */&lt;br /&gt;	public V getData(K id) {&lt;br /&gt;		return batchDataMap.get(id);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * get all key&lt;br /&gt;	 * &lt;br /&gt;	 * @return&lt;br /&gt;	 */&lt;br /&gt;	public Set&lt;k&gt; getId() {&lt;br /&gt;		return idSet;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove value&lt;br /&gt;	 * &lt;br /&gt;	 * @param id&lt;br /&gt;	 */&lt;br /&gt;	public void removeDataById(K id) {&lt;br /&gt;		batchDataMap.remove(id);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all data&lt;br /&gt;	 */&lt;br /&gt;	public void clear() {&lt;br /&gt;		this.clearId();&lt;br /&gt;		this.clearData();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all key set&lt;br /&gt;	 */&lt;br /&gt;	public void clearId() {&lt;br /&gt;		idSet.clear();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * remove all map value&lt;br /&gt;	 */&lt;br /&gt;	public void clearData() {&lt;br /&gt;		batchDataMap.clear();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public int size() {&lt;br /&gt;		return batchDataMap.size();&lt;br /&gt;	}&lt;br /&gt;	/**&lt;br /&gt;	 * contain key&lt;br /&gt;	 * @param id&lt;br /&gt;	 * @return&lt;br /&gt;	 */&lt;br /&gt;	public boolean containsKey(K id){&lt;br /&gt;		return this.idSet.contains(id);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;for String&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;public class StringBatchObjectModel extends NewBatchObjectModel&lt;string string ,&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;for Integer&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;public class IntegerBatchObjectModel extends NewBatchObjectModel&lt;string integer ,&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;for Double &lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;public class DoubleBatchObjectModel extends NewBatchObjectModel&lt;string double ,&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Test,Test,Test&lt;/p&gt;&lt;pre&gt;package org.my.test;&lt;br /&gt;&lt;br /&gt;import org.junit.Assert;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class OldBathObjectModelTest {&lt;br /&gt;	@Test()&lt;br /&gt;	public void testInteger() {&lt;br /&gt;		IntegerBatchObjectModel ob = new IntegerBatchObjectModel();&lt;br /&gt;		ob.putData(&quot;1&quot;, 2);&lt;br /&gt;		int x1 = ob.getData(&quot;1&quot;);&lt;br /&gt;		Assert.assertTrue(2 == x1);&lt;br /&gt;		Assert.assertTrue(ob.getData(&quot;1&quot;) instanceof Integer);&lt;br /&gt;		Assert.assertTrue(ob.getData(&quot;1&quot;) == 2);&lt;br /&gt;	}&lt;br /&gt;	@Test()&lt;br /&gt;	public void testString() {&lt;br /&gt;		StringBatchObjectModel ob = new StringBatchObjectModel();&lt;br /&gt;		ob.putData(&quot;1&quot;, &quot;Some test string&quot;);&lt;br /&gt;		String x1 = ob.getData(&quot;1&quot;);&lt;br /&gt;		Assert.assertTrue(&quot;Some test string&quot;.equals(x1));&lt;br /&gt;		Assert.assertTrue(ob.getData(&quot;1&quot;) instanceof String);&lt;br /&gt;		Assert.assertTrue(&quot;Some test string&quot;.equals(ob.getData(&quot;1&quot;) ));&lt;br /&gt;	}&lt;br /&gt;	@Test()&lt;br /&gt;	public void testDouble() {&lt;br /&gt;		DoubleBatchObjectModel ob = new DoubleBatchObjectModel();&lt;br /&gt;		ob.putData(&quot;1&quot;, 2.01);&lt;br /&gt;		double x1 = ob.getData(&quot;1&quot;);&lt;br /&gt;		Assert.assertTrue(2.01 == x1);&lt;br /&gt;		Assert.assertTrue(ob.getData(&quot;1&quot;) instanceof Double);&lt;br /&gt;		Assert.assertTrue(ob.getData(&quot;1&quot;) == 2.01);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I hope you will continue to be applied to your code. &lt;img style=&quot;border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none&quot; class=&quot;wlEmoticon wlEmoticon-Inlove&quot; alt=&quot;ตกหลุมรัก&quot; src=&quot;http://lh6.ggpht.com/-hFNuhsrRTHo/Tg7vuT96feI/AAAAAAAAA3U/W_I6fvH4ENU/wlEmoticon-Inlove%25255B2%25255D.png?imgmax=800&quot;&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/491191293778107505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/basic-generic-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/491191293778107505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/491191293778107505'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/07/basic-generic-part-2.html' title='Basic Generic part 2'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-hFNuhsrRTHo/Tg7vuT96feI/AAAAAAAAA3U/W_I6fvH4ENU/s72-c/wlEmoticon-Inlove%25255B2%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-9166664868932507968</id><published>2011-06-27T16:22:00.002+07:00</published><updated>2011-07-02T15:59:08.333+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="generic"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Basic Generic</title><content type='html'>Here ,this’s example code for builder pattern.&lt;br /&gt;
AbstractBuilder.java&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;package org.my.generic.test;

public abstract class AbstractBuilder&lt;t&gt; {
public abstract T build(String line);
}&lt;/t&gt;&lt;/span&gt;

&lt;/pre&gt;&lt;br /&gt;
TableDirector.java &lt;br /&gt;
&lt;pre&gt;package org.my.generic.test;

package org.my.generic.test;

public class SofaDirector {
public static void main(String[] args) {
SofaDirector director = new SofaDirector();
Sofa t1 = director.build(&quot;M|4&quot;);
System.out.println(&quot;TYPE : &quot; + t1.getType() + &quot; | LEGs : &quot;
+ t1.getValue());
Sofa t2 = director.build(&quot;W|8&quot;);
System.out.println(&quot;TYPE : &quot; + t2.getType() + &quot; | LEGs : &quot;
+ t2.getValue());
}

private WoodSofaBuilder woodSofaBuilder = null;
private MetalSofaBuilder metalSofaBuilder = null;

public SofaDirector() {
super();
this.woodSofaBuilder = new WoodSofaBuilder();
this.metalSofaBuilder = new MetalSofaBuilder();
}

public Sofa build(String order) {
Sofa table = null;
if (order.startsWith(&quot;M&quot;)) {
table = this.metalSofaBuilder.build(order);
}
if (order.startsWith(&quot;W&quot;)) {
table = this.woodSofaBuilder.build(order);
}
return table;
}

class WoodSofaBuilder extends AbstractBuilder&lt;sofa&gt; {

@Override
public Sofa build(String line) {
String val[] = line.split(&quot;\\|&quot;);
Sofa table = new Sofa();
table.setType(&quot;WOOD&quot;);
table.setValue(val[1]);
return table;
}
}

class MetalSofaBuilder extends AbstractBuilder&lt;sofa&gt; {

@Override
public Sofa build(String line) {
String val[] = line.split(&quot;\\|&quot;);
Sofa table = new Sofa();
table.setType(&quot;METAL&quot;);
table.setValue(val[1]);
return table;
}

}

class Sofa {
private String type;
private String value;

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

}
}



&lt;/sofa&gt;&lt;/sofa&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/9166664868932507968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/basic-generic-t_27.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/9166664868932507968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/9166664868932507968'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/basic-generic-t_27.html' title='Basic Generic'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-7247175873135470010</id><published>2011-06-27T00:28:00.000+07:00</published><updated>2011-06-27T00:28:54.294+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="junit4"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="spring framewokr"/><category scheme="http://www.blogger.com/atom/ns#" term="unit test"/><title type='text'>เขียน test งานขำ ๆ กับ Spring + jUnit4</title><content type='html'>&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;เรื่องมันมีอยู่ว่า..เดิมเป็นคนเขียนงานไม่ค่อยเขียน test ก็ด้นสดกันไป เขียน test แบบไหนนะหรอ? ก็เขียนใน main method ไง แทรกไว้ใน class นั้นละ แบบนี้&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
private static int YEAR = 3000;
private static int MONTH = 12;
private static int DATE = 31;
private static int HOUR = 24;
private static int MINUTE = 60;
private static int SECOND = 60;
public static void test() {
int time[][][] = new int[HOUR][MINUTE][SECOND];
for (int i = 0; i &amp;lt; time.length; i++) {
for (int j = 0; j &amp;lt; time[i].length; j++) {
for (int k = 0; k &amp;lt; time[i][j].length; k++) {
// System.out.println(i + &quot; : &quot; + j + &quot; : &quot; + k);
time[i][j][k] = 0;
}
}
}
int counter = 0;
System.out.println(&quot;time 1:00:00 : &quot; + time[1][0][0]);
// set time 1:30:20 to counter 1
time[1][30][20] += 1;
time[1][30][20] += 1;
time[1][31][20] += 1;
// count between time 1:30:00 - 1:30:59
for (int i = 0; i &amp;lt; time[1][30].length; i++) {
counter += time[1][30][i];
}
System.out.println(&quot;count between time 1:31:00 - 1:30:59 : &quot; + counter);
// count between time 1:31:00 - 1:31:59
counter = 0;
for (int i = 0; i &amp;lt; time[1][31].length; i++) {
counter += time[1][31][i];
}
System.out.println(&quot;count between time 1:31:00 - 1:31:59 : &quot; + counter);
// time 1:00:00
time[1][0][0] += 1;
// time 1:03:24
time[1][3][24] += 1;
// time 2:00:23
time[2][0][23] += 1;

// count between time 1:00:00 - 3:00:00
counter = 0;

for (int i = 0; i &amp;lt; SECOND; i++) {
for (int j = 0; j &amp;lt; MINUTE; j++) {
for (int h = 1; h &amp;lt;= 3; h++) {
counter += time[h][j][i];
}
}

}
System.out.println(&quot;count between time 1:00:00 - 3:00:00 : &quot; + counter);

}
}
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;ผลที่ได้นะหรอ ก็รันได้ราบรื่นปรกตินะซิแล้วไปตายเอาดาบหน้า :P หลังจากได้อ่าน &lt;/span&gt;&lt;a href=&quot;http://www.code-66.com/blog/tag/test-driven-development/&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;Test Driven Development&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt; ที่พี่ roofimon เขียนไว้ หลัง ๆ เลยเปลี่ยนตัวเองใหม่สาบานว่าจะเขียน 1 test class ต่อ class ที่เขียนขึ้นหนึ่งตัว ( กรณีขยันสุด ๆ นะ ) ผลที่ได้นะหรอเขียนตั้งแต่ test domain class ยัน test service class กันเลยทีเดียว เดี๋ยวจะหาว่าโม้ ขั้นตอนเขียน JUnit4 ( ใช้ version 4 มันง่ายเพราะมี annotation ) เขียนยังงี้ครับ &lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;import junit.framework.Assert;

import org.junit.Test;

public class TestEventDomain {
private static int YEAR = 3000;
private static int MONTH = 12;
private static int DATE = 31;
private static int HOUR = 24;
private static int MINUTE = 60;
private static int SECOND = 60;

@Test
public void testHour() {
int time[][][] = new int[HOUR][MINUTE][SECOND];
for (int i = 0; i &amp;lt; time.length; i++) {
for (int j = 0; j &amp;lt; time[i].length; j++) {
for (int k = 0; k &amp;lt; time[i][j].length; k++) {
// System.out.println(i + &quot; : &quot; + j + &quot; : &quot; + k);
time[i][j][k] = 0;
}
}
}
int counter = 0;
int m = 0;
System.out.println(&quot;time 1:00:00 : &quot; + time[1][0][0]);
// set time 1:30:20 to counter 1
time[1][30][20] += 1;
time[1][30][20] += 1;
time[1][31][20] += 1;
Assert.assertEquals(2, time[1][30][20]);
Assert.assertEquals(1, time[1][31][20]);
// // count between time 1:30:00 - 1:30:59
for (int i = 0; i &amp;lt; time[1][30].length; i++) {
counter += time[1][30][i];
}
Assert.assertEquals(2, counter);
System.out.println(&quot;count between time 1:31:00 - 1:30:59 : &quot; + counter);
// // count between time 1:31:00 - 1:31:59
counter = 0;
for (int i = 0; i &amp;lt; time[1][31].length; i++) {
counter += time[1][31][i];
}
Assert.assertEquals(1, counter);
System.out.println(&quot;count between time 1:31:00 - 1:31:59 : &quot; + counter);
// time 1:00:00
time[1][0][0] += 1;
// time 1:03:24
time[1][3][24] += 1;
// time 2:00:23
time[2][0][23] += 1;

// count between time 1:00:00 - 3:00:00
counter = 0;

for (int i = 0; i &amp;lt; SECOND; i++) {
for (int j = 0; j &amp;lt; MINUTE; j++) {
for (int h = 1; h &amp;lt;= 3; h++) {
counter += time[h][j][i];
}
}

}
Assert.assertEquals(6, counter);
System.out.println(&quot;count between time 1:00:00 - 3:00:00 : &quot; + counter);

}
}
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;แค่ประกาศบนหัวเป็น annotation @Test ครับแล้วรันแบบ JUnit Test บน eclipse มันก็รันแล้วรอดูผลบน console ได้ปกติ แล้วมันเอามาใช้กับ spring ยังไงละ ปกติถ้าเราเขียน spring แบบ basic เราจะมี configulation ที่เป็น file xml หนึ่งตัวใช่ไหมละ ดัง code ข้างล่างนี้ราจะเรียกมันผ่าน main method โดย new ClassPathXmlApplicationContext แล้วเราก็ใส่ file configulation นั้นลงไปเราจะได้ instance ของ application context มาเพื่อจะเรียก bean แล้วดำเนินการต่อไป &lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.my.scheduler.quartz.service.JobService;

public class SpringTest {
private static ApplicationContext ctx;

public static void main(String[] args) {
ctx = new ClassPathXmlApplicationContext(&quot;applicationContext.xml&quot;);
JobService readFileJobService = (JobService) ctx.getBean(&quot;readFileJobService&quot;);
try {
readFileJobService.doJob();
} catch (Exception e) {
e.printStackTrace();
}
}

}
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;ที่นี่ถ้าจะเขียนเพื่อดึง bean จาก spring มา test แบบ junit ทำยังไง? spring เตรียมมาให้แล้วครับด้วย class SpringJUnit4ClassRunner อยู่ใน package org.springframework.test.context.junit4 วิธีการก็ง่าย ๆ ใช้ annotation @RunWith กับ @ContextConfiguration และ @Resource ช่วยเข้าไปเท่านี้เรียบร้อยดังตัวอย่าง &lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;import java.io.FileNotFoundException;

import javax.annotation.Resource;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.my.scheduler.quartz.service.JobService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
&quot;classpath*:/applicationContext-common-hibernate.xml&quot;,
&quot;classpath*:/applicationContext-log-aop.xml&quot;,
&quot;classpath*:/applicationContext-dao.xml&quot;,
&quot;classpath*:/applicationContext-aop.xml&quot;,
&quot;classpath*:/applicationContext-job.xml&quot; })
public class ReadFileJobWorkerImplTest {
@Resource(name = &quot;readFileJobService&quot;)
JobService readFileJobService;

@Test
public void loadTest() {
try {
readFileJobService.doJob();

} catch (NullPointerException e) {
// if some path is null or empty can except null pointer exception
Assert.assertEquals(true, (e instanceof NullPointerException));
} catch (FileNotFoundException e) {
Assert.assertEquals(true, (e instanceof FileNotFoundException));
} catch (Exception e) {
e.printStackTrace();
}

}
}
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;ลองเอาไปเล่นกันดูครับ :P&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/7247175873135470010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/test-spring-junit4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/7247175873135470010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/7247175873135470010'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/test-spring-junit4.html' title='เขียน test งานขำ ๆ กับ Spring + jUnit4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-1210043263556392363</id><published>2011-06-09T16:27:00.000+07:00</published><updated>2011-06-09T16:31:03.364+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="thread"/><category scheme="http://www.blogger.com/atom/ns#" term="thread pool"/><title type='text'>เคยเขียน Thread ไหม?</title><content type='html'>&lt;p&gt;ว่าจะเขียน blog นี้ตั้งแต่สองอาทิตย์ก่อนแต่งานมันเยอะ &lt;img style=&quot;border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none&quot; class=&quot;wlEmoticon wlEmoticon-smilewithtongueout&quot; alt=&quot;แลบลิ้น&quot; src=&quot;http://lh3.ggpht.com/-qmBpBpGv5fc/TfCSaYQBzkI/AAAAAAAAA1E/tncBtBPbU1w/wlEmoticon-smilewithtongueout2.png?imgmax=800&quot;&gt; วันนี้ว่างนิด ๆ เลยเกงานมาเขียน blog ซะหน่อย “เคยเขียน Thread ไหม?” มันก็เขียนยังงี้ครับ&lt;/p&gt;&lt;pre&gt;import java.util.concurrent.ExecutorService;&lt;br /&gt;import java.util.concurrent.Executors;&lt;br /&gt;import java.util.concurrent.TimeUnit;&lt;br /&gt;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class ThreadTest {&lt;br /&gt;&lt;br /&gt;	@Test&lt;br /&gt;	public void testThread() {&lt;br /&gt;		Thread thread = new Thread(new Runnable() {&lt;br /&gt;			@Override&lt;br /&gt;			public void run() {&lt;br /&gt;				System.out.println(&quot;normal thread : &quot;&lt;br /&gt;						+ Thread.currentThread().getName());&lt;br /&gt;				sleep(1000);&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		thread.start();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static void sleep(int value) {&lt;br /&gt;		try {&lt;br /&gt;			Thread.sleep(value);&lt;br /&gt;		} catch (InterruptedException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;อันนี้คือการเขียน Thread โดยใส่ object runable เราอาจจะเรียก worker ก็ได้ เสร็จแล้วเราก็สั่งให้มันทำงานด้วย method start มันก็จะวิ่งเข้าไปทำงานใน statement ทีเขียนไว้ครับ หลังจากเรารู้วิธีการเขียน Thread แบบง่าย ๆ แล้วเรามาดูเรื่องถัดไปดีกว่า เพราะคำถามถัดมาที่ผมได้รับ &quot;ถ้าเกิดมันมีหลาย ๆ file มันจะทันไหม?&quot; แปลว่ากระบวนการทำงานของเราไม่ได้มีแค่งาน ๆ เดียวครับ มันอาจจะพร้อม ๆ กันต้องทำงานหลาย ๆ งานก็ได้ ทำไงดีละ?? ผมก็มองไปที่ Thread Pool ก่อน โชคดีผมเขียน java 1.6 ชีวิตมันเลยง่ายขึ้นมาหน่อยไม่ต้องเขียนตัวจัดการ pool เองมันก็มี class ที่ใช้จัดการเบื้องต้นมาให้เสร็จสรรพแล้ว :D&lt;/p&gt;&lt;br /&gt;&lt;p&gt;มันคือ class ไหนเหรอ?? ครับพระเอกของเรามันคือ class Executors,ExecutorService ครับลองดูวิธีการเขียนกันดีกว่า&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import java.util.concurrent.ExecutorService;&lt;br /&gt;import java.util.concurrent.Executors;&lt;br /&gt;import java.util.concurrent.TimeUnit;&lt;br /&gt;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class ThreadTest {&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;	@Test&lt;br /&gt;	public void testFixThreadPool() {&lt;br /&gt;		ExecutorService es = Executors.newFixedThreadPool(5);&lt;br /&gt;		long start = System.currentTimeMillis();&lt;br /&gt;		Runnable task = new Runnable() {&lt;br /&gt;&lt;br /&gt;			@Override&lt;br /&gt;			public void run() {&lt;br /&gt;				System.out.println(&quot;fix thread : &quot;&lt;br /&gt;						+ Thread.currentThread().getName());&lt;br /&gt;				sleep(1000);&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;&lt;br /&gt;		for (int i = 0; i &lt; 10; i++) {&lt;br /&gt;			es.execute(task);&lt;br /&gt;			sleep(500); // 1&lt;br /&gt;		}&lt;br /&gt;		es.shutdown();&lt;br /&gt;		long stop = System.currentTimeMillis();&lt;br /&gt;		System.out.println(&quot;fix thread took: &quot; + (stop - start));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	@Test&lt;br /&gt;	public void testThreadCachePool() {&lt;br /&gt;		ExecutorService es = Executors.newCachedThreadPool();&lt;br /&gt;		long start = System.currentTimeMillis();&lt;br /&gt;		Runnable task = new Runnable() {&lt;br /&gt;&lt;br /&gt;			@Override&lt;br /&gt;			public void run() {&lt;br /&gt;				System.out.println(&quot;cache thread : &quot;&lt;br /&gt;						+ Thread.currentThread().getName());&lt;br /&gt;				sleep(1000);&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;&lt;br /&gt;		for (int i = 0; i &lt; 10; i++) {&lt;br /&gt;			es.execute(task);&lt;br /&gt;			sleep(500); // 1&lt;br /&gt;		}&lt;br /&gt;		es.shutdown();&lt;br /&gt;		long stop = System.currentTimeMillis();&lt;br /&gt;		System.out.println(&quot;cache thread took: &quot; + (stop - start));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	@Test&lt;br /&gt;	public void testSingleThread() {&lt;br /&gt;		ExecutorService ec = Executors.newSingleThreadExecutor();&lt;br /&gt;		long start = System.currentTimeMillis();&lt;br /&gt;		Runnable task = new Runnable() {&lt;br /&gt;&lt;br /&gt;			@Override&lt;br /&gt;			public void run() {&lt;br /&gt;				System.out.println(&quot;single thread : &quot;&lt;br /&gt;						+ Thread.currentThread().getName());&lt;br /&gt;				sleep(1000);&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;&lt;br /&gt;		for (int i = 0; i &lt; 10; i++) {&lt;br /&gt;			ec.execute(task);&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		ec.shutdown();&lt;br /&gt;		waitTenSeconds(ec);&lt;br /&gt;		long stop = System.currentTimeMillis();&lt;br /&gt;		System.out.println(&quot;single thread took: &quot; + (stop - start));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static void waitTenSeconds(ExecutorService ec) {&lt;br /&gt;		try {&lt;br /&gt;			ec.awaitTermination(10, TimeUnit.SECONDS);&lt;br /&gt;		} catch (InterruptedException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static void sleep(int value) {&lt;br /&gt;		try {&lt;br /&gt;			Thread.sleep(value);&lt;br /&gt;		} catch (InterruptedException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;เราจะเห็นได้ว่า Executors.newSingleThreadExecutor() นั้นทำงานช้าเพราะมันต้องเข้าไปทำงานที่ Thread เดียวกัน ตรงกันข้าม Executors.newCachedThreadPool() กลับทำงานเร็วกว่าใน loop เราจะสร้าง Thread เท่าที่ต้องการและไม่ต้องรอให้ Thread ก่อนหน้าทำงานเสร็จเหมือน SingleThread ครับ CachedThreadPool เนี่ยจะเป็นเช่นเดียวกับ FixedThreadPool ครับแต่ FixedThreadPool เราสามารถจำกัดจำนวนของ Thread ได้ครับการทำงานของมันจะ reues Thread ที่มีอยู่นำมาใช้งาน เป็นไงครับ java กับ thread pool ง่ายใช่มะ?&lt;br /&gt;&lt;br /&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/1210043263556392363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/thread.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1210043263556392363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/1210043263556392363'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/06/thread.html' title='เคยเขียน Thread ไหม?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-qmBpBpGv5fc/TfCSaYQBzkI/AAAAAAAAA1E/tncBtBPbU1w/s72-c/wlEmoticon-smilewithtongueout2.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5134844746502330440.post-4005234136817641924</id><published>2011-05-22T17:10:00.000+07:00</published><updated>2011-06-27T00:19:13.539+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="quartz"/><title type='text'>Java with Quartz 2.0.1</title><content type='html'>&lt;p&gt;วันก่อนหลังจากย้ายงานมาจากที่ทำงานเดิมมาทำที่ใหม่ ได้โจทย์มาว่าคุณลูกค้าต้องการยังงี้ ๆ เราก็อ้อต้องการให้มีตัวกวาดไฟล์มาทำงานทุก ๆ ช่วงเวลา และในหนึ่งช่วงเวลาก็มีหลายงานที่ต้องทำเสียเหลือเกินเราก็นึกถึง Quartz ขึ้นมาทันที ตัวหากินเลยนะ &lt;img style=&quot;border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none&quot; class=&quot;wlEmoticon wlEmoticon-smile&quot; alt=&quot;ยิ้ม&quot; src=&quot;http://lh4.ggpht.com/_1RQ3WmQ4sk4/TdjhN8hgAdI/AAAAAAAAA0M/WGLIyefVNk0/wlEmoticon-smile%5B2%5D.png?imgmax=800&quot;&gt; เลยได้เวลากลับไปดู Quartz ซะหน่อยหน้า &lt;a href=&quot;http://www.quartz-scheduler.org/&quot; target=&quot;_blank&quot;&gt;page&lt;/a&gt; เขาก็บอกว่า release ล่าสุดเขา 2.0.1 นะเคยแต่ใช้ตัวเก่า 1.6+ ไม่เคยใช้ 2+ มาก่อนเลยโหลดมาลองใช้กัน โอ้วแตกต่างจากวิธีเขียนเดิมไม่มากแต่ถ้าไม่อ่าน doc อาจจะงงเอาได้ทีเดียว ลองเขาไปดูที่ &lt;a href=&quot;http://www.quartz-scheduler.org/docs/2.0/newInQuartz2.html&quot; target=&quot;_blank&quot;&gt;What&#39;s New In Quartz Scheduler 2.0&lt;/a&gt; เกริ่นมาเยอะลองไปดูวิธีเขียนกันดีกว่า&lt;/p&gt; &lt;p&gt;สร้าง TriggerJob ก่อน&lt;/p&gt; &lt;pre&gt;&lt;br /&gt;package org.my.quartz;&lt;br /&gt;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import org.quartz.Job;&lt;br /&gt;import org.quartz.JobExecutionContext;&lt;br /&gt;import org.quartz.JobExecutionException;&lt;br /&gt;import org.quartz.JobKey;&lt;br /&gt;&lt;br /&gt;public class HelloTriggerJob implements Job {&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	public void execute(JobExecutionContext context)&lt;br /&gt;			throws JobExecutionException {&lt;br /&gt;		JobKey jobKey = context.getJobDetail().getKey();&lt;br /&gt;		System.out.println(&quot;HelloJob says: &quot; + jobKey + &quot; executing at &quot;&lt;br /&gt;				+ new Date());&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;แล้วก็สร้าง CronJob&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package org.my.quartz;&lt;br /&gt;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import org.quartz.Job;&lt;br /&gt;import org.quartz.JobExecutionContext;&lt;br /&gt;import org.quartz.JobExecutionException;&lt;br /&gt;import org.quartz.JobKey;&lt;br /&gt;&lt;br /&gt;public class HelloCronJob implements Job {&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	public void execute(JobExecutionContext context)&lt;br /&gt;			throws JobExecutionException {&lt;br /&gt;		JobKey jobKey = context.getJobDetail().getKey();&lt;br /&gt;		System.out.println(&quot;HelloCronJob says: &quot; + jobKey&lt;br /&gt;				+ &quot; this time is &quot; + new Date());&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;พอได้ทั้ง cron และ trigger แล้วเรามาลองสร้าง Quartz Scheduler เพื่อจะใช้ปลุก job ทั้งสองแบบมาทำงานกัน&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package org.my.quartz;&lt;br /&gt;&lt;br /&gt;import java.text.ParseException;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import org.quartz.CronScheduleBuilder;&lt;br /&gt;import org.quartz.CronTrigger;&lt;br /&gt;import org.quartz.DateBuilder;&lt;br /&gt;import org.quartz.JobBuilder;&lt;br /&gt;import org.quartz.JobDetail;&lt;br /&gt;import org.quartz.Scheduler;&lt;br /&gt;import org.quartz.SchedulerException;&lt;br /&gt;import org.quartz.SchedulerFactory;&lt;br /&gt;import org.quartz.SchedulerMetaData;&lt;br /&gt;import org.quartz.Trigger;&lt;br /&gt;import org.quartz.TriggerBuilder;&lt;br /&gt;import org.quartz.impl.StdSchedulerFactory;&lt;br /&gt;&lt;br /&gt;public class MyQuartzScheduler {&lt;br /&gt;&lt;br /&gt;	SchedulerFactory sf;&lt;br /&gt;&lt;br /&gt;	Scheduler sched;&lt;br /&gt;&lt;br /&gt;	private void createCronTrigger() throws SchedulerException, ParseException {&lt;br /&gt;		// job will run every 20 seconds&lt;br /&gt;		JobDetail job = JobBuilder.newJob(HelloCronJob.class).withIdentity(&lt;br /&gt;				&quot;cronjob&quot;, &quot;cronjobgroup1&quot;).build();&lt;br /&gt;		CronScheduleBuilder cronBuilder = CronScheduleBuilder&lt;br /&gt;				.cronSchedule(&quot;0/20 * * * * ?&quot;);&lt;br /&gt;		&lt;br /&gt;		// CronTrigger the job to run on the every 20 seconds&lt;br /&gt;		CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(&lt;br /&gt;				&quot;crontrigger&quot;, &quot;crontriggergroup1&quot;).withSchedule(cronBuilder)&lt;br /&gt;				.build();&lt;br /&gt;		&lt;br /&gt;		// Tell quartz to schedule the job using our crontrigger&lt;br /&gt;		Date ft = sched.scheduleJob(job, cronTrigger);&lt;br /&gt;		System.out.println(job.getKey() + &quot; has been scheduled to run at: &quot;&lt;br /&gt;				+ ft + &quot; and repeat based on expression: &quot;&lt;br /&gt;				+ cronTrigger.getCronExpression());&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void createTrigger() throws SchedulerException {&lt;br /&gt;		// computer a time that is on the next round minute&lt;br /&gt;		Date runTime = DateBuilder.evenMinuteDate(new Date());&lt;br /&gt;&lt;br /&gt;		System.out.println(&quot;------- Scheduling Job  -------------------&quot;);&lt;br /&gt;&lt;br /&gt;		// define the job and tie it to our HelloTriggerJob class&lt;br /&gt;&lt;br /&gt;		JobDetail job = JobBuilder.newJob(HelloTriggerJob.class).withIdentity(&lt;br /&gt;				&quot;triggerjob&quot;, &quot;triggerjobgroup1&quot;).build();&lt;br /&gt;&lt;br /&gt;		// Trigger the job to run on the next round minute&lt;br /&gt;		Trigger trigger = TriggerBuilder.newTrigger().withIdentity(&quot;trigger&quot;,&lt;br /&gt;				&quot;triggergroup1&quot;).startAt(runTime).build();&lt;br /&gt;&lt;br /&gt;		// Tell quartz to schedule the job using our trigger&lt;br /&gt;		sched.scheduleJob(job, trigger);&lt;br /&gt;		System.out.println(job.getKey() + &quot; will run at: &quot; + runTime);&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void init() throws SchedulerException, ParseException {&lt;br /&gt;		System.out.println(&quot;------- Initializing ----------------------&quot;);&lt;br /&gt;		sf = new StdSchedulerFactory();&lt;br /&gt;		sched = sf.getScheduler();&lt;br /&gt;		System.out.println(&quot;------- Initialization Complete -----------&quot;);&lt;br /&gt;&lt;br /&gt;		createTrigger();&lt;br /&gt;&lt;br /&gt;		createCronTrigger();&lt;br /&gt;&lt;br /&gt;		// Start up the scheduler (nothing can actually run until the&lt;br /&gt;		// scheduler has been started)&lt;br /&gt;		sched.start();&lt;br /&gt;&lt;br /&gt;		System.out.println(&quot;------- Started Scheduler -----------------&quot;);&lt;br /&gt;&lt;br /&gt;		// wait long enough so that the scheduler as an opportunity to&lt;br /&gt;		// run the job!&lt;br /&gt;		System.out.println(&quot;------- Waiting 65 seconds... -------------&quot;);&lt;br /&gt;		try {&lt;br /&gt;			// wait 65 seconds to show job&lt;br /&gt;			Thread.sleep(65L * 1000L);&lt;br /&gt;			// executing...&lt;br /&gt;		} catch (Exception e) {&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		// shut down the scheduler&lt;br /&gt;		System.out.println(&quot;------- Shutting Down ---------------------&quot;);&lt;br /&gt;		sched.shutdown(true);&lt;br /&gt;		System.out.println(&quot;------- Shutdown Complete -----------------&quot;);&lt;br /&gt;		&lt;br /&gt;		SchedulerMetaData metaData = sched.getMetaData();&lt;br /&gt;		System.out.println(&quot;Executed &quot; + metaData.getNumberOfJobsExecuted()&lt;br /&gt;				+ &quot; jobs.&quot;);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		try {&lt;br /&gt;			new MyQuartzScheduler().init();&lt;br /&gt;		} catch (SchedulerException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		} catch (ParseException e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ลองทดสอบรันกันดูนะครับ :)&lt;br /&gt;  </content><link rel='replies' type='application/atom+xml' href='http://boysbe-notto.blogspot.com/feeds/4005234136817641924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://boysbe-notto.blogspot.com/2011/05/java-with-quartz-201.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4005234136817641924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5134844746502330440/posts/default/4005234136817641924'/><link rel='alternate' type='text/html' href='http://boysbe-notto.blogspot.com/2011/05/java-with-quartz-201.html' title='Java with Quartz 2.0.1'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08178942456959382242</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_1RQ3WmQ4sk4/TdjhN8hgAdI/AAAAAAAAA0M/WGLIyefVNk0/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry></feed>