<?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: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-441421458098194397</id><updated>2012-01-07T05:35:29.704+02:00</updated><category term='conf'/><category term='javafx'/><category term='appengine'/><category term='javascript'/><category term='java'/><category term='photoshop'/><category term='javaee'/><category term='blogspot'/><category term='.net'/><category term='gwt'/><category term='ria'/><category term='java.javaee'/><category term='CV'/><title type='text'>JOKe's Blog</title><subtitle type='html'>It's about Java and programming.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-2716209553074083164</id><published>2011-09-26T12:11:00.001+03:00</published><updated>2011-09-26T12:11:03.521+03:00</updated><title type='text'>Семинар Java Portlets with Liferay and JSF</title><content type='html'>&lt;h2&gt;Къде?&lt;/h2&gt;  &lt;p&gt;Събитието ще се проведе на 29.09.2011 г от 19:00 до 21:00 в зала 325, на Факултет по математика и информатика към СУ &amp;quot;Св. Климент Охридски&amp;quot;.&lt;/p&gt;  &lt;h1&gt;Описание&lt;/h1&gt;  &lt;p&gt;&lt;img src="http://blog.nvasilev.com/files/2011/09/JS_Mashup_Portlets-1024x640.png" /&gt;&lt;/p&gt;  &lt;p&gt;Портлетите представляват видимия и полезен за крайния потребител резултат от внедряването на &lt;em&gt;Service Oriented Architecture (SOA)&lt;/em&gt;. Те са технология, която дава възможност на бизнес организациите да осигурят повече функционалност, гъвкавост и възможност за персонализация за своите клиенти. С помощта на &lt;em&gt;Web Services for Remote Portlets (WSRP)&lt;/em&gt; стандарта на OASIS за отдалечено публикуване на портлети става възможно бизнес услугите лесно да бъдат интегрирани в партньорски портали. Стандартът се ползва с подкрепата на големите доставчици на портални решения като Oracle&lt;sup&gt;®&lt;/sup&gt;, IBM&lt;sup&gt;®&lt;/sup&gt; и Microsoft&lt;sup&gt;®&lt;/sup&gt;.&lt;/p&gt;  &lt;p&gt;Внедряването на централизирани уеб портали предлага редица предимства за бизнеса:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;осигуряват входна точка за достъп за всички служители, партньори и клиенти &lt;/li&gt;    &lt;li&gt;предлагат достъп до бизнес функционалността прозрачно и независимо от устройството и местоположението &lt;/li&gt;    &lt;li&gt;порталите са гъвкави – те могат да съществуват под формата на B2E intra-nets, B2B extra-nets или B2C inter-nets &lt;/li&gt;    &lt;li&gt;могат да бъдат комбинирани в портални мрежи, които обхващат цялата бизнес екосистема на организацията &lt;/li&gt;    &lt;li&gt;понеже осигуряват „front end“ за различни уеб услуги, те позволяват лесно интегриране на хетерогенни съществуващи приложения и са отворени към бъдещето (future-proof). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;В последните години Java портлетите станаха популярна технология, която позволява лесно споделяне и комбиниране на приложения от различни организации и индивиди в персонализиран уеб портал. Новият портлетно-базиран стил на разработка на уеб приложения дава възможност за създаване на по-разпределени, гъвкави и лесни за повторно използване компоненти, в сравнение с традиционните монолитни решения. Портлетните приложения типично се състоят от множество различни портлети, които могат да бъдат гъвкаво позиционирани върху уеб страницата и комуникират помежду си с използване на споделени параметри (shared parameters), събития (publish/subscribe events), съгласно Portlet Specification 2.0, или чрез JavaScript и AJAX (без презареждане на страницата).&lt;/p&gt;  &lt;p&gt;Презентацията демонстрира разработката на портлети с Portlet 2.0 Specification (JSR-286) и портален сървър Liferay (&lt;a href="http://www.liferay.com/"&gt;http://www.liferay.com&lt;/a&gt;). Liferay е едно от водещите портални решения с отворен код, лидер в Gartner®'s Magic Quadrant for Horizontal Portals.&lt;/p&gt;  &lt;p&gt;Включени са демонстрации на JSP, JSF и Spring портлети, Mashups с използване на Google Maps, както и новости при разработката на портлети с JSF 2.0 и JSF 2 --&amp;gt; Portlet 2 Bridge (&lt;a href="http://www.portletfaces.org"&gt;http://www.portletfaces.org&lt;/a&gt;) и IceFaces (&lt;a href="http://www.icefaces.org"&gt;http://www.icefaces.org&lt;/a&gt;). Ще бъдат разгледани също допълнителни примери за JavaScript портлети и използване на новата JS библиотека Alloy UI базирана върху YUI3 (&lt;a href="http://yuilibrary.com/projects/yui3"&gt;http://yuilibrary.com/projects/yui3&lt;/a&gt;), която замени jQuery при Liferay 6.&lt;/p&gt;  &lt;h1&gt;Лектор&lt;/h1&gt;  &lt;p&gt;&lt;strong&gt;Траян Илиев&lt;/strong&gt; е магистър по Информатика от Софийски университет „Св. Климент Охридски“. От 2003 той е управител на IPT - Intellectual Products &amp;amp; Technologies (&lt;a href="http://yuilibrary.com/projects/yui3"&gt;http://www.iproduct.org&lt;/a&gt;). Компанията е специализирана в провеждането на обучения по JAVA&lt;sup&gt;™&lt;/sup&gt; SE/EE технологии.&lt;/p&gt;  &lt;p&gt;От 2000 година той преподава в Софийски университет, Факултет по математика и информатика, където води курсове: Обектно ориентиран анализ и проектиране с езика UML, Информационни и комуникационни технологии, Системи за подпомагане вземането на решения, Мултимедийни технологии, Изкуствен интелект. Участвал е в редица национални и европейски изследователски проекти.&lt;/p&gt;  &lt;p&gt;Сред неговите технически и изследователски интереси са Service Oriented Architecture, business systems and process modeling using UML and BPMN, Java portlets and portal frameworks (Liferay, GateIn, etc.), AJAX and JavaScript libraries, Java EE technologies (EJB 3.1, JSF 2.0, JPA 2.0, EJB&lt;sup&gt;™&lt;/sup&gt; 3.1, JSF 2.0, REST-ful web services, WSRP), Java multithreading, multi-agent technologies (&lt;a href="http://www.h2j.org"&gt;http://www.h2j.org&lt;/a&gt;).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-2716209553074083164?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/2716209553074083164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=2716209553074083164&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2716209553074083164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2716209553074083164'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/09/java-portlets-with-liferay-and-jsf.html' title='Семинар Java Portlets with Liferay and JSF'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-5372643429859717189</id><published>2011-07-21T17:12:00.005+03:00</published><updated>2011-08-27T22:19:50.010+03:00</updated><title type='text'>Семинар: Новости в Java платформата.</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Анонса е леко нахално взаимстван от блога на Наков(&lt;a title="http://www.nakov.com/blog/2011/07/21/seminar-java-7-java-ee-6-bgjug-27-july-2011/" href="http://www.nakov.com/blog/2011/07/21/seminar-java-7-java-ee-6-bgjug-27-july-2011/"&gt;http://www.nakov.com/blog/2011/07/21/seminar-java-7-java-ee-6-bgjug-27-july-2011/&lt;/a&gt;) поради мързел от моя страна да го напиша. Общо взето промените са replace на Найден Гочев с Аз.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Имам прекрасна новина за всички Java фенове. След като Java 7 официално излезе, дойде ред и на Българскота общност от Java разработчици да се присъедини към поредицата “Java 7 Launch” събития. Благодарение на много хора :+) ще си направим семинарче и парти по случай Java 7 и новостите от Java света, които идват заедно с нея.   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;Програма на семинара&lt;/h2&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Kакво ново в Java 7?   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Kакво ново в Java EE 6?    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Kакво ново в JavaFX 2.0?    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Kакво ново в JavaME?&lt;/p&gt;  &lt;p&gt;Лекциите са част от официалния “Oracle Java 7 Launch Kit”, който е предоставен от Oracle за Българската Java потребителска група (BGJUG) заедно с тениски и други рекламни материали.   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;Кога и къде?&lt;/h2&gt;  &lt;p&gt;Семинарът “Новости от Java платформата” ще се проведе на 27 юли (сряда) от 19:00 часа в учебната зала на Академията на Телерик за софтуерни инженери. Адресът е: &lt;a href="http://maps.google.bg/maps?f=q&amp;source=s_q&amp;hl=bg&amp;geocode=&amp;q=42.650550,+23.379362&amp;aq=&amp;sll=42.650493,23.379166&amp;sspn=0.001353,0.00284&amp;ie=UTF8&amp;t=h&amp;z=16"&gt;София, Младост-1, бул. Александър Малинов 33, партер&lt;/a&gt;.    &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;Лектор&lt;/h2&gt;  &lt;p&gt;Лектор ще бъда аз.&lt;/p&gt;  &lt;h2&gt;Благодарности&lt;/h2&gt;  &lt;p&gt;Благодарностите за организирането на семинара са за:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; BGJUG – организатор на събитието   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Oracle Corp. които предоставиха Java 7 Launch Kit, тениски и рекламни материали за BGJUG    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Петър Тахчиев, който поръча тениските и launch kit-a.&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Академия на Телерик – домакин на събитието    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Светлин Наков, който помогна с намирането на домакин ;)    &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;П.П. Всеки .net-ър, който желае да премине на така наречената light side of the force е добре дошъл, дори при добро поведение може да получи тениска. Все пак всички знаем, че .net е просто най-разпространения fork на Java ;+) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-5372643429859717189?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/5372643429859717189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=5372643429859717189&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/5372643429859717189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/5372643429859717189'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/07/java.html' title='Семинар: Новости в Java платформата.'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-6245357608096714445</id><published>2011-07-05T16:47:00.005+03:00</published><updated>2011-07-05T17:05:38.855+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>JavaScript inheritance (object-oriented programming)</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are many posts explaining what JavaScript inheritance is how it works, is it bad or good, how it is comparable with Java inheritance with millions of examples using third party apis or function to make inheritance look more like C#/C++/Java Inheritance.&lt;/p&gt;  &lt;p&gt;This post is just to show HOW inheritance looks without anything else except browser so next time when you need to find it you can open this post which explains everything you need.&lt;/p&gt;  &lt;p&gt;JavaScript uses so called prototype inheritance you don’t need to know more except it is different then a C#/C++/Java way of doing inheritance&lt;/p&gt;  &lt;h1&gt;Define a class&lt;/h1&gt;  &lt;p&gt;In JavaScript you can define class like this:&lt;/p&gt;  &lt;p&gt;function A(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.aMethod = function (){     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;A method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function () {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert( &amp;quot;B Method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Yes, yes there are different ways I find this one the most easy one&amp;#160; you can read more about the ways how to create a class in JavaScript here : &lt;a title="http://www.phpied.com/3-ways-to-define-a-javascript-class/" href="http://www.phpied.com/3-ways-to-define-a-javascript-class/"&gt;http://www.phpied.com/3-ways-to-define-a-javascript-class/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next you have a class how can you use it ?&lt;/p&gt;  &lt;p&gt;var a = new A();   &lt;br /&gt;a.bMethod(); //will print B method    &lt;br /&gt;a.aMethod(); //will print A method&lt;/p&gt;  &lt;p&gt;BAM nothing else, easy right?&lt;/p&gt;  &lt;p&gt;ok so what if you want to extend this class ? &lt;/p&gt;  &lt;h1&gt;Prototype Inheritance &lt;/h1&gt;  &lt;p&gt;First you will create another class:&lt;/p&gt;  &lt;p&gt;function B(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.cMethod = function () {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;C method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;ok but how can I say that B extends A ? Simple : B.prototype = new A();&lt;/p&gt;  &lt;blockquote&gt;&lt;/blockquote&gt;  &lt;p&gt;Example :&lt;/p&gt;  &lt;p&gt;B.prototype = new A();&lt;/p&gt;  &lt;p&gt;var b = new B();   &lt;br /&gt;b.aMethod(); //will print A method    &lt;br /&gt;b.bMethod(); //will print B method    &lt;br /&gt;b.cMethod(); //will print C method&lt;/p&gt;  &lt;p&gt;Overriding is fine too.&lt;/p&gt;  &lt;p&gt;function B(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function() {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;overriding&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.cMethod = function () {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;C method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;And use it as before ( keep in mind the .prototype = new A is required only ones)&lt;/p&gt;  &lt;p&gt;B.prototype = new A();&lt;/p&gt;  &lt;p&gt;var b = new B();   &lt;br /&gt;b.aMethod(); //will print A method    &lt;br /&gt;b.bMethod(); //will print overriding    &lt;br /&gt;b.cMethod();// will print C method&lt;/p&gt;  &lt;h3&gt;Full example:&lt;/h3&gt;  &lt;p&gt;   &lt;br /&gt;function A(){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.aMethod = function (){     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;A method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function () {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert( &amp;quot;B Method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;function B(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function() {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;overriding&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.cMethod = function () {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;C method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;B.prototype = new A();&lt;/p&gt;  &lt;p&gt;var b = new B();   &lt;br /&gt;b.aMethod(); //will print A method    &lt;br /&gt;b.bMethod(); //will print overriding    &lt;br /&gt;b.cMethod(); //will print C Method    &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;&amp;#160;&lt;/h1&gt;  &lt;h1&gt;Inheritance through Functions&lt;/h1&gt;  &lt;p&gt;If you don’t like prototypes for some reason you can use a inheritance through functions.&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;p&gt;you just need when you define a class B (the subType) to call this.someFunctionName = supertype and then invoke this.someFunctionName(). Example this.extends = A; this.extends();&lt;/p&gt;  &lt;h3&gt;Full Example:&lt;/h3&gt;  &lt;p&gt;   &lt;br /&gt;function A(){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.aMethod = function (){     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;A method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function () {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert( &amp;quot;B Method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;function B(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.extends = A;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.extends();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.bMethod = function() {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;overriding&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.cMethod = function () {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; alert(&amp;quot;C method&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;var b = new B();   &lt;br /&gt;b.aMethod(); //will print A method    &lt;br /&gt;b.bMethod(); //will print overriding    &lt;br /&gt;b.cMethod(); //will print C method&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;UPDATE: Under Internet Explorer if you want to use inheritance through Functions the FUNCTION name that you have to use SHOULD NOT BE "extends" the above example with extends will not work because IE don't like extends :), use some other name like "inheritFrom" for example&lt;/h4&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-6245357608096714445?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/6245357608096714445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=6245357608096714445&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/6245357608096714445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/6245357608096714445'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/07/javascript-inheritance-object-oriented.html' title='JavaScript inheritance (object-oriented programming)'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-2355326840149254915</id><published>2011-06-24T11:33:00.004+03:00</published><updated>2011-06-24T12:48:25.303+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><title type='text'>JavaFX 2.0 nicer way to write RIA but RIA that still looks like CRAP</title><content type='html'>&lt;p&gt;OK don’t get me wrong. I like the new way of JavaFX 2.0 I liked the JavaFX Script but not so match so I like that they get rid of it and that they just plan to make a nice library (alternative to Swing) for creating RIA apps. But please Oracle why this JavaFX still looks like CRAP ?&lt;/p&gt;  &lt;p&gt;I’ve posted an old post for font rendering ( &lt;a title="http://gochev.blogspot.com/2009/08/ria-technologies-lets-compare-font.html" href="http://gochev.blogspot.com/2009/08/ria-technologies-lets-compare-font.html"&gt;http://gochev.blogspot.com/2009/08/ria-technologies-lets-compare-font.html&lt;/a&gt; ) not many things has been changed since then.&lt;/p&gt;  &lt;p&gt;JavaFX was originally created in 2009 I believe 2 years ago at that time the Swing Font rendering also was looking bad on windows BUT NOW IT LOOKS AWESOME. Swing fonts are rendered as 100% cleartype native fonts you cannot make the difference, the things that make many developers use SWT instead of Swing ware gone, because Swing was looking great. But JavaFX… it was looking like CRAP the UI was having nothing RIA inside it even doesn’t have normal looking fonts.&lt;/p&gt;  &lt;p&gt;Today … 2 years later we have JavaFX 2.0 beta… and this beta still looks like CRAP&lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-r4-Nx7saQQA/TgRH4uC_6aI/AAAAAAAAAoM/_-DFGNwxid8/JavaFX20StillLooksLikeCrap.png" /&gt;&lt;/p&gt; &lt;a href="https://lh6.googleusercontent.com/-r4-Nx7saQQA/TgRH4uC_6aI/AAAAAAAAAoM/_-DFGNwxid8/JavaFX20StillLooksLikeCrap.png"&gt;https://lh6.googleusercontent.com/-r4-Nx7saQQA/TgRH4uC_6aI/AAAAAAAAAoM/_-DFGNwxid8/JavaFX20StillLooksLikeCrap.png&lt;/a&gt;  &lt;p&gt;Really ??? Common Guys it is normal there is no real JavaFX application the fonts are UNREADABLE &lt;/p&gt;  &lt;p&gt;Oki anyway the other camp Microsoft … Silvercrap … again it was release in 2007 ! The fonts still looks like NIGHTMARE. &lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-QCgfRFTQRew/TgRJSbyvqmI/AAAAAAAAAoU/4QMDRj-7tco/silverlightCrap.png" /&gt;&lt;/p&gt; &lt;a href="https://lh5.googleusercontent.com/-QCgfRFTQRew/TgRJSbyvqmI/AAAAAAAAAoU/4QMDRj-7tco/silverlightCrap.png"&gt;https://lh5.googleusercontent.com/-QCgfRFTQRew/TgRJSbyvqmI/AAAAAAAAAoU/4QMDRj-7tco/silverlightCrap.png &lt;/a&gt;  &lt;p&gt;Microsoft even successfully broke the IE9 fonts so nothing new. Maybe now when everything in the browser looks like Crap thanks Microsoft maybe now the people will not notice the silverilght crappy fonts.&lt;/p&gt;  &lt;p&gt;I am not an adobe fan but I am starting being one because Flash/Flex fonts really looks AWESOME why Adobe can make it and the Microsoft/Oracle cant ? No idea but in any way I understand why Flash/Flex are so popular they are just made for RIA they LOOKs nice and no no they look AMAZING&lt;/p&gt;  &lt;p&gt;Example a Flex 4.5 application:&lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-XPYBGVdSuVk/TgRIoJHEtMI/AAAAAAAAAoQ/Uh9gFDfYZ1E/FlashFontsAreAwesome.png" /&gt;&lt;/p&gt; &lt;a href="https://lh5.googleusercontent.com/-XPYBGVdSuVk/TgRIoJHEtMI/AAAAAAAAAoQ/Uh9gFDfYZ1E/FlashFontsAreAwesome.png"&gt;https://lh5.googleusercontent.com/-XPYBGVdSuVk/TgRIoJHEtMI/AAAAAAAAAoQ/Uh9gFDfYZ1E/FlashFontsAreAwesome.png&lt;/a&gt;    &lt;p&gt;What can I say ? Ok we have many frameworks for creating RIA and actually only one which is useful.&lt;/p&gt;  &lt;p&gt;P.S. if you ask me ActionScript is a lot like Java maybe it actually really looks like the Script for Java (shame I cannot call it JavaScript because the name is taken &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://lh6.ggpht.com/-vN082WD3-UE/TgRL6nkfyLI/AAAAAAAAAoY/smMoDuVPdLE/wlEmoticon-openmouthedsmile%25255B2%25255D.png?imgmax=800" /&gt; )&lt;/p&gt;&lt;br /&gt;&lt;p/&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;I just red that the font rendering in WPF 4 has been fixed (maybe because Visual Studio 2010 is written in WPF) so .. in WPF it is fine but in silverlight it is not strange.. Still in WPF it is broken by default and you have to use TextOptions.TextFormattingMode="Display" For more info check out &lt;a href="http://blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx"&gt;http://blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Anyway in short normally it looks like this: &lt;br/&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-UKqYV16FWeo/TgRcfMjS_5I/AAAAAAAAAoo/_wKYKJoX49U/WPF4Crap.png"/&gt; &lt;a href="https://lh3.googleusercontent.com/-UKqYV16FWeo/TgRcfMjS_5I/AAAAAAAAAoo/_wKYKJoX49U/WPF4Crap.png"&gt;https://lh3.googleusercontent.com/-UKqYV16FWeo/TgRcfMjS_5I/AAAAAAAAAoo/_wKYKJoX49U/WPF4Crap.png&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;When you add this not default attribute it becomes looking nice&lt;br/&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-fuE6QKGWXoI/TgRcfDWVZDI/AAAAAAAAAos/JFA5WzOsWDI/WPFNice.png"/&gt;&lt;br /&gt;&lt;a href="https://lh6.googleusercontent.com/-fuE6QKGWXoI/TgRcfDWVZDI/AAAAAAAAAos/JFA5WzOsWDI/WPFNice.png"&gt;https://lh6.googleusercontent.com/-fuE6QKGWXoI/TgRcfDWVZDI/AAAAAAAAAos/JFA5WzOsWDI/WPFNice.png&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-2355326840149254915?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/2355326840149254915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=2355326840149254915&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2355326840149254915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2355326840149254915'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/06/javafx-20-nicer-way-to-write-ria-but.html' title='JavaFX 2.0 nicer way to write RIA but RIA that still looks like CRAP'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-r4-Nx7saQQA/TgRH4uC_6aI/AAAAAAAAAoM/_-DFGNwxid8/s72-c/JavaFX20StillLooksLikeCrap.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-7703750181703350234</id><published>2011-05-19T12:19:00.001+03:00</published><updated>2011-05-19T12:19:12.405+03:00</updated><title type='text'>[LINUX] How to find  a specific String in file content with specific file name in specific folder</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is really the dumbest thing ever in linux, there are many many dumb things but this is the dumbest. Ultra trivial task you want to “find a specific string in a file content of specific file type starting from root folder” this is the easiest thing ever, it was not available in Windows XP/98 and because of that I was keeping one JBuilder which can search normally in any java file containing XXX in starting from this folder. But in Windows Vista / 7 this is done EASY just press F3! In Linux on the other hand it is a NIGHTMARE I was having a trivial task which takes… 10 seconds to search for a properties file which contains a default.session.timeout=600 which is a row in this file and this took me more then 30 mins because there are TONS of posts how this is done but none have worked there ware examples using grep, egrep whatever NOTHING is working total CRAP really. So in short I found it somewhere and I want to post it in order to have another POST in google which gives the answers. &lt;/p&gt;  &lt;p&gt;So In short:&lt;/p&gt;  &lt;p&gt;How to search for a file content in linux in specific file names starting from specific root folder.&lt;/p&gt;  &lt;p&gt;find . -name &amp;quot;*.properties&amp;quot; -print | xargs grep default.session.timeout=600&lt;/p&gt;  &lt;p&gt;Which will give you all properties files which contains default.session.timeout=600 it doesn’t have to be the match the whole row you can search for just default.session which will give you all files which contains default.session. This command is typed in the folder that you want to start the search from for example /opt/hybris/&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-7703750181703350234?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/7703750181703350234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=7703750181703350234&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7703750181703350234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7703750181703350234'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/05/linux-how-to-find-specific-string-in.html' title='[LINUX] How to find  a specific String in file content with specific file name in specific folder'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-7551157715404163132</id><published>2011-03-11T12:08:00.003+02:00</published><updated>2011-03-11T12:15:49.008+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Generate JavaDoc with UML diagrams</title><content type='html'>&lt;p&gt;In my life many times has happened when I am assigned to a totally new project that I have no idea what it is about, that has to go live in 2 weeks and that I have to fix some issues in this ultra strange code sometimes even code written in different language.&lt;/p&gt;  &lt;p&gt;On my question is there any documentation the answer is: Yes but it is very old or no. So in short they want me to start working on a project with no documentation at all.&lt;/p&gt;  &lt;p&gt;My second question is is there a javadoc and the anwer is : yeah … kind of … so I am in a project with 30% javadoc with methods in French language for example ( I don’t know even a single word in French) so in short I am loosing 2 weeks to understand what is using what what is the model what is PersonnePhysique&amp;#160; and what is this crazy domain model. &lt;/p&gt;  &lt;p&gt;I believe this has happened with everyone of you at least once so what can you do ?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can start digging into the java code like crazy ( like everyone of us have tried many times)&lt;/li&gt;    &lt;li&gt;You can install intellij idea and use the great reverse engineering way to create UML diagrams for specific classes but intelliJ idea costs money.&lt;/li&gt;    &lt;li&gt;You can install netbeans 6.5 and do the same but you have to use this out dated version of NetBeans because this doesn’t exist in newer versions, thanks Oracle.&lt;/li&gt;    &lt;li&gt;You can install Eclipse + MoDisco + MDT + KML to generate xmisomething file then to generate xml file with KML thingy then to use UML2 tools to view this diagram blah.&lt;/li&gt;    &lt;li&gt;Or you can find some other way… this is the other way which I believe is very nice and useful and you should use it in every project that you can actually this should be the first thing that the architect should put in the project.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So in short the other way is to generate a UML diagrams each time when a javadoc is generated it will generate a UML diagrams for each class and package which contains whatever you want operations,attributes,constructors just names you can click on them and navigate using them it is AWESOME.&lt;/p&gt;  &lt;p&gt;How this will look like ? like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3bRKrrchPfA/TXn0mIjnNYI/AAAAAAAAAks/cuhbORgkX2c/s1600-h/uml1%5B5%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="uml1" border="0" alt="uml1" src="http://lh4.ggpht.com/_3bRKrrchPfA/TXn0mlHYkaI/AAAAAAAAAkw/AlS7NmTC9fA/uml1_thumb%5B3%5D.png?imgmax=800" width="557" height="391" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And you can click on items for example on Category which will forward you to the Category javadoc which has a diagram as well which looks like this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3bRKrrchPfA/TXn0nMfmENI/AAAAAAAAAk0/I2wySgdQzRk/s1600-h/UML2%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="UML2" border="0" alt="UML2" src="http://lh4.ggpht.com/_3bRKrrchPfA/TXn0nkfYCxI/AAAAAAAAAk4/tjj70pg8uhU/UML2_thumb%5B1%5D.png?imgmax=800" width="565" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Awesome right ?&lt;/p&gt;  &lt;p&gt;How you can do it ? In my example I will use maven so what you have to do :&lt;/p&gt;  &lt;p&gt;use of UmlGraph&lt;/p&gt;  &lt;p&gt;use of Graphviz&lt;/p&gt;  &lt;p&gt;change of maven pom.xml update (for ant integration check the last link in the blog post)&lt;/p&gt;  &lt;p&gt;1) install graphviz on the machine that will generate the javadoc .. usually this is a linux machine which runs hudson or whatever so in case of ubuntu you just need apt-get install graphviz4 otherwise you can download the msi/deb/rpg/source from here &lt;a title="http://www.graphviz.org/Download..php" href="http://www.graphviz.org/Download..php"&gt;http://www.graphviz.org/Download..php&lt;/a&gt; then just type “dot –-help” in console to check that the dot executable is in your path.&lt;/p&gt;  &lt;p&gt;2) update your pom.xml adding UmlGraph just add:&lt;/p&gt;  &lt;p&gt;&amp;lt;plugin&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;artifactId&amp;gt;maven-javadoc-plugin&amp;lt;/artifactId&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;version&amp;gt;2.7&amp;lt;/version&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;configuration&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;aggregate&amp;gt;true&amp;lt;/aggregate&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;show&amp;gt;private&amp;lt;/show&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;doclet&amp;gt;org.umlgraph.doclet.UmlGraphDoc&amp;lt;/doclet&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;docletArtifact&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;groupId&amp;gt;org.umlgraph&amp;lt;/groupId&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;artifactId&amp;gt;doclet&amp;lt;/artifactId&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;version&amp;gt;5.1&amp;lt;/version&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/docletArtifact&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;additionalparam&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -inferrel -attributes -types -visibility -inferdep -quiet -hide java.* -collpackages java.util.* -qualify -postfixpackage    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -nodefontsize 9    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -nodefontpackagesize 7    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/additionalparam&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/configuration&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/plugin&amp;gt;&lt;/p&gt;  &lt;p&gt;3) invoke mvn javadoc:javadoc … and you are done. :+) easy right ? You can see explanation about all umlgraph options here &lt;a title="http://www.umlgraph.org/doc/indexw.html" href="http://www.umlgraph.org/doc/indexw.html"&gt;http://www.umlgraph.org/doc/indexw.html&lt;/a&gt; like do you don’t want to see the attributes, but you want the operations and etc..&lt;/p&gt;  &lt;p&gt;Example with operations will look like this:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://java.dzone.com/sites/all/files/images/uml-diagram.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For ant integration check &lt;a title="http://java.dzone.com/articles/reverse-engineer-source-code-u" href="http://java.dzone.com/articles/reverse-engineer-source-code-u"&gt;http://java.dzone.com/articles/reverse-engineer-source-code-u&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-7551157715404163132?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/7551157715404163132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=7551157715404163132&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7551157715404163132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7551157715404163132'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2011/03/generate-javadoc-with-uml-diagrams.html' title='Generate JavaDoc with UML diagrams'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3bRKrrchPfA/TXn0mlHYkaI/AAAAAAAAAkw/AlS7NmTC9fA/s72-c/uml1_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-985545082118798732</id><published>2010-07-27T16:07:00.001+03:00</published><updated>2010-07-27T16:07:17.571+03:00</updated><title type='text'>Using of Collections.emptyList() the right way in Java 1.5+</title><content type='html'>&lt;meta content="text/html; charset=windows-1251" http-equiv="Content-Type" /&gt;&lt;meta name="Generator" content="Microsoft Word 12 (filtered)" /&gt;&lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:consolas;&lt;br /&gt;	panose-1:2 11 6 9 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:70.85pt 70.85pt 70.85pt 70.85pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;It is little strange that no one really uses emptyList like he should in Java.      &lt;br /&gt;So this is small post showing how to use the emptyList method in the Collections class. &lt;/p&gt;    &lt;p&gt;Question: How to create an empty list ?      &lt;br /&gt;lets assume that we have a class Book with multiple titles.       &lt;br /&gt;So the class in our examples will be:&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; java.util.List;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; Book {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; List&amp;lt;String&amp;gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000c0" lang="EN-US"&gt;titles&lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; setTitles(List&amp;lt;String&amp;gt; titles) {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;.&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000c0" lang="EN-US"&gt;titles&lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; = titles;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; List&amp;lt;String&amp;gt; getTitles() {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000c0"&gt;titles&lt;/span&gt;&lt;span style="font-family: consolas; color: black"&gt;;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;}&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Lets say that in our snippet we have something like :&lt;/p&gt;   &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:consolas;&lt;br /&gt;	panose-1:2 11 6 9 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:70.85pt 70.85pt 70.85pt 70.85pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;    &lt;div class="Section1"&gt;     &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160; Book myCrazyBook=&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black"&gt; Book();&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;and we want to assign an empty list to the titles in this book. This is a common scenario if you want to set something to be emptyList in specific case instead of null. &lt;/p&gt;  &lt;p&gt;So of course your first try will be something like:    &lt;br /&gt;Answer 1:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div class="Section1"&gt;     &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160; myCrazyBook.setTitles(&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-family: consolas; color: #7f0055"&gt;new&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;span style="font-family: consolas; color: black"&gt; ArrayList()&lt;/span&gt;&lt;/u&gt;&lt;span style="font-family: consolas; color: black"&gt;);&amp;#160; &lt;/span&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;-WARRNING - ArrayList is a raw type. References to generic type ArrayList&amp;lt;E&amp;gt; should be parameterized &lt;/p&gt;  &lt;p&gt;Ok changing to:&lt;/p&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;myCrazyBook.setTitles(&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; ArrayList&amp;lt;String&amp;gt;());&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;WTF ? the problem in this answer is not small one :    &lt;br /&gt;- you are creating empty ArrayList which basiclly is not needed. ( what if you are in a loop 1000+ empty ArrayLists ? )&lt;/p&gt;  &lt;p&gt;Answer 2.&lt;/p&gt; &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:consolas;&lt;br /&gt;	panose-1:2 11 6 9 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:70.85pt 70.85pt 70.85pt 70.85pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;p&gt;&amp;#160;&amp;#160; &lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;myCrazyBook.setTitles(&lt;u&gt;Collections.&lt;/u&gt;&lt;/span&gt;&lt;i&gt;&lt;u&gt;&lt;span style="font-family: consolas; color: #0000c0" lang="EN-US"&gt;EMPTY_LIST&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;-WARNING : Type safety: The expression of type List needs unchecked conversion to conform to List&amp;lt;String&amp;gt;, because the EMPTY_LIST is raw type, which was heavily used before Java 1.5.    &lt;br /&gt;The definition of this list is :&lt;/p&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: #3f5fbf" lang="EN-US"&gt;/**&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: #3f5fbf" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; * The empty list (immutable).&amp;#160; This list is serializable.&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: #3f5fbf" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: #3f5fbf"&gt;*&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: #3f5fbf"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; * &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f9fbf"&gt;@see&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: #3f5fbf"&gt; #emptyList()&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: #3f5fbf"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; */&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;final&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; List &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: consolas; color: #0000c0" lang="EN-US"&gt;EMPTY_LIST&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; = &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; EmptyList();&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;So you see it is not ArrayList or LinkedList or MyCrazyCustomListWhichIUseEveryWhereList.&lt;/p&gt;  &lt;p&gt;Answer 3:    &lt;br /&gt;Eclipse will tell you this answer : Replace with Collections.emptyList();&lt;/p&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCrazyBook.&lt;u&gt;setTitles&lt;/u&gt;(Collections.&lt;i&gt;emptyList&lt;/i&gt;()); &lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;COMPILE TIME ERROR: why ? because emptyList invoked like that means List of Objects not List of String. The other thing is that you cannot cast to List&amp;lt;String&amp;gt; because you cannot cast List&amp;lt;Object&amp;gt;&amp;#160; to List&amp;lt;String&amp;gt;.&lt;/p&gt;  &lt;p&gt;Answer 4:    &lt;br /&gt;You know that there is Collections.emptyList() AND YOU KNOW THAT IT RETURNS List&amp;lt;T&amp;gt;     &lt;br /&gt;so your answer is:&lt;/p&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;Book myCrazyBook=&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; Book();&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;String&amp;gt; titles = Collections.&lt;i&gt;emptyList&lt;/i&gt;();&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: black"&gt;myCrazyBook.setTitles(titles);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;And this will work WITHOUT any WARNINGS or ERRORS. The type of the List is taken from the type of the variable that you are trying to assign to.    &lt;br /&gt;Of course why you need this local variable ? I want to remove it it is not needed and used, but if you remove it you are in Answer 3. So what can you do ? &lt;/p&gt;  &lt;p&gt;Answer 5: The right but strange looking answer.&lt;/p&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;Book myCrazyBook=&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; Book();&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCrazyBook.setTitles(Collections.&amp;lt;String&amp;gt;&lt;i&gt;emptyList&lt;/i&gt;());&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Yes this is not a joke there is a dot (.) then the generic type before the method name. This compiles, runs, no warnings thats the real way.    &lt;br /&gt;It is a little strange that most people dont know this aspect of generics in Java even I didn't know it, I was thinking that you cannot pass a generic type like this but as it looks you can. &lt;/p&gt;  &lt;p&gt;So if you have some static method like this one:&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; Main{&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; &amp;lt;G&amp;gt; List&amp;lt;G&amp;gt; someGreatMethod(){&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;G&amp;gt; gList= &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055" lang="EN-US"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt; ArrayList&amp;lt;G&amp;gt;();&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: consolas; color: #7f0055"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: black"&gt; gList;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: black"&gt;}&lt;/span&gt;&lt;/p&gt; you can invoke it with Main.&amp;lt;String&amp;gt;someGreatMethod(); for example.    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-985545082118798732?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/985545082118798732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=985545082118798732&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/985545082118798732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/985545082118798732'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2010/07/using-of-collectionsemptylist-right-way.html' title='Using of Collections.emptyList() the right way in Java 1.5+'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-2859480820177699300</id><published>2010-06-29T12:19:00.001+03:00</published><updated>2010-06-29T12:25:19.732+03:00</updated><title type='text'>Spring MVC, Spring Bean Validation Framework and validating confirm password / confirm email fields.</title><content type='html'>&lt;p&gt;How to write validation like confirm password, confirm email and etc in Spring MVC. &lt;/p&gt;  &lt;p&gt;NOTE: To make bean validation to work its nice to read this tutorial: &amp;lt;a href=&amp;quot;&lt;a href="http://wheelersoftware.com/articles/spring-bean-validation-framework.html&amp;quot;"&gt;http://wheelersoftware.com/articles/spring-bean-validation-framework.html&amp;quot;&lt;/a&gt;&amp;gt;&amp;lt;/a&amp;gt; &lt;/p&gt;  &lt;p&gt;Today I was busy making some validations and implementations on very common scenario:   &lt;br /&gt;change email and password.    &lt;br /&gt;So we have a new password AND a new email also for both of them we have a confirm email/password field. And we want to validate everything nicely and to show to the user the real validation message if there is some error.    &lt;br /&gt;So ... I've to use a form which already uses some annotations like @NoBlank and etc I think everyone of you is using annotations framework if you don't use it SHAME ON YOU !:)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Anyway so I've added some fields to existing form bean:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;private String newPassword;     &lt;br /&gt;private String confirmNewPassword;      &lt;br /&gt;private String newEmail;      &lt;br /&gt;private String confirmNewEmail;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Basiclly in my case this is very big form and none of this fields is mendatory so the user can leave all of them blank. My first idea was to add at least Length for the password and Email annotations for the email so I do:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Length(min=6,max=20)     &lt;br /&gt;private String newPassword;      &lt;br /&gt;private String confirmNewPassword;      &lt;br /&gt;@Email      &lt;br /&gt;private String newEmail;      &lt;br /&gt;private String confirmNewEmail;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Ok but the confirm fields should have the same rules ? Maybe...   &lt;br /&gt;The problem that I saw is that length and email by default means NotBlank.    &lt;br /&gt;To make email validator to work or length validator they first check is the field blank. In my case I want the blank to be OK.. so I asked god google what to do.    &lt;br /&gt;The answer applyIf.     &lt;br /&gt;So at the end I get :&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Length(min = 6, max = 20, applyIf = &amp;quot;newPassword is not blank&amp;quot;) //cool right ?     &lt;br /&gt;private String newPassword;      &lt;br /&gt;private String confirmNewPassword;      &lt;br /&gt;@Email(applyIf = &amp;quot;newEmail is not blank&amp;quot;) //cool right ?      &lt;br /&gt;private String newEmail;      &lt;br /&gt;private String confirmNewEmail;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Cool right ? yep it is cool. but let me add the validation for confirmNewPassword and confirmNewEmail.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Length(min = 6, max = 20, applyIf = &amp;quot;newPassword is not blank&amp;quot;)     &lt;br /&gt;private String newPassword;      &lt;br /&gt;@NotBlank(applyIf = &amp;quot;newPassword is not blank&amp;quot;)      &lt;br /&gt;private String confirmNewPassword; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Email(applyIf = &amp;quot;newEmail is not blank&amp;quot;)     &lt;br /&gt;private String newEmail;      &lt;br /&gt;@NotBlank(applyIf = &amp;quot;newEmail is not blank&amp;quot;)      &lt;br /&gt;@Email(applyIf = &amp;quot;newEmail is not blank&amp;quot;)      &lt;br /&gt;private String confirmNewEmail;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Nice.. so I have validation on new* fields only if they are not blank. Also I have a validation on the confirm fields only if again new* fields are not blank.   &lt;br /&gt;Cool... what left ? ahh the most hard part to check is the confirmpassword the same as the newPassword and is the confirmEmail same as the newEmail. &lt;/p&gt;  &lt;p&gt;the first idea ofcourse is to write a custom validator.   &lt;br /&gt;So I write this :&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;class NewPassAndEmailValidator implements Validator {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @Override      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public boolean supports(Class&amp;lt;?&amp;gt; clazz) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return PersonalDetailsFormBean.class.equals(clazz);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; @Override     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public void validate(Object obj, Errors errors) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PersonalDetailsFormBean personalDetailsFormBean = (PersonalDetailsFormBean) obj;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (personalDetailsFormBean.getNewPassword() != null      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;&amp;amp; !personalDetailsFormBean.getNewPassword().equals(&amp;quot;&amp;quot;)) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!personalDetailsFormBean.getNewPassword().equals(personalDetailsFormBean.getConfirmNewPassword())) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; errors.rejectValue(&amp;quot;confirmNewPassword&amp;quot;, &amp;quot;PersonalDetailsFormBean.confirmNewPassword[customvalidator]&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (personalDetailsFormBean.getNewEmail() != null &amp;amp;&amp;amp; !personalDetailsFormBean.getNewEmail().equals(&amp;quot;&amp;quot;)) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!personalDetailsFormBean.getNewEmail().equals(personalDetailsFormBean.getConfirmNewEmail())) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; errors.rejectValue(&amp;quot;confirmNewEmail&amp;quot;, &amp;quot;PersonalDetailsFormBean.confirmNewEmail[customvalidator]&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;and then in the controller submit method.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;validator.validate(personalDetailsFormBean, result); //this invokes the annotation based validator. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;NewPassAndEmailValidator newPassAndEmailValidator = new NewPassAndEmailValidato();     &lt;br /&gt;newPassAndEmailValidator.validate(personalDetailsFormBean, result); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;if (result.hasErrors()) {     &lt;br /&gt;... return...      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This .... WORKS FINE. BUT... ah its not cool :( ... I mean even in struts 1 in 2001 we ware having a validation based on expression. AND we have even better way here... Awesome :D&lt;/p&gt;  &lt;p&gt;So I've removed this validator... and write only &amp;quot;this&amp;quot;:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Expression(value = &amp;quot;confirmNewPassword = newPassword&amp;quot;, applyIf = &amp;quot;newPassword is not blank&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So the final example looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Length(min = 6, max = 20, applyIf = &amp;quot;newPassword is not blank&amp;quot;)     &lt;br /&gt;private String newPassword;      &lt;br /&gt;@NotBlank(applyIf = &amp;quot;newPassword is not blank&amp;quot;)      &lt;br /&gt;@Expression(value = &amp;quot;confirmNewPassword = newPassword&amp;quot;, applyIf = &amp;quot;newPassword is not blank&amp;quot;)      &lt;br /&gt;private String confirmNewPassword; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;@Email(applyIf = &amp;quot;newEmail is not blank&amp;quot;)     &lt;br /&gt;private String newEmail;      &lt;br /&gt;@NotBlank(applyIf = &amp;quot;newEmail is not blank&amp;quot;)      &lt;br /&gt;@Email(applyIf = &amp;quot;newEmail is not blank&amp;quot;)      &lt;br /&gt;@Expression(value = &amp;quot;confirmNewEmail = newEmail&amp;quot;, applyIf = &amp;quot;newEmail is not blank&amp;quot;)      &lt;br /&gt;private String confirmNewEmail;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;:) ok this looks cool :D maybe not so cool than 20+ if statements to checks for null for some of you to but I like this way :))&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-2859480820177699300?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/2859480820177699300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=2859480820177699300&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2859480820177699300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2859480820177699300'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2010/06/spring-mvc-spring-bean-validation.html' title='Spring MVC, Spring Bean Validation Framework and validating confirm password / confirm email fields.'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-7844857008334370257</id><published>2009-10-26T17:56:00.028+02:00</published><updated>2009-10-27T12:20:54.048+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>JavaEE 5 (JSF + JPA + EJB3) using Eclipse</title><content type='html'>Today I will show you how to create Enterprise Application using Java EE 5 and GlassFish.&lt;br /&gt;I will use &lt;br /&gt;- Eclipse 3.5 + WTP&lt;br /&gt;- GlassFish v. 2.1&lt;br /&gt;- JSF Mojarra implementation.&lt;br /&gt;- EJB 3.0.&lt;br /&gt;- JPA Toplink essentials implementation.&lt;br /&gt;- MySQL&lt;br /&gt;No NetBeans or JDeveloper magic involved :)&lt;br /&gt;The prerequirement is:&lt;br /&gt;Add datasource in glassfish. Read this how you can make this here: &lt;a href="http://gochev.blogspot.com/2009/10/creating-datasource-in-glassfish-v-21.html"&gt;http://gochev.blogspot.com/2009/10/creating-datasource-in-glassfish-v-21.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1) First you need to add glassfish in your eclipse.&lt;br /&gt;- Go to Servers View&lt;br /&gt;- Right Click, New&lt;br /&gt;- Choose GlassFish v 2.1 if you dont have glassfish click on Download additional adapters link choose glassfish wait and restart eclipse. Than try again.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXmLnLO4qI/AAAAAAAAAcw/qD3V0bDbFsE/s1600-h/newServer.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXmLnLO4qI/AAAAAAAAAcw/qD3V0bDbFsE/s400/newServer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396972815642452642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXmajN3Q7I/AAAAAAAAAc4/mwNJXg4knH8/s1600-h/newServer2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXmajN3Q7I/AAAAAAAAAc4/mwNJXg4knH8/s400/newServer2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973072277783474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXmhl6hocI/AAAAAAAAAdA/vktCxfEfUNs/s1600-h/newServer3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXmhl6hocI/AAAAAAAAAdA/vktCxfEfUNs/s400/newServer3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973193261064642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXmnsVUBII/AAAAAAAAAdI/q-vr8oVVwkg/s1600-h/newServer4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXmnsVUBII/AAAAAAAAAdI/q-vr8oVVwkg/s400/newServer4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973298063246466" /&gt;&lt;/a&gt;&lt;br /&gt;2) Create the database&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXoo2nbxlI/AAAAAAAAAew/NdrSu9nN-q0/s1600-h/DatabaseTable.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXoo2nbxlI/AAAAAAAAAew/NdrSu9nN-q0/s400/DatabaseTable.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396975517026731602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;CREATE&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;TABLE&lt;/span&gt; &lt;span style="color: #666666"&gt;`&lt;/span&gt;lesson&lt;span style="color: #666666"&gt;`&lt;/span&gt;.&lt;span style="color: #666666"&gt;`&lt;/span&gt;USERS&lt;span style="color: #666666"&gt;`&lt;/span&gt; (&lt;br /&gt;  &lt;span style="color: #666666"&gt;`&lt;/span&gt;id&lt;span style="color: #666666"&gt;`&lt;/span&gt; &lt;span style="color: #008000"&gt;INTEGER&lt;/span&gt; UNSIGNED &lt;span style="color: #008000; font-weight: bold"&gt;NOT&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;NULL&lt;/span&gt; AUTO_INCREMENT,&lt;br /&gt;  &lt;span style="color: #666666"&gt;`&lt;/span&gt;username&lt;span style="color: #666666"&gt;`&lt;/span&gt; &lt;span style="color: #008000"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: #666666"&gt;45&lt;/span&gt;) &lt;span style="color: #008000; font-weight: bold"&gt;NOT&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;NULL&lt;/span&gt;,&lt;br /&gt;  &lt;span style="color: #666666"&gt;`&lt;/span&gt;password&lt;span style="color: #666666"&gt;`&lt;/span&gt; &lt;span style="color: #008000"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: #666666"&gt;45&lt;/span&gt;) &lt;span style="color: #008000; font-weight: bold"&gt;NOT&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;NULL&lt;/span&gt;,&lt;br /&gt;  &lt;span style="color: #666666"&gt;`&lt;/span&gt;name&lt;span style="color: #666666"&gt;`&lt;/span&gt; &lt;span style="color: #008000"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: #666666"&gt;45&lt;/span&gt;) &lt;span style="color: #008000; font-weight: bold"&gt;NOT&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;NULL&lt;/span&gt;,&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;KEY&lt;/span&gt; (&lt;span style="color: #666666"&gt;`&lt;/span&gt;id&lt;span style="color: #666666"&gt;`&lt;/span&gt;)&lt;br /&gt;)&lt;br /&gt;ENGINE &lt;span style="color: #666666"&gt;=&lt;/span&gt; InnoDB;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) Create EJB project&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXmxu80TiI/AAAAAAAAAdQ/EChcefG7y4w/s1600-h/2newEJB.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXmxu80TiI/AAAAAAAAAdQ/EChcefG7y4w/s400/2newEJB.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973470564503074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXm2-QqXII/AAAAAAAAAdY/uaQXNHVA988/s1600-h/2newEJB2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 352px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXm2-QqXII/AAAAAAAAAdY/uaQXNHVA988/s400/2newEJB2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973560573615234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXm-kGjrlI/AAAAAAAAAdg/Ys3TBWQcjqA/s1600-h/2newEJB3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 353px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXm-kGjrlI/AAAAAAAAAdg/Ys3TBWQcjqA/s400/2newEJB3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973690990866002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXnE4Se04I/AAAAAAAAAdo/XHnofT2_dwk/s1600-h/2newEJB4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 353px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXnE4Se04I/AAAAAAAAAdo/XHnofT2_dwk/s400/2newEJB4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396973799488803714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Add persistance.xml file in META-INF folder&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;persistence&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/xml/ns/persistence&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #7D9029"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;version=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;persistence-unit&lt;/span&gt; &lt;span style="color: #7D9029"&gt;name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;toursUnit&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jta-data-source&amp;gt;&lt;/span&gt;lessonMySQL&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jta-data-source&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;class&amp;gt;&lt;/span&gt;org.joke.model.User&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/class&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/persistence-unit&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/persistence&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5) Create Simple Entity org.joke.model.User&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;package&lt;/span&gt; org&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;joke&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;model&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.Basic&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.Entity&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.GeneratedValue&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.GenerationType&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.Id&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.Table&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #AA22FF"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #AA22FF"&gt;@Table&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;name &lt;span style="color: #666666"&gt;=&lt;/span&gt; &lt;span style="color: #BA2121"&gt;&amp;quot;USERS&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;User&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; Long id&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; String name&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; String username&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; String password&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@Id&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@GeneratedValue&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;strategy &lt;span style="color: #666666"&gt;=&lt;/span&gt; GenerationType&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;IDENTITY&lt;/span&gt;&lt;span style="color: #666666"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; Long &lt;span style="color: #0000FF"&gt;getId&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; id&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000FF"&gt;setId&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;Long id&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;id&lt;/span&gt; &lt;span style="color: #666666"&gt;=&lt;/span&gt; id&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@Basic&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String &lt;span style="color: #0000FF"&gt;getName&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; name&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000FF"&gt;setName&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String name&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;name&lt;/span&gt; &lt;span style="color: #666666"&gt;=&lt;/span&gt; name&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@Basic&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String &lt;span style="color: #0000FF"&gt;getUsername&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; username&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000FF"&gt;setUsername&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String username&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;username&lt;/span&gt; &lt;span style="color: #666666"&gt;=&lt;/span&gt; username&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@Basic&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String &lt;span style="color: #0000FF"&gt;getPassword&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; password&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000FF"&gt;setPassword&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String password&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;password&lt;/span&gt; &lt;span style="color: #666666"&gt;=&lt;/span&gt; password&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;6) Create HelloService EJB that will use EntityManager&lt;br /&gt;&lt;br /&gt;- The local interface is:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;package&lt;/span&gt; org&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;joke&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;service&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.ejb.Local&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;org.joke.model.User&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #AA22FF"&gt;@Local&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;interface&lt;/span&gt; HelloService &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; User &lt;span style="color: #0000FF"&gt;login&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String username&lt;span style="color: #666666"&gt;,&lt;/span&gt;String password&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;-The implementation is:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;package&lt;/span&gt; org&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;joke&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;service&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;java.util.List&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.ejb.Stateless&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.EntityManager&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.PersistenceContext&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.persistence.Query&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;org.joke.model.User&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #408080; font-style: italic"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #408080; font-style: italic"&gt; * Session Bean implementation class HelloServiceImpl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #408080; font-style: italic"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #AA22FF"&gt;@Stateless&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;HelloServiceImpl&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;implements&lt;/span&gt; HelloService &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@PersistenceContext&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;unitName &lt;span style="color: #666666"&gt;=&lt;/span&gt; &lt;span style="color: #BA2121"&gt;&amp;quot;toursUnit&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;)&lt;/span&gt;&lt;br /&gt; EntityManager em&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;HelloServiceImpl&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@Override&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; User &lt;span style="color: #0000FF"&gt;login&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String username&lt;span style="color: #666666"&gt;,&lt;/span&gt; String password&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  Query query &lt;span style="color: #666666"&gt;=&lt;/span&gt; em&lt;br /&gt;    &lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;createQuery&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;select u from User u where u.username = :username and u.password = :password&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;  query&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;setParameter&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;,&lt;/span&gt; username&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;  query&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;setParameter&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;,&lt;/span&gt; password&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  List&lt;span style="color: #666666"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: #666666"&gt;&amp;gt;&lt;/span&gt; result &lt;span style="color: #666666"&gt;=&lt;/span&gt; query&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;getResultList&lt;/span&gt;&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt; &lt;span style="color: #666666"&gt;(&lt;/span&gt;result &lt;span style="color: #666666"&gt;!=&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt; &lt;span style="color: #666666"&gt;&amp;amp;&amp;amp;&lt;/span&gt; result&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;size&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #666666"&gt;0)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; result&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;get&lt;/span&gt;&lt;span style="color: #666666"&gt;(0);&lt;/span&gt; &lt;span style="color: #408080; font-style: italic"&gt;//first user&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;7) Create Dynamic Web Project&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXnT65xhfI/AAAAAAAAAdw/heLRYvmO5Ec/s1600-h/3newWeb1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXnT65xhfI/AAAAAAAAAdw/heLRYvmO5Ec/s400/3newWeb1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396974057888515570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXnbfemykI/AAAAAAAAAd4/AtIxdW8f2Z8/s1600-h/3newWeb2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 354px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXnbfemykI/AAAAAAAAAd4/AtIxdW8f2Z8/s400/3newWeb2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396974187965762114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXnkgL3-SI/AAAAAAAAAeA/eMpqDYLEulc/s1600-h/3newWeb3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 352px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXnkgL3-SI/AAAAAAAAAeA/eMpqDYLEulc/s400/3newWeb3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396974342774454562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXnpFDkJmI/AAAAAAAAAeI/CUC6llMpQGw/s1600-h/3newWeb4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 352px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXnpFDkJmI/AAAAAAAAAeI/CUC6llMpQGw/s400/3newWeb4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396974421391189602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8) Add JSF to this Dynamic Web Project&lt;br /&gt;&lt;br /&gt;- Edit web.xml and add FacesServlet &lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;servlet&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;display-name&amp;gt;&lt;/span&gt;FacesServlet&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/display-name&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;servlet-name&amp;gt;&lt;/span&gt;Faces Servlet&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/servlet-name&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;servlet-class&amp;gt;&lt;/span&gt;javax.faces.webapp.FacesServlet&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/servlet-class&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;load-on-startup&amp;gt;&lt;/span&gt;1&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/load-on-startup&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/servlet&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;servlet-name&amp;gt;&lt;/span&gt;Faces Servlet&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/servlet-name&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;url-pattern&amp;gt;&lt;/span&gt;*.jsf&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/url-pattern&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;9) I will use a very simple login form (login.jsp) and home.jsp where you will go if login is successfull.&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:root&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:jsp=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/JSP/Page&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xmlns:f=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/jsf/core&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xmlns:h=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/jsf/html&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;version=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:directive.page&lt;/span&gt; &lt;span style="color: #7D9029"&gt;language=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;java&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #7D9029"&gt;contentType=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;pageEncoding=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #BC7A00"&gt;&amp;lt;![CDATA[ &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #BC7A00"&gt;&amp;lt;![CDATA[ &amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;meta&lt;/span&gt; &lt;span style="color: #7D9029"&gt;http-equiv=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;content=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Hello JSF Page&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;f:view&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;h:messages&lt;/span&gt; &lt;span style="color: #7D9029"&gt;style=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;color:red;&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/h:messages&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;h:form&lt;/span&gt; &lt;span style="color: #7D9029"&gt;id=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;loginForm&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;table&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7D9029"&gt;align=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;right&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: #7D9029"&gt;value=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Username: &amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&amp;gt;&amp;lt;h:inputText&lt;/span&gt; &lt;span style="color: #7D9029"&gt;id=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #7D9029"&gt;value=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;#{userBean.currentUser.username}&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;required=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;f:validateLength&lt;/span&gt; &lt;span style="color: #7D9029"&gt;maximum=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;10&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;minimum=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;3&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/h:inputText&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&amp;gt;&amp;lt;h:message&lt;/span&gt; &lt;span style="color: #7D9029"&gt;for=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;username&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;style=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;color:red;&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7D9029"&gt;align=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;right&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: #7D9029"&gt;value=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Password: &amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&amp;gt;&amp;lt;h:inputSecret&lt;/span&gt; &lt;span style="color: #7D9029"&gt;id=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #7D9029"&gt;value=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;#{userBean.currentUser.password}&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;required=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&amp;gt;&amp;lt;h:message&lt;/span&gt; &lt;span style="color: #7D9029"&gt;for=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;style=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;color:red;&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7D9029"&gt;colspan=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;h:commandButton&lt;/span&gt; &lt;span style="color: #7D9029"&gt;value=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #7D9029"&gt;action=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;#{userBean.login}&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/h:form&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/f:view&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:root&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;- The home.jsp looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:root&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:jsp=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/JSP/Page&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xmlns:f=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/jsf/core&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xmlns:h=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/jsf/html&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;version=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:directive.page&lt;/span&gt; &lt;span style="color: #7D9029"&gt;language=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;java&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #7D9029"&gt;contentType=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;pageEncoding=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #BC7A00"&gt;&amp;lt;![CDATA[ &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #BC7A00"&gt;&amp;lt;![CDATA[ &amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;meta&lt;/span&gt; &lt;span style="color: #7D9029"&gt;http-equiv=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;content=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Hello JSF Page&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;f:view&amp;gt;&lt;/span&gt;&lt;br /&gt;   Welcome user &lt;br /&gt;  &lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/f:view&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/jsp:root&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- and faces-config.xml looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;faces-config&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://java.sun.com/xml/ns/javaee &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #BA2121"&gt;      http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #7D9029"&gt;version=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;1.2&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;navigation-rule&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;from-view-id&amp;gt;&lt;/span&gt;/login.jsp&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/from-view-id&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;navigation-case&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;from-outcome&amp;gt;&lt;/span&gt;success&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/from-outcome&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;to-view-id&amp;gt;&lt;/span&gt;/home.jsp&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/to-view-id&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/navigation-case&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/navigation-rule&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;managed-bean&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;managed-bean-name&amp;gt;&lt;/span&gt;userBean&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/managed-bean-name&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;managed-bean-class&amp;gt;&lt;/span&gt;mbeans.UserBean&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/managed-bean-class&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;managed-bean-scope&amp;gt;&lt;/span&gt;session&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/managed-bean-scope&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/managed-bean&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/faces-config&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;-The UserBean source is: &lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;package&lt;/span&gt; mbeans&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.ejb.EJB&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.faces.application.FacesMessage&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;javax.faces.context.FacesContext&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;org.joke.model.User&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;org.joke.service.HelloService&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;UserBean&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; User currentUser &lt;span style="color: #666666"&gt;=&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; User&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #AA22FF"&gt;@EJB&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; HelloService helloService &lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000FF"&gt;setCurrentUser&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;User currentUser&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;currentUser&lt;/span&gt; &lt;span style="color: #666666"&gt;=&lt;/span&gt; currentUser&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; User &lt;span style="color: #0000FF"&gt;getCurrentUser&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; currentUser&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String &lt;span style="color: #0000FF"&gt;login&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;  User result &lt;span style="color: #666666"&gt;=&lt;/span&gt; helloService&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;login&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;currentUser&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;getUsername&lt;/span&gt;&lt;span style="color: #666666"&gt;(),&lt;/span&gt;&lt;br /&gt;    currentUser&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;getPassword&lt;/span&gt;&lt;span style="color: #666666"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt; &lt;span style="color: #666666"&gt;(&lt;/span&gt;result&lt;span style="color: #666666"&gt;!=&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt;&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;   currentUser &lt;span style="color: #666666"&gt;=&lt;/span&gt; result&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #BA2121"&gt;&amp;quot;success&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;  FacesContext&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7D9029"&gt;getCurrentInstance&lt;/span&gt;&lt;span style="color: #666666"&gt;().&lt;/span&gt;&lt;span style="color: #7D9029"&gt;addMessage&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt;&lt;span style="color: #666666"&gt;,&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; &lt;span style="color: #0000FF"&gt;FacesMessage&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;username and password not found&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;));&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;10) You can notice that I use HelloService and User model class in the Dynamic web project. To do this you have to add the service project as referenced by the web project.&lt;br /&gt;- Right click on the web project and choose Properties&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXpRej8dAI/AAAAAAAAAe4/a-2x56qQ8FA/s1600-h/projectrelation.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 356px; height: 400px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXpRej8dAI/AAAAAAAAAe4/a-2x56qQ8FA/s400/projectrelation.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396976214944281602" /&gt;&lt;/a&gt;&lt;br /&gt;-Go to Build path/Projects&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXpiXRLyzI/AAAAAAAAAfA/RSwP2utANF8/s1600-h/projectrelationBuildPath.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXpiXRLyzI/AAAAAAAAAfA/RSwP2utANF8/s400/projectrelationBuildPath.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396976505044323122" /&gt;&lt;/a&gt;&lt;br /&gt;-Add the services project&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXppfTdEGI/AAAAAAAAAfI/zFHwCZ-fOjM/s1600-h/projectrelationBuildPathAdd.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXppfTdEGI/AAAAAAAAAfI/zFHwCZ-fOjM/s400/projectrelationBuildPathAdd.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396976627460411490" /&gt;&lt;/a&gt;&lt;br /&gt;-Now check the UserBean it should not contain any errors. &lt;br /&gt;11) Create Enterprise Applicatin and add Web and EJB module to this application&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXn_5m1wnI/AAAAAAAAAeQ/4oXWp_FVniA/s1600-h/4EnterpriseApplication.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 327px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXn_5m1wnI/AAAAAAAAAeQ/4oXWp_FVniA/s400/4EnterpriseApplication.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396974813454910066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXrrEL9-ZI/AAAAAAAAAfQ/fH2A3R5vi5U/s1600-h/4EnterpriseApplication2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 305px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXrrEL9-ZI/AAAAAAAAAfQ/fH2A3R5vi5U/s400/4EnterpriseApplication2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396978853564250514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXoL9sigYI/AAAAAAAAAeg/V-WbxdteAJA/s1600-h/4EnterpriseApplication3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXoL9sigYI/AAAAAAAAAeg/V-WbxdteAJA/s400/4EnterpriseApplication3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396975020710986114" /&gt;&lt;/a&gt;&lt;br /&gt;12) Right click on the Enterprise Application and choose Run on server.&lt;br /&gt;&lt;br /&gt;13) go to http://localhost:8080/HelloWeb/login.jsf and test it :)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXoTzsqVmI/AAAAAAAAAeo/JwbOME35Z3c/s1600-h/5TestInvalidUser.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_3bRKrrchPfA/SuXoTzsqVmI/AAAAAAAAAeo/JwbOME35Z3c/s400/5TestInvalidUser.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396975155466098274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's all.&lt;br /&gt;Note that we did not include any third party jar files in this projects. This is because GlassFish include JSF 1.2 Mojarra implementation and Toplink JPA implementation.&lt;br /&gt;&lt;br /&gt;*Update : full source code of the example you can download from: &lt;a href="http://dl.getdropbox.com/u/887821/HelloJavaEE5.rar"&gt;http://dl.getdropbox.com/u/887821/HelloJavaEE5.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-7844857008334370257?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/7844857008334370257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=7844857008334370257&amp;isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7844857008334370257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7844857008334370257'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/10/javaee-5-jsf-jpa-ejb3-using-eclipse.html' title='JavaEE 5 (JSF + JPA + EJB3) using Eclipse'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3bRKrrchPfA/SuXmLnLO4qI/AAAAAAAAAcw/qD3V0bDbFsE/s72-c/newServer.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-1948927667372751642</id><published>2009-10-26T17:06:00.012+02:00</published><updated>2009-10-26T20:42:07.221+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>Creating DataSource in GlassFish v. 2.1</title><content type='html'>I will show you how to create a DataSource in GlassFish version 2.1 because there were a lot of properties and I had a lot of problems when I've try to register datasource in glassfish for the first time.&lt;br /&gt;&lt;br /&gt;1) You have to download JDBC driver for your database. For example I will use MySQL and I will use Connector/J driver that you can download from mysql official web site.&lt;br /&gt;&lt;br /&gt;2) Place the JDBC driver in for example D:\glassfishv21\domains\domain1\lib\ext for example my driver is mysql-connector-java-5.0.4.jar &lt;br /&gt;&lt;br /&gt;3) Start the domain for example domain1 (asadmin start-domain domain1)&lt;br /&gt;&lt;br /&gt;4) go to http://localhost:4848 and login as admin. By default the username is 'admin' and the password is 'adminadmin' &lt;br /&gt;&lt;br /&gt;5) go to Resources/JDBC/Connection Pools&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/SuW9KZiKXyI/AAAAAAAAAbg/V8bDM52ywik/s1600-h/ConnectionPool.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/SuW9KZiKXyI/AAAAAAAAAbg/V8bDM52ywik/s400/ConnectionPool.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396927714823921442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-First we will create a connection pool. Click the 'NEW' button &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXA10crXVI/AAAAAAAAAbo/8dBCAw8Y34g/s1600-h/ConnectionPoolNew.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 206px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXA10crXVI/AAAAAAAAAbo/8dBCAw8Y34g/s400/ConnectionPoolNew.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396931759317933394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-Than you must type:&lt;br /&gt;      - Name: of the connection pool for example MySQL Lessson&lt;br /&gt;      - Resource Type: javax.sql.ConnectionPoolDataSource&lt;br /&gt;      - Database Vendor: MySQL &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXDQjw6dxI/AAAAAAAAAcg/5PdTGdfCxCA/s1600-h/ConnectionPoolFilled.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 206px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXDQjw6dxI/AAAAAAAAAcg/5PdTGdfCxCA/s400/ConnectionPoolFilled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396934417719129874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-Press 'Next'&lt;br /&gt;-On the Next step scroll down you will see a list of properties. The important for you (you must select this checkboxes) are: 'user','password','url'. If some of this is missing for example there is no 'url' if the vendor is Oracle you can add it using the Add property button. &lt;br /&gt;   - user : root&lt;br /&gt;   - password : rootpassword&lt;br /&gt;   - url : jdbc:mysql://localhost:3306/lesson?autoReconnect=true&amp;amp;characterEncoding=utf8&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXDYWGiybI/AAAAAAAAAco/mgoZ2jGmcls/s1600-h/ConnectionPoolURL.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/SuXDYWGiybI/AAAAAAAAAco/mgoZ2jGmcls/s400/ConnectionPoolURL.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396934551490709938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-When you fill this 3 properties you must press 'Save' &lt;br /&gt;-Than select again your datasource and press 'Ping' to see is everything correct&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXBPlt8HrI/AAAAAAAAAcA/RUB8DFctMGQ/s1600-h/ConnectionPoolPing.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXBPlt8HrI/AAAAAAAAAcA/RUB8DFctMGQ/s400/ConnectionPoolPing.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396932202040401586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You are now ready to create your DataSource that will use this connection pool.&lt;br /&gt;&lt;br /&gt;6)go to Resources/JDBC/JDBC Resources&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXBYEt4vjI/AAAAAAAAAcI/PPrm2EzZwA0/s1600-h/JDBCResourcesNew.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://4.bp.blogspot.com/_3bRKrrchPfA/SuXBYEt4vjI/AAAAAAAAAcI/PPrm2EzZwA0/s400/JDBCResourcesNew.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396932347800632882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Press 'New'&lt;br /&gt;- Type some jndi name of the resource that you will use latter in your project(s)&lt;br /&gt;- Choose PoolName to be the pool that you have just created.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXBfNNi1MI/AAAAAAAAAcQ/Wbbg37Uxo_w/s1600-h/JDBCResourcesFilled.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 209px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SuXBfNNi1MI/AAAAAAAAAcQ/Wbbg37Uxo_w/s400/JDBCResourcesFilled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396932470339982530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we have DataSource that we can use from any Enterprise/Web Application.&lt;br /&gt;In the next lesson I will create Java EE 5 application using JPA, EJB, JSF using eclipse and this app will use this datasource.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-1948927667372751642?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/1948927667372751642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=1948927667372751642&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1948927667372751642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1948927667372751642'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/10/creating-datasource-in-glassfish-v-21.html' title='Creating DataSource in GlassFish v. 2.1'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3bRKrrchPfA/SuW9KZiKXyI/AAAAAAAAAbg/V8bDM52ywik/s72-c/ConnectionPool.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-1402389328728155967</id><published>2009-10-26T14:43:00.005+02:00</published><updated>2009-10-26T14:58:49.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CV'/><title type='text'>CV</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/SuWZvvAVpWI/AAAAAAAAAbY/zYgHfIMPLEY/s1600-h/13843_1229803499814_1070894541_699764_6442631_n.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/SuWZvvAVpWI/AAAAAAAAAbY/zYgHfIMPLEY/s400/13843_1229803499814_1070894541_699764_6442631_n.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5396888773824193890" /&gt;&lt;/a&gt;&lt;br /&gt;Who am I?&lt;br /&gt;&lt;br /&gt;When you read some blog maybe you are wondering:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Who is this guy? &lt;/span&gt;&lt;br /&gt;For that reason I will add &lt;a href="http://dl.getdropbox.com/u/887821/Public%20Gochev%20CV.pdf"&gt;my CV&lt;/a&gt; to my blog, I think this is enough :). You can download the PDF version from &lt;a href="http://dl.getdropbox.com/u/887821/Public%20Gochev%20CV.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-1402389328728155967?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1402389328728155967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1402389328728155967'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/10/cv.html' title='CV'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3bRKrrchPfA/SuWZvvAVpWI/AAAAAAAAAbY/zYgHfIMPLEY/s72-c/13843_1229803499814_1070894541_699764_6442631_n.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-4516821494924004809</id><published>2009-09-27T23:40:00.009+03:00</published><updated>2009-09-28T00:36:22.846+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Code Snippet Manager in Java and Swing</title><content type='html'>Today I've try to create code snippet manager using Java and Swing. In my previous post I try to done this using WPF and C# (&lt;a href="http://gochev.blogspot.com/2009/09/code-snipper-manager-in-c-and-wpf.html"&gt;http://gochev.blogspot.com/2009/09/code-snipper-manager-in-c-and-wpf.html&lt;/a&gt;) I've just wanted to see how harder is to create the same app using Java and Swing.&lt;br /&gt;First lets make some compare about the WPF and Swing version of the app.&lt;br /&gt;The WPF version consists of &lt;span style="font-weight:bold;"&gt;5 files&lt;/span&gt;(2 XAML files and 3 cs files with classes)&lt;br /&gt;&lt;br /&gt;The WPF version uses XAML for the view (only &lt;span style="font-weight:bold;"&gt;30 lines&lt;/span&gt;) and 8 lines in file called App.xaml.&lt;br /&gt;The C# class with the logic is &lt;span style="font-weight:bold;"&gt;208 lines of code&lt;/span&gt;. The Snippet model class is not &lt;span style="font-weight:bold;"&gt;62 lines of code&lt;/span&gt; using C# properties and etc.&lt;br /&gt;&lt;br /&gt;The Java version have 3 classes. One is the main class, the snippet model &lt;span style="font-weight:bold;"&gt;class 54 lines&lt;/span&gt; (most of them created automatically by eclipse like getters setters in C# YOU HAVE TO WRITE THEM MANUALLY) and the Logic + View class is &lt;span style="font-weight:bold;"&gt;290 lines of code&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So in conclusion I can say that Java version is &lt;span style="font-weight:bold;"&gt;40 lines of code&lt;/span&gt; more but this is because of the event handlers which are anonymous classes everywhere in my code.&lt;br /&gt;&lt;br /&gt;Anyway the result is :&lt;br /&gt;WPF app looking like this (on left) and Swing app on right:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s400/SnippingManager.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 189px; height: 367px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s400/SnippingManager.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3bRKrrchPfA/Sr_TMrgTFqI/AAAAAAAAAa0/J9RfFT4W2jM/s1600-h/codeSnippetManager.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 390px;" src="http://3.bp.blogspot.com/_3bRKrrchPfA/Sr_TMrgTFqI/AAAAAAAAAa0/J9RfFT4W2jM/s400/codeSnippetManager.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5386255894148486818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="clear:left;clear:right"/&gt;&lt;br /&gt;As you can notice the WPF app looks very worse. Maybe because of the fonts which are not clear typed AND I CAN'T MAKE THEM CLEAR TYPE :) The Swing app have clear type fonts and I've included Substance look and feel because it have nice animations and hover effects.&lt;br /&gt;The result is - Swing app which looks better under Windows and All OSes (WPF is only for Windows).&lt;br /&gt;&lt;br /&gt;So if you ask me I will stick to Swing maybe it takes more lines of code for the same view but it looks better and I don't like to write and debug XML.&lt;br /&gt;The Swing version of code snippet manager is available at &lt;a href="http://code.google.com/p/snippet-manager/"&gt;http://code.google.com/p/snippet-manager/&lt;/a&gt; it has the fallowing features:&lt;br /&gt;- insert snippet from clipboard&lt;br /&gt;- delete selected snippet&lt;br /&gt;- insert separator &lt;br /&gt;- save all snippets to XML file&lt;br /&gt;- load snippets from XML file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-4516821494924004809?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/4516821494924004809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=4516821494924004809&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/4516821494924004809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/4516821494924004809'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/code-snippet-manager-in-java-and-swing.html' title='Code Snippet Manager in Java and Swing'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s72-c/SnippingManager.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-3898628328735058545</id><published>2009-09-14T12:42:00.007+03:00</published><updated>2009-09-28T00:29:11.153+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java.javaee'/><category scheme='http://www.blogger.com/atom/ns#' term='conf'/><title type='text'>Java2Days conference in Bulgaria, Europe 8-9/10/09</title><content type='html'>&lt;p&gt;Java2Days conference is a brand new event in Eastern Europe to present the latest trends in Java development. &lt;/p&gt;&lt;p&gt;Java2Days will be held at the Inter Expo Center on 8-9 October in Sofia, Bulgaria. The conference is hosted by &lt;a href="http://insight-bg.net"&gt;Insight_technologies&lt;/a&gt; and the &lt;a href="http://en.nars.bg"&gt;Bulgarian National Academy for Software Development&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;The conference is the first of its kind to be held in Eastern Europe, focused to highlight today’s cutting edge trends in building software applications with Java development tools.&lt;/p&gt;&lt;p&gt;Over two days, more than 600 attendees will meet world famous lecturers, engaged all year round in such events as JavaOne, The ServerSide Java Symposium, Jazoon showcasing their latest knowledge in creating more reliable, scalable and secure solutions using Java technologies in more than 20 technical sessions. &lt;/p&gt;&lt;p&gt;The major purpose of the event is to become a place for passionate Java developers to get in touch with the latest technologies, to become a significant part of the global Java community and to learn from the best. &lt;/p&gt;&lt;br /&gt;&lt;h1&gt;Registration&lt;/h1&gt;&lt;p&gt;&lt;h2&gt;Prices&lt;/h2&gt;&lt;/p&gt;&lt;h2&gt;VIP Pass – 175 EUR&lt;/h2&gt;&lt;p&gt;VIP Java2Days Pass Includes: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Access to all sessions&lt;/li&gt;&lt;li&gt;Eco bag with advertising materials&lt;/li&gt;&lt;li&gt;VIP promoting gifts&lt;/li&gt;&lt;li&gt;Coffee breaks&lt;/li&gt;&lt;li&gt;Front row seating&lt;/li&gt;&lt;li&gt;DVD with all conference materials, video, photos and etc.&lt;/li&gt;&lt;li&gt;Q &amp;amp; A session with the lecturers&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Standard Pass – 110 EUR&lt;/h2&gt;&lt;p&gt;Standard Java2Days Pass Includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Access to all sessions&lt;/li&gt;&lt;li&gt;Eco bag with advertising materials&lt;/li&gt;&lt;li&gt;Coffee breaks&lt;/li&gt;&lt;li&gt;Q &amp;amp; A session with the lecturers&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can add to your pass:&lt;/p&gt;&lt;h3&gt;Lunch – 10 EUR per day&lt;/h3&gt;&lt;p&gt;The buffet lunch is in a separate hall with plenty of salads, different kinds of meats, vegetarian dishes and desserts.&lt;/p&gt;&lt;h3&gt;Special dinner on 8th of October – 20 EUR&lt;/h3&gt;&lt;p&gt;A dinner at a Bulgarian tavern with live folklore songs and dances. A place where one can meet with the lecturers and developers from different countries in a unique atmosphere tasting the world-famous traditional Bulgarian cuisine and drinks. We promise it will be a great unforgettable experience&lt;/p&gt;&lt;br /&gt;You can read more about registration at &lt;a href="http://java2days.com/pricing" target="_new"&gt;http://java2days.com/pricing&lt;/a&gt; and &lt;a href="http://java2days.com/registration" target="_new"&gt;http://java2days.com/registration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;h2&gt;Agenda&lt;/h2&gt;&lt;/p&gt;   &lt;p&gt;Here are the main shortlisted topics that will be presented at Java2Days conference:&lt;/p&gt;&lt;table class="pricingTable" style="width: 100%;" border="0" cellpadding="1" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background-color: rgb(231, 238, 179); width: 30%; font-weight: bold;"&gt;Speaker&lt;/td&gt;&lt;td style="background-color: rgb(231, 238, 179); font-weight: bold;"&gt;Session&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#john.willis"&gt;John Willis&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.java2days.com/news/java-and-the-cloud-session"&gt;Java and the Cloud&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#mircea.markus"&gt;Mircea Markus&lt;/a&gt;&lt;/td&gt;&lt;td&gt;JBoss clustering solutions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#reza.rahman"&gt;Reza Rahman&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Java EE 6 Preview&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#reza.rahman"&gt;Reza Rahman&lt;/a&gt;&lt;/td&gt;&lt;td&gt;EJB 3.1 Preview&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#reza.rahman"&gt;Reza Rahman&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Spring and EJB 3 Integration&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#reza.rahman"&gt;Reza Rahman&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Relational Perspectives for Optimizing JPA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#rob.harrop"&gt;Rob Harrop&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Modular Web Applications with OSGi&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#rob.harrop"&gt;Rob Harrop&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Advanced Concurrency Techniques&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#heath.kesler"&gt;Heath Kesler&lt;/a&gt;&lt;/td&gt;&lt;td&gt;GWT Tips and Tricks for Beginners&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#heath.kesler"&gt;Heath Kesler&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Advance GWT Concepts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#josh.long"&gt;Josh Long&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Getting Started with Spring Integration&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#josh.long"&gt;Josh Long&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.java2days.com/news/jsf-and-spring-session"&gt;JSF++&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#josh.long"&gt;Josh Long&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Getting started with jBPM 4 (and Spring)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#andrew.lombardi"&gt;Andrew Lombardi&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Rapid Application Development with Apache Wicket&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#talip.ozturk"&gt;Talip Ozturk&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Clustering your application with Hazelcast&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#bruno.bossola"&gt;Bruno Bossola&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Solid design principles&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#vassil.popovski"&gt;Vassil Popovski&lt;/a&gt;&lt;/td&gt;&lt;td&gt;VMware and Spring Source: Brining Java to the Clouds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#george.moykin"&gt;George Moykin&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Oracle JRockit – Extreme and Predictable Performance with Java&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://java2days.com/speakers#anatoli.atanasov"&gt;Anatoli Atanasov&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Building Efficient Application Grids with Oracle Coherence&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;p&gt;We will continue to add more new topics and new key speakers to make the conference more valuable for you. So, visit our site and stay tuned with all news about Java2Days.&lt;/p&gt;&lt;p&gt;If you have any questions, ideas or comments, just contact us at info@java2days.com&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For news about the conference program and agenda please check out &lt;a href="http://java2days.com/agenda" target="_new"&gt;http://java2days.com/agenda&lt;/a&gt; and news section of the event &lt;a href="http://java2days.com/news" target="_new"&gt;http://java2days.com/news&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-3898628328735058545?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/3898628328735058545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=3898628328735058545&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/3898628328735058545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/3898628328735058545'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/java2days-conference-in-bulgaria-europe.html' title='Java2Days conference in Bulgaria, Europe 8-9/10/09'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-7139743995066429262</id><published>2009-09-13T18:10:00.003+03:00</published><updated>2009-09-13T18:41:48.041+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>XMLSerialization with C#</title><content type='html'>When I first hear about XML serialization in C# I thought that it is like Java serialization but the result is XML character stream instead of the default serialization in Java/.net.&lt;br /&gt;But the things are not so great. &lt;br /&gt;The XML serialization in C# is good but it is not the best. &lt;br /&gt;In Java the easiest way to make normal serialization is to implement interface Serializable and to be sure that all fields in your custom class are serializable. If you want to Serialize ArrayList of this objects you dont have problems because ArrayList implements Serializable.&lt;br /&gt;&lt;br /&gt;But when you use XML serialization you dont care about Serializable interface. In Java you can make XML serialization this way : &lt;a href="http://www.javablogging.com/serialization-to-xml/" target="_new"&gt;http://www.javablogging.com/serialization-to-xml/&lt;/a&gt;. You can see that it is simple I thought that in C# the situation is the same but it is not.&lt;br /&gt;To read about serialiization in C# there is tones of info but I didn't found answer like this one in this post: &lt;br /&gt;I will notice only some important aspects of this because when I try C# serialization I have missed some points of this article and i loose 30mins of searching what the problem is.&lt;br /&gt;&lt;br /&gt;If you need to serialize ArrayList of strings no problem you can make it this way:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #408080; font-style: italic"&gt;// Serialization&lt;/span&gt;&lt;br /&gt;XmlSerializer s = &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; XmlSerializer( &lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;( ArrayList) );&lt;br /&gt;TextWriter w = &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; StreamWriter( &lt;span style="color: #BA2121"&gt;@&amp;quot;c:\list.xml&amp;quot;&lt;/span&gt; );&lt;br /&gt;s.Serialize( w, myList );&lt;br /&gt;w.Close();&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;You can notice that you pass the type of ArrayList to XmlSerializer right? That is the difference.&lt;br /&gt;In Java you don't need to specify what you pass it is "founded" automaticly. But in C# you need to pass all classes that you serialize or I dont know maybe most of all? You have two ways to do this:&lt;br /&gt;If you want to serialize ArrayList of Strings it is ok, but if you want to serialize ArrayList of custom objects lets say Snippets you have to specify this.&lt;br /&gt;For example :&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; XmlSerializer serializer = &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(ArrayList),&lt;br/&gt; &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; Type[] &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(Snippet)&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;and if you have a big hierarchy like class A, Class B :A , Class C:A you have to pass all of them. For example: &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; &lt;span style="color: #0000FF"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(ArrayList),&lt;br/&gt; &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; Type[] &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(A),&lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(C),&lt;span style="color: #008000; font-weight: bold"&gt;typeof&lt;/span&gt;(B) &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;if you ask me this is dumb. But wait there is another way and it is explicitly telling the serializer to expect the Snippet class when serializing ArrayList of snippets.&lt;br /&gt;For example :&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;    &lt;span style="color: #408080; font-style: italic"&gt;// This attribute enables the ArrayList to be serialized:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;    [System.Xml.Serialization.XmlArray(&amp;quot;Snippets&amp;quot;)]&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #408080; font-style: italic"&gt;// Explicitly tell the serializer to expect the Snippet class&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #408080; font-style: italic"&gt;// so it can be properly written to XML from the collection:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;    [System.Xml.Serialization.XmlArrayItem(&amp;quot;snippet&amp;quot;,typeof(Snippet))]&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; ArrayList listSnippets;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;I don't know did you get the idea, but if you ask me Microsoft make something very easy (as you can see in the java example) harder. &lt;br /&gt;But one think I can say to microsoft is that attributes for XML serializations are nice.&lt;br /&gt;What am I talking about ? lets say that we want to edit the Snippet class or we can edit it.&lt;br /&gt;If you leave the default implementation of Snippet:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Collections.Generic&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Linq&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Text&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml.Schema&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml.Serialization&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;namespace&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;CodeSnippetManager&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;Snippet&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;static&lt;/span&gt; &lt;span style="color: #B00040"&gt;int&lt;/span&gt; counter = &lt;span style="color: #666666"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Snippet&lt;/span&gt; ()&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            counter++;&lt;br /&gt;            Id = counter;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;int&lt;/span&gt; Id &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; String label;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String Label &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; label;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt;(value != &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; value.Length &amp;gt; &lt;span style="color: #666666"&gt;20&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                    value = value.Substring(&lt;span style="color: #666666"&gt;0&lt;/span&gt;, &lt;span style="color: #666666"&gt;20&lt;/span&gt;);&lt;br /&gt;                    value.Replace(&lt;span style="color: #BA2121"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt;, &lt;span style="color: #BA2121"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.label = value;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String Data &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;;&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Snippet&lt;/span&gt;(String label,String data)&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.Label = label;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.Data = data;&lt;br /&gt;            counter++;&lt;br /&gt;            Id = counter;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;override&lt;/span&gt; &lt;span style="color: #B00040"&gt;string&lt;/span&gt; &lt;span style="color: #0000FF"&gt;ToString&lt;/span&gt;()&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; Id  + &lt;span style="color: #BA2121"&gt;&amp;quot;) &amp;quot;&lt;/span&gt;+ label;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Btw this class is used in my code snippet manager. So if you keep this and save ArrayList of Snippet objects the result XML looks like this:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;ArrayOfAnyType&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:xsd=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;anyType&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xsi:type=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Snippet&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Id&amp;gt;&lt;/span&gt;1&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Id&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Label&amp;gt;&lt;/span&gt;ublic static int cou&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Label&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;ublic static int counter = 0;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/anyType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/ArrayOfAnyType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;But you can use XmlRoot and XMLElement attributes to specify the names of the XML Elements.&lt;br /&gt;If you Snippet class looks like this:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Collections.Generic&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Linq&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Text&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml.Schema&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;System.Xml.Serialization&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;namespace&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;CodeSnippetManager&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;    [XmlRoot(&amp;quot;SnippetRoot&amp;quot;), Serializable]&lt;/span&gt;   &lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold"&gt;Snippet&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;        [XmlIgnore]&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;static&lt;/span&gt; &lt;span style="color: #B00040"&gt;int&lt;/span&gt; counter = &lt;span style="color: #666666"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Snippet&lt;/span&gt; ()&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            counter++;&lt;br /&gt;            Id = counter;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;        [XmlElement(&amp;quot;SnippetId&amp;quot;)]&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #B00040"&gt;int&lt;/span&gt; Id &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; String label;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;        [XmlElement(&amp;quot;SnippetLabel&amp;quot;)]&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String Label &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; label;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt;(value != &lt;span style="color: #008000; font-weight: bold"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; value.Length &amp;gt; &lt;span style="color: #666666"&gt;20&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;                    value = value.Substring(&lt;span style="color: #666666"&gt;0&lt;/span&gt;, &lt;span style="color: #666666"&gt;20&lt;/span&gt;);&lt;br /&gt;                    value.Replace(&lt;span style="color: #BA2121"&gt;&amp;quot;\r\n&amp;quot;&lt;/span&gt;, &lt;span style="color: #BA2121"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.label = value;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #7D9029"&gt;        [XmlElement(&amp;quot;SnippetData&amp;quot;)]&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; String Data &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;get&lt;/span&gt;; &lt;span style="color: #008000; font-weight: bold"&gt;set&lt;/span&gt;;&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Snippet&lt;/span&gt;(String label,String data)&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.Label = label;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;this&lt;/span&gt;.Data = data;&lt;br /&gt;            counter++;&lt;br /&gt;            Id = counter;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;override&lt;/span&gt; &lt;span style="color: #B00040"&gt;string&lt;/span&gt; &lt;span style="color: #0000FF"&gt;ToString&lt;/span&gt;()&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; Id  + &lt;span style="color: #BA2121"&gt;&amp;quot;) &amp;quot;&lt;/span&gt;+ label;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;When you save you get this result :&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #BC7A00"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;ArrayOfAnyType&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xmlns:xsd=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;anyType&lt;/span&gt; &lt;span style="color: #7D9029"&gt;xsi:type=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Snippet&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;SnippetId&amp;gt;&lt;/span&gt;1&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/SnippetId&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;SnippetLabel&amp;gt;&lt;/span&gt;XmlRoot&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/SnippetLabel&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;SnippetData&amp;gt;&lt;/span&gt;XmlRoot&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/SnippetData&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/anyType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/ArrayOfAnyType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So as a conclusion I can say that XMLSerialization in C# maybe is harder than Java way but you have easy way to customize the result which is very good.&lt;br /&gt;&lt;br /&gt;P.S. I've used Serializable in the Snippet class just for readability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-7139743995066429262?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/7139743995066429262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=7139743995066429262&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7139743995066429262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/7139743995066429262'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/xmlserialization-with-c.html' title='XMLSerialization with C#'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-2579046320433123122</id><published>2009-09-12T21:27:00.005+03:00</published><updated>2009-09-12T21:51:40.236+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Code Snippet Manager in C# and WPF</title><content type='html'>Hello all, today I will post a simple code snippet manager created using C# and WPF. The idea of the app is to be used when making presentations and you need to paste all kind of code snippets (html, xaml, C#, java ). The similar tool is used by Karen Corby in MIX09 presentation about creating silverlight controls.&lt;br /&gt;This is my first .net application so you will see all kind of C# strangeness like using "Object" instead of "object" and String instead of "string". &lt;br /&gt;Because this was my first application I choose to use WPF not WinForms because WinForms is a lot like Swing and I've wanted to see "how declarative XML for the UI is better" and I can say: "hmm ok there is some big pluses". Anyway I have little experience with Flex's MXML too and if you ask me the MXML is a lot than XAML. &lt;br /&gt;The code snipper manager application lokks like this :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s1600-h/SnippingManager.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 189px; height: 367px;" src="http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s400/SnippingManager.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5380650814797520674" /&gt;&lt;/a&gt; The view is very simple and I can say that XAML is perfect for creating a simple views and there is tones of snippets in internet for all kinds of examples like popup for example.&lt;br /&gt;&lt;div  style="clear:left;"&gt;The application XAML looks like this :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Window&lt;/span&gt; &lt;span style="color: #7D9029"&gt;x:Class=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;CodeSnippetManager.Window1&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #7D9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #7D9029"&gt;xmlns:x=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #7D9029"&gt;Title=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Snipper Manager&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Height=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;355&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Width=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;177&amp;quot;&lt;/span&gt;  &lt;span style="color: #7D9029"&gt;Topmost=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;ResizeMode=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;NoResize&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Grid&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Height=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;309&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;ListBox&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Margin=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;0,-8,0,38&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;listSnippets&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;HorizontalContentAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;br /&gt;                 &lt;span style="color: #7D9029"&gt;MouseRightButtonDown=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;listSnippets_MouseRightButtonDown&amp;quot;&lt;/span&gt; &lt;br /&gt;                 &lt;span style="color: #7D9029"&gt;SelectionMode=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Single&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;SelectionChanged=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;listSnippets_SelectionChanged&amp;quot;&lt;/span&gt; &lt;br /&gt;                 &lt;span style="color: #7D9029"&gt;MouseDoubleClick=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;listSnippets_MouseDoubleClick&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/ListBox&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Popup&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Placement=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Mouse&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;popupHint&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;HorizontalAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #7D9029"&gt;VerticalAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Top&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;IsOpen=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;False&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;AllowsTransparency=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Border&lt;/span&gt; &lt;span style="color: #7D9029"&gt;BorderBrush=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;BorderThickness=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Grid&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Background=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;TextBlock&lt;/span&gt;  &lt;span style="color: #7D9029"&gt;Background=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;White&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #7D9029"&gt;x:Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;PopupTxt&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #7D9029"&gt;TextAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #7D9029"&gt;VerticalAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;br /&gt;                    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Grid&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Border&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Popup&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;WrapPanel&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Height=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;40&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;wrapPanel1&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;VerticalAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Bottom&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;HorizontalAlignment=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Button&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Height=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;26&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;menu&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Width=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;65&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Margin=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;5&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Click=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;menu_Click&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;Menu&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Button&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;Button&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Height=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;26&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Name=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;clear&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Width=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;65&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Margin=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;5&amp;quot;&lt;/span&gt; &lt;span style="color: #7D9029"&gt;Click=&lt;/span&gt;&lt;span style="color: #BA2121"&gt;&amp;quot;new_Click&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;Clear&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Button&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/WrapPanel&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Grid&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/Window&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Maybe you can notice that code is short and very simple, maybe simpler than MXML in Flex and a lot simpler than Swing/SWF and JavaFX. There is no code fragments on the view and etc. But what i did not understand is why all kinds of Name x:Name and other attributes are needed. The XML schemas are strangely organized if you ask me.&lt;br /&gt;Anyway the project is uploaded here &lt;a href="http://snippetmanager.codeplex.com/Wiki/View.aspx?title=Home" target="_new"&gt;http://snippetmanager.codeplex.com/Wiki/View.aspx?title=Home&lt;/a&gt;. You can download the source and edit it if you want or you can download the release version and try to use it.&lt;br /&gt;The application have the fallowing features:&lt;br /&gt; - creating and adding code snippets from the clipboard&lt;br /&gt; - saving sets of snippets as XML files for usage in the future&lt;br /&gt; - loading sets of snippets &lt;br /&gt; - delete snippet if it is inserted by mistake&lt;br /&gt;Maybe you will notice strange fonts rendering ( there is no clear type ). This is because WPF 3.5 doesnt support clear type at this moment. But clear type will be supported in the incoming .net 4.0 release. If you ask me the current fonts looks even bad than the Java Swing font rendering before 1.6 update 10 which is funny. &lt;br /&gt;The Expression Blend application is written in WPF too and the fonts looks also this bad but if you use dark theme (black by default) it is harder to notice the bad looking fonts. So if you want change the application color schema to darker. I will add dark theme when I have time.&lt;br /&gt;The reason why I've created this app is because I often need to write code in front of the students when I make presentations and I think that using a tool like this decrease the possibility to make mistakes when writing. &lt;br /&gt;The idea of this app came after I watch the Karen Corby presentation in MIX09 called Building Microsoft Silverlight Controls btw you can watch it here &lt;a href="http://videos.visitmix.com/MIX09/T16F" target="_new"&gt;http://videos.visitmix.com/MIX09/T16F&lt;/a&gt; . But because I was unable to find this app I've created my own.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-2579046320433123122?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/2579046320433123122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=2579046320433123122&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2579046320433123122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2579046320433123122'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/code-snipper-manager-in-c-and-wpf.html' title='Code Snippet Manager in C# and WPF'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3bRKrrchPfA/SqvpaHxsHyI/AAAAAAAAAaQ/7kGtG83aw7s/s72-c/SnippingManager.PNG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-236755317073222496</id><published>2009-09-02T00:56:00.001+03:00</published><updated>2009-09-02T00:56:48.149+03:00</updated><title type='text'>Real Ajax for Real Java Developers: GWT &amp; jQUERY</title><content type='html'>&lt;p&gt;In this days every Ajax application uses jQuery or Dojo or something like this. If you ask me jQuery is the most often framework because it is small, it helps a lot, it has cool features and it is promoted by Microsoft (we live in strange days). jQuery can be used for many things one of them is effects. We all know how Flash, Silverilght and JavaFX “Rich UI” look and often with CSS and JavaScript it’s very hard to make things that can be done in easy in flash. The jQuery helps a lot with it fade effects slideUp/slideDown and etc. I as a Java Developer I like GWT but often I use JSF too. When I use JSF I’ve always add JQuery because at certain point I’ve always&amp;#160; need to type some javascript and with jquery its easier. When I use GWT I’ve wanted to be able to use JQuery the same way like I’ve use it in JSF app or even better. The solution is GWTQuery or GQuery: &lt;a href="http://code.google.com/p/gwtquery/"&gt;http://code.google.com/p/gwtquery/&lt;/a&gt; . From the website we can see That Gwt Query is a jQuery-like API written in GWT, which allows GWT to be used in progressive enhancement scenarios where perhaps GWT widgets are too heavyweight.&lt;/p&gt;  &lt;p&gt;When I saw this I said: “awesome”. You can read how to get started from here &lt;a title="http://code.google.com/p/gwtquery/wiki/GettingStarted" href="http://code.google.com/p/gwtquery/wiki/GettingStarted"&gt;http://code.google.com/p/gwtquery/wiki/GettingStarted&lt;/a&gt; I will not explain how to setup and use gwt query because in the wiki you will get up2date information about possible changes but the result is awesome.&lt;/p&gt;  &lt;p&gt;Lets assume that we have a table and we want to hide it when the user clicks a button or link but with some transition effect like fade. To do this I use &lt;a href="http://dl.google.com/eclipse/plugin/3.5"&gt;gwt plugin for eclipse from google&lt;/a&gt;&amp;#160; and created a simple project. My welcome-file GwtJQuery.html looks like this:&lt;/p&gt;  &lt;div class="highlight"&gt;   &lt;pre&gt;&lt;span style="color: #bc7a00"&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- The HTML 4.01 Transitional DOCTYPE declaration--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- above set at the top of the file will set     --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- the browser's rendering engine into           --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- &amp;quot;Quirks Mode&amp;quot;. Replacing this declaration     --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- with a &amp;quot;Standards Mode&amp;quot; doctype is supported, --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- but may lead to some differences in layout.   --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;meta&lt;/span&gt; &lt;span style="color: #7d9029"&gt;http-equiv=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;content-type&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;content=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                                               --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- Consider inlining CSS to reduce the number of requested files --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                                               --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;link&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;rel=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;href=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;GwtJQuery.css&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- Any title is fine                         --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Web Application Starter Project&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- This script loads your compiled module.   --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- If you add any GWT meta tags, they must   --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- be added before this line.                --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;script&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;language=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;src=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;gwtjquery/gwtjquery.nocache.js&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- The body can have arbitrary html, or      --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- you can leave the body empty if you want  --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- to create a completely dynamic UI.        --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!--                                           --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: #408080"&gt;&amp;lt;!-- OPTIONAL: include this if you want history support --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;iframe&lt;/span&gt; &lt;span style="color: #7d9029"&gt;src=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;javascript:''&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;__gwt_historyFrame&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;tabIndex=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;'-1'&lt;/span&gt; &lt;span style="color: #7d9029"&gt;style=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;position:absolute;width:0;height:0;border:0&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Web Application Starter Project&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;table&lt;/span&gt; &lt;span style="color: #7d9029"&gt;align=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;center&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;bgcolor=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7d9029"&gt;colspan=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;style=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;font-weight:bold;&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;Please enter your name:&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;        &lt;br /&gt;      &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;nameFieldContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;sendButtonContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;hideButtonContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The only changes from the base project are the script tag for gwtquery,&amp;#160; the id for the table with value “table” and one new column with id hideButtonContainer. The new code is only this: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="color: #666666"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;final&lt;/span&gt; Button hideButton&lt;span style="color: #666666"&gt;=&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; Button&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Hide&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;...&lt;/span&gt;&lt;br /&gt;RootPanel&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;get&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;hideButtonContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;add&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;hideButton&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;...&lt;/span&gt;&lt;br /&gt;hideButton&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;addClickHandler&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; ClickHandler&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onClick&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;ClickEvent event&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;				hideContainer&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: #666666"&gt;});&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;...&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: #008000; font-weight: bold"&gt;protected&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;hideContainer&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;		$&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;css&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;background-color&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;,&lt;/span&gt; &lt;span style="color: #ba2121"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;		$&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;click&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; Function&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #aa22ff"&gt;@Override&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;boolean&lt;/span&gt; &lt;span style="color: #0000ff"&gt;f&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;Event e&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;				$&lt;span style="color: #666666"&gt;(&lt;/span&gt;e&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;as&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;Effects&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;fadeOut&lt;/span&gt;&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;				&lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;true&lt;/span&gt;&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: #666666"&gt;});&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We have hideButton, we add it to the RootPanel and we have clickHandler that invokes method called hideContainer. The methods uses GWTQuery which looks like jquery and what we do: we are make instant changing of the background-color to grey and fade effect on the table. You can read the getting started guide of gwt query for more info but the result looks like this:&lt;/p&gt;&lt;br /&gt;&lt;center&gt;&lt;OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="670" HEIGHT="387" CODEBASE="http://active.macromedia.com/flash5/cabs/swflash.cab#version=7,0,0,0"&gt;&lt;br /&gt;&lt;PARAM NAME="movie" VALUE="http://dl.getdropbox.com/u/887821/gwtquery.swf"&gt;&lt;br /&gt;&lt;PARAM NAME="play" VALUE="true"&gt;&lt;br /&gt;&lt;PARAM NAME="loop" VALUE="false"&gt;&lt;br /&gt;&lt;PARAM NAME="wmode" VALUE="transparent"&gt;&lt;br /&gt;&lt;PARAM NAME="quality" VALUE="low"&gt;&lt;br /&gt;&lt;EMBED SRC="http://dl.getdropbox.com/u/887821/gwtquery.swf" WIDTH="670" HEIGHT="387" quality="low" loop="false" wmode="transparent" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;br /&gt;&lt;/EMBED&gt;&lt;br /&gt;&lt;/OBJECT&gt;&lt;/center&gt;&lt;br /&gt;&lt;SCRIPT src="http://dl.getdropbox.com/u/887821/gwtquery.js"&gt;&lt;/script&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-236755317073222496?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/236755317073222496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=236755317073222496&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/236755317073222496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/236755317073222496'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/real-ajax-for-real-java-developers-gwt_02.html' title='Real Ajax for Real Java Developers: GWT &amp;amp; jQUERY'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-5333205094136050942</id><published>2009-09-02T00:25:00.001+03:00</published><updated>2009-09-02T00:25:26.224+03:00</updated><title type='text'>Real Ajax for Real Java developers: GWT</title><content type='html'>&lt;p&gt;Everyone know about GWT right ? This is Java framework for creating real rich ajax applications using the Java language and not using JavaScript. The idea is that your project have two parts : client side and server side. The server side is Java and is compiled to Java using javac and putted in the web server the client side is compiled to JavaScript using GWT Java2JavaScript compiler, the communication between server side and client side is using async call, the result is : real AJAX. &lt;/p&gt;  &lt;p&gt;First why I call it real ajax ? The common way to make rich applications this days ( or maybe from 2005 till now) is to use non ajax web framework and use custom ajax controls that uses UpdatePanel or AjaxPanel that makes “partial rendering”.    &lt;br /&gt;&lt;strong&gt;&lt;u&gt;In typical Non Ajax application&lt;/u&gt;&lt;/strong&gt; (lets use ASP.net or JSF) when we submit the form or make a call using a button server creates the HTML result and send it to the browser. The browser just visualized the HTML and “voala” we have regular page. To create the view in server side is not the best idea but it was used for the last 10 years or more.&lt;/p&gt;  &lt;p&gt;Lets create a simple ASP.net page ( I will create ASP.net page not JSF page because it is faster there is no difference in the result and the way how it is created, they are almost the same).&lt;/p&gt;  &lt;p&gt;The ASP.net page looks like this:&lt;/p&gt;  &lt;div class="highlight"&gt;   &lt;pre&gt;&lt;span style="border-bottom: #ff0000 1px solid; border-left: #ff0000 1px solid; border-top: #ff0000 1px solid; border-right: #ff0000 1px solid"&gt;&amp;lt;&lt;/span&gt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot;  CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #bc7a00"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7d9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;form&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:TextBox&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;br&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:Button&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;Text=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;onclick=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When we click the button with ID Button1 we invoke some server side logic. So to invoke it we make a submit of our form and executes the action(method) it is the same like we did with Struts in 2002. Our method just changes the text in the TextBox1 LOL we can make it with JavaScript but in 2002 till 2005 no one wants to hear about JavaScript so we have :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System.Collections.Generic&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System.Linq&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System.Web&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System.Web.UI&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;using&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;System.Web.UI.WebControls&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;partial&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;_Default&lt;/span&gt; : System.Web.UI.Page &lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;protected&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Page_Load&lt;/span&gt;(&lt;span style="color: #b00040"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;protected&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Button1_Click&lt;/span&gt;(&lt;span style="color: #b00040"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;{&lt;/span&gt;&lt;br /&gt;        TextBox1.Text = &lt;span style="color: #ba2121"&gt;&amp;quot;Voala&amp;quot;&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;when we make a submit of this page the server returns the whole new response and the browser refreshes. I will use firebug to see the response of the call it looks like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="color: #bc7a00"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7d9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;form&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;method=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;post&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;action=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Default.aspx&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;__VIEWSTATE&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;__VIEWSTATE&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;/wEPDwULLTE0MDM4MzYxMjNkZPJve7rYC/PGVOdFFdRTdiGKYG/K&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;	&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;__EVENTVALIDATION&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;__EVENTVALIDATION&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;/wEWAwLE77ufDwLs0bLrBgKM54rGBv3Oo8jrqGGAkfJCVYhL30amEfxf&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Voala&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;br&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Wow the result was &lt;u&gt;804B&lt;/u&gt; just for the text Voala, maybe here some Dojo/Mojo etc developer will laugh and say just create a JavaScript function man. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;In typical AJAX application&lt;/u&gt;&lt;/strong&gt; using ASP.net and or JSF we have some kind of updatable panel and some JavaScript libraries that are inserted automatically from the framework and that makes the partial rendering.&amp;#160; To create an ASP.net AJAX application because it is simpler than JSF RichFaces application. The ASP.net AJAX page looks like this :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="border-bottom: #ff0000 1px solid; border-left: #ff0000 1px solid; border-top: #ff0000 1px solid; border-right: #ff0000 1px solid"&gt;&amp;lt;&lt;/span&gt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot;  CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #bc7a00"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7d9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;head&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;form&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:ScriptManager&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/asp:ScriptManager&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:UpdatePanel&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;ContentTemplate&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:TextBox&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;br&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;asp:Button&lt;/span&gt; &lt;span style="color: #7d9029"&gt;ID=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;runat=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;Text=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;onclick=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/ContentTemplate&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/asp:UpdatePanel&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The idea is that when we make a request the response sended from the server is only the content of this UpdatePanel so the response is “HTML” and the JavaScript AJAX library just replaces the old content with the new content (yes it makes a lot of other things like adding listeners to components and etc.) But when we make a call the response looks like this :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;189|updatePanel|UpdatePanel1|&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Voala&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;br&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        |48|hiddenField|__VIEWSTATE|/wEPDwUINzcxOTk0MDJkZHSPHZdmYurKtHlUqe6IDY0NDG3E|56|hiddenField|__EVENTVALIDATION|/wEWAwKA97K8CgLs0bLrBgKM54rGBocZWWYZCHRaxZUGe6GQYbkXE1Wy|0|asyncPostBackControlIDs|||0|postBackControlIDs|||13|updatePanelIDs||tUpdatePanel1|0|childUpdatePanelIDs|||12|panelsToRefreshIDs||UpdatePanel1|2|asyncPostBackTimeout||90|12|formAction||Default.aspx|&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Yes there is some VIEWSTATE “SHIT” that is ASP.net SHIT but you know the idea(you can see this buy yourself with firebug). The result is &lt;u&gt;584B&lt;/u&gt; WOW if you ask me 804B vs 584B not a big deal. The only plus is better use experience because its page doesn't blink. Anyway the RichFaces + JSF example is almost the same the result looks like this &lt;meta id="Ajax-Response" name="Ajax-Response" content="true" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;html&lt;/span&gt; &lt;span style="color: #7d9029"&gt;xmlns=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;j_id359:textBox1&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&lt;/span&gt;Voala&lt;span style="color: #008000; font-weight: bold"&gt;&amp;lt;/span&amp;gt;&amp;lt;meta&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Ajax-Update-Ids&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;content=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;j_id359:name&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;span&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;ajax-view-state&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #7d9029"&gt;type=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;javax.faces.ViewState&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;javax.faces.ViewState&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;value=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;j_id2&amp;quot;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;meta&lt;/span&gt; &lt;span style="color: #7d9029"&gt;id=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Ajax-Response&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;name=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Ajax-Response&amp;quot;&lt;/span&gt; &lt;span style="color: #7d9029"&gt;content=&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;/&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The result is almost the same but there is no BIG viewstate.value. Anyway I’ve hear the term AJAH from one MAX conf so we can say that THIS IS NOT AJAX THIS IS AJAH why ? because the response is HTML so this is Asynchronous JavaScript and HTML, in typical AJAX application like the applications that we want to create we must use JSON for the response and we will want the view to be in the client and we will want to use the server as a server.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;How typical ASP.net, PHP, XXX where XXX is everything developers make real AJAX? with JavaScript this will be the way how the things will be done in ASP.net 4.0 too with JavaScript client side controls that will make async calls to ASP.net methods. I can say only OMG. I don't want JavaScript because I dont like Scripting languages and because they dont have the great IDE support that we Java developers want (there is no JavaScript ide like IntelliJ IDEA right ? ). The Java community have an option that other developers dont have : GWT or Real AJax without JavaScript. The result is that we use real AJAX without JavaScript like no one else.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Real AJAX way:&lt;/u&gt;&lt;/strong&gt; lets create a GWT project and add the fallowing content. This is 100% Java code no JavaScript :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff; font-weight: bold"&gt;TestGWTModule&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;implements&lt;/span&gt; EntryPoint &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: #008000; font-weight: bold"&gt;private&lt;/span&gt; Button clickMeButton&lt;span style="color: #666666"&gt;;&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onModuleLoad&lt;/span&gt;&lt;span style="color: #666666"&gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;		RootPanel rootPanel &lt;span style="color: #666666"&gt;=&lt;/span&gt; RootPanel&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;get&lt;/span&gt;&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;		&lt;br /&gt;		&lt;span style="color: #008000; font-weight: bold"&gt;final&lt;/span&gt; TextBox textBox&lt;span style="color: #666666"&gt;=&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; TextBox&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;		clickMeButton &lt;span style="color: #666666"&gt;=&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; Button&lt;span style="color: #666666"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;		rootPanel&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;add&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;textBox&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;		rootPanel&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;add&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;clickMeButton&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;		&lt;br /&gt;		clickMeButton&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;setText&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Click me!&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;		clickMeButton&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;addClickHandler&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; ClickHandler&lt;span style="color: #666666"&gt;(){&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onClick&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;ClickEvent event&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;				textBox&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;setText&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;Voala&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: #666666"&gt;});&lt;/span&gt;&lt;br /&gt;	&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And yes we can make async call if we want in the event handler. You can read how we can do that in free GWT documentation provided by google it is easy.In this code we can even use Generics and ArrayLists and almost whatever we will need, yes for example we cant use Threads but do we have Threads in javaScript ? The result is that when we invoke this code we get 0B response why ? Because it is compiled to JavaScript ! &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Lets make it AJAX so we will need a GWT RPC service you can read how to create one here : &lt;a title="http://code.google.com/webtoolkit/tutorials/1.6/RPC.html" href="http://code.google.com/webtoolkit/tutorials/1.6/RPC.html"&gt;http://code.google.com/webtoolkit/tutorials/1.6/RPC.html&lt;/a&gt; When we change the clickHandler to make an Ajax call the new handler looks like this : &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;clickMeButton&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;addClickHandler&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; ClickHandler&lt;span style="color: #666666"&gt;(){&lt;/span&gt;&lt;br /&gt;			&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onClick&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;ClickEvent event&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;				HelloServiceAsync helloService&lt;span style="color: #666666"&gt;=&lt;/span&gt;GWT&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;create&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;HelloService&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;class&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;				&lt;span style="color: #666666"&gt;((&lt;/span&gt;ServiceDefTarget&lt;span style="color: #666666"&gt;)&lt;/span&gt;helloService&lt;span style="color: #666666"&gt;).&lt;/span&gt;&lt;span style="color: #7d9029"&gt;setServiceEntryPoint&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #ba2121"&gt;&amp;quot;/hello&amp;quot;&lt;/span&gt;&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;				helloService&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;sayVoala&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold"&gt;new&lt;/span&gt; AsyncCallback&lt;span style="color: #666666"&gt;&amp;lt;&lt;/span&gt;String&lt;span style="color: #666666"&gt;&amp;gt;()&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;					&lt;span style="color: #aa22ff"&gt;@Override&lt;/span&gt;&lt;br /&gt;					&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onSuccess&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;String result&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;						textBox&lt;span style="color: #666666"&gt;.&lt;/span&gt;&lt;span style="color: #7d9029"&gt;setText&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;result&lt;span style="color: #666666"&gt;);&lt;/span&gt;&lt;br /&gt;						&lt;br /&gt;					&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;					&lt;span style="color: #aa22ff"&gt;@Override&lt;/span&gt;&lt;br /&gt;					&lt;span style="color: #008000; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #b00040"&gt;void&lt;/span&gt; &lt;span style="color: #0000ff"&gt;onFailure&lt;/span&gt;&lt;span style="color: #666666"&gt;(&lt;/span&gt;Throwable caught&lt;span style="color: #666666"&gt;)&lt;/span&gt; &lt;span style="color: #666666"&gt;{&lt;/span&gt;&lt;br /&gt;						&lt;span style="font-style: italic; color: #408080"&gt;// TODO Auto-generated method stub&lt;/span&gt;&lt;br /&gt;					&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;				&lt;span style="color: #666666"&gt;});&lt;/span&gt;&lt;br /&gt;				&lt;br /&gt;			&lt;span style="color: #666666"&gt;}&lt;/span&gt;&lt;br /&gt;		&lt;span style="color: #666666"&gt;});&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Maybe this looks strange to some of us ( which don't have experience with GWT) but it is not so hard and there is good IDE support which creates most of the code like the service interface, implementation and async object. Anyway the result is that the response is serialized by gwt and looks like this : &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;br /&gt;  &lt;pre&gt;//OK[1,[&amp;quot;Voala&amp;quot;],0,5]&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;and it is only 21B ! So yes THIS IS AJAX like it should be. I know that there is some .net projects like Script# that are kind of dead, maybe it is good time to resurrect them? Where is the community ? or Alt.net community ? Guys ? Anyone ? :)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I hope anyone have a clue what the ajax should be and what it is now I really hope to have fastest and better AJAX applications in the feature because this is how the browser must be used not like in 2005.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-5333205094136050942?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/5333205094136050942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=5333205094136050942&amp;isPopup=true' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/5333205094136050942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/5333205094136050942'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/09/real-ajax-for-real-java-developers-gwt.html' title='Real Ajax for Real Java developers: GWT'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-1778810620373836086</id><published>2009-08-20T12:30:00.002+03:00</published><updated>2009-08-20T12:36:07.323+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><title type='text'>RIA technologies: lets compare font rendering.</title><content type='html'>&lt;p&gt;The idea is to compare the current RIA frameworks like Flex(Flash), Silverlight and JavaFX and see what are the fonts that they produces. We are in 21th century most of the people have laptops and use TFT screens and windows is the most usedOS this days, so most of the people use clear type font rendering. Lets see how each technology uses clear type :&lt;/p&gt;  &lt;p&gt;For me the best fonts with clear type enabled are fonts in WinForms and native windows applications. I’ve found very interesting comparison here: &lt;a href="http://www.scottlogic.co.uk/blog/wpf/2009/07/silverlight-v3-cleartype-font-rendering-a-comparison/"&gt;http://www.scottlogic.co.uk/blog/wpf/2009/07/silverlight-v3-cleartype-font-rendering-a-comparison/&lt;/a&gt; I will use some of the screenshots from there.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="576"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;WinForms            &lt;br /&gt;(ClearType OFF)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/winforms2.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;You can see that WinForms with ClearType off are still best for CRT screens but not good for TFT screens.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;WinForms            &lt;br /&gt;(ClearType On)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/winforms-cleartype3.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;The WinForms + ClearType is the best from microsoft for now.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;Silverlight v2.0&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/silverlight2.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;Silverlight v2 fonts are so bad I cant see the RIA when I have bad fonts.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;Silverlight v3.0&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/silverlight31.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;Silverlight v3 have ClearType but it is still far far worst than the WinForms ClearType.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;WPF &lt;/p&gt;          &lt;p align="center"&gt;(ClearType off)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/wpf2.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;WPF with ClearType off is worst than WinForms with ClearType Off it is bad for CRT and bad for TFT displays. It is bad for everything maybe this is the reason why there is no WPF applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;WPF &lt;/p&gt;          &lt;p align="center"&gt;(ClearType on)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://www.scottlogic.co.uk/blog/wpf/wp-content/uploads/2009/07/wpf-cleartype2.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;WPF with ClearType on is better than Silverlight for me but it is still bad. In .net 4.0 it will be finally fixed if we can believe to Microsoft.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;JavaFX/Swing (Java 1.6u10+)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://lh6.ggpht.com/_3bRKrrchPfA/So0UuRuvfeI/AAAAAAAAAYE/ep9du2FP4nw/JavaFX%20small.jpg" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;JavaFX and Swing with Java 1.6 update 10 have very good ClearType support I didn't see the difference between this and WinForms. But to have ClearType in JavaFX you are stick to SwingXXXX controls.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;JavaFX 1.2 &lt;/p&gt;          &lt;p align="center"&gt;(node based controls)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://lh3.ggpht.com/_3bRKrrchPfA/So0UuNwNJdI/AAAAAAAAAYA/sJbJu1W7xzA/javaFX%20Node%20small.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;JavaFX 1.2 with Node based controls are maybe the worst choice. They are so ugly that I cant believe on my eyes. I was hoping this fonts problem to be fixed in the next JavaFX versions.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p align="center"&gt;Flash 10/Flex 4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;img src="http://lh5.ggpht.com/_3bRKrrchPfA/So0UuVvudsI/AAAAAAAAAYI/YAv01dNAWmk/Flash%20Catalyst%20Small.png" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;Flash 10 and flex 4 looks AMAZING. This is the first “RIA” framework that done the web perfect. I know that Adobe clients are more designers and I like that Adobe is working to make things beautiful.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Summary: &lt;/p&gt;  &lt;p&gt;If you ask me and you want nice RIA framework for your good looking 21th century applications use flash. JavaFX is still bad if there is a nice development and designing tools it will be bad again. Silverlight is version 3.0 but it is still far far worst than Flash sometimes my browser freezes because of Silverlight, Expression Blend is WPF application and looks very bad and there is no designers that use Expression Design.&lt;/p&gt;  &lt;p&gt;Note : You think Expression Blend is black because Microsoft likes Black GUI ? NO it is black because if was “white” you will see the bad looking fonts. In Expression blend 3 you can change the theme with “white theme” but when you change it you will see “the beauty”.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-1778810620373836086?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/1778810620373836086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=1778810620373836086&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1778810620373836086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/1778810620373836086'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/08/ria-technologies-lets-compare-font.html' title='RIA technologies: lets compare font rendering.'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3bRKrrchPfA/So0UuRuvfeI/AAAAAAAAAYE/ep9du2FP4nw/s72-c/JavaFX%20small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-4280524598528449637</id><published>2009-08-19T16:32:00.002+03:00</published><updated>2009-08-19T16:43:50.544+03:00</updated><title type='text'>RichFaces server-side paging with DataTable.</title><content type='html'>&lt;p&gt;Most of the component toolkits have build in support for server-side paging this days but in rest of the cases you need to customize a little the data model or data provider or component itself to have data paging. The reason why I write this post is because when I first saw richfaces everythink was perfect except the server-side paging. They have paging but it was client side based on JavaScript witch just doesn't work in many cases and I loose a lot of time to understand all models, which model I must extend and how to do it to create a data model with server side paging. At the current version of RichFaces on the demo page information about how to do server-side paging at least exist &lt;a href="http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=dataModel&amp;amp;cid=3608154"&gt;http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=dataModel&amp;amp;cid=3608154&lt;/a&gt; but like always the JBoss/RedHat/Exadel doesn’t provide us a fast full easy working example and we must loose a lot of time to search for classes in the demo.&lt;/p&gt;  &lt;p&gt;The reason why I write this post is to give you simple application that uses server side paging and a little “directions” what you need to customize to have server side paging in all cases. If you have read my previous post about hibernate + spring + jsf + richfaces you will have very easy way to extend this simple demo and to make all Richfaces tables to have server-side paging instead of client-side javascript paging.&lt;/p&gt;  &lt;p&gt;So lets start.&lt;/p&gt;  &lt;p&gt;First what we want to create ? We want to create a serveri-side paging that looks like this : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3bRKrrchPfA/Sov-_bL-LbI/AAAAAAAAAXg/WgAjwNQxh1k/s1600-h/Table%5B2%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="Table" alt="Table" src="http://lh6.ggpht.com/_3bRKrrchPfA/Sov-_lFc3FI/AAAAAAAAAXk/lz2lC6L2c0s/Table_thumb.png?imgmax=800" border="0" height="220" width="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you click on the pager at the bottom it will make ajax call to the server and will fetch the the results for the next page. As you can read in the richFaces demo page  you must make custom(extended) data model extending &lt;b&gt;org.ajax4jsf.model.ExtendedDataModel&lt;/b&gt; and &lt;b&gt;org.ajax4jsf.model.SerializableDataModel&lt;/b&gt;. These two classes work together to provide functions that missing in the standard DataModel.&lt;/p&gt;  &lt;p&gt;The most important additional functions are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;access for rows by primary keys instead of index position &lt;/li&gt;    &lt;li&gt;implementation of "visitor" pattern over the "range" of rows to support "table scroller" or "paginator" functions &lt;/li&gt;    &lt;li&gt;ability to serialize table data, so it can be used on post-back processing without additional database query &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In most cases you don’t care about most of this.  In our Simple Server-Side richfaces application we will have a simple entity called User. It can be Hibernate/JPA entity or whatever you want for now it will be just a POJO with getters and setters.&lt;/p&gt;  &lt;div class="highlight"&gt;   &lt;pre&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;package&lt;/span&gt; org&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;joke&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;demo&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;extendeddatamodel&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;User&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; Integer pk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; String username&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; String password&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; String fullName&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; Integer &lt;span style="color: rgb(0, 0, 255);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; pk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer pk&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;pk&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; pk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; String &lt;span style="color: rgb(0, 0, 255);"&gt;getUsername&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; username&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setUsername&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;String username&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;username&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; username&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; String &lt;span style="color: rgb(0, 0, 255);"&gt;getPassword&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; password&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setPassword&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;String password&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;password&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; password&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; String &lt;span style="color: rgb(0, 0, 255);"&gt;getFullName&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; fullName&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setFullName&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;String fullName&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;fullName&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; fullName&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; String &lt;span style="color: rgb(0, 0, 255);"&gt;getEmail&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; email&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setEmail&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;String email&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;email&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; email&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; String email&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;User&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer pk&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;pk&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; pk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;next we will use a simple RandomDataHelper class that will give us random strings and data. This class is downloaded from exadel simple(test) sources.&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;package&lt;/span&gt; org&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;joke&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;demo&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;utils&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;RandomDataHelper&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;random&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; min&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; max&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;assert&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;min&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;=&lt;/span&gt;max&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; min&lt;span style="color: rgb(102, 102, 102);"&gt;+(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;Math&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;round&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Math&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;random&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()*(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;double&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)(&lt;/span&gt;max&lt;span style="color: rgb(102, 102, 102);"&gt;-&lt;/span&gt;min&lt;span style="color: rgb(102, 102, 102);"&gt;));&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; Object &lt;span style="color: rgb(0, 0, 255);"&gt;random&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Object values&lt;span style="color: rgb(102, 102, 102);"&gt;[])&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;assert&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;values&lt;span style="color: rgb(102, 102, 102);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; values&lt;span style="color: rgb(102, 102, 102);"&gt;[&lt;/span&gt;random&lt;span style="color: rgb(102, 102, 102);"&gt;(0,&lt;/span&gt;values&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;length&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;-1)];&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;char&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;randomChar&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Math&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;random&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&amp;gt;0.5)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)((&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;'0'&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt;random&lt;span style="color: rgb(102, 102, 102);"&gt;(0,9));&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)((&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;'A'&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt;random&lt;span style="color: rgb(102, 102, 102);"&gt;(0,25));&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; String &lt;span style="color: rgb(0, 0, 255);"&gt;randomString&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; length&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  StringBuffer buf &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; StringBuffer&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; counter&lt;span style="color: rgb(102, 102, 102);"&gt;=0;&lt;/span&gt;counter&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;length&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;counter&lt;span style="color: rgb(102, 102, 102);"&gt;++)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   buf&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;append&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;randomChar&lt;span style="color: rgb(102, 102, 102);"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; buf&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;toString&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When we have this we are ready to create our model. The model is copy paste from the exadel model shown in the demo page&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;package&lt;/span&gt; org&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;joke&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;demo&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;extendeddatamodel&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.io.IOException&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.ArrayList&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.HashMap&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.List&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.Map&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;javax.faces.context.FacesContext&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;org.ajax4jsf.model.DataVisitor&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;org.ajax4jsf.model.Range&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;org.ajax4jsf.model.SequenceRange&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;org.ajax4jsf.model.SerializableDataModel&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * @author ias&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * This is example class that intended to demonstrate use of ExtendedDataModel and SerializableDataModel.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * This implementation intended to be used as a request scope bean. However, it actually provides serialized&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * state, so on a post-back we do not load data from the data provider. Instead we use data that was used &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * during rendering.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * This data model must be used together with Data Provider, which is responsible for actual data load &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * from the database using specific filtering and sorting. Normally Data Provider must be in either session, or conversation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; * scope.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;AuctionDataModel&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;extends&lt;/span&gt; SerializableDataModel &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; AuctionDataProvider dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; Integer currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; Map&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;Integer&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; wrappedData &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; HashMap&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;Integer&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;();&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;Integer&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; wrappedKeys &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;final&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;long&lt;/span&gt; serialVersionUID &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;-1956179896877538628L;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This method never called from framework.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * (non-Javadoc)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * @see org.ajax4jsf.model.ExtendedDataModel#getRowKey()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; Object &lt;span style="color: rgb(0, 0, 255);"&gt;getRowKey&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This method normally called by Visitor before request Data Row.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setRowKey&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Object key&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;currentPk&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; key&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This is main part of Visitor pattern. Method called by framework many times during request processing. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;walk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;FacesContext context&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; DataVisitor visitor&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; Range range&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; Object argument&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;throws&lt;/span&gt; IOException &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; firstRow &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;((&lt;/span&gt;SequenceRange&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;range&lt;span style="color: rgb(102, 102, 102);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getFirstRow&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; numberOfRows &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;((&lt;/span&gt;SequenceRange&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;range&lt;span style="color: rgb(102, 102, 102);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getRows&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;       wrappedKeys &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; ArrayList&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;Integer&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;();&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;User &lt;span style="color: rgb(160, 160, 0);"&gt;item:&lt;/span&gt;dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getItemsByrange&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; Integer&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;firstRow&lt;span style="color: rgb(102, 102, 102);"&gt;),&lt;/span&gt; numberOfRows&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;))&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           wrappedKeys&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;add&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;());&lt;/span&gt;&lt;br /&gt;           wrappedData&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;put&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(),&lt;/span&gt; item&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;           visitor&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;process&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;context&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(),&lt;/span&gt; argument&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This method must return actual data rows count from the Data Provider. It is used by pagination control&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * to determine total number of data items.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; Integer rowCount&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt; &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;// better to buffer row count locally&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;getRowCount&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;rowCount&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           rowCount &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; Integer&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;getDataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getRowCount&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;());&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; rowCount&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;intValue&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; rowCount&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;intValue&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This is main way to obtain data row. It is intensively used by framework. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * We strongly recommend use of local cache in that method. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; Object &lt;span style="color: rgb(0, 0, 255);"&gt;getRowData&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           User ret &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; wrappedData&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;get&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;ret&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               ret &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; getDataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getAuctionItemByPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;               wrappedData&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;put&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; ret&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; ret&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; ret&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Unused rudiment from old JSF staff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;getRowIndex&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;0;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Unused rudiment from old JSF staff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; Object &lt;span style="color: rgb(0, 0, 255);"&gt;getWrappedData&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;UnsupportedOperationException&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Never called by framework.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;boolean&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;isRowAvailable&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;getDataProvider&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;hasAuctionItemByPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;currentPk&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Unused rudiment from old JSF staff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setRowIndex&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; rowIndex&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;//ignore&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Unused rudiment from old JSF staff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setWrappedData&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Object data&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;UnsupportedOperationException&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This method suppose to produce SerializableDataModel that will be serialized into View State and used on a post-back.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * In current implementation we just mark current model as serialized. In more complicated cases we may need to &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * transform data to actually serialized form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt;  SerializableDataModel &lt;span style="color: rgb(0, 0, 255);"&gt;getSerializableModel&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Range range&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;wrappedKeys&lt;span style="color: rgb(102, 102, 102);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * This is helper method that is called by framework after model update. In must delegate actual database update to &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     * Data Provider.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;     */&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(170, 34, 255);"&gt;@Override&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       getDataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;update&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; AuctionDataProvider &lt;span style="color: rgb(0, 0, 255);"&gt;getDataProvider&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;setDataProvider&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;AuctionDataProvider dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;dataProvider&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just some notes about it. The important parts for you are two : method getRowIndex() must not be used in JSF 1.2 but MyFaces implementation invokes it some times so in model provided by exadel the method throws exception here we make it to return 0; just because we don't want to have exception with myfaces implementation.&lt;/p&gt;&lt;p&gt;The method &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;walk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;FacesContext context&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; DataVisitor visitor&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; Range range&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; Object argument&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; is the miracle this is the method invoked  every time when you click the pager. The parameter Range contains the firstRow and countRows that you want to show in the dataTable so you just need to get them. When you have them you need to call your class that provides data. This can be a Service or some kind of data provider. In this simple case we have :&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;User &lt;span style="color: rgb(160, 160, 0);"&gt;item:&lt;/span&gt;dataProvider&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getItemsByrange&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; Integer&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;firstRow&lt;span style="color: rgb(102, 102, 102);"&gt;),&lt;/span&gt; numberOfRows&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#666666;"&gt;so we have class dataProvider and method getItemsByRange. This dataProvider is a field in our dataModel but you can pass it or inject it from spring or from jsf faces-config.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#666666;"&gt;The auction data provider class looks like this : &lt;/span&gt;&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;package&lt;/span&gt; org&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;joke&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;demo&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;extendeddatamodel&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.ArrayList&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;java.util.List&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;org.joke.demo.utils.RandomDataHelper&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;AuctionDataProvider&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; String allNames&lt;span style="color: rgb(102, 102, 102);"&gt;[]&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Naiden Gochev"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Toshko Poshkov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Chocho Monchov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Trallaa Trart"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Peter Taharov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Djanko bakov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Hektor Mektor"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Tartal tartalov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Djadja badja"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Aza Daraz"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Arazd azasd "&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Max Payne"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Max Damage"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Nqkoi Drug"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Treti peti"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Shesti Sedmi"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Talafal Kalafalov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Iumgur mungurov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Hrisi hrisi"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Tartalan tartalanov"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Az Taz"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Maz Praz"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Liz languare"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Axa Ratra"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"Daraz rasas"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"acb asd"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"ascv asdv"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"ara araaaa"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"mon4o gon4o"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(186, 33, 33);"&gt;"petq petrova"&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;};&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; allItems &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;final&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; VOLUME &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;200;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;synchronized&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;initData&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; data &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; ArrayList&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;();&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; counter &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;0;&lt;/span&gt; counter &lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt; VOLUME&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt; counter&lt;span style="color: rgb(102, 102, 102);"&gt;++)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   User item &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; User&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; Integer&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;counter&lt;span style="color: rgb(102, 102, 102);"&gt;));&lt;/span&gt;&lt;br /&gt;                   item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;setFullName&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;((&lt;/span&gt;String&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; RandomDataHelper&lt;br /&gt;                           &lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;random&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;allNames&lt;span style="color: rgb(102, 102, 102);"&gt;));&lt;/span&gt;&lt;br /&gt;                   item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;setUsername&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;RandomDataHelper&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;randomString&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(8));&lt;/span&gt;&lt;br /&gt;                   item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;setPassword&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;RandomDataHelper&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;randomString&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(8));&lt;/span&gt;&lt;br /&gt;                   data&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;add&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;item&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;              allItems &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; data&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; getAllItems&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;allItems &lt;span style="color: rgb(102, 102, 102);"&gt;!=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&amp;amp;&lt;/span&gt; allItems&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;size&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;0)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; allItems&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   initData&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;                  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; allItems&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; User &lt;span style="color: rgb(0, 0, 255);"&gt;getAuctionItemByPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer pk&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;User item &lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt; getAllItems&lt;span style="color: rgb(102, 102, 102);"&gt;())&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;equals&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;pk&lt;span style="color: rgb(102, 102, 102);"&gt;))&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; item&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;RuntimeException&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"Auction Item pk="&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; pk&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;toString&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt;&lt;br /&gt;                       &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(186, 33, 33);"&gt;" not found"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;boolean&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;hasAuctionItemByPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer pk&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;User item &lt;span style="color: rgb(102, 102, 102);"&gt;:&lt;/span&gt; getAllItems&lt;span style="color: rgb(102, 102, 102);"&gt;())&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;item&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;getPk&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;equals&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;pk&lt;span style="color: rgb(102, 102, 102);"&gt;))&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                       &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; getItemsByrange&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;Integer startPk&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; numberOfRows&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; String sortField&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;boolean&lt;/span&gt; ascending&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;            System&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"load items from "&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt;startPk &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; &lt;span style="color: rgb(186, 33, 33);"&gt;" and count of rows "&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; numberOfRows&lt;span style="color: rgb(102, 102, 102);"&gt;);&lt;/span&gt;&lt;br /&gt;               List&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;&lt;/span&gt; ret &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;new&lt;/span&gt; ArrayList&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;User&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;gt;();&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; counter &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;0;&lt;/span&gt; counter &lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt; numberOfRows&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt; counter&lt;span style="color: rgb(102, 102, 102);"&gt;++)&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   ret&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;add&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;getAllItems&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;get&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;startPk&lt;span style="color: rgb(102, 102, 102);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;intValue&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; counter&lt;span style="color: rgb(102, 102, 102);"&gt;));&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; ret&lt;span style="color: rgb(102, 102, 102);"&gt;;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;void&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="font-style: italic; color: rgb(64, 128, 128);"&gt;// nothing need to do&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(176, 0, 64);"&gt;int&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;getRowCount&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;getAllItems&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;().&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;size&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;();&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Thats all this provider contains all the operations that are needed from the model to work. Note the names of the provider and model AuctionDataProvider and AuctionDataModel this was the names in the exadel demo/test application which is not included in exadels demo site. You can find them easy in google, the difference there is that they use AuctionItem not User and the Exadel demo is not so simple and short.&lt;/p&gt;&lt;p&gt;All we need is the view and the faces-config.&lt;/p&gt;&lt;p&gt;The view looks like this : &lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span style="color: rgb(188, 122, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;jsp:root&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:jsp=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://java.sun.com/JSP/Page"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:f=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://java.sun.com/jsf/core"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:a4j=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://richfaces.org/a4j"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:rich=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://richfaces.org/rich"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:h=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://java.sun.com/jsf/html"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;version=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"2.1"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;jsp:directive&lt;/span&gt;&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;page&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;language=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"java"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(125, 144, 41);"&gt;contentType=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"text/html; charset=UTF-8"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;pageEncoding=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"UTF-8"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(188, 122, 0);"&gt;&amp;lt;![CDATA[ &amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(188, 122, 0);"&gt;&amp;lt;![CDATA[ &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt; ]]&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/jsp:text&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;f:view&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:form&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;rich:dataTable&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;id=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"auction"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"#{auctionDataModel}"&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(125, 144, 41);"&gt;var=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"item"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;rows=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"10"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;f:facet&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;name=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"header"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"full name"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;id=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"fullName"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"#{item.fullName}"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;f:facet&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;name=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"header"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"username"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;id=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"username"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"#{item.username}"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/h:outputText&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;f:facet&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;name=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"header"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:outputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"password"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;h:inputText&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;id=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"password"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;value=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"#{item.password}"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;label=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"password"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/h:inputText&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/rich:column&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;f:facet&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;name=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"footer"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;rich:datascroller&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;for=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"auction"&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;maxPages=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"5"&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/f:facet&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/rich:dataTable&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/h:form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/f:view&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/jsp:root&amp;gt;&lt;/span&gt;&lt;/pre&gt;  &lt;pre&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&lt;/span&gt;And the faces-config.xml looks like this :&lt;/pre&gt;    &lt;pre&gt;&lt;span style="color: rgb(188, 122, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;faces&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-config&lt;/span&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://java.sun.com/xml/ns/javaee"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xmlns:xsi=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"http://java.sun.com/xml/ns/javaee &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;      http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(125, 144, 41);"&gt;version=&lt;/span&gt;&lt;span style="color: rgb(186, 33, 33);"&gt;"1.2"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-name&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;auctionDataModel&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-name&amp;gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-class&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;org.joke.demo.extendeddatamodel.AuctionDataModel&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-class&amp;gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-scope&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;session&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-scope&amp;gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-property&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;property&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-name&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;dataProvider&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/property-name&amp;gt; &lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;#{auctionDataProvider}&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-property&amp;gt;&lt;br /&gt; &lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean&amp;gt; &lt;br /&gt; &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-name&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;auctionDataProvider&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-name&amp;gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-class&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;org.joke.demo.extendeddatamodel.AuctionDataProvider&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-class&amp;gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;lt;managed&lt;/span&gt;&lt;span style="color: rgb(125, 144, 41);"&gt;-bean-scope&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;session&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean-scope&amp;gt;&lt;br /&gt; &lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/managed-bean&amp;gt;&lt;br /&gt;&lt;span style="border: 1px solid rgb(255, 0, 0);"&gt;&amp;lt;&lt;/span&gt;/faces-config&amp;gt;&lt;/pre&gt;  &lt;/div&gt;&lt;p&gt;You can notice that I inject the auctionDataProvider in the auctionDataModel here. If you use spring and Spring EL Resolver you can use spring bean container as well.&lt;/p&gt;&lt;p&gt;The full source of this example can be found here: &lt;a title="http://dl.getdropbox.com/u/887821/JsfHelloWorld.zip" href="http://dl.getdropbox.com/u/887821/JsfHelloWorld.zip"&gt;http://dl.getdropbox.com/u/887821/JsfHelloWorld.zip&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-4280524598528449637?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/4280524598528449637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=4280524598528449637&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/4280524598528449637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/4280524598528449637'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/08/richfaces-server-side-paging-with.html' title='RichFaces server-side paging with DataTable.'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3bRKrrchPfA/Sov-_lFc3FI/AAAAAAAAAXk/lz2lC6L2c0s/s72-c/Table_thumb.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-2343421882606013264</id><published>2009-08-19T11:53:00.001+03:00</published><updated>2009-08-19T12:56:15.427+03:00</updated><title type='text'>Hibernate Generic DAO.</title><content type='html'>&lt;p&gt;When you use Hibernate and DAO pattern it is a good idea to use a Generic Base Dao. The fallowing code snippet contains GenericDAO that is a base class for all my DAO classes. This GenericDAO uses HibernateDaoSupport from Spring for its implementation if you want you can use JpaDaoSupport or JdbcDaoSupport in your projects. &lt;/p&gt;  &lt;p&gt;My Generic DAO interface looks like this :&lt;/p&gt; &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:72.0pt 72.0pt 72.0pt 72.0pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.joke.myproject.dao.base;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; java.io.Serializable;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; java.util.List;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;/**&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@author&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; &lt;u&gt;Naiden&lt;/u&gt; &lt;u&gt;Gochev&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f7f9f; font-size: 10pt"&gt;&amp;lt;E&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f7f9f; font-size: 10pt"&gt;&amp;lt;PK&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;*/&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;interface&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; GenericDao&amp;lt;E,PK&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; Serializable&amp;gt; {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; PK save(E newInstance);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; update(E transientObject);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; saveOrUpdate(E transientObject);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; delete(E persistentObject);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; E findById(PK id);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;E&amp;gt; findAll();&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;E&amp;gt; findAllByProperty(String propertyName,Object value);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;}&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;All method names are very common so I don't think they need some explanation.&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;The implementation of this GenericDAO :&lt;/span&gt;&lt;/p&gt;   &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:72.0pt 72.0pt 72.0pt 72.0pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;    &lt;div class="Section1"&gt;     &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.joke.myproject.dao.base;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; java.io.Serializable;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; java.util.List;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.hibernate.criterion.DetachedCriteria;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.hibernate.criterion.Restrictions;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.springframework.orm.hibernate3.support.HibernateDaoSupport;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt"&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;/**&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@author&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; JOKe&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f7f9f; font-size: 10pt"&gt;&amp;lt;E&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;* &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f9fbf; font-size: 10pt"&gt;@param&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f7f9f; font-size: 10pt"&gt;&amp;lt;PK&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #3f5fbf; font-size: 10pt"&gt;*/&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;abstract&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; GenericDaoImpl&amp;lt;E, PK &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; Serializable&amp;gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HibernateDaoSupport &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;implements&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; GenericDao&amp;lt;E, PK&amp;gt; {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #646464; font-size: 10pt"&gt;@SuppressWarnings&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;unchecked&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; PK save(E newInstance) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; (PK) getHibernateTemplate().save(newInstance);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #646464; font-size: 10pt"&gt;@SuppressWarnings&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;unchecked&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; E findById(PK id) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; (E) getHibernateTemplate().get(getEntityClass(), id);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #646464; font-size: 10pt"&gt;@SuppressWarnings&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;unchecked&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; List&amp;lt;E&amp;gt; findAll() {&lt;/span&gt;&lt;/p&gt;      &lt;blockquote&gt;       &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; getHibernateTemplate().findByCriteria(createDetachedCriteria());&lt;/span&gt;&lt;/p&gt;     &lt;/blockquote&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #646464; font-size: 10pt"&gt;@SuppressWarnings&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;unchecked&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; List&amp;lt;E&amp;gt; findAllByProperty(String propertyName, Object value) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DetachedCriteria criteria = createDetachedCriteria();&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; criteria.add(Restrictions.&lt;i&gt;eq&lt;/i&gt;(propertyName, value));&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; getHibernateTemplate().findByCriteria(criteria);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; List&amp;lt;E&amp;gt; findByExample(E object) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;E&amp;gt; resultList = getHibernateTemplate().findByExample(object, 0, 1);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; resultList;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; List&amp;lt;E&amp;gt; findByExample(E object, &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; firstResult, &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; maxResults) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;E&amp;gt; resultList = getHibernateTemplate().findByExample(object,&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; firstResult, maxResults);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; resultList;&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; update(E transientObject) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; getHibernateTemplate().update(transientObject);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; saveOrUpdate(E transientObject) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; getHibernateTemplate().saveOrUpdate(transientObject);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; delete(E persistentObject) {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; getHibernateTemplate().delete(persistentObject);&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;protected&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;abstract&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; Class&amp;lt;E&amp;gt; getEntityClass();&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;protected&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; DetachedCriteria createDetachedCriteria() {&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; DetachedCriteria.&lt;i&gt;forClass&lt;/i&gt;(getEntityClass());&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;}&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;The GenericDaoImpl is abstract because the actual DAOs will extend it and will override only one method : &lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #7f0055; font-size: 10pt"&gt;protected&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #7f0055; font-size: 10pt"&gt;abstract&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: black; font-size: 10pt"&gt; Class&amp;lt;E&amp;gt; getEntityClass(); &lt;/span&gt;This method is used for creating of the DetachedCriteria object in the &lt;font color="#000000" size="2" face="Courier New"&gt;&lt;/font&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: black; font-size: 10pt"&gt;createDetachedCriteria() &lt;/span&gt;method.&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Every DAO class that implements GenericDaoImpl will look like this :&lt;/p&gt; &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt;	{font-family:"Cambria Math";&lt;br /&gt;	panose-1:2 4 5 3 5 4 6 3 2 4;}&lt;br /&gt;@font-face&lt;br /&gt;	{font-family:calibri;&lt;br /&gt;	panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt;	{margin-top:0cm;&lt;br /&gt;	margin-right:0cm;&lt;br /&gt;	margin-bottom:10.0pt;&lt;br /&gt;	margin-left:0cm;&lt;br /&gt;	line-height:115%;&lt;br /&gt;	font-size:11.0pt;&lt;br /&gt;	font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt;	{margin-bottom:10.0pt;&lt;br /&gt;	line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt;	{size:612.0pt 792.0pt;&lt;br /&gt;	margin:72.0pt 72.0pt 72.0pt 72.0pt;}&lt;br /&gt;div.section1&lt;br /&gt;	{page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.joke.myproject.dao;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; java.util.List;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.hibernate.criterion.DetachedCriteria;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.hibernate.criterion.Restrictions;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.joke.myproject.dao.base.GenericDaoImpl;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; org.joke.myproject.entity.Message;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; MessagesDAO &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; GenericDaoImpl&amp;lt;Message, Integer&amp;gt; {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #646464; font-size: 10pt"&gt;@Override&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;protected&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; Class&amp;lt;Message&amp;gt; getEntityClass() {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; Message.&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;span style="background: silver"&gt;List&amp;lt;Message&amp;gt;&lt;/span&gt; findNotDeletedTextMessages() {&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DetachedCriteria criteria = createDetachedCriteria();&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; criteria.add(Restrictions.&lt;i&gt;eq&lt;/i&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;deleted&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;false&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;));&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; criteria.add(Restrictions.&lt;i&gt;or&lt;/i&gt;(Restrictions.&lt;i&gt;eq&lt;/i&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7f0055; font-size: 10pt"&gt;false&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;), Restrictions.&lt;i&gt;isNull&lt;/i&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #2a00ff; font-size: 10pt"&gt;&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)));&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;Message&amp;gt; textMessages = getHibernateTemplate().&lt;span style="background: silver"&gt;findByCriteria&lt;/span&gt;(criteria);&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; background: silver; color: #7f0055; font-size: 10pt"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; background: silver; color: black; font-size: 10pt"&gt; textMessages;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;}&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The method here called findNotDeletedTextMessages() is optional it is just another DAO method added in the implementation. If you use Spring you can just add the annotation @Component as class annotation and you have DAO ready for use.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;That's all have fun. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;Edit : Check out my next article called&amp;#160; JSF, Spring, Hibernate – lets make development easy. It will use this GenericDAO to make architecture of an application.&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/441421458098194397-2343421882606013264?l=gochev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gochev.blogspot.com/feeds/2343421882606013264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=441421458098194397&amp;postID=2343421882606013264&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2343421882606013264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/441421458098194397/posts/default/2343421882606013264'/><link rel='alternate' type='text/html' href='http://gochev.blogspot.com/2009/08/hibernate-generic-dao.html' title='Hibernate Generic DAO.'/><author><name>JOKe</name><uri>http://www.blogger.com/profile/04678280364638370213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_3bRKrrchPfA/SKHurf4RWVI/AAAAAAAAAAg/XRIqotx_sok/s1600-R/mini.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-441421458098194397.post-515500060658178418</id><published>2009-08-19T11:44:00.003+03:00</published><updated>2009-08-19T17:02:14.278+03:00</updated><title type='text'>JSF, RichFaces, Spring, Hibernate – lets make development easy.</title><content type='html'>&lt;p&gt;The goal of this article is to show you how you can use Hibernate, Spring and JSF 1.2 in the most easiest way.&lt;/p&gt;  &lt;p&gt;Used technologies :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;maven 2 &lt;/li&gt;    &lt;li&gt;JSF 1.2 (MyFaces) &lt;/li&gt;    &lt;li&gt;Spring 2.5.6 &lt;/li&gt;    &lt;li&gt;Hibernate 3.2.1.GA &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the example I will use mysql just for the configuration. You can use whatever you want. The goal that we want is to use Spring for management of transactions and as IoC container. The beast way for us is to make everything spring beans. In typical application we will have Services, DAOs, Entity objects and JSF managed beans. We will make all of them spring beans and use @Autowired annotation (included in Spring). We will use GenericDAO implementation which is explained in &lt;a href="http://gochev.blogspot.com/2009/08/hibernate-generic-dao.html"&gt;this&lt;/a&gt; article: &lt;a href="http://gochev.blogspot.com/2009/08/hibernate-generic-dao.html"&gt;http://gochev.blogspot.com/2009/08/hibernate-generic-dao.html&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;First lets create a maven 2 project and add replace update it’s pom.xml to looks like this, note that the pom is big we will explain important sections after the whole content.&lt;/p&gt; &lt;style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt; /* Font Definitions */&lt;br /&gt; @font-face&lt;br /&gt; {font-family:calibri;&lt;br /&gt; panose-1:2 15 5 2 2 2 4 3 2 4;}&lt;br /&gt; /* Style Definitions */&lt;br /&gt; p.msonormal, li.msonormal, div.msonormal&lt;br /&gt; {margin-top:0cm;&lt;br /&gt; margin-right:0cm;&lt;br /&gt; margin-bottom:10.0pt;&lt;br /&gt; margin-left:0cm;&lt;br /&gt; line-height:115%;&lt;br /&gt; font-size:11.0pt;&lt;br /&gt; font-family:"Calibri","sans-serif";}&lt;br /&gt;.msopapdefault&lt;br /&gt; {margin-bottom:10.0pt;&lt;br /&gt; line-height:115%;}&lt;br /&gt;@page section1&lt;br /&gt; {size:612.0pt 792.0pt;&lt;br /&gt; margin:72.0pt 72.0pt 72.0pt 72.0pt;}&lt;br /&gt;div.section1&lt;br /&gt; {page:section1;}&lt;br /&gt;--&gt;&lt;/style&gt;  &lt;div class="Section1"&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;xml&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;span style="color: rgb(127, 0, 127);"&gt;version&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"1.0"&lt;/span&gt;&lt;/i&gt; &lt;span style="color: rgb(127, 0, 127);"&gt;encoding&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"UTF-8"&lt;/span&gt;&lt;/i&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;project&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;span style="color: rgb(127, 0, 127);"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"http://maven.apache.org/POM/4.0.0"&lt;/span&gt;&lt;/i&gt; &lt;span style="color: rgb(127, 0, 127);"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(127, 0, 127);"&gt;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;i&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&lt;/span&gt;&lt;/i&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;modelVersion&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;4.0.0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;modelVersion&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;span style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&lt;font color="#000000"&gt;myp&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: black; font-size: 10pt;"&gt;roject-web&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;span style="font-family: 'Courier New'; color: teal; font-size: 10pt;"&gt;&lt;font color="#000000"&gt;myp&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: black; font-size: 10pt;"&gt;roject-web&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;packaging&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;war&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;packaging&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;0.0.1-SNAPSHOT&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;name&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;A custom project using myfaces&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;name&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://www.myorganization.org&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;build&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;finalName&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;font color="#000000"&gt;myp&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;roject-web&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;finalName&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugins&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191); font-size: 10pt;"&gt;&amp;lt;!--This plugin allows to run the example using mvn jetty:run --&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;org.mortbay.jetty&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;maven-jetty-plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;6.1.8&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;scanIntervalSeconds&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;10&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;scanIntervalSeconds&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;maven-compiler-plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;source&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;1.5&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;source&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;target&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;1.5&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;target&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;maven-eclipse-plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpversion&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;2.0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpversion&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpapplicationxml&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpapplicationxml&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpmanifest&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;wtpmanifest&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;downloadSources&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;downloadSources&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;downloadJavadocs&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;downloadJavadocs&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;manifest&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;${basedir}/src/main/resources/META-INF/MANIFEST.MF&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;manifest&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;configuration&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugin&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;plugins&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;build&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repositories&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;releases&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;enabled&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;false&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;enabled&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;releases&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;snapshots&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;enabled&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;enabled&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;snapshots&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;apache-maven-snapshots&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;java.net&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://download.java.net/maven/1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;legacy&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;java.net2&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://download.java.net/maven/2&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;legacy&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;repository.jboss.com&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://repository.jboss.com/maven2/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;default&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;layout&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;repo1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;id&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;name&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;repo1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;name&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;http://repo1.maven.org/maven2/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;url&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;releases&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;updatePolicy&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;never&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;updatePolicy&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;releases&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repository&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;repositories&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191); font-size: 10pt;"&gt;&amp;lt;!-- Project dependencies --&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependencies&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;org.springframework&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;spring-core&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;2.5.6&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;org.springframework&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;spring-beans&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;2.5.6&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;org.springframework&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;groupId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;spring-context&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;artifactId&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;2.5.6&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;version&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 127, 127); font-size: 10pt;"&gt;dependency&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: teal; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="line-height: normal; margin-bottom: 0pt;" class="MsoN
