<?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-6131991392460354782</id><updated>2011-11-27T16:07:34.274-08:00</updated><category term='itmill toolkit'/><category term='gwt'/><category term='maven2'/><category term='spring'/><title type='text'>Quentin Astegiano Java Blog</title><subtitle type='html'>The aim of this blog is to allow me to express my thoughts &amp; achievements on Java - mainly about Java web applications &amp; frameworks: Struts2, Spring, GWT, ITMill Toolkit.
There will probably be a few posts about JavaScript, too, mainly centered on the MooTools framework.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6131991392460354782.post-6600927442062793190</id><published>2008-05-22T14:47:00.000-07:00</published><updated>2008-05-22T14:53:02.048-07:00</updated><title type='text'>ITMill Toolkit is now open source !</title><content type='html'>Woot, a great news from, err, a few weeks ago :D&lt;br /&gt;&lt;br /&gt;ITMill Toolkit is now open source. And that is really, really cool. &lt;br /&gt;As it is now, I see no reason for someone willing to create a web application (not the same thing that "a web site", mind !) not to use the toolkit. I'm sure it was easy for me to convince my bosses to use the toolkit any time we need to build something on the web...&lt;br /&gt;&lt;br /&gt;Anyway. Check &lt;a href="http://dev.itmill.com/"&gt;http://dev.itmill.com/&lt;/a&gt; for various pleasant things, such as nightly build, technical articles, a few how-to... And the SVN sources, of course :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131991392460354782-6600927442062793190?l=qastegiano.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/6600927442062793190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131991392460354782&amp;postID=6600927442062793190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/6600927442062793190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/6600927442062793190'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/2008/05/itmill-toolkit-is-now-open-source.html' title='ITMill Toolkit is now open source !'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131991392460354782.post-6180112917070758254</id><published>2008-05-22T13:59:00.000-07:00</published><updated>2008-05-22T14:53:21.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='itmill toolkit'/><title type='text'>Using Maven to build your custom widgetset</title><content type='html'>In a previous entry, I explained how to set up Maven &amp; ItMill Toolkit for them to work together.&lt;br /&gt;&lt;br /&gt;It is also possible to use Maven to automatically build your custom widgets during its compile phase.&lt;br /&gt;&lt;br /&gt;That was one a few things that I did not like in the toolkit: each time you want to build your widget, to create the html &amp; js files needed, you have to launch a specific ANT file. Having two separate build mechanisms in a single project... Well, that was not to my taste.&lt;br /&gt;But Maven is Jack of all trade, and is willing to execute any ANT task - if you ask nicely.&lt;br /&gt;&lt;br /&gt;For detailed informations on the Maven ANT Run plugin, refer to the official documentation: &lt;a href="http://maven.apache.org/plugins/maven-antrun-plugin/"&gt;http://maven.apache.org/plugins/maven-antrun-plugin/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To build the widget located on &lt;span style="font-weight:bold;"&gt;com.your.company.widget.widgetset&lt;/span&gt; , insert the following XML snipset in &lt;br /&gt;your &lt;span style="font-weight:bold;"&gt;pom.xml&lt;/span&gt; :&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  ...&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;build&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;plugins&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      ...&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;plugin&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;maven-antrun-plugin&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;executions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;execution&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;phase&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;compile&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;phase&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="compile_classpath"&lt;/span&gt; &lt;span class="attr"&gt;refid&lt;/span&gt;&lt;span class="kwrd"&gt;="maven.compile.classpath"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="client-side-src-location"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${project.build.sourceDirectory}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;property&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="client-side-destination"&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${project.build.directory}\${artifactId}-${version}/ITMILL/widgetsets"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;path&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="compile.classpath"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pathelement&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="${client-side-src-location}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pathelement&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;="${compile_classpath}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;java&lt;/span&gt; &lt;span class="attr"&gt;classname&lt;/span&gt;&lt;span class="kwrd"&gt;="com.google.gwt.dev.GWTCompiler"&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;failonerror&lt;/span&gt;&lt;span class="kwrd"&gt;="yes"&lt;/span&gt; &lt;span class="attr"&gt;fork&lt;/span&gt;&lt;span class="kwrd"&gt;="yes"&lt;/span&gt; &lt;span class="attr"&gt;maxmemory&lt;/span&gt;&lt;span class="kwrd"&gt;="128m"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;arg&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="-out"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;arg&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="${client-side-destination}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;arg&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="com.your.company.widget.widgetset"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;classpath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;path&lt;/span&gt; &lt;span class="attr"&gt;refid&lt;/span&gt;&lt;span class="kwrd"&gt;="compile.classpath"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;classpath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;java&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tasks&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;goals&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;goal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;run&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;goal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;goals&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;execution&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;executions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;plugin&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;plugins&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;build&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What this code do is quite simple:&lt;br /&gt; - Tell Maven that it must be executed in the &lt;span style="font-weight:bold;"&gt;compile&lt;/span&gt; phase&lt;br /&gt; - Specify the properties needed by the ANT task, such as the libraries classpath, the source location &amp; the output folder (using Maven global variables to ensure compatibility)&lt;br /&gt; - Specify the ANT task itself, ie. the GWT compiler&lt;br /&gt;&lt;br /&gt;As it is done, the resulting files will be put in the appropriate &lt;span style="font-weight:bold;"&gt;target&lt;/span&gt; folder, ensuring that those files will be accessible from the deployed application, included in the WAR file, and cleaned with the rest of the sources when asked via &lt;span style="font-weight:bold;"&gt;mvn clean&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131991392460354782-6180112917070758254?l=qastegiano.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/6180112917070758254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131991392460354782&amp;postID=6180112917070758254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/6180112917070758254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/6180112917070758254'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/2008/05/using-maven-to-build-your-custom.html' title='Using Maven to build your custom widgetset'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131991392460354782.post-7684286166599134025</id><published>2008-01-08T13:39:00.000-08:00</published><updated>2008-01-08T14:20:29.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='itmill toolkit'/><title type='text'>ITMill Toolkit 5 &amp; Spring</title><content type='html'>Once again, in the perfect world of the Java frameworks, everything is simple, everything is easy.&lt;br /&gt;&lt;br /&gt;Ok, I'll admit, I've been helped on this one, by&lt;a href="http://forum.itmill.com/posts/list/347.page"&gt; a post from Joonas Lehtinen&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;He say everything: toolkit application can be treated as servlet.&lt;br /&gt;So.&lt;br /&gt;&lt;br /&gt;Set up Spring as usual:&lt;br /&gt;Add the Spring dependencies to your &lt;span style="font-weight: bold;"&gt;pom.xml&lt;/span&gt; :&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependencies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  ...&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;org.springframework&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;spring-core&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2.0.3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;org.springframework&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;spring-beans&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2.0.3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;org.springframework&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;spring-context&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artifactId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2.0.3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependencies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Add the Spring listener to your &lt;span style="font-weight: bold;"&gt;web.xml&lt;/span&gt; :&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;web-app&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  ..&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;listener&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;listener-class&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;org.springframework.web.context.ContextLoaderListener&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;listener-class&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;listener&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;web-app&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;And add the relevant informations about your application context files :&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;web-app&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  ..&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;context-param&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;param-name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;contextConfigLocation&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;param-name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;param-value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;classpath*:applicationContext*.xml&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;param-value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;context-param&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;web-app&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Following Joonas advice, I've made a very simple helper class allowing me to access Spring beans:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;import com.itmill.toolkit.Application;&lt;br /&gt;import com.itmill.toolkit.terminal.gwt.server.WebApplicationContext;&lt;br /&gt;import javax.servlet.ServletContext;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.web.context.support.WebApplicationContextUtils;&lt;br /&gt;&lt;br /&gt;public class SpringContextHelper {&lt;br /&gt;&lt;br /&gt;    private ApplicationContext context;&lt;br /&gt;&lt;br /&gt;    public SpringContextHelper(Application application) {&lt;br /&gt;        ServletContext servletContext = &lt;br /&gt;                ((WebApplicationContext) application.getContext())&lt;br /&gt;                .getHttpSession().getServletContext();&lt;br /&gt;        context = WebApplicationContextUtils.&lt;br /&gt;                getRequiredWebApplicationContext(servletContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Object getBean(final String beanRef) {&lt;br /&gt;        return context.getBean(beanRef);&lt;br /&gt;    }    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And... That's it. Simple, eh ?&lt;br /&gt;&lt;br /&gt;Usage example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;public class SpringHelloWorld extends com.itmill.toolkit.Application {&lt;br /&gt;&lt;br /&gt;    public void init() {&lt;br /&gt;        final Window main = new Window("Hello window");&lt;br /&gt;        setMainWindow(main);&lt;br /&gt;        &lt;br /&gt;        SpringContextHelper helper = new SpringContextHelper(this);&lt;br /&gt;        MyBeanInterface bean = (MyBeanInterface) &lt;br /&gt;                helper.getBean("myBean");&lt;br /&gt;        main.addComponent(new Label( bean.myMethod() ));&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131991392460354782-7684286166599134025?l=qastegiano.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/7684286166599134025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131991392460354782&amp;postID=7684286166599134025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/7684286166599134025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/7684286166599134025'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/2008/01/itmill-toolkit-5-spring.html' title='ITMill Toolkit 5 &amp; Spring'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131991392460354782.post-3234597783815577950</id><published>2008-01-08T12:09:00.000-08:00</published><updated>2008-01-08T13:37:17.205-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='itmill toolkit'/><title type='text'>ITMill Toolkit 5 &amp; Maven2</title><content type='html'>Using ITMill Toolkit 5 &amp;amp; Maven2 together is a matter of minutes.&lt;br /&gt;&lt;br /&gt;You do not know or use Maven2 ? And you are developing a Java Web (or not) Project ? What a shame ! You should.&lt;br /&gt;Maven2 allow you to manage your project dependencies, build, and reporting in an easy and cool way. I will not spend too much time detailing Maven2 use here, check http://maven.apache.org/ if you want to know more.&lt;br /&gt;&lt;br /&gt;As ITMill Toolkit (gosh, I need an acronym for that ^^), from the developer point of view, is a totally classic web application, nothing special is required to unleash the power of Maven2 on it.&lt;br /&gt;&lt;br /&gt;Before anything else, &lt;a href="http://www.itmill.com/downloads/itmill-toolkit.htm"&gt;download ITMill jar file&lt;/a&gt; . The jar is inside all this stuff, as this is a demo application, in &lt;span style="font-weight: bold;"&gt;WEB-INF/lib &lt;/span&gt;.&lt;br /&gt;Install it in your local Maven2 repository:&lt;br /&gt;&lt;pre  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn install:install-file&lt;br /&gt;-Dfile=&lt;path-to-file&gt;&lt;br /&gt;-DgroupId=itmill&lt;br /&gt;-DartifactId=&lt;/path-to-file&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;itmill-toolkit&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;-Dversion=5.0.0&lt;br /&gt;-Dpackaging=jar&lt;br /&gt;-DgeneratePom=true&lt;/span&gt;&lt;/pre&gt;Then, create a Maven web project, using the archetype:&lt;br /&gt;&lt;pre  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn archetype:create&lt;br /&gt;-DarchetypeGroupId=org.apache.maven.archetype&lt;br /&gt;-DarchetypeArtifactId=maven-archetype-webapp&lt;br /&gt;-DarchetypeVersion=1.0-SNAPSHOT&lt;br /&gt;-DgroupId=&lt;span style="font-style: italic;"&gt;your.company&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; &lt;/span&gt;&lt;br /&gt;-DartifactId=&lt;span style="font-style: italic;"&gt;project-name&lt;/span&gt;&lt;br /&gt;-Dversion=&lt;span style="font-style: italic;"&gt;1.0&lt;/span&gt;&lt;br /&gt;-Dpackaging=war&lt;/span&gt;&lt;/pre&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;/span&gt;Open the project in your favorite IDE (I'm a huge supporter of NetBean6, but I'm sure using Eclipse change nothing).&lt;br /&gt;Edit you project &lt;span style="font-weight: bold;"&gt;pom.xml &lt;/span&gt;. Add the ITMill dependency:&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  ..&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependencies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    ..&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;itmill&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artifactid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;itmill-toolkit&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artifactid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;5.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependencies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;And there, everything is done.&lt;br /&gt;&lt;br /&gt;Just set up a main ITMill class, update your &lt;span style="font-weight: bold;"&gt;web.xml&lt;/span&gt; to add a servlet &amp;amp; servlet mapping for it, and your Maven2 / ITMill project is fully operational.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131991392460354782-3234597783815577950?l=qastegiano.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/3234597783815577950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131991392460354782&amp;postID=3234597783815577950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/3234597783815577950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/3234597783815577950'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/2008/01/itmill-toolkit-5-maven2.html' title='ITMill Toolkit 5 &amp; Maven2'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131991392460354782.post-2464966620038743407</id><published>2008-01-08T11:24:00.000-08:00</published><updated>2008-05-22T01:55:55.408-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='itmill toolkit'/><title type='text'>ITMill ToolKit 5: GWT without the inconveniences</title><content type='html'>I always liked GWT.&lt;br /&gt;Being able to code a web application without having to write a single line of HTML or JavaScript, without bothering to use ten hack per page, without banging your head on a wall due to a strange IE compatibility bug... Priceless.&lt;br /&gt;&lt;br /&gt;But GWT come at a price.&lt;br /&gt;You have to use a quite inconvenient RPC mechanism (having 4 classes just to call a server side function from your client is NOT funny) ; you have to declare every one of your RPC function in a separate XML file; and you have to put all your client classes in a "client" package.&lt;br /&gt;Oh, and you have to use a specific Google compiler to create your HTML &amp;amp; JS, too.&lt;br /&gt;&lt;br /&gt;But the real trouble begin when you want to use GWT not alone, but in conjunction with all those so nice tools, like Maven2 and Spring. The pain, oh, the pain !&lt;br /&gt;I'm sure it can be done. I'm even sure that a lot of people managed it, and are happily all those things together. But I do not think that anyone would say that it is easy, clean and quick.&lt;br /&gt;After a week of failures, I stopped, and begin to reverse my project to Struts2.&lt;br /&gt;&lt;br /&gt;Do not misunderstand me: GWT is a superb framework, with many usages, and can be used to do marvelous things. I just guess it is not for me.&lt;br /&gt;&lt;br /&gt;But here come a new challenger: ITMill Toolkit 5 ( http://www.itmill.com/ ) .&lt;br /&gt;&lt;br /&gt;ITMill Toolkit is a powerful framework based on GWT.&lt;br /&gt;It use GWT, but under the hood. It remove all the pain from it.&lt;br /&gt;In less than a day, I managed to integrate it with my previous Maven2 / Spring / Acegi project, and to begin to create my UI. And that's a LOT more that what I can claim I accomplished with GWT.&lt;br /&gt;Using ITMill Toolkit is pretty much straightforward: grab the jar, copy in your webapp a folder containing a default theme, add a servlet to your &lt;span style="font-weight: bold;"&gt;web.xml&lt;/span&gt; , and &lt;span style="font-style: italic;"&gt;voilà&lt;/span&gt;, you're ready to go.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://toolkit.itmill.com/demo/doc/example-source/com/itmill/toolkit/demo/HelloWorld.java.html"&gt;HelloWorld &lt;/a&gt; tutorial on the IT Mill site is a good example of the way it work.&lt;br /&gt;If you know GWT, or even if you know AWT / Swing, you will not be surprised.&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;Application&lt;/span&gt; class is you entry point, called by the servlet; the &lt;span style="font-weight: bold;"&gt;Window&lt;/span&gt; class is, well, your main window (ie. the main page user see). You can add &lt;span style="font-weight: bold;"&gt;Components&lt;/span&gt; to your window, like &lt;span style="font-weight: bold;"&gt;Labels&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Buttons&lt;/span&gt;, or &lt;span style="font-weight: bold;"&gt;TextFields&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Like GWT, it's a pure Java framework. Even more: no XML configuration, no special compiler, no rules on packages, no RPC framework. You've got classes, you do whatever you want, the toolkit takes charge of everything for you.&lt;br /&gt;&lt;br /&gt;For me, it's the revolution in web applications developping GWT should have been.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131991392460354782-2464966620038743407?l=qastegiano.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qastegiano.blogspot.com/feeds/2464966620038743407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131991392460354782&amp;postID=2464966620038743407' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/2464966620038743407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131991392460354782/posts/default/2464966620038743407'/><link rel='alternate' type='text/html' href='http://qastegiano.blogspot.com/2008/01/itmill-toolkit-5-gwt-without.html' title='ITMill ToolKit 5: GWT without the inconveniences'/><author><name>Quentin Astegiano</name><uri>http://www.blogger.com/profile/00833274466049077165</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
