<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2326529624603872167</id><updated>2025-06-01T05:30:53.797-07:00</updated><category term="news"/><category term="Grails"/><category term="certification SCJP"/><category term="maven"/><category term="jboss"/><category term="eclipse"/><category term="GWT"/><category term="netbeans"/><category term="Groovy"/><category term="lin-mon"/><category term="cloud"/><category term="crash"/><category term="spring"/><category term="sweetydontforget"/><category term="hibernate"/><category term="Bootstrap"/><category term="IntelliJ"/><category term="Mysql"/><category term="Play_2"/><category term="elearning"/><category term="gradle"/><category term="j2ee"/><category term="Git"/><category term="Go"/><category term="firefox"/><category term="google"/><category term="java"/><category term="java 7"/><category term="java 8"/><category term="java info"/><category term="junit"/><category term="podcast"/><category term="reminder"/><category term="w3c"/><title type='text'>totalprogUS</title><subtitle type='html'>Blog about JAVA and world of programmation : useful tips, news, tutorial ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>181</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-7729943085291943463</id><published>2016-03-12T08:25:00.000-08:00</published><updated>2016-03-12T08:25:00.922-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails 3 : ORM Mapping Invalid: Specified config option</title><content type='html'>&lt;br /&gt;
I have the following error at startup of my GRAILS 3.1.1 application :&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ERROR org.grails.orm.hibernate.cfg.HibernateMappingBuilder - ORM Mapping Invalid: Specified config option [name] does not exist for class [toolprod.Machine]!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The consequence was that it can&#39;t create the table Machine.&lt;br /&gt;
&lt;br /&gt;
Here is my domain class which had the error :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; class Machine {  
   /**  
    * Name of the web server.  
    */  
   String name  
   /**  
    * IP address.  
    */  
   String ipAddress  
   /**  
    * Application list in this machine.  
    */  
   Set&amp;lt;App&amp;gt; apps = []  
   /**  
    * Servers list.  
    */  
   Set&amp;lt;Server&amp;gt; servers = []  
   static hasMany = [apps : App, servers : Server]  
   static mapping = {  
     sort &quot;name&quot;  
   }  
   static constraints = {  
     name()  
     ipAddress(nullable: true)  
   }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
To solve this issue, I set a default value for name&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;   static constraints = {  
     name(nullable: false)  
     ipAddress(nullable: true)  
   }&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/7729943085291943463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2016/03/grails-3-orm-mapping-invalid-specified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/7729943085291943463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/7729943085291943463'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2016/03/grails-3-orm-mapping-invalid-specified.html' title='Grails 3 : ORM Mapping Invalid: Specified config option'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-3991468350115258853</id><published>2016-03-05T07:09:00.000-08:00</published><updated>2016-03-05T07:09:08.607-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><title type='text'>Netbeans change the .gradle directory</title><content type='html'>To solve this problem, I set the system environment variable &lt;b&gt;GRADLE_USER_HOME&lt;/b&gt; to an other directory like the following :&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; variable name : GRADLE_USER_HOME&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; value of variable : E:\repos\gradle&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Then in Netbeans It works ( perhaps you have to make some clean, close and open project to refresh it )&lt;br /&gt;
&lt;br /&gt;
Hope this help ! </content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/3991468350115258853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2016/03/netbeans-change-gradle-directory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/3991468350115258853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/3991468350115258853'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2016/03/netbeans-change-gradle-directory.html' title='Netbeans change the .gradle directory'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4436834393607531295</id><published>2015-10-03T11:27:00.000-07:00</published><updated>2015-10-03T11:27:46.007-07:00</updated><title type='text'>Grails 3 : add a bootstrap plugin to your application</title><content type='html'>&lt;br /&gt;I started to learn Grails 3 by using Netbeans 8.Today, I wanted to add bootstrap to my Grails 3 project.I decided to use a bootstrap plugin.The ways to do it is a little different than in Grails 2 ...&lt;br /&gt;&lt;br /&gt;First, you have to search your plugin.There are located on &lt;a href=&quot;https://bintray.com/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Bintray&lt;/b&gt;&lt;/a&gt;.Here is the web page I used to configure the bootstrap plugin for my web application : &lt;a href=&quot;https://bintray.com/kensiprell/gradle-plugins/bootstrap-framework/view#read&quot;&gt;https://bintray.com/kensiprell/gradle-plugins/bootstrap-framework/view#read&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;
Configure build.gradle&lt;/h3&gt;
&lt;br /&gt;You have to put dependencies in build.gradle :&lt;br /&gt;&lt;br /&gt;&lt;i&gt;buildscript {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //bootstrapFramework = [&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &quot;3.3.5&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; cssPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &quot;grails-app/assets/stylesheets&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; jsPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &quot;grails-app/assets/javascripts&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; useIndividualJs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : false,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; useLess&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : false,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; invalidVersionFails : false,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; fontAwesome : [&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; install&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &quot;4.3.0&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useLess&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; invalidVersionFails : false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repositories {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jcenter()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dependencies {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; classpath &quot;com.siprell.plugins:bootstrap-framework:1.0.3&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;apply plugin: &quot;com.siprell.plugins.bootstrap-framework&quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;
main.gsp&lt;/h3&gt;
&lt;br /&gt;Then just add the require dependencies jquery, bootstrap in your GSP.&lt;br /&gt;Here is an example with a classic navbar :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;html lang=&quot;en&quot; class=&quot;no-js&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;g:layoutTitle default=&quot;Grails&quot;/&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asset:javascript src=&quot;jquery-2.1.3.js&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asset:javascript src=&quot;bootstrap-all.js&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asset:stylesheet src=&quot;bootstrap-all.css&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asset:stylesheet src=&quot;font-awesome-all.css&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;g:layoutHead/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;nav class=&quot;navbar navbar-default&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Brand and toggle get grouped for better mobile display --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;navbar-header&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button type=&quot;button&quot; class=&quot;navbar-toggle collapsed&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#bs-example-navbar-collapse-1&quot; aria-expanded=&quot;false&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&quot;sr-only&quot;&amp;gt;Toggle navigation&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&quot;icon-bar&quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&quot;icon-bar&quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&quot;icon-bar&quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/button&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;#&quot;&amp;gt;Brand&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Collect the nav links, forms, and other content for toggling --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;bs-example-navbar-collapse-1&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul class=&quot;nav navbar-nav&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class=&quot;active&quot;&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Link &amp;lt;span class=&quot;sr-only&quot;&amp;gt;(current)&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class=&quot;dropdown&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot;&amp;gt;Dropdown &amp;lt;span class=&quot;caret&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul class=&quot;dropdown-menu&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Action&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Another action&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Something else here&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li role=&quot;separator&quot; class=&quot;divider&quot;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Separated link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li role=&quot;separator&quot; class=&quot;divider&quot;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;One more separated link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form class=&quot;navbar-form navbar-left&quot; role=&quot;search&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;Search&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-default&quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul class=&quot;nav navbar-nav navbar-right&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class=&quot;dropdown&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot;&amp;gt;Dropdown &amp;lt;span class=&quot;caret&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul class=&quot;dropdown-menu&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Action&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Another action&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Something else here&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li role=&quot;separator&quot; class=&quot;divider&quot;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;Separated link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;!-- /.navbar-collapse --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;!-- /.container-fluid --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/nav&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;g:layoutBody/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;h3&gt;
Running Gradle task&lt;/h3&gt;
&lt;br /&gt;In NetBeans, I run the clean and assemble Gradle task to download and install your plugin.You have to go in project tab and made right clic then choose task ( clean or assemble ).It will download and install the plugin.Then restart your application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; </content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4436834393607531295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/10/grails-3-add-bootstrap-plugin-to-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4436834393607531295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4436834393607531295'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/10/grails-3-add-bootstrap-plugin-to-your.html' title='Grails 3 : add a bootstrap plugin to your application'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-217470136625370379</id><published>2015-10-03T06:55:00.000-07:00</published><updated>2015-10-03T06:55:28.933-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><title type='text'>Grails 3 and Netbeans 8.0.2 : warning about Gradle 2.3 compatibility</title><content type='html'>&lt;br /&gt;
I had a warning in Netbeans IDE 8.0.2 about Gradle 2.3 compatibility.I followed the following steps to clear this warning. In files tab, I did a right clik on my project.I choose properties and Gradle project Categories.Then I changed the Gradle home to my Gradle 2.7 directory like the following :&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3-8kznB_sf_RP6YDhZQl0-hirCdB0ZK-jdjcZVquFd0LX_tP4sZZSbs5jllbDZ6HX0jBUJ7tpZisWmYo4WMG6SVzYFJiRIGJuXdXJcXeuq2s_n-c4err1iw3ivKUe6aLoPkg09Wap-CuO/s1600/netbeans_warning.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3-8kznB_sf_RP6YDhZQl0-hirCdB0ZK-jdjcZVquFd0LX_tP4sZZSbs5jllbDZ6HX0jBUJ7tpZisWmYo4WMG6SVzYFJiRIGJuXdXJcXeuq2s_n-c4err1iw3ivKUe6aLoPkg09Wap-CuO/s320/netbeans_warning.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And the annoying warning disappeared !</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/217470136625370379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/10/grails-3-and-netbeans-802-warning-about.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/217470136625370379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/217470136625370379'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/10/grails-3-and-netbeans-802-warning-about.html' title='Grails 3 and Netbeans 8.0.2 : warning about Gradle 2.3 compatibility'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3-8kznB_sf_RP6YDhZQl0-hirCdB0ZK-jdjcZVquFd0LX_tP4sZZSbs5jllbDZ6HX0jBUJ7tpZisWmYo4WMG6SVzYFJiRIGJuXdXJcXeuq2s_n-c4err1iw3ivKUe6aLoPkg09Wap-CuO/s72-c/netbeans_warning.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4609618857018899247</id><published>2015-09-26T04:02:00.000-07:00</published><updated>2015-09-26T04:02:46.101-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><title type='text'>Eclipse plugin :no menu in Extension when right clicks</title><content type='html'>&lt;br /&gt;
I&#39;m looking at eclipse plugin and I met a problem in extension view : I can&#39;t access to the extension menu when I did right click. &lt;br /&gt;
&lt;br /&gt;
I have also the following warning in Extensions View : &lt;i&gt;No schema found for the “org.eclipse.ui.menus” extension point&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
To solves it,&amp;nbsp; I add Eclipse &lt;b&gt;RCP Target Components&lt;/b&gt; ( see &lt;a href=&quot;http://stackoverflow.com/questions/8366303/no-schema-found-for-the-org-eclipse-ui-menus-extension-point&quot;&gt;http://stackoverflow.com/questions/8366303/no-schema-found-for-the-org-eclipse-ui-menus-extension-point&lt;/a&gt; )&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;In Eclipse, go to &lt;b&gt;Help &amp;gt; Install New Software...&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Update site: &lt;a href=&quot;http://download.eclipse.org/eclipse/updates/4.3&quot;&gt;http://download.eclipse.org/eclipse/updates/4.5&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Choose &quot;&lt;b&gt;Eclipse RCP Target Components&lt;/b&gt;&quot; and press Next to install
them&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Now the menu appears :&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJoyVNO1hIfefZEZg6355j2QhG3ldlPD9uPKqhTNkGA32TDSN8FeAgbu007CLcxc8jqdY2wqvewsrc0bsVZFURjINIDOif6AfSqF33KdhhFVnyeUV27nJycrgadyROov9LnvMDKmG5WQI8/s1600/eclipse_extension.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJoyVNO1hIfefZEZg6355j2QhG3ldlPD9uPKqhTNkGA32TDSN8FeAgbu007CLcxc8jqdY2wqvewsrc0bsVZFURjINIDOif6AfSqF33KdhhFVnyeUV27nJycrgadyROov9LnvMDKmG5WQI8/s320/eclipse_extension.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Eclipse IDE for Java Developers&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Version: Mars Release (4.5.0)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;votecell&quot;&gt;&lt;br /&gt;&lt;/td&gt;
            


&lt;td class=&quot;answercell&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4609618857018899247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/09/eclipse-plugin-no-menu-in-extension.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4609618857018899247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4609618857018899247'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/09/eclipse-plugin-no-menu-in-extension.html' title='Eclipse plugin :no menu in Extension when right clicks'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJoyVNO1hIfefZEZg6355j2QhG3ldlPD9uPKqhTNkGA32TDSN8FeAgbu007CLcxc8jqdY2wqvewsrc0bsVZFURjINIDOif6AfSqF33KdhhFVnyeUV27nJycrgadyROov9LnvMDKmG5WQI8/s72-c/eclipse_extension.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6992236337983421034</id><published>2015-09-20T08:26:00.000-07:00</published><updated>2015-09-20T08:26:22.243-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="IntelliJ"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><title type='text'>Grails 3 and IDE support</title><content type='html'>&lt;br /&gt;
I&#39;m looking at support of grails 3 by the IDE.&lt;br /&gt;
To now, here is an overview :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Eclipse : none support, plug-in disappeared from STS.&lt;/li&gt;
&lt;li&gt;Intellij : appears to be support but you to pay licensing ...&lt;/li&gt;
&lt;li&gt;Netbeans : begins of support&lt;/li&gt;
&lt;/ul&gt;
The good point is Netbeans 8.0.2 recognizes Grails 
3 project.So, i was able to create a new Grails 3 project.You can launch you application and there is also syntax highlights in GSP.&lt;br /&gt;
However, it&#39;s just the beginning and it needs some works.But, you can begin to practice with Grails 3.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/29441503/grails-3-0-support-in-netbeans/32425071#32425071&quot;&gt;https://stackoverflow.com/questions/29441503/grails-3-0-support-in-netbeans/32425071#32425071&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
One comment, under Eclipse, you can import Grails project as a Gradle project like said in documentation.But, I didn&#39;t find how to have syntax highlights in GSP.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6992236337983421034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/09/grails-3-and-ide-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6992236337983421034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6992236337983421034'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/09/grails-3-and-ide-support.html' title='Grails 3 and IDE support'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4399898081426183262</id><published>2015-09-18T05:29:00.003-07:00</published><updated>2015-09-18T05:29:47.399-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="news"/><title type='text'>Upgrade Grails 2.5.0 to 2.5.1</title><content type='html'>I successfully upgrade Grails to the version 2.5.1It&#39;s quite simple.You only have to follow the release note about plugins update.&lt;br /&gt;
I met only one problem.I had this warning : &lt;b&gt;Script &#39;Upgrade&#39; not found&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;
To solve that issue, you have to select 3 (SetGrailsVersion) ant it will make the update.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;|Running pre-compiled script&lt;br /&gt;|Script &#39;Upgrade&#39; not found, did you mean:&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1) MigrateDocs&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2) IntegrateWith&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3) SetGrailsVersion&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4) InstallDependency&lt;br /&gt;&amp;nbsp;&amp;nbsp; 5) DependencyReport&lt;br /&gt;Please make a selection or enter Q to quit: 3&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;With this update, I solved the following error : &lt;a href=&quot;http://stackoverflow.com/questions/32562678/grails-plugin-error-class-path-resource-cannot-be-resolved&quot;&gt;http://stackoverflow.com/questions/32562678/grails-plugin-error-class-path-resource-cannot-be-resolved&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4399898081426183262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/09/upgrade-grails-250-to-251.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4399898081426183262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4399898081426183262'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/09/upgrade-grails-250-to-251.html' title='Upgrade Grails 2.5.0 to 2.5.1'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-5696629855579856706</id><published>2015-09-16T07:39:00.002-07:00</published><updated>2015-09-16T07:46:13.544-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>How to import files in GRAILS ?</title><content type='html'>In business web site, we often used to import config files.There are many way to achieve this in GRAILS.In this paper, we will talk about two possibilities but not about batch because it doesn&#39;t work for me in GRAILS 2.5.0.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
An IHM to import file&lt;/h3&gt;
You can import files with a classical html form like the following :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkY82DC_feBpysokGfCTdQA0RNznKU7v7bZ8Vx0RW8OJ29EWoJKwl5YB0vT4GsmqCYJbua3E_ob2_fFfbTego8axYVI5SNj2eXrCbxHl_PUYeg83SfUW1HOkT8d8qK3dZ9LQLh9XEXa01C/s1600/import_file_form.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;62&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkY82DC_feBpysokGfCTdQA0RNznKU7v7bZ8Vx0RW8OJ29EWoJKwl5YB0vT4GsmqCYJbua3E_ob2_fFfbTego8axYVI5SNj2eXrCbxHl_PUYeg83SfUW1HOkT8d8qK3dZ9LQLh9XEXa01C/s400/import_file_form.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
A form example : form.gsp&lt;/h4&gt;
Below, here is an example of Grails upload form by using &lt;b&gt;g:uploadForm&lt;/b&gt; tags.This form, when submit, calls the &lt;b&gt;init&lt;/b&gt; action from the &lt;b&gt;admin&lt;/b&gt; controller.It passed files in parameter with Input tag.The input file with the parameter &lt;b&gt;multiple&lt;/b&gt; will permit to upload severeal files.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&amp;lt;g:uploadForm action=&quot;init&quot; controller=&quot;admin&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form role=&quot;form&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;files&quot;&amp;gt;Choix du fichier à parser&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;file&quot; id=&quot;files&quot; name=&quot;files[]&quot; multiple&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p class=&quot;help-block&quot;&amp;gt;Vous devez choisir un fichier httpd.conf&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;machinename&quot;&amp;gt;Nom de la machine&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;machinename&quot; name=&quot;machinename&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; placeholder=&quot;....ac-limoges.fr&quot; value=&quot;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-info&quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/g:uploadForm&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Controller&lt;/h4&gt;
&lt;br /&gt;
For example, to parse a file, you could do the following :&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;i&gt;class AdminController {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; def init() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (request instanceof MultipartHttpServletRequest) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.getFiles(&quot;files[]&quot;).each { file -&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.info(&quot;init() file to parse:&quot; + file.originalFilename)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; InputStream inputStream = file.inpustream&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; BufferedReader = new BufferedReader(new InputStreamReader(inputStream))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ldapUser = EMPTY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ldapPwd = EMPTY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ldapHost = EMPTY&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ldapPort = EMPTY&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ((line = br.readLine()) != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
The arry files[] will contain all import files.You have to notice that file is type of &lt;b&gt;org.springframework.web.multipart.MultiPartFile&lt;/b&gt; and not &lt;b&gt;java.io.File&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Import files automaticaly&lt;/h3&gt;
&lt;br /&gt;
An other way, is to import files automaticaly. You just have to do a method in the controller like the following :&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;class AdminController {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def reloadData() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def path = &quot;E:\\projet\\toolprod\\import\\&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.info(&quot;reloadData() Initializing application from httpd.conf files in machine directory ...&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new File(path).listFiles().findAll{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (it.isDirectory()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.info(&quot;reloadData() Machine name ( Directory name ) :&quot; + it.name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String machineName = it.name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.debug(&quot;reloadData() files list:&quot; + it.listFiles())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (File f : it.listFiles()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Then you need to access at the following url : &lt;b&gt;http://localhost:8080/appli/admin/reloadData&lt;/b&gt;&lt;br /&gt;
After that, it&#39;s easy to make a crontab with a curl to make automatisation ...&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/5696629855579856706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/09/how-to-import-files-in-grails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/5696629855579856706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/5696629855579856706'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/09/how-to-import-files-in-grails.html' title='How to import files in GRAILS ?'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkY82DC_feBpysokGfCTdQA0RNznKU7v7bZ8Vx0RW8OJ29EWoJKwl5YB0vT4GsmqCYJbua3E_ob2_fFfbTego8axYVI5SNj2eXrCbxHl_PUYeg83SfUW1HOkT8d8qK3dZ9LQLh9XEXa01C/s72-c/import_file_form.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-3501668394382724184</id><published>2015-04-24T01:20:00.000-07:00</published><updated>2015-04-24T01:35:01.079-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails and Pdf creation</title><content type='html'>In my businness application, I needed to print report in a pdf file.Before Grails 2.5.0, I used export-plugin with success.I tried to use with Grails 2.5.0 but I obtained compilation errors.That&#39;s why I looked for other solutions.&lt;br /&gt;
I found rendering plugin but I had an error when rendering ( see &lt;a href=&quot;http://stackoverflow.com/questions/29694796/null-pointer-exception-with-grails-rendering-plugin&quot; target=&quot;_blank&quot;&gt;http://stackoverflow.com/questions/29694796/null-pointer-exception-with-grails-rendering-plugin&lt;/a&gt; ).&lt;br /&gt;
Finaly, I decided to do it myself with apache pdfbox&lt;br /&gt;
&lt;br /&gt;
In my BuildConfig.groovy, I added the dependency :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;   dependency {  
     ...  
     compile &quot;org.apache.pdfbox:pdfbox:1.8.9&quot;  
     ...  
   }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
And here is the code in my controller :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; class AppRetailController {  
   ...  
   def renderFormPDF(){  
     List&amp;lt;App&amp;gt; apps = new ArrayList&amp;lt;&amp;gt;()  
     String title = &quot;&quot;  
     String param = params.get(&quot;serverSelect&quot;)  
     ...  
     Fill the list apps  
     ...  
           title= &quot;Liste de toutes les applications sur &quot; + param  
           title += &quot; (&quot; + apps.size() + &quot;)&quot;  
           // Create all needed for Pdf document  
     PDDocument document = new PDDocument();  
     PDPage page = new PDPage();  
     PDPageContentStream contentStream;  
           // Here I want 30 rows by page  
     int pageNumber = apps.size()/30 + 1  
     log.info(&quot;Page number :&quot; + pageNumber)  
     int countApp = 0  
           // for each page I draw table with datas  
     for (int i=1; i&amp;lt;=pageNumber; i++) {  
       log.info(&quot;countApp :&quot; + countApp)  
       page = new PDPage();  
       contentStream = new PDPageContentStream(document, page);  
       int max = countApp + 30  
       if (max &amp;gt; apps.size()) {  
         max = apps.size() - 1  
       }  
       drawTable(page, contentStream, 700, 100, apps[countApp..max], title);  
       countApp = countApp + 30 + 1  
       contentStream.close();  
       document.addPage(page);  
     }  
     document.save(&quot;report.pdf&quot;);  
     document.close();  
     render( file:new File(&quot;report.pdf&quot;), fileName: &quot;report.pdf&quot;)  
   }  
   /**  
    * @param page  
    * @param contentStream  
    * @param y the y-coordinate of the first row  
    * @param margin the padding on left and right of table  
    * @param content a 2d array containing the table data  
    * @throws IOException  
    */  
   def drawTable(PDPage page, PDPageContentStream contentStream,  
                  float y, float margin,  
                  List&amp;lt;App&amp;gt; apps, String title) throws IOException {  
     final int rows = apps.size() + 1;  
     final int cols = 3;  
     final float rowHeight = 20f;  
     final float tableWidth = page.findMediaBox().getWidth()-(2*margin);  
     final float tableHeight = rowHeight * rows;  
     final float colWidth = tableWidth/(float)cols;  
     final float cellMargin=5f;  
     //draw the rows  
     float nexty = y ;  
     for (int i = 0; i &amp;lt;= rows; i++) {  
       contentStream.drawLine(margin,nexty,(float)(margin+tableWidth),nexty);  
       nexty-= rowHeight;  
     }  
     //draw the columns  
     float nextx = margin;  
     for (int i = 0; i &amp;lt;= cols; i++) {  
       contentStream.drawLine(nextx,y,nextx,(float)(y-tableHeight));  
       nextx += colWidth;  
     }  
     //now add the text  
     contentStream.setFont(PDType1Font.HELVETICA_BOLD,14);  
     contentStream.beginText();  
     contentStream.moveTextPositionByAmount((float)margin+cellMargin+10,(float)(y+20));  
     contentStream.drawString(title);  
     contentStream.endText();  
     contentStream.setFont(PDType1Font.HELVETICA_BOLD,12);  
     float textx = margin+cellMargin;  
     float texty = y-15;  
     //Define colunm title  
     contentStream.beginText();  
     contentStream.moveTextPositionByAmount(textx,texty);  
     contentStream.drawString(&quot;Nom&quot;);  
     contentStream.endText();  
     textx += colWidth;  
     contentStream.beginText();  
     contentStream.moveTextPositionByAmount(textx,texty);  
     contentStream.drawString(&quot;Description&quot;);  
     contentStream.endText();  
     textx += colWidth;  
     contentStream.beginText();  
     contentStream.moveTextPositionByAmount(textx,texty);  
     contentStream.drawString(&quot;Chemin dans ARENA&quot;);  
     contentStream.endText();  
     textx += colWidth;  
     texty-=rowHeight;  
     textx = margin+cellMargin;  
     contentStream.setFont(PDType1Font.HELVETICA,11);  
     apps.each {  
       contentStream.beginText();  
       contentStream.moveTextPositionByAmount(textx,texty);  
       contentStream.drawString(it.name);  
       contentStream.endText();  
       textx += colWidth;  
       contentStream.beginText();  
       contentStream.moveTextPositionByAmount(textx,texty);  
       String desc = it.description  
       if (desc.equals(&quot;EMPTY&quot;)) {  
         desc = &quot;&quot;  
       }  
       contentStream.drawString(desc);  
       contentStream.endText();  
       textx += colWidth;  
       contentStream.beginText();  
       contentStream.moveTextPositionByAmount(textx,texty);  
       String path = it.arenaPath  
       if (path == null) {  
         path = &quot;&quot;  
       }  
       contentStream.drawString(path);  
       contentStream.endText();  
       textx += colWidth;  
       texty-=rowHeight;  
       textx = margin+cellMargin;  
     }  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
So, this is not the best solution.I&lt;b class=&quot;b2&quot;&gt; &lt;/b&gt;&lt;span class=&quot;b2&quot;&gt;wou&lt;/span&gt;&lt;span class=&quot;b3&quot;&gt;ld &lt;/span&gt;&lt;span class=&quot;b4&quot;&gt;hav&lt;/span&gt;&lt;span class=&quot;b5&quot;&gt;e preferred s&lt;/span&gt;&lt;span class=&quot;b4&quot;&gt;ome&lt;/span&gt;&lt;span class=&quot;b3&quot;&gt;thi&lt;/span&gt;&lt;span class=&quot;b2&quot;&gt;ng like&lt;/span&gt;&lt;b class=&quot;b2&quot;&gt; &lt;/b&gt;rendering plugin but it&#39;s works and I needed it immediately.A big thanks to this blog for the use of pdf library : &lt;a href=&quot;http://fahdshariff.blogspot.fr/2010/10/creating-tables-with-pdfbox.html&quot; target=&quot;_blank&quot;&gt;http://fahdshariff.blogspot.fr/2010/10/creating-tables-with-pdfbox.html&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Hope this help,&lt;br /&gt;
&lt;br /&gt;
See also : &lt;a href=&quot;http://grails.github.io/grails-doc/2.5.x/ref/Controllers/render.html&quot; target=&quot;_blank&quot;&gt;http://grails.github.io/grails-doc/2.5.x/ref/Controllers/render.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/3501668394382724184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/04/grails-and-pdf-creation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/3501668394382724184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/3501668394382724184'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/04/grails-and-pdf-creation.html' title='Grails and Pdf creation'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4090033470221199579</id><published>2015-04-03T10:41:00.000-07:00</published><updated>2015-04-03T10:41:00.587-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails : an example of remoteFunction with two parameters</title><content type='html'>&lt;br /&gt;
In my businness web application, I wanted to use a selectbox which call a controller method to check mail address stores in ldap. On change of selectbox, it will automaticaly check if the mail exists in ldap.In this paper, we will talk about the use of &lt;b&gt;remoteFunction&lt;/b&gt; with 2 parameters.I wrote it because I had difficulties with this ( especially the syntax ) and I hope it could help someone !&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
The gsp &lt;/h4&gt;
&lt;br /&gt;
In my gsp, I had an input text and a select box.The remoteFunction calls the action of the controller &lt;b&gt;ajaxCheckMailInLDAP&lt;/b&gt;. Parameters are passed in params. ( Be carefull at the syntax ).Once achieved, the javascript method checkLdapMail(data) called.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
example&lt;/h3&gt;
// Show the result&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; &amp;lt;div id=&quot;create_status_ok&quot; class=&quot;alert alert-success&quot; role=&quot;alert&quot; style=&quot;display: none&quot;&amp;gt;
        &amp;lt;span class=&quot;glyphicon glyphicon-exclamation-sign&quot; aria-hidden=&quot;true&quot;&amp;gt;&amp;lt;/span&amp;gt;
        &amp;lt;span class=&quot;sr-only&quot;&amp;gt;Info:&amp;lt;/span&amp;gt;
        Vérification dans le LDAP OK ! vous pouvez créer cette adresse.
 &amp;lt;/div&amp;gt;&lt;/code&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&amp;nbsp;...&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;// form that use remoteFunction &lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&amp;lt;form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;  &amp;nbsp;&amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;rne&quot; name=&quot;rne&quot; placeholder=&quot;....087XXX&quot; value=&quot;&quot;&amp;gt;  
   ...  
   &amp;lt;g:select noSelection=&quot;[&#39;0&#39;:&#39;Choisir un type de boîte&#39;]&quot; optionKey=&quot;id&quot; optionValue=&quot;fullNameType&quot; name=&quot;shortNameType&quot; id=&quot;selecttype&quot; from=&quot;${toolprod.MailType.list()}&quot;
    onchange=&quot;
    cleanMsg();
    ${remoteFunction(
       controller:&#39;tools&#39;,
       action:&#39;ajaxCheckMailInLDAP&#39;,
       params:&#39;\&#39;id=\&#39; + this.value + \&#39;&amp;amp;rne=\&#39; + document.getElementById(\&#39;rne\&#39;).value&#39;,
       onSuccess:&#39;checkLdapMail(data)&#39;)}&quot;
    &amp;gt;&amp;lt;/g:select&amp;gt; 
 &amp;lt;/form&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;The controller&#39;s action&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;br /&gt;
Here is my controller wich render an array as JSON.Note that the name of data variable is important !&lt;code&gt;&lt;/code&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; class ToolsController {  
 ...  
   def ajaxCheckMailInLDAP = {  
        log.info(&quot;ajaxCheckMailInLDAP()&quot;)
&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;       String mail = params.rne + &quot;@..&quot;

        // Init JSON data
        def data = [:]
        data.put(&quot;id&quot;, &quot;1&quot;)&lt;/code&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;        if (checkMail(mail)) {// just return a boolean
            data.put(&quot;text&quot;, &quot;KO&quot;)
        } else {
            data.put(&quot;text&quot;, &quot;OK&quot;)
        }&lt;/code&gt; 
        data.put(&quot;mail&quot;, mail)
        log.info(&quot;ajaxCheckMailInLDAP() END&quot; + mail)
        render data as JSON 
   }  
 ....  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
To finish, below is the javascript method :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;    /**
     * Show result stored in data on html page
     * @param data JSON data send by ajaxCheckMailInLDAP in controller.
     */
    function checkLdapMail(data) {
        console.log(&quot;checkLdapMail()&quot;);

        document.getElementById(&#39;selecttype&#39;).value=0;
        document.getElementById(&#39;create_status_ko&#39;).style.display=&#39;none&#39;;
        document.getElementById(&#39;create_status_ok&#39;).style.display=&#39;none&#39;;
        document.getElementById(&#39;create_status_info&#39;).style.display=&#39;block&#39;;

        if (data.text == &quot;KO&quot;) {
            document.getElementById(&#39;create_status_info&#39;).style.display=&#39;none&#39;;
            document.getElementById(&#39;create_status_ko&#39;).style.display=&#39;block&#39;;
            document.getElementById(&#39;create_status_ko&#39;).textContent= data.mail.toString() + &quot; existe deja dans le LDAP !&quot;;
        }
        if (data.text == &quot;OK&quot;) {
            document.getElementById(&#39;create_status_info&#39;).style.display=&#39;none&#39;;
            document.getElementById(&#39;create_status_ok&#39;).style.display=&#39;block&#39;;
            document.getElementById(&#39;btnSubmit&#39;).disabled = false;
        }

        if (data.text == &quot;EMPTY&quot;) {
            document.getElementById(&#39;create_status_info&#39;).style.display=&#39;none&#39;;
            document.getElementById(&#39;create_status_ko&#39;).style.display=&#39;block&#39;;
            document.getElementById(&#39;create_status_ko&#39;).textContent= &quot;le rne est vide !&quot;;

        }
        console.log(&quot;checkLdapMail() : end&quot;);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
To make it works, I use the parameter name data.An other important things, I used Grails 2.4.4 to make this example.&lt;br /&gt;
I hope it will help you in your developpement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4090033470221199579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/04/grails-example-of-remotefunction-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4090033470221199579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4090033470221199579'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/04/grails-example-of-remotefunction-with.html' title='Grails : an example of remoteFunction with two parameters'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4402236538000174100</id><published>2015-03-31T10:34:00.001-07:00</published><updated>2015-03-31T10:34:04.831-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="news"/><title type='text'>Upgrade Grails 2.4.4 to 2.5.0</title><content type='html'>I successfully upgraded Grails 2.4.4 to 2.5.0 by following the Release Version text files ( &lt;a href=&quot;https://github.com/grails/grails-core/releases/tag/v2.5.0&quot;&gt;https://github.com/grails/grails-core/releases/tag/v2.5.0&lt;/a&gt; ).&lt;br /&gt;
&lt;br /&gt;
I only upgraded plugins version in &lt;b&gt;BuildConfig.groovy&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;build &#39;:tomcat:7.0.55.2&#39;&lt;/li&gt;
&lt;li&gt;compile &#39;:cache:1.1.8&#39;&lt;/li&gt;
&lt;li&gt;compile &#39;:scaffolding:2.1.2&#39;&lt;/li&gt;
&lt;li&gt;compile &#39;:asset-pipeline:2.1.5&#39;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
I also met an exception because I forget to change &lt;b&gt;cache.region.factory_class&lt;/b&gt; in &lt;b&gt;Datasource.groovy&lt;/b&gt; ( cf Release Version ).&lt;br /&gt;
Here is the exception :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
2015-03-31 16:28:39,590 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener&amp;nbsp; - Error initializing the application: Error creating bean with name &#39;transactionManagerPostProcessor&#39;: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;transactionManager&#39;: Cannot resolve reference to bean &#39;transactionManager_lookup&#39; while setting constructor argument with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;transactionManager_lookup&#39;: Cannot resolve reference to bean &#39;sessionFactory_lookup&#39; while setting bean property &#39;sessionFactory&#39;; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;sessionFactory_lookup&#39;: Invocation of init method failed; nested exception is org.hibernate.cache.CacheException: net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:&lt;br /&gt;
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary&lt;br /&gt;
2. Shutdown the earlier cacheManager before creating new one with same name.&lt;br /&gt;
The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]&lt;br /&gt;
...&lt;/blockquote&gt;
&lt;br /&gt;
To solves it, I only have to do the following change in &lt;b&gt;Datasource.groovy&lt;/b&gt; :&lt;br /&gt;
&lt;br /&gt;
hibernate {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.region.factory_class = &#39;org.hibernate.cache.SingletonEhCacheRegionFactory&#39; &lt;br /&gt;
}</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4402236538000174100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/03/upgrade-grails-244-to-250.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4402236538000174100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4402236538000174100'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/03/upgrade-grails-244-to-250.html' title='Upgrade Grails 2.4.4 to 2.5.0'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4944652181481808657</id><published>2015-01-13T01:34:00.000-08:00</published><updated>2015-01-13T01:34:25.700-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails update successfully from 2.3.11 to 2.4.4</title><content type='html'>I successfully update Grails from 2.3.11 to 2.4.4 by following &lt;a href=&quot;https://grails.org/2.4.4+Release+Notes&quot;&gt;https://grails.org/2.4.4+Release+Notes&lt;/a&gt; and &lt;a href=&quot;http://grails.org/doc/latest/guide/upgradingFrom23.html&quot;&gt;http://grails.org/doc/latest/guide/upgradingFrom23.html&lt;/a&gt;. It was not a simple update due to a substancial existing web site.I had error at startup and many things to do to make it works.&lt;br /&gt;So, here are some advices to help to complete this task :&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Upgrade plugins&lt;/h3&gt;
Be carefull, if you don&#39;t upgrade plugins like cache, hibernate, jquery, you will have stranges errors.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Plugin asset-pipeline replace resource plugin&lt;/h3&gt;
You will have to move directory and organize them in assets directory and also change all include in GSP.Possibles surprises will perhaps appear : see &lt;a href=&quot;http://stackoverflow.com/questions/27906139/grails-assets-directory-management&quot;&gt;http://stackoverflow.com/questions/27906139/grails-assets-directory-management&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Plugin export:1.6&lt;/h3&gt;
To now, it doesn&#39;t work for me&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Templates&lt;/h3&gt;
I delete templates directory end recreate it by command : &lt;i&gt;grails install templates&lt;/i&gt;.&lt;br /&gt;It fixes some errors.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;
Other&amp;nbsp;&lt;/h3&gt;
There is a new annotation : @Validateable(nullable = true)</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4944652181481808657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2015/01/grails-update-successfully-from-2311-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4944652181481808657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4944652181481808657'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2015/01/grails-update-successfully-from-2311-to.html' title='Grails update successfully from 2.3.11 to 2.4.4'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-8069926345129958120</id><published>2014-12-14T05:32:00.002-08:00</published><updated>2014-12-14T05:32:26.732-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails and GSON : Could not find artifact </title><content type='html'>&lt;br /&gt;
I had the following problem by adding GSON at my project :&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;i&gt;Error |&lt;br /&gt;Resolve
 error obtaining dependencies: Could not find artifact 
com.google.code.gson:gson:zip:2.3.1 in grailsCentral 
(http://repo.grails.org/grails/plugins) (Use --stacktrace to see the 
full trace)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Solution was simple.To solve this problem, put GSOn in dependencies section and not in plugin section :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
dependencies {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // specify dependencies here under either &#39;build&#39;, &#39;compile&#39;, &#39;runtime&#39;, &#39;test&#39; or &#39;provided&#39; scopes e.g.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runtime &#39;mysql:mysql-connector-java:5.1.24&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compile &#39;com.google.code.gson:gson:2.3.1&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/blockquote&gt;
&lt;/pre&gt;
More details on : http://stackoverflow.com/a/20974287/2473598</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/8069926345129958120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/12/grails-and-gson-could-not-find-artifact.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/8069926345129958120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/8069926345129958120'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/12/grails-and-gson-could-not-find-artifact.html' title='Grails and GSON : Could not find artifact '/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6651589852864783868</id><published>2014-10-30T02:15:00.000-07:00</published><updated>2014-10-30T02:34:28.664-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>How to export your datas easily in different format with Grails ( pdf, excel ... )</title><content type='html'>&lt;br /&gt;
In my business web site, I have array with datas and I want a way to publish it in severeal format.&lt;br /&gt;
To achieve this, it exists the Grails export plugin.Here is what you will have under your array :&lt;br /&gt;
&lt;br /&gt;
&lt;img border=&quot;0&quot; class=&quot;center&quot; src=&quot;http://grails.org/wikiImage/screenshots-357/export.png&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
This tutorial will explain how to quickly use the export plugin and problems I met.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Plugin install&lt;/h3&gt;
&lt;br /&gt;
To install, the plugin I added in BuildConfig.groovy :&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;repositories {
...
mavenRepo &quot;http://repo.grails.org/grails/core&quot;
...
}
plugins {
...

compile &quot;:export:1.6&quot;
...
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don&#39;t add, the Maven Repositories, you will have this error :&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Resolve error obtaining dependencies: Could not find artifact org.odftoolkit:odfdom-java:jar:0.8.5 in grailsCentral (http://repo.grails.org/grails/plugins) (Use --stacktrace to see the full trace)&lt;br /&gt;Error |&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Modify your GSP&lt;/h3&gt;
&lt;div style=&quot;background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt; &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
     ... 
     &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;r:require&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;module=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;export&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;/&amp;gt;&lt;/span&gt;
     ... 
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
     &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;export:formats&lt;/span&gt; &lt;span style=&quot;color: #007700;&quot;&gt;/&amp;gt;&lt;/span&gt; 
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
The export tag will display icons and the require will had required css.&lt;br /&gt;
If you clic on pdf button, &lt;br /&gt;
&lt;br /&gt;
Notes : &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You can put the export tag where you want in the GSP&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;You can specify format you want :&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;export:formats&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;formats=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;[&#39;csv&#39;, &#39;excel&#39;, &#39;ods&#39;, &#39;pdf&#39;, &#39;rtf&#39;, &#39;xml&#39;]&quot;&lt;/span&gt; &lt;span style=&quot;color: #007700;&quot;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Modify your controller&lt;/h3&gt;
Here is my controller :&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #bb0066; font-weight: bold;&quot;&gt;ToolsController&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;{&lt;/span&gt;

    &lt;span style=&quot;color: #888888;&quot;&gt;// Export service provided by Export plugin&lt;/span&gt;

    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;def&lt;/span&gt; exportService

    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;def&lt;/span&gt; grailsApplication  &lt;span style=&quot;color: #888888;&quot;&gt;//inject GrailsApplication&lt;/span&gt;

    &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;{&lt;/span&gt;

        &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(!&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;{&lt;/span&gt;

            params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;max&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;10&lt;/span&gt;

        &lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;

        &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;((&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;extension&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;))&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;{&lt;/span&gt;

            log&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;zest&#39;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;))&lt;/span&gt;

            &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;def&lt;/span&gt; format&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;extension&lt;/span&gt;

            &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;xls&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;equals&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;extension&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;))&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;{&lt;/span&gt;

                format&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;excel&quot;&lt;/span&gt;

            &lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;

            &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;format &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; format &lt;span style=&quot;color: #333333;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;html&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;){&lt;/span&gt;

                response&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;contentType&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; grailsApplication&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;grails&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;mime&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;types&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;format&lt;span style=&quot;color: #333333;&quot;&gt;]&lt;/span&gt;

                response&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;setHeader&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Content-disposition&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;attachment; filename=check.${params.extension}&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;

                List fields &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;machineName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;fileName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;confServerName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;]&lt;/span&gt;

                Map labels &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;machineName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Nom de machine&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;fileName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Nom de fichier&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt;   &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;confServerName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Valeur du ServerName&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;]&lt;/span&gt;

                Map formatters &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; HashMap&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;

                Map parameters &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; HashMap&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;

                exportService&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;format&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; response&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;outputStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt;Check&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;params&lt;span style=&quot;color: #333333;&quot;&gt;),&lt;/span&gt; fields&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; labels&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; formatters&lt;span style=&quot;color: #333333;&quot;&gt;,&lt;/span&gt; parameters&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;

            &lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;

        &lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;

   &lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #333333;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
I had a &lt;b&gt;Check domain class&lt;/b&gt; with 3 fields : &lt;b&gt;machineName, fileName, confServerName&lt;/b&gt;.These fields will be display in the pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I had some problem with &lt;b&gt;params.format&lt;/b&gt; values.In my case, it was always null and I don&#39;t know why.That&#39;s why my code is not exactly the same of the documentation&lt;/li&gt;
&lt;li&gt;You can also format text and adjust column size with formatters and parameters.See documentation for more details. &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
If you want more details about plugin installation, you could see the documentation : &lt;a href=&quot;http://grails.org/plugin/export&quot;&gt;http://grails.org/plugin/export&lt;/a&gt;&lt;br /&gt;
Here is my Grails configuration :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Grails 2.3.11&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Plugin ; runtime &quot;:resources:1.2.1&quot;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6651589852864783868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/10/grails-and-pdf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6651589852864783868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6651589852864783868'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/10/grails-and-pdf.html' title='How to export your datas easily in different format with Grails ( pdf, excel ... )'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6170412911463829942</id><published>2014-09-16T02:05:00.000-07:00</published><updated>2014-09-16T02:05:10.379-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails : database management in multiple environments</title><content type='html'>&lt;br /&gt;
With Grails, you can use a database for a specific environments.If you change environments, Grails will use the database you define.&lt;br /&gt;
&lt;br /&gt;
For example, you can define the following environments :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;development&lt;/b&gt;: In memory database&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;test&lt;/b&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; Mysql on localhost&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;production &lt;/b&gt;:&amp;nbsp;&amp;nbsp; Mysql on production machine &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
Define your environments in DataSource.groovy&lt;/h3&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = &#39;net.sf.ehcache.hibernate.EhCacheRegionFactory&#39; // Hibernate 3
//    cache.region.factory_class = &#39;org.hibernate.cache.ehcache.EhCacheRegionFactory&#39; // Hibernate 4
}

// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = &quot;create-drop&quot; // one of &#39;create&#39;, &#39;create-drop&#39;, &#39;update&#39;, &#39;validate&#39;, &#39;&#39;
            url = &quot;jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE&quot;
        }
        dataSource_lookup {
            pooled = true
            driverClassName = &quot;org.h2.Driver&quot;
            username = &quot;sa&quot;
            password = &quot;&quot;
        }
    }
    test {
        dataSource {
            pooled = true
            driverClassName = &quot;com.mysql.jdbc.Driver&quot;
            dialect = &quot;org.hibernate.dialect.MySQL5InnoDBDialect&quot;
            dbCreate = &quot;create-drop&quot;
            url = &quot;jdbc:mysql://localhost/toolprod&quot;
            username = &quot;root&quot;
            password = &quot;&quot;
        }

    }
    production {
        grails.config.locations = [&quot;file:/opt/apache-tomcat-7.0.47/conf/ConfigToolprod.groovy&quot;]
    }
}&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Production Environment&lt;/h3&gt;
&lt;br /&gt;
As you can see, the way you define production environment is quite different.You define a path where are stored datasource.&lt;br /&gt;
With this sort of configuration, you doesn&#39;t have to build your Grails project an other time if you want to change the login and password.Moreover, authentication is only in one place.I find it much better.&lt;br /&gt;
&lt;br /&gt;
Below, there is an example of my ConfigToolprod.groovy file. &lt;b&gt;An important thing, this configuration will permit Mysql database to reconnect automaticaly.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Comment : File contains a lot parameter because they had a bug in a old version of Grails.You certainly doesn&#39;t need all parameters. &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
ConfigToolprod.groovy&lt;/h4&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;dataSource {
    pooled = true
    dbCreate = &quot;update&quot;
    url = &quot;jdbc:mysql://localhost/toolprod&quot;
    driverClassName = &quot;com.mysql.jdbc.Driver&quot;
    dialect = org.hibernate.dialect.MySQL5InnoDBDialect
    username = &quot;LOGIN&quot;
    password = &quot;PASSWORD&quot;
    properties {
       // Documentation for Tomcat JDBC Pool
       // http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes
       // https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/tomcat/jdbc/pool/PoolConfiguration.html
       jmxEnabled = true
       initialSize = 5
       maxActive = 50
       minIdle = 5
       maxIdle = 25
       maxWait = 10000
       maxAge = 10 * 60000
       timeBetweenEvictionRunsMillis = 5000
       minEvictableIdleTimeMillis = 60000
       validationQuery = &quot;SELECT 1&quot;
       validationQueryTimeout = 3
       validationInterval = 15000
       testOnBorrow = true
       testWhileIdle = true
       testOnReturn = false
       ignoreExceptionOnPreLoad = true
       // http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#JDBC_interceptors
       jdbcInterceptors = &quot;ConnectionState;StatementCache(max=200)&quot;
       defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED // safe default
       // controls for leaked connections
       abandonWhenPercentageFull = 100 // settings are active only when pool is full
       removeAbandonedTimeout = 120
       removeAbandoned = true
       // use JMX console to change this setting at runtime
       logAbandoned = false // causes stacktrace recording overhead, use only for debugging
       // JDBC driver properties
       // Mysql as example
       dbProperties {
           // Mysql specific driver properties
           // http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
           // let Tomcat JDBC Pool handle reconnecting
           autoReconnect=false
           // truncation behaviour
           jdbcCompliantTruncation=false
           // mysql 0-date conversion
           zeroDateTimeBehavior=&#39;convertToNull&#39;
           // Tomcat JDBC Pool&#39;s StatementCache is used instead, so disable mysql driver&#39;s cache
           cachePrepStmts=false
           cacheCallableStmts=false
           // Tomcat JDBC Pool&#39;s StatementFinalizer keeps track
           dontTrackOpenResources=true
           // performance optimization: reduce number of SQLExceptions thrown in mysql driver code
           holdResultsOpenOverStatementClose=true
           // enable MySQL query cache - using server prep stmts will disable query caching
           useServerPrepStmts=false
           useServerPrepStmts=false
           // metadata caching
           cacheServerConfiguration=true
           cacheResultSetMetadata=true
           metadataCacheSize=100
           // timeouts for TCP/IP
           connectTimeout=15000
           socketTimeout=120000
           // timer tuning (disable)
           maintainTimeStats=false
           enableQueryTimeouts=false
           // misc tuning
           noDatetimeStringSync=true
       }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6170412911463829942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/09/grails-database-management-in-multiple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6170412911463829942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6170412911463829942'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/09/grails-database-management-in-multiple.html' title='Grails : database management in multiple environments'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-1874081409162012866</id><published>2014-08-31T05:03:00.001-07:00</published><updated>2014-08-31T05:03:13.124-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Upgrading Grails 2.3.6</title><content type='html'>Today, I decided to upgrade my Grails web site.&lt;br /&gt;
Now, I use Grails 2.3.6 and I decided to test severeal solution to upgrade my web site.&lt;br /&gt;
One note about how I upgrade my Grails version.I used &quot;Change Grails SDK&quot; feature of Grails plugin in IntelliJ.It simple and you can go back easily ! &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Grails 2.3.6 with JDK 1.8_05 &lt;/h3&gt;
&lt;br /&gt;
This upgrade wasn&#39;t successful.Grails 2.3.6 doesn&#39;t work with JDK 1.8.&lt;br /&gt;
I rode forum and it seems normal.&lt;br /&gt;
&lt;br /&gt;
I had the following message : &lt;b&gt;Java HotSpot(TM) Server VM warning: ignoring option PermSize=256m; support was removed in 8.0&amp;nbsp; &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;opt/drieu/jdk1.8.0_05/bin/java -Dgrails.home=/opt/drieu/grails-2.3.6 -Dbase.dir=/home/drieu/workspaces/toolprod -Dtools.jar=/opt/drieu/jdk1.8.0_05/lib/tools.jar -Dgroovy.starter.conf=/opt/drieu/grails-2.3.6/conf/groovy-starter.conf -Xmx768M -Xms768M -XX:MaxPermSize=256m -XX:PermSize=256m -javaagent:/opt/drieu/grails-2.3.6/lib/org.springsource.springloaded/springloaded-core/jars/springloaded-core-1.1.4.jar -noverify -Dspringloaded=profile=grails -Didea.launcher.port=7532 -Didea.launcher.bin.path=/opt/drieu/intellij/idea-IU-12.1.6/bin -Dfile.encoding=UTF-8 -classpath /opt/drieu/grails-2.3.6/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.9.jar:/opt/drieu/grails-2.3.6/dist/grails-bootstrap-2.3.6.jar:/opt/drieu/intellij/idea-IU-12.1.6/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain org.codehaus.groovy.grails.cli.support.GrailsStarter --main org.codehaus.groovy.grails.cli.GrailsScriptRunner --conf /opt/drieu/grails-2.3.6/conf/groovy-starter.conf run-app&lt;br /&gt;Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0&lt;br /&gt;Java HotSpot(TM) Server VM warning: ignoring option PermSize=256m; support was removed in 8.0&lt;br /&gt;| Loading Grails 2.3.6&lt;br /&gt;| Configuring classpath&lt;br /&gt;| Configuring classpath.&lt;br /&gt;| Environment set to development&lt;br /&gt;| Environment set to development.&lt;br /&gt;| Environment set to development..&lt;br /&gt;| Environment set to development...&lt;br /&gt;| Environment set to development....&lt;br /&gt;| Environment set to development.....&lt;br /&gt;| Packaging Grails application&lt;br /&gt;| Packaging Grails application.&lt;br /&gt;| Packaging Grails application..&lt;br /&gt;| Packaging Grails application...&lt;br /&gt;| Packaging Grails application....&lt;br /&gt;| Packaging Grails application.....&lt;br /&gt;| Running Grails application&lt;br /&gt;Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0&lt;br /&gt;[ERROR] 2014-08-30 19:29:07,296 ScaffoldingGrailsPlugin - Error configuration scaffolding: startup failed:&lt;br /&gt;script1409426946353650946897.groovy: -1: Repetitive method name/signature for method &#39;java.lang.Object withFormat(groovy.lang.Closure)&#39; in class &#39;toolprod.ServerController&#39;.&lt;br /&gt;&amp;nbsp;@ line -1, column -1.&lt;br /&gt;script1409426946353650946897.groovy: -1: Repetitive method name/signature for method &#39;java.lang.Object withFormat(groovy.lang.Closure)&#39; in class &#39;toolprod.ServerController&#39;.&lt;br /&gt;&amp;nbsp;@ line -1, column -1.&lt;br /&gt;2 errors&lt;br /&gt;org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:&lt;br /&gt;script1409426946353650946897.groovy: -1: Repetitive method name/signature for method &#39;java.lang.Object withFormat(groovy.lang.Closure)&#39; in class &#39;toolprod.ServerController&#39;.&lt;br /&gt;&amp;nbsp;@ line -1, column -1.&lt;br /&gt;script1409426946353650946897.groovy: -1: Repetitive method name/signature for method &#39;java.lang.Object withFormat(groovy.lang.Closure)&#39; in class &#39;toolprod.ServerController&#39;.&lt;br /&gt;&amp;nbsp;@ line -1, column -1.&lt;br /&gt;2 errors&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:572)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:550)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:527)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ScaffoldingGrailsPlugin.createScaffoldedInstance(ScaffoldingGrailsPlugin.groovy:183)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ScaffoldingGrailsPlugin.configureScaffoldingController(ScaffoldingGrailsPlugin.groovy:138)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ScaffoldingGrailsPlugin.configureScaffolding(ScaffoldingGrailsPlugin.groovy:113)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ScaffoldingGrailsPlugin$_closure2.doCall(ScaffoldingGrailsPlugin.groovy:88)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.util.concurrent.FutureTask.run(FutureTask.java:266)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Thread.run(Thread.java:745)&lt;br /&gt;[INFO ] 2014-08-30 19:29:07,523 conf.BootStrap - ENVIRONNEMENT : DEVELOPMENT&lt;br /&gt;[INFO ] 2014-08-30 19:29:07,523 conf.BootStrap - Nothing to load at startup ...&lt;br /&gt;| Server running. Browse to http://localhost:8080/toolprod &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Grails 2.3.6 to 2.4.3&lt;/h3&gt;
&lt;br /&gt;
I also test the following use case.I upgraded to 2.4.3 my web site.&lt;br /&gt;
However,&amp;nbsp; I had compilation error :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Grails 2.4.3 with jdk7&lt;br /&gt;&lt;br /&gt;me/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:42: error: no interface expected here&lt;br /&gt;public class ScaffoldingViewResolver extends GrailsViewResolver {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldedGroovyPageView.java:87: error: method createResponseWriter in class GroovyPageView cannot be applied to given types;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; out = createResponseWriter(response);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;br /&gt;&amp;nbsp; required: GrailsWebRequest,HttpServletResponse&lt;br /&gt;&amp;nbsp; found: HttpServletResponse&lt;br /&gt;&amp;nbsp; reason: actual and formal argument lists differ in length&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldedGroovyPageView.java:75: error: method does not override or implement a method from a supertype&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:88: error: cannot find symbol&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return super.createFallbackView(viewName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;br /&gt;&amp;nbsp; symbol:&amp;nbsp;&amp;nbsp; variable super&lt;br /&gt;&amp;nbsp; location: class ScaffoldingViewResolver&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:58: error: method does not override or implement a method from a supertype&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:97: error: cannot find symbol&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; view.setApplicationContext(getApplicationContext());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&amp;nbsp; symbol:&amp;nbsp;&amp;nbsp; method getApplicationContext()&lt;br /&gt;&amp;nbsp; location: class ScaffoldingViewResolver&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:98: error: cannot find symbol&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; view.setServletContext(getServletContext());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&amp;nbsp; symbol:&amp;nbsp;&amp;nbsp; method getServletContext()&lt;br /&gt;&amp;nbsp; location: class ScaffoldingViewResolver&lt;br /&gt;/home/drieu/workspaces/toolprod/target/work/plugins/scaffolding-2.0.1/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:99: error: cannot find symbol&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; view.setTemplateEngine(templateEngine);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&amp;nbsp; symbol:&amp;nbsp;&amp;nbsp; variable templateEngine&lt;br /&gt;&amp;nbsp; location: class ScaffoldingViewResolver&lt;br /&gt;8 errors&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1 error&lt;br /&gt;&lt;br /&gt;Process finished with exit code 1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The right choice&lt;/h3&gt;
&lt;br /&gt;
It isn&#39;t a suprise but the right choice is to update Grails 2.3.6 to 2.3.11.&lt;br /&gt;
It &#39;s easy and it works ;-)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/1874081409162012866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/08/upgrading-grails-236.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/1874081409162012866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/1874081409162012866'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/08/upgrading-grails-236.html' title='Upgrading Grails 2.3.6'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6303463758322326359</id><published>2014-08-25T02:44:00.000-07:00</published><updated>2014-08-25T02:44:58.847-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="w3c"/><title type='text'>Web Component</title><content type='html'>&lt;br /&gt;
This paper is a synthesis about I heared and rode about Web Components.&lt;br /&gt;
To make this article, I used mainly InfoQ video of Julien Vey and html5rocks web site.&lt;br /&gt;
&lt;br /&gt;
Web Components is W3C standard which is at DRAFT status.So, you will have to wait before it arrived. However, it is possible to use because main actors of the web (Mozilla, Google ...) started to work on this specification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
What is a Web Component ?&lt;/h3&gt;
&lt;br /&gt;
Here is a good definition I found on &lt;a href=&quot;http://www.infoq.com/fr/news/2013/06/webcomponents&quot; target=&quot;_blank&quot;&gt;article of Julien Vey&lt;/a&gt;&amp;nbsp;d&#39;InfoQ :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;http://www.w3.org/TR/components-intro/&quot;&gt;Web Components&lt;/a&gt;&amp;nbsp;permit developpers to create HTML tags which are reusable and customizable.For example, here is a tag&amp;nbsp;&lt;code&gt;&amp;lt;my-own-tag&amp;gt;&lt;/code&gt;&amp;nbsp;:&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;element&amp;nbsp;name=&quot;my-own-tag&quot;&amp;gt;
&amp;nbsp;&amp;lt;template&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;html tag here
&amp;nbsp;&amp;lt;/template&amp;gt;
&amp;nbsp;&amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;JavaScript
&amp;nbsp;&amp;lt;/script&amp;gt;
&amp;lt;/element&lt;/i&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
Note : When it will be implemented and approved by W3C, it will be possible to reuse a component on all web navigator !&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Why look at Web Component now ?&lt;/h3&gt;
&lt;br /&gt;
- It is a web standard of W3C.&lt;br /&gt;
- Main actor of web began to implement it.&lt;br /&gt;
- It will change way of working in web developpement because components will be reusable on all navigators.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Web navigators and Web Components&lt;/h3&gt;
&lt;br /&gt;
A good summary of specification and implementation is avaible here :&amp;nbsp;&lt;a href=&quot;http://jonrimmer.github.io/are-we-componentized-yet/&quot; target=&quot;_blank&quot;&gt;are we component yet ?&lt;/a&gt;&lt;br /&gt;
Now, there is a lot web navigators that doesn&#39;t support Web Component.However, it exists emulation for Web Component :&amp;nbsp;&lt;em&gt;polyfills.&lt;/em&gt;Polyfills permits to start using Web Component.&lt;br /&gt;
&lt;br /&gt;
Here are some project :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://x-tags.org/index&quot; target=&quot;_blank&quot;&gt;x-tags&lt;/a&gt;&amp;nbsp;: x-tags is a Mozilla JavaScript library which works on all Web Navigators.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.polymer-project.org/&quot; target=&quot;_blank&quot;&gt;Polylemer&amp;nbsp;&lt;/a&gt;&amp;nbsp;is a&amp;nbsp;Google library ( there is a talk on Google I/O )&lt;/li&gt;
&lt;li&gt;UI library for Dart :&amp;nbsp;&lt;a href=&quot;https://www.dartlang.org/articles/web-ui/&quot; target=&quot;_blank&quot;&gt;web-ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/toolkitchen&quot; target=&quot;_blank&quot;&gt;toolkitchen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
Web Components&amp;nbsp;&lt;/h3&gt;
&lt;br /&gt;
&lt;h4&gt;
Templates&lt;/h4&gt;
&lt;br /&gt;
Here is an example of template :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;lt;template id=&quot;&quot;&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;lt;/template&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Template is simply a reusable peace of code.You have to note that Web Component are parsed but not executed and picture aren&#39;t load in memory.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Shadow DOM&lt;/h4&gt;
&lt;br /&gt;
Shadow DOM permits to make encapsulation without iframes. So we will mask implementation of a tag.&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
In the source we have our tag :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;div id=&quot;mondiv&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When we will show the HTML web page, we will have :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;div id=&quot;mondiv&quot;&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;h2&amp;gt;mon contenu&amp;lt;/h2&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;/div&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The content are fill at execution.&lt;br /&gt;
To instanciate this shadow DOM, you can :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Use JavaScript&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;var shadow = ....&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;shadow.innerHtml=&quot;&amp;lt;h2&amp;gt;mon contenu&amp;lt;/h2&amp;gt;&quot;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Use Insertion point&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
We define a div with our content :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;div id=&quot;host&quot;&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;/div&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This tag will permit to show our content :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;content&amp;gt;&amp;lt;/content&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Custom element&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A Custom element will contain all we saw before :&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;element name=&quot;moncomposant&quot; extends=&quot;button&quot; constructor=&quot;moncomposant&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;template&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/template&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;lt;scritp&amp;gt;....&amp;lt;/script&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;/element&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In my web page :&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;link rel=&quot;component&quot; href=&quot;moncomposant&quot;&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;i&gt;&amp;lt;moncomposant&amp;gt;&amp;lt;/moncomposant&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Other things&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
In this paper, I didn&#39;t address mutation observer and model driven view which permit to make databinding and evaluate performance...&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
More infos&lt;/h3&gt;
&lt;br /&gt;
http://www.html5rocks.com&lt;br /&gt;
http://www.infoq.com/fr/presentations/web-components&lt;br /&gt;
http://www.infoq.com/fr/news/2013/06/webcomponents</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6303463758322326359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/08/web-component.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6303463758322326359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6303463758322326359'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/08/web-component.html' title='Web Component'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6429133245241553290</id><published>2014-05-30T04:01:00.000-07:00</published><updated>2014-05-30T04:01:42.956-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><title type='text'>Deploy your Tomcat Grails website on OpenShift</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Deploy your Grails web site on OpenShift &lt;/h2&gt;
&lt;h2&gt;
&lt;/h2&gt;
I use OpenShift cloud to deploy my web site made with Grails. 
This article will give you a summary of what you have to do if you want 
to deploy a web site on OpenShift cloud. It will also give some advice 
and feedback. &lt;br /&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
&amp;nbsp;Which way to deploy your Grails application on OpenShift ?&lt;/h3&gt;
The best way I found to deploy my Grails application is to build a war and then deploy it on Openshift.&lt;br /&gt;
&lt;br /&gt;
By default, Grails has the war command available : &lt;b&gt;grails war&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
See also the Grails web site for more details about it : &lt;a href=&quot;http://grails.org/doc/2.2.1/ref/Command%20Line/war.html&quot;&gt;http://grails.org/doc/2.2.1/ref/Command%20Line/war.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You can use &lt;a href=&quot;http://grails.org/plugin/tomcat&quot;&gt;Tomcat plugin&lt;/a&gt; to makes Tomcat the default servlet container for Grails at development time.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;You can delete unwanted files in your war by adding some configuration in Config.groovy : &lt;br /&gt;&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  grails.war.resources = {  
2:     stagingDir -&amp;gt; delete(dir: &quot;$stagingDir/selenium&quot;)   
3:  }   
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Install and configure Openshift client&lt;/h3&gt;
&lt;br /&gt;
First of 
all you have to create an account on Openshift then you will be able to 
install and configure openshift tools. You only have to install rubygems
 and git package. For example, on Gentoo, type the following commands :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; emerge dev-ruby/rubygems  
 emerge git   
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don&#39;t have Gentoo, you can see on the openshift website : &lt;a href=&quot;https://www.openshift.com/get-started#cli&quot;&gt;https://www.openshift.com/get-started#cli&lt;/a&gt;&lt;br /&gt;
Then, you only have to execute following command :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; gem install rhc  
 su - user  
 rhc-setup   
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is an example :&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#rhc setup&lt;/i&gt;&lt;br /&gt;
&lt;a href=&quot;https://draft.blogger.com/null&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;152&quot; src=&quot;data:image/png;base64,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kC7PRCdDroiACIiACIiACIiACJy2BOJ8Vq5Nij5wdEgEREAEREAEREAEREAEIkhA8fIIwpQpERABERABERABERABEUghAb86iSk0qWGBCegWRGA2OiICIiACIiACIiACpzUBxctP69OvxYuACIiACIiACIiACGQSAtLlmeREyA0REAEREAEREAEREIHTmoCfLifpIvWvdu3a9enTJzV2Bg4cmCNHDizUrl07JiYmxaZSOTzF89oHpvK7VqJEiaeefPLjjz7q/8471113XYqt1axZMzY2NsXDM3zg0CFD8uXLZ3fD3eJwsl/fvgkJCRnuuRwQAREQAREQAREQgUAE/HR5oDGht0dHRzds2PDMM88sVqxY6KMcPYsWLYodGjt37nzGGWek2E4qh6d43ggOvLNbtwULFtzVvftLL720dOnSFFvueMstRYoUSfHwrDgwNd+crLhe+SwCIiACIiACIpDlCKStLq9ater+/ftnzJhx6aWXph7NPffcs23bttDtjBo1KmfOnFb/cIeHPlG69Tz77LP/mD79+PHjW7Zu9dflxI/t4WHHx4cfeWT79u3p5rYmEgEREAEREAEREAERCEogbeuxXHbZZTNnzlyyZMm999771VdfGW+Qy3379u3YsWPu3LnnzZs3aNCggwcPcihQu7WGjz/+uEePHkePHo2LiyM9hkh8/vz5Fy1a9MILL2CKQ7Vq1Tp27Njnn38+ZcqUt956i4HDhw/n35tvvplR1vD4+Hhmv/jii8nlmD59+qeffsoo48Crr756yy23EODfvHnzhx9+uHjxYtpJgLnttttKlix54MCBsWPHjhw5MijWQB3IaQl0KJT2DRs21K1bd8yYMfbOLOfOO++sW6fOunXrBrz//o4dO15+6SU6fDR4MP/e0bnzs7172z+y2AHvvfdgz568GTZ0KOfipptu4qYEWv+zzz4zcp8lE1OHA4lDZq5ud95ZoUKFm9u3L168OOdrwsSJ3377bSg+p1Efkx1kN261uIGYbqYDS373vffa3XQT3xluPnz8ySeHDh1KIydlVgREQAREQAREQARCJ+D3XKHQrXj2JCm8QYMGDz744M6dO5FK55577rJly0zPevXqPfLII7xHTHfq1Ondd9/1b3fYv+GGG6pUqdK7d++9e/eafIwjR478/vvv7733XvXq1bkGQJf37NkToW8UuWN4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ERABERABERABERCB7EFAujx7nEetQgREQAREQAREQAREIGsTkC7P2udP3ouACIiACIiACIiACGQPAnE+y0hISPA5qkMiIAIiIAIiIAIiIAIiIAKRIhA9efLkSNmSHREQAREQAREQAREQAREQgZQRiMuZM2fKRmqUCIiACIiACIiACIiACIhApAhIl0eKpOyIgAiIgAiIgAiIgAiIQMoJSJennJ1GioAIiIAIiIAIiIAIiECkCEiXR4qk7IiACIiACIiACIiACIhAygnE8Ur5aI0UAREQAREQAREQAREQARGIBAHVL48ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEZAuTx0/jRYBERABERABERABERCBSBCQLo8ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEZAuTx0/jRYBERABERABERABERCBSBCQLo8ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEYgLNDw5OZlD5t9AfdQuAiIgAiIgAiIgAiIgAiIQEQLeuhw5br0iMo2MiIAIiIAIiIAIiIAIiIAI+BDw0OVGkZ88ebJ06dI+I3VIBERABERABERABERABEQgUgS888uNNI/UHLIjAiIgAiIgAiIgAiIgAiLgT8BDl1vxcv+ROioCIiACIiACIiACIiACIhApAh663JjWjs9IIZYdERABERABERABERABEQhKQLo8KCJ1EAEREAEREAEREAEREIE0JxBQl6f5zJpABERABERABERABERABETg/wlIl+u7IAIiIAIiIAIiIAIiIAIZT0C6POPPgTwQAREQAREQAREQAREQAelyfQdEQAREQAREQAREQAREIOMJSJdn/DmQByIgAiIgAiIgAiIgAiIgXa7vgAiIgAiIgAiIgAiIgAhkPAHp8ow/B/JABERABERABERABERABKTL9R0QAREQAREQAREQAREQgYwnIF2e8edAHoiACIiACIiACIiACIiAdLm+AyIgAiIgAiIgAiIgAiKQ8QSkyzP+HMgDERABERABERABERABEZAu13dABERABERABERABERABDKegHR5xp8DeSACIiACIiACIiACIiAC0uX6DoiACIiACIiACIiACIhAxhOQLs/4cyAPREAEREAEREAEREAEREC6XN8BERABERABERABERABEch4AtLlGX8O5EEgAtNWbj1yIjHQ0dO8XXBO8y+Ali8CIiACIpD9CEiX+53TmLs+XLp1r18PHUtLApe+8eO6XQfTcob0th3Bb1TGwongQtL7HGg+ERABERABEcisBKTLM+uZkV8iIAIiIAIiIAIiIAKnEwHp8tPpbIe51vgeg+es2xnmoP90T72F1MyusSIgAiIgAiIgAiIQCoHExMSBAwc2bNiwUKFCuXLlKlu2LO/79OmzZMmSUIZHqo90eaRIZkM7SSeTk6OSU7Ow1FtIzewaKwIiIAIiIAIiIAJBCezfv79x48b9+/fv0qXL1KlT16xZ8+233959991Lly4dOXKkNTw+Pn7OnDlBraWgg2U5LgWDNUQEREAEREAEREAEREAEsgeBp556ing5mjtnzpxmRcWLF69Tp067du3sC0xKSkomYpkGL8tymuvy5dv2vTJm/oQlm7cdOJw/Z4765c98sEmNxueWdCyKbWT73+60Zd/hV8f8NWHpJt7kzhFX66wiXS6ufPMF50RH/6f74eOJfcf//c28NSu27+NAtRKFO198budLzo2x9cPgvn6dVu/c/8a4BVOWb91+4EhCXGy9smc8dmXtplVKOWaft2Hn62MXTFmxZceBowVz52hQvtjDV9S8uELx+Fjn/YQQl4P9oD0rPTPi0Strdb64st0ZTnfZJ754oEn1B5vWsLezkEpPj9z2xi1F8uTcuv/wqLlrf/x73crt+zftPZQjNrZ26SIPNq1+ba2y9iFhIXUA4WNs9w/594KXvzOHZj1+Xb0yRa1uQVfnbyHEJTi8Cn1F9Dz2XucFG3c/+f2fM9ds33fkeIcLzxlye2NjMBTnTc+/N+3u/eOcycu37Dl8zOEMHx1MrA7+s/MlXbR5z2tj//pt2Rb/ryVH+45f+OOCdWt3HeC7XbJg7kaVSvRt04AfDbcztIS4Ltxb/GybysULuo24D4X+o+G2FtT/0B3mZ3nW2u0v/zr/z7U7oqOiq5YseF/j6u3Or8Ck381f23fC339t2J148mT1koV7Nq3Rtl55tzNqEQEREAEREIFABEaMGNGvXz9LlAfqlg7t3n/gIzXxr4s23PThBKTnqLualS6cZ+fBo9/OW3vtgLHPtKrb64qajlmGzVz5wi/z7ru8Gn9xixfIdeDoifFLNj38zcyJyzZ/dOulVueNew416/fLWYXyvHBtvdpnnUGqBXr66R9m021458vtCn7QlCX9Jy3qdUWNx5vXPiNvTiTsN3PXXv3emK+6Nb2q5tmWwS//XNX58yn3NK72491XnlUwLxqOCnR3fDYF0Zwj7j+6PPTlhNKzRbWzxy3Z5NDl01dv4wLm2/lrHbocFHXPPgNRjtswnLl2e7dLqlQrWQitBtWxizeyhINtE1GfdqohIvU83ejaHD0+mv7oteeVOYMOcTH/QxHK6hjiYyH0JaTsS8Ko35ZvhgnfNL48XLrkjI81pkJ0ns7zN+xq9OaPnAikcOE8CRi8a9g0tOA1NcugjPnvnDPze6LzmZ1Dv6/cxvec6yi+YD5fy9nrdlz17phmVUv1b3fRucUKIjq5DOMaI5AoD31dgXx2t4f+o+EeG9T/sBzuN+Hv7/9ax9nk4pDSmeOWbOw+fBq/IrjAM+18S4+eSBqzaGOXIVOOJSZ1rF/R7ZJaREAEREAERMCTwNGjR0kr9zxkNcbGnhISF1xwgWmZNWtWvXr1zPutW7eOGjXqxx9/XLly5aZNm3LkyFG7du0HH3zw2muvtduMiYk5duzYggULnnzyyZkzZ+7bt69Dhw5Dhgz5j2XGO14bNmxYt24dpk+m7rV578GCD3zy8bSlDjPTVmxJ6DF4yvLN9vaoboPy3ffxki27HZ1Xbd9X4P5PPp++zLSfSEy64KVv7xw6JSnpPx237D1UvNeQAb8ttFoxWOiBT9fu3O8w+OLPc2v3+dpqpEPuez4aPnOFo9uOA4fLPj489q4PFm/+16XQlxNiz58XrCv84KeJ/13J/SN+f3DkH/DBiN2lNoPGPfHtLIeT9o9DZyw/56kv7C0hIvWxiYVZa7Y5OoS4OjPK00KgGT2XYPFnVOgromfJR4bMXJ0q51u88wvfNLu3I2evLP/EF47vnns5gWY3Syjx8JCgX8s9h46WemTom2P/chu3WpglBV9O44Odqn0Ku83QfzTcTgb1P9xvUZnHh+07fMw+0cDJi/iNUeHJLw4cOW5vf33M/HOfHuF2SS0iIAIiIAIiEIhAgwYNHn300UBHTfvx48cR2dOnT+cNL3vn9957r2PHjt988w356KSqr169mi2khQsXRnPbuzF8zJgxZ5111gcffIDY3rZtG9KcDnbLzjwN/2uFsI6+P3lJjVKFO11UyTHqogrFulxSmXwVRzuRY+KCjsZyZ+S7v0n1fhMWmvav564m7N2vbQNHZkux/LmeaFGbm/724Xc1qnJ24bwOg2TFEAclKG7aP5i69PyyRc0NcXtPItP3X16dbYtWY+jLCbHnZeeWICGH+/LWFCSxfD1nza31K15Qrih35+3tE5dublrFmfxjd5g7AMRTdx06am8MBam9fyjvQ1xdKKYcfTyX4OgT+oqaVyvNmXUMD8v5qSu2XlXjf/dVMHVZpZIkFJnsKf8Fes5uhvATEfRrya2eEgVyO+6Z+MwY1rp87NgPhf6j4TYY1P9wHebuUL6c8faJWtU4m3g5CWx5Ev5z0691nXLLtu31zDty+6kWERABERABEYDAs88++9Zbb73//vs+6eNxcaf+3BDb5o15b6Hr3r37Z599dv3111eqVClv3rzUcunWrds777zz3HPPOfDefvvtyHd2l5YqVapo0aL58uWjg91yGupy7lPfWLec5/m+qV55hOaJpJP2o5e7ks7N0VbVzybJ1SjpEbNXt7+gApnibrMoIQTT5r2HrUONKpZwdytVKDeN5JGbQ+SHXPfftGxryOWV/6ODQ19OiD1zxceh87jzbs1I/gzpFmTVN69aetS8tVY7yz+amHhR+eLu5ZiW44knyT8mw2H3of+kQYeCNJDNQO0hri7Q8EDtgZbg6B/6iq62pSpZRsJyHqSORCaTzHOqSk2wl+fsZlAoX8uf/l7f7vwwkqTDWlcw3/89HvqPhttgUP/DdfjCcmc6ZilZIA8tJsnKfqhUwVPtuw567Adw++luIcPe3agWERABERCB7E2gWbNmpJi//PLLVapUefPNNzdv3pz69V511VXknuzatctuqnnz5ueff76P8TTU5ajkqiW8k3VIjCZJdMOe/zzKkZRxT0crnlkAIbRm5wGOkrR6brEC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rEBAujwrnCX5KAIiIAIiIAIiIAIikN0JSJdn9zOs9YmACIiACIiACIiACGQFAtLlWeEsyUcXgbW7Drja1CACIiACIiACIiACWZhA2uryY8eOTZw4ceDAgX379h0+fPjmzZvTAdVrr73mnmXbtm0jR47s16/f22+/7T6aFi2ebqTFRHabQ4YMCXeKiPuZAh/C9Zn+5Z/8MgWjNEQEREAEREAEREAEMi2BNNTlR44cQYsnJCTcdNNN9913X6tWrXLkyJEyEKnUjvv27UOUn3POOd26dbv//vtT5kMoo1LpZyhT+Pdp166df4d0OBqiDzF3fejvTNAO/sN1VAREZjoHZAAAIABJREFUQAREQAREQASyFoG4tHN3ypQpVatWvfDCC80UBQoU4A3KtW3btj///HORIkUQcImJiaNHj165cmXJkiWvvvrq3Llzm85z5879448/0PFNmzb9+uuvzcBHHnmEN55DDh8+jM1NmzY1bNjQvaKZM2eed955devWdR8ylrlmGDduXMGCBa+77rolS5bQP2/evFdcccXZZ59tZpw8efLSpUt5X6VKlUaNGsXGxrIQ/GcUor9o0aJ0/uyzz+x+8n7jxo1jxoyxOhQrVmzRokW//fYbh/CzZs2aDn/sqy5fvvyBAwfGjx+/fv16bjtYPXv27Ol2xjrKrYl7773XuOFwj9mtbp64AOu2zDL94WDT4XYoPhjNzb8nB3bFwtETSY99O2vk7NXJUcntzq/wyvUX5LrnY9qtDrx/d9KiPr/MzZeQ4932FzWvVtpaC31+uufKu4ZNw8g1tcr0a9sgb0I8jWPvb9nxk0lVSxSa8GArt/2EuNiNew7dN+KPScs27zty3LJm/LE+6o0IiIAIiIAIiIAIpBuBNIyXr1ixAl3uXgkCt1OnTiaq+ueff8bHx/fo0QMFPHXqVKszSvfOO+9EAU+YMMHIcfMvHTyHMLZw4cLdu3dHXEZHRzsmXbduHQY//vhjkli+//57VKmjw549exhbr1697777DhGMP+effz6a2HSbPn06HW677bZbb711165dM2bMMO2LFy++8cYb0cEVKlT49ddfHX7Sx9GBFrJ6rr/++s6dO5cu/T9l6blqGn/55Rfcvuuuu7haqFOnDl4xVyBnHCvynN3q44krkGV/ONi0nyyHG24CpoORv5YIfnH0vBXb98158vrZT1y/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q666ytSn9xmyb9++H3/8kSsls2SWVrJkSZ/+9kPMQkkf04KSHj9+/Lp169i0gAXsnH322ebQ/v37R48evWzZssOHD99000116tQJav+7777D//r16584ccK9KOnyoADVQQREQAREQAREQARCIoAKTB9pPmfOHOSd5ZP18eDBg1dcccUll1xiDlki+88//0RTtmjRImfOnAj0zz//vFevXvRBVhKkR98jOocMGTJmzBh0p89SA9nxbK9Vq1a1atUsa0Sg33//fUvU0s6k06dPj4sLLkfnzp07e/bsLl265MqVa+jQoVOnTm3UqJGxHOjRUV988QXXHg899BD26f/JJ5888cQTgTr7LHnlypUNGjRo27Ztjhw5ZsyYgR2i3YDlkuaDDz6oVKnSAw88kD9/frsFn1m2b99epUoVTPFyLyo4CB9HdUgEREAEREAEREAERMAi4BblxIN//vnnrVu3IiiJpxrV69mIER5TiuhEKCMor7322jJlyhjLSEzEXO3atc1HxPeKFStuuOEG98dDhw4RDkfzOU5K8+bNrRaE+7Rp04j1oib//vvvW265JV++fBxt06bNwIED6WlC0ZMmTfrjjz8I655zzjnXXXdd3rx56RPITqB2uydEu7mWyJ07t+UJUpsgPdF6u7ee8yJhL7vsshIlStAT/3/44QdLl2/atGnkyJH8m5CQAGE8MUJ/8+bN3BYwYfiGDRsS8waOWQXL//333w8cOFCwYMGbb76ZKxai49hkFozY18J0l19+ueXehRdeyO0F7ICO5RQoUIAp7M6b94FcIsWFDm+++SYXRWeccYZ7UdLlbphqEQEREAEREAEREIGUEHDHy5GM6DzCxnv37kUIGqOejRxCLLZv375QoUJTpkxBixsZRzuyHrVtOTR//nzCtEZi0mj/SEKF1R5oAch6lKvRx8ju+Ph40xOVyXCOIjqRjEj2bt268f7XX3/98ssviVU7DNrt2A95tqNlCepbiTf0P3bsGFcg559/vpUxQmOgeSHQtGlTMwsymoEMR0PTQvj/xhtvRLKTS/PVV19NnDgR4U472TKTJ0/mEIulkasLQ2bBggXghfNZZ521bds2k8/DFQhx8fvuuw+b33zzjWOl5iPrQtxXrVrVRMcXL15sv2VhHxLIpVdeeYVzakQ5/d2L0r5PT/JqFAEREAEREAEREIGwCbjj5SQ3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S5mmTZuytZd8LJx9Rh16QQeuly9fXrFixQA1UED5y10fjQpFQAREQAREQAROYALHMX/5CUytIFV/8sknsYnZ/EpsNzY6D4gsJTjsC7LP4yzbymsZoMeQIUMaNWrUs2dPp36KY3EyUYkIiIAIiIAIiIAIiEA4CRCEg6sYi5xtl+ybJJu4a9R4OLssfLIYO9sJFi5c6AxiMcoqjqXwPTRpJAIiIAIiIAIiIAInFwEO9CFSnJOPSEfDLknOQmIX7Mk1xOCjYdsruW5uvvlmrxyRimMJDlE1REAEREAEREAETiwCimM5sZ6XtDUEFMeid4IIiIAIiIAIiIAIiIAIHH8CssuP/zOQBiIgAiIgAiIgAiIgAiIgu1zvAREQAREQAREQAREQARE4/gRklx//ZyANREAEREAEREAEREAEREB2ud4DIiACIiACIiACIiACInD8CXja5RwVe/y1kwYiIAIiIAIiIAIikHcCMmPyzkwtjj8B2eXH/xlIAxEQAREQAREQgfASkF0eXp6SdmwIuJwrxFuZF2cyrVmzhmOZSP+OKocOHTo2CqkXERABERABERABEcgHAWOLY8BE/Pky9kw+5KiJCBwvAi52OaqYtyXCPpcAACAASURBVLJ5T2ORyyg/Xo9H/YqACIiACIiACIROwPItyigPHZpqFh4CLna5Nd3EHDfXhUddaSICIiACIiACIiAC/gSMUS7T3J+S7hZCAi52OVoac5y/8pQXwmcmlURABERABERABHwIWGaMTx3dEoFCSMDdLkdRvacL4dOSSiIgAiIgAiIgAiIgAicrAc98LCfrgDUuERABERABERABERABESiEBGSXF8KHIpVEQAREQAREQAREQASKHAHZ5UXukWvAIiACIiACIiACIiAChZCA7PJC+FCkkgiIgAiIgAiIgAiIQJEjILu8yD1yDVgEREAEREAEREAERKAQEpBdXggfilQSAREQAREQAREQAREocgRklxe5R64Bi4AIiIAIiIAIiIAIFEICsssL4UORSiIgAiIgAiIgAiIgAkWOgOzyIvfINWAREAEREAEREAEREIFCSEB2eSF8KFJJBERABERABERABESgyBGQXV7kHrkGLAIiIAIiIAIiIAIiUAgJyC4vhA9FKomACIiACIiACIiACBQ5ArLLi9wj14BFQAREQAREQAREQAQKIQHZ5YXwoUglERABERABERABERCBIkdAdnmRe+QasAiIgAiIgAiIQMERqP7nq0aNGqeddtptt922cePGgusrr5Kfe+65/v3757WV6h8zArLLjxlqdSQCIiACIiACIlAkCCxatCg5OXnkyJElSpS45ZZbCsmYDx069P3332/YsAHdColKUiOAgOxyvSVEQAREQAREQAREIMwEihcvjtf83//+97x589LS0sIs/U9xyN+7d2/okmfMmFGxYsWzzz7722+/Db2Vah5LArLLjyVt9SUCIiACIiACIlCECGRnZxcrVgwbnTFnZmYS1tKgQYMLLrjA8lhjW48ZM6Znz5516tTp0aMHpvObb77ZpEmTtm3b/vLLL4YUDR9//HGiYk499dQHH3wwIyOD8t69e/O3UaNGlnXuKt/O+uuvv8YoP+ecc7iwyg8cOPDMM8+cfvrpKHbttddS7ixxlTxx4sQzzzyzXr16bdq0+d///kdDZ4m9d12HQkB2eSiUVEcEREAEREAEREAE8kCAoBEiy//1r3+dd955pUuXpuXbb7/NX9znmNT333+/Jeuzzz776KOPli5desUVVwwYMGD9+vWzZs165JFHHn30UVPn5ZdfXr58OWb6uHHjtmzZMnjwYMrHjh3LX8rpxV++EbJ///6ffvrp/PPPx+LHzp4zZ44pf+2112bOnPnVV18tXLgQ659CZ4mr5v/4xz+efvrppKQkYmP69OlDQ2eJ6UJ/QydQrFBtRwhdb9UUAREQAREQAREQgUJIAAe2pdXVV1/93//+Nzo6mpLu3bu/8cYbzZo1I6yladOmq1evJvqcyljYiYmJVMjKyqpbt+706dNr1aqFo7127drUKVmyZMeOHXGi4y+nzpo1a/B5Y8RzTVvscmOUe8m3NMF6fv/990eMGEEJKuF0x03OdefOnbH727VrZ9V0lrhqjonfoUOHm2++OS4uzrR1llgydREigePpL+f9tHbt2hAVVTUREIFCRWD48OF79uwpVCoVfmUErfA/I2koAmEhwL5P/J433XTT1q1bjVGOWDZc4lfG+CFMBW96amqq6atmzZrmAjOdi0qVKvE3MjKSv1jn/N28eXPVqlVNHZrz3WtCWUyJ9ddLvqlA7MrcuXNpzgv/948//ki8ihFuKWBq0l1AiavkoUOHMrSLLroIHz9ec9o6SwI01D+DEghil5vnx1/Cnjp16sRy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qlU1a9Y89qMI4i8/9gqFq8cxSVuIVMmrUU7vHCq0cXfGpR9P//aGTibQJVwqSY4IiIAIiIAIiMDJTYAIFgWxnASP+Hg9xJPQLicWfEta5v8mrXjozCb5eGcQO/5a/9MWbNpF7vN8NFcTERABERABERABERABEcgHgZPQLj/3vWmb9uwb0K7uec3yGRhUMrJ4+1oV80FTTURABERABERABIoyAfnLT46nL3952J7juNvOCJssCRIBERABERABERABERCBY0IgpPMsj4km6kQEREAEREAEREAEREAEii6BkzCOpeg+TI1cBERABERABETguBJQHMtxxR+2zo9XHIv85WF7hBIkAiIgAiIgAiIgAuElkJqaGl6BXtKSk5O9boWr3BrL0fR1NG3DNZCCkyO7vODYSrIIiIAIiIAIiECRI2Bc5l5/r/r/10033fTCCy+sXbvWq6Ypv+uuu/wr5OMuKjhbvfLKK3v37nWWh7HEGsvR9HU0bUMfy/F618ouP17k1a8IiIAIiIAIiECRI8AZ7z///POIESNeffXVxo0bP/nkk6tXr/ahQH2fu1dffbXPXfste01Xme+8807p0qVDlJa/ala/ee3Lrnxe2+ZP1ePVSvHlx4u8+hUBERABERABETjZCBiPrP+oduzYQYVSpUpdcsklERERw4cP/+c//0lJVlbWW2+9tWDBgnr16t15553ly5c3cpDpevehhx7C0sX5/dlnn7lWsNQIqFm8ePHx48d//vnnsbGxAwYMaNGiBTWvvPLKIUOGcDF16tQvvvgCZXr16nX55ZdbQrjYs2fP+++/v2TJkujo6GuvvbZ9+/YUYjTfeuutX331VWZm5mmnnYZA7roWUtmMxeqLXoYOHTpr1izKr7jiiu7duzu7CFDeanvgwIFhw4bNmDGDtp06daJ5ZGQk/V533XVff/01c4wbbrihVatWdv1DvzZ6hl4/XDVD8pcfPHiQpY2dO3cCC4Lh6ltyREAEREAEREAERKBoEsC4ysjI6Nix49KlS40ViB+9QoUK2Klt2rQxpradjPPuG2+8QQXKTTVnBat5QE2627Jly0cffYRt/emnn5pqGOvmAgWeeeaZDz74oGfPngGPhrlEnz59Pvnkk9tuuw2z3mq4YsWK119//e2338Y0/+abbyhHmrPQkmb19d133+3bt4/5AG1PP/10Kji7CFDe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TQhxwe1N2Dl2eWKVsulZ2ZmOM2nDMigOFWqeUJZpQGr6X67usEiWEBEQAREQAREQgcJAgEADe6KSwqCSdMgrAZ4gzzGvrcJS//j0GhbVwyWkatlodnP2bFCZ8HTyf/dqWIVUKuESbpeDD/61/qct2LSLROkFIV8yRUAEREAEREAEji8BUkuzMc8ccHN8NVHv+SZAyhM2Uua7+dE0VBzLKWOXb3lg5MK0zGxyFxKbTqZz4rmPhqnaioAIiIAIiIAIiIAIiEBeCcguzysx1RcBERABERABERABERCB8BNQfHn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+B2LNeAAAM00lEQVSpJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgmcJHZ59f+MXLtjX14HH8b6wxds2LM/+2gE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tK9D3PO7v682ntfG8bFzNux0SvAqt9fEtgvQyinHlIQiLZQ6AfJDV4CG+ZBv786Jzqd34oKWp6ab5lywehBXOjdK2+dF0MvilD0BFSauSr2nW6OW1XjOETiJfZr7KONsVaNczMpth9VL3nWE2A9mrvnoyrarHjlrxI1d7MltfOg5ydh7ZD8D4fLkRx+7/C+73IsPovZmHc5Av2r7YQ2d+h8lK6dASrxQ+7DyueXahQpFQAREQAREQAQKP4EgdvkdXepnZufcOnwuKfYO5BwiooAcHSMWb3rirGauY8MZSQDu+l2BR/x8MS+ZSF+yLM9evzO+dEmTIeSOzg1enbxy/IqtuCc37MoggbeR6VVu77FG+RhShWDfo5WrJlZhKNJCqRPQS+gK0DAf8q3uXNH59H51m1rkC8eyJBz86XFL2fjojEQKGAvzpZcnr+DUIeKwl21NMzHZ1crGTFqVSgmm7eOjF/tA9lHG2eqSljVen7oKW5lIffak2ivMTN5Jp84mXvRcydibY2r3bVLl+QnLq5aNaVz5cGyPFx+iXD6etY6wHzZOsAvZqYYpOUpWrmK9UPuw8rnl2oUKRUAEREAEREAECj+BICEoZFzBefnipKSrh87cmp5JlsPOdSuNvKmLFTUbMEJcof8ds/SC5rmJL+yvCStSnxy7dP+Bg02qxJKGz9zq3iCe7HuPjfoDo7xCqRL9Giewv5BbXuV2gf/qnfjwz4temJg04sbOBFoEdGf/ZyjSQqkT0EXoCoQ4Iq8huKLz6R1DfPverIs+/I1Jy7mJVe/r0chLslV+yak1SIZ48/DZbJbFyH73srZEYz9/3qkPjFz0zoxVdSuWYRqGje4lx0cZZ5ObTq+H973XkMllSkSRKIaUKVadVy5qSTnLIJHFizWIi32kVxMiVXzouZIJ6JFQlms/n8muYqvci88z57T454iFrV74ldD2R3s3nbByq1N5So6SlatML9Q+rHxuuXahQhEQAREQAREQgcJPoNjGjYe91GHRFRfmNws2fn1Dx7BIk5AiReDSj6f3aFD55o51CYz5be32m76cvfSBfkGd/f6IyOaZ+OzoqQN7ONMK+TfUXREQAREQAREQARE4xgSCxLHkVZt5G3dd2/bwSS55bav6RZwAMU4smJAsH7s8sUrZ9KzszBzP/ZchshqTtIVQdRnlIeJSNREQAREQAREQgeNIIEgcS141e+7cU/PaRPVFwBCoWjaafcCcKkpw/LPjk3o1rBJKMhMvemxaIML+f5NWcKCVVx2Vi4AIiIAIiIAIiEDhIRDmOJbCMzBpcsIRGLt8ywMjF6ZlZlcvF0NkPKnuTSr6/A3kzLcmb9qzb0C7ugGnF+VPmlqJgAiIgAiIgAiIQEETkF1e0IQlXwREQAREQAREQAREQASCEwhzfHnwDlVDBERABERABERABERABETAQUB2uQOJCkRABERABERABERABETgmBOQXX7MkatDERABERABERABERABEXAQkF3uQKICERABERABERABERABETjmBGSXH3Pk6lAEREAEREAEREAEREAEHARklzuQqEAEREAEREAEREAEREAEjjkB2eXHHLk6FAEREAEREAEREAEREAEHAdnlDiQqEAEREAEREAEREAEREIFjTkB2+TFHrg5FQAREQAREQAREQAREwEHg/wCT8IC+PCqbBQAAAABJRU5ErkJggg==&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;i&gt;OpenShift Client Tools (RHC) Setup Wizard&lt;br /&gt;&lt;br /&gt;This
 wizard will help you upload your SSH keys, set your application 
namespace, and check that other programs like Git are properly 
installed.&lt;br /&gt;&lt;br /&gt;Using XXXX to login to openshift.redhat.com&lt;br /&gt;Password: ******&lt;br /&gt;&lt;br /&gt;OpenShift
 can create and store a token on disk which allows to you to access the 
server without using your password. The key is stored in your home 
directory and should be kept secret.&amp;nbsp; You can delete the key at any time
 by running &#39;rhc&lt;br /&gt;logout&#39;.&lt;br /&gt;Generate a token now? (yes|no) yes&lt;br /&gt;Generating an authorization token for this client ... lasts about 1 month&lt;br /&gt;&lt;br /&gt;Saving configuration to /home/USER/.openshift/express.conf ... done&lt;br /&gt;Checking for git ... found git version 1.8.5.5&lt;br /&gt;Checking common problems .. done&lt;br /&gt;Checking for a domain ... MYDOMAIN&lt;br /&gt;Checking for applications ... found 1&lt;br /&gt;&amp;nbsp; opendoowap http://opendoowap-totalprog.rhcloud.com/&lt;br /&gt;&lt;br /&gt;&amp;nbsp; You are using 1 of 3 total gears&lt;br /&gt;&amp;nbsp; The following gear sizes are available to you: small&lt;br /&gt;&lt;br /&gt;Your client tools are now configured.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Deploy your application on the cloud&lt;/h3&gt;
Once,
 you can access with ssh and you have a war application, you only have to copy 
it on your account.OpenShift uses Git to push your application on the 
cloud : &lt;a href=&quot;https://www.openshift.com/developers/deploying-and-building-applications&quot;&gt;https://www.openshift.com/developers/deploying-and-building-applications&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
In our case, you had to make some change if you want it works. See my tips : &lt;a href=&quot;http://totalprogus.blogspot.fr/2013/12/problem-while-deploying-rootwar-on.html&quot;&gt;http://totalprogus.blogspot.fr/2013/12/problem-while-deploying-rootwar-on.html &lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Access in your application &lt;/h2&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
How to connect with ssh ?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Go and Log in openshift website.&lt;/li&gt;
&lt;li&gt;Clic on Application&lt;i&gt; tab&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Clic on your application&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;a href=&quot;https://draft.blogger.com/null&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;152&quot; src=&quot;data:image/png;base64,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kC7PRCdDroiACIiACIiACIiACJy2BOJ8Vq5Nij5wdEgEREAEREAEREAEREAEIkhA8fIIwpQpERABERABERABERABEUghAb86iSk0qWGBCegWRGA2OiICIiACIiACIiACpzUBxctP69OvxYuACIiACIiACIiACGQSAtLlmeREyA0REAEREAEREAEREIHTmoCfLifpIvWvdu3a9enTJzV2Bg4cmCNHDizUrl07JiYmxaZSOTzF89oHpvK7VqJEiaeefPLjjz7q/8471113XYqt1axZMzY2NsXDM3zg0CFD8uXLZ3fD3eJwsl/fvgkJCRnuuRwQAREQAREQAREQgUAE/HR5oDGht0dHRzds2PDMM88sVqxY6KMcPYsWLYodGjt37nzGGWek2E4qh6d43ggOvLNbtwULFtzVvftLL720dOnSFFvueMstRYoUSfHwrDgwNd+crLhe+SwCIiACIiACIpDlCKStLq9ater+/ftnzJhx6aWXph7NPffcs23bttDtjBo1KmfOnFb/cIeHPlG69Tz77LP/mD79+PHjW7Zu9dflxI/t4WHHx4cfeWT79u3p5rYmEgEREAEREAEREAERCEogbeuxXHbZZTNnzlyyZMm999771VdfGW+Qy3379u3YsWPu3LnnzZs3aNCggwcPcihQu7WGjz/+uEePHkePHo2LiyM9hkh8/vz5Fy1a9MILL2CKQ7Vq1Tp27Njnn38+ZcqUt956i4HDhw/n35tvvplR1vD4+Hhmv/jii8nlmD59+qeffsoo48Crr756yy23EODfvHnzhx9+uHjxYtpJgLnttttKlix54MCBsWPHjhw5MijWQB3IaQl0KJT2DRs21K1bd8yYMfbOLOfOO++sW6fOunXrBrz//o4dO15+6SU6fDR4MP/e0bnzs7172z+y2AHvvfdgz568GTZ0KOfipptu4qYEWv+zzz4zcp8lE1OHA4lDZq5ud95ZoUKFm9u3L168OOdrwsSJ3377bSg+p1Efkx1kN261uIGYbqYDS373vffa3XQT3xluPnz8ySeHDh1KIydlVgREQAREQAREQARCJ+D3XKHQrXj2JCm8QYMGDz744M6dO5FK55577rJly0zPevXqPfLII7xHTHfq1Ondd9/1b3fYv+GGG6pUqdK7d++9e/eafIwjR478/vvv7733XvXq1bkGQJf37NkToW8UuWN4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ERABERABERABERCB7EFAujx7nEetQgREQAREQAREQAREIGsTkC7P2udP3ouACIiACIiACIiACGQPAnE+y0hISPA5qkMiIAIiIAIiIAIiIAIiIAKRIhA9efLkSNmSHREQAREQAREQAREQAREQgZQRiMuZM2fKRmqUCIiACIiACIiACIiACIhApAhIl0eKpOyIgAiIgAiIgAiIgAiIQMoJSJennJ1GioAIiIAIiIAIiIAIiECkCEiXR4qk7IiACIiACIiACIiACIhAygnE8Ur5aI0UAREQAREQAREQAREQARGIBAHVL48ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEZAuTx0/jRYBERABERABERABERCBSBCQLo8ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEZAuTx0/jRYBERABERABERABERCBSBCQLo8ERdkQAREQAREQAREQAREQgdQRkC5PHT+NFgEREAEREAEREAEREIFIEJAujwRF2RABERABERABERABERCB1BGQLk8dP40WAREQAREQAREQAREQgUgQkC6PBEXZEAEREAEREAEREAEREIHUEYgLNDw5OZlD5t9AfdQuAiIgAiIgAiIgAiIgAiIQEQLeuhw5br0iMo2MiIAIiIAIiIAIiIAIiIAI+BDw0OVGkZ88ebJ06dI+I3VIBERABERABERABERABEQgUgS888uNNI/UHLIjAiIgAiIgAiIgAiIgAiLgT8BDl1vxcv+ROioCIiACIiACIiACIiACIhApAh663JjWjs9IIZYdERABERABERABERABEQhKQLo8KCJ1EAEREAEREAEREAEREIE0JxBQl6f5zJpABERABERABERABERABETg/wlIl+u7IAIiIAIiIAIiIAIiIAIZT0C6POPPgTwQAREQAREQAREQAREQAelyfQdEQAREQAREQAREQAREIOMJSJdn/DmQByIgAiIgAiIgAiIgAiIgXa7vgAiIgAiIgAiIgAiIgAhkPAHp8ow/B/JABERABERABERABERABKTL9R0QAREQAREQAREQAREQgYwnIF2e8edAHoiACIiACIiACIiACIiAdLm+AyIgAiIgAiIgAiIgAiKQ8QSkyzP+HMgDERABERABERABERABEZAu13dABERABERABERABERABDKegHR5xp8DeSACIiACIiACIiACIiAC0uX6DoiACIiACIiACIiACIhAxhOQLs/4cyAPREAEREAEREAEREAEREC6XN8BERABERABERABERABEch4AtLlGX8O5EEgAtNWbj1yIjHQ0dO8XXBO8y+Ali8CIiACIpD9CEiX+53TmLs+XLp1r18PHUtLApe+8eO6XQfTcob0th3Bb1TGwongQtL7HGg+ERABERABEcisBKTLM+uZkV8iIAIiIAIiIAIiIAKnEwHp8tPpbIe51vgeg+es2xnmoP90T72F1MyusSIgAiIgAiIgAiIQCoHExMSBAwc2bNiwUKFCuXLlKlu2LO/79OmzZMmSUIZHqo90eaRIZkM7SSeTk6OSU7Ow1FtIzewaKwIiIAIiIAIiIAJBCezfv79x48b9+/fv0qXL1KlT16xZ8+233959991Lly4dOXKkNTw+Pn7OnDlBraWgg2U5LgWDNUQEREAEREAEREAEREAEsgeBp556ing5mjtnzpxmRcWLF69Tp067du3sC0xKSkomYpkGL8tymuvy5dv2vTJm/oQlm7cdOJw/Z4765c98sEmNxueWdCyKbWT73+60Zd/hV8f8NWHpJt7kzhFX66wiXS6ufPMF50RH/6f74eOJfcf//c28NSu27+NAtRKFO198budLzo2x9cPgvn6dVu/c/8a4BVOWb91+4EhCXGy9smc8dmXtplVKOWaft2Hn62MXTFmxZceBowVz52hQvtjDV9S8uELx+Fjn/YQQl4P9oD0rPTPi0Strdb64st0ZTnfZJ754oEn1B5vWsLezkEpPj9z2xi1F8uTcuv/wqLlrf/x73crt+zftPZQjNrZ26SIPNq1+ba2y9iFhIXUA4WNs9w/594KXvzOHZj1+Xb0yRa1uQVfnbyHEJTi8Cn1F9Dz2XucFG3c/+f2fM9ds33fkeIcLzxlye2NjMBTnTc+/N+3u/eOcycu37Dl8zOEMHx1MrA7+s/MlXbR5z2tj//pt2Rb/ryVH+45f+OOCdWt3HeC7XbJg7kaVSvRt04AfDbcztIS4Ltxb/GybysULuo24D4X+o+G2FtT/0B3mZ3nW2u0v/zr/z7U7oqOiq5YseF/j6u3Or8Ck381f23fC339t2J148mT1koV7Nq3Rtl55tzNqEQEREAEREIFABEaMGNGvXz9LlAfqlg7t3n/gIzXxr4s23PThBKTnqLualS6cZ+fBo9/OW3vtgLHPtKrb64qajlmGzVz5wi/z7ru8Gn9xixfIdeDoifFLNj38zcyJyzZ/dOulVueNew416/fLWYXyvHBtvdpnnUGqBXr66R9m021458vtCn7QlCX9Jy3qdUWNx5vXPiNvTiTsN3PXXv3emK+6Nb2q5tmWwS//XNX58yn3NK72491XnlUwLxqOCnR3fDYF0Zwj7j+6PPTlhNKzRbWzxy3Z5NDl01dv4wLm2/lrHbocFHXPPgNRjtswnLl2e7dLqlQrWQitBtWxizeyhINtE1GfdqohIvU83ejaHD0+mv7oteeVOYMOcTH/QxHK6hjiYyH0JaTsS8Ko35ZvhgnfNL48XLrkjI81pkJ0ns7zN+xq9OaPnAikcOE8CRi8a9g0tOA1NcugjPnvnDPze6LzmZ1Dv6/cxvec6yi+YD5fy9nrdlz17phmVUv1b3fRucUKIjq5DOMaI5AoD31dgXx2t4f+o+EeG9T/sBzuN+Hv7/9ax9nk4pDSmeOWbOw+fBq/IrjAM+18S4+eSBqzaGOXIVOOJSZ1rF/R7ZJaREAEREAERMCTwNGjR0kr9zxkNcbGnhISF1xwgWmZNWtWvXr1zPutW7eOGjXqxx9/XLly5aZNm3LkyFG7du0HH3zw2muvtduMiYk5duzYggULnnzyyZkzZ+7bt69Dhw5Dhgz5j2XGO14bNmxYt24dpk+m7rV578GCD3zy8bSlDjPTVmxJ6DF4yvLN9vaoboPy3ffxki27HZ1Xbd9X4P5PPp++zLSfSEy64KVv7xw6JSnpPx237D1UvNeQAb8ttFoxWOiBT9fu3O8w+OLPc2v3+dpqpEPuez4aPnOFo9uOA4fLPj489q4PFm/+16XQlxNiz58XrCv84KeJ/13J/SN+f3DkH/DBiN2lNoPGPfHtLIeT9o9DZyw/56kv7C0hIvWxiYVZa7Y5OoS4OjPK00KgGT2XYPFnVOgromfJR4bMXJ0q51u88wvfNLu3I2evLP/EF47vnns5gWY3Syjx8JCgX8s9h46WemTom2P/chu3WpglBV9O44Odqn0Ku83QfzTcTgb1P9xvUZnHh+07fMw+0cDJi/iNUeHJLw4cOW5vf33M/HOfHuF2SS0iIAIiIAIiEIhAgwYNHn300UBHTfvx48cR2dOnT+cNL3vn9957r2PHjt988w356KSqr169mi2khQsXRnPbuzF8zJgxZ5111gcffIDY3rZtG9KcDnbLzjwN/2uFsI6+P3lJjVKFO11UyTHqogrFulxSmXwVRzuRY+KCjsZyZ+S7v0n1fhMWmvav564m7N2vbQNHZkux/LmeaFGbm/724Xc1qnJ24bwOg2TFEAclKG7aP5i69PyyRc0NcXtPItP3X16dbYtWY+jLCbHnZeeWICGH+/LWFCSxfD1nza31K15Qrih35+3tE5dublrFmfxjd5g7AMRTdx06am8MBam9fyjvQ1xdKKYcfTyX4OgT+oqaVyvNmXUMD8v5qSu2XlXjf/dVMHVZpZIkFJnsKf8Fes5uhvATEfRrya2eEgVyO+6Z+MwY1rp87NgPhf6j4TYY1P9wHebuUL6c8faJWtU4m3g5CWx5Ev5z0691nXLLtu31zDty+6kWERABERABEYDAs88++9Zbb73//vs+6eNxcaf+3BDb5o15b6Hr3r37Z599dv3111eqVClv3rzUcunWrds777zz3HPPOfDefvvtyHd2l5YqVapo0aL58uWjg91yGupy7lPfWLec5/m+qV55hOaJpJP2o5e7ks7N0VbVzybJ1SjpEbNXt7+gApnibrMoIQTT5r2HrUONKpZwdytVKDeN5JGbQ+SHXPfftGxryOWV/6ODQ19OiD1zxceh87jzbs1I/gzpFmTVN69aetS8tVY7yz+amHhR+eLu5ZiW44knyT8mw2H3of+kQYeCNJDNQO0hri7Q8EDtgZbg6B/6iq62pSpZRsJyHqSORCaTzHOqSk2wl+fsZlAoX8uf/l7f7vwwkqTDWlcw3/89HvqPhttgUP/DdfjCcmc6ZilZIA8tJsnKfqhUwVPtuw567Adw++luIcPe3agWERABERCB7E2gWbNmpJi//PLLVapUefPNNzdv3pz69V511VXknuzatctuqnnz5ueff76P8TTU5ajkqiW8k3VIjCZJdMOe/zzKkZRxT0crnlkAIbRm5wGOkrR6brEC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rEBAujwrnCX5KAIiIAIiIAIiIAIikN0JSJdn9zOs9YmACIiACIiACIiACGQFAtLlWeEsyUcXgbW7Drja1CACIiACIiACIiACWZhA2uryY8eOTZw4ceDAgX379h0+fPjmzZvTAdVrr73mnmXbtm0jR47s16/f22+/7T6aFi2ebqTFRHabQ4YMCXeKiPuZAh/C9Zn+5Z/8MgWjNEQEREAEREAEREAEMi2BNNTlR44cQYsnJCTcdNNN9913X6tWrXLkyJEyEKnUjvv27UOUn3POOd26dbv//vtT5kMoo1LpZyhT+Pdp166df4d0OBqiDzF3fejvTNAO/sN1VAREZjoHZAAAIABJREFUQAREQAREQASyFoG4tHN3ypQpVatWvfDCC80UBQoU4A3KtW3btj///HORIkUQcImJiaNHj165cmXJkiWvvvrq3Llzm85z5879448/0PFNmzb9+uuvzcBHHnmEN55DDh8+jM1NmzY1bNjQvaKZM2eed955devWdR8ylrlmGDduXMGCBa+77rolS5bQP2/evFdcccXZZ59tZpw8efLSpUt5X6VKlUaNGsXGxrIQ/GcUor9o0aJ0/uyzz+x+8n7jxo1jxoyxOhQrVmzRokW//fYbh/CzZs2aDn/sqy5fvvyBAwfGjx+/fv16bjtYPXv27Ol2xjrKrYl7773XuOFwj9mtbp64AOu2zDL94WDT4XYoPhjNzb8nB3bFwtETSY99O2vk7NXJUcntzq/wyvUX5LrnY9qtDrx/d9KiPr/MzZeQ4932FzWvVtpaC31+uufKu4ZNw8g1tcr0a9sgb0I8jWPvb9nxk0lVSxSa8GArt/2EuNiNew7dN+KPScs27zty3LJm/LE+6o0IiIAIiIAIiIAIpBuBNIyXr1ixAl3uXgkCt1OnTiaq+ueff8bHx/fo0QMFPHXqVKszSvfOO+9EAU+YMMHIcfMvHTyHMLZw4cLdu3dHXEZHRzsmXbduHQY//vhjkli+//57VKmjw549exhbr1697777DhGMP+effz6a2HSbPn06HW677bZbb711165dM2bMMO2LFy++8cYb0cEVKlT49ddfHX7Sx9GBFrJ6rr/++s6dO5cu/T9l6blqGn/55Rfcvuuuu7haqFOnDl4xVyBnHCvynN3q44krkGV/ONi0nyyHG24CpoORv5YIfnH0vBXb98158vrZT1y/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q666ytSn9xmyb9++H3/8kSsls2SWVrJkSZ/+9kPMQkkf04KSHj9+/Lp169i0gAXsnH322ebQ/v37R48evWzZssOHD99000116tQJav+7777D//r16584ccK9KOnyoADVQQREQAREQAREQARCIoAKTB9pPmfOHOSd5ZP18eDBg1dcccUll1xiDlki+88//0RTtmjRImfOnAj0zz//vFevXvRBVhKkR98jOocMGTJmzBh0p89SA9nxbK9Vq1a1atUsa0Sg33//fUvU0s6k06dPj4sLLkfnzp07e/bsLl265MqVa+jQoVOnTm3UqJGxHOjRUV988QXXHg899BD26f/JJ5888cQTgTr7LHnlypUNGjRo27Ztjhw5ZsyYgR2i3YDlkuaDDz6oVKnSAw88kD9/frsFn1m2b99epUoVTPFyLyo4CB9HdUgEREAEREAEREAERMAi4BblxIN//vnnrVu3IiiJpxrV69mIER5TiuhEKCMor7322jJlyhjLSEzEXO3atc1HxPeKFStuuOEG98dDhw4RDkfzOU5K8+bNrRaE+7Rp04j1oib//vvvW265JV++fBxt06bNwIED6WlC0ZMmTfrjjz8I655zzjnXXXdd3rx56RPITqB2uydEu7mWyJ07t+UJUpsgPdF6u7ee8yJhL7vsshIlStAT/3/44QdLl2/atGnkyJH8m5CQAGE8MUJ/8+bN3BYwYfiGDRsS8waOWQXL//333w8cOFCwYMGbb76ZKxai49hkFozY18J0l19+ueXehRdeyO0F7ICO5RQoUIAp7M6b94FcIsWFDm+++SYXRWeccYZ7UdLlbphqEQEREAEREAEREIGUEHDHy5GM6DzCxnv37kUIGqOejRxCLLZv375QoUJTpkxBixsZRzuyHrVtOTR//nzCtEZi0mj/SEKF1R5oAch6lKvRx8ju+Ph40xOVyXCOIjqRjEj2bt268f7XX3/98ssviVU7DNrt2A95tqNlCepbiTf0P3bsGFcg559/vpUxQmOgeSHQtGlTMwsymoEMR0PTQvj/xhtvRLKTS/PVV19NnDgR4U472TKTJ0/mEIulkasLQ2bBggXghfNZZ521bds2k8/DFQhx8fvuuw+b33zzjWOl5iPrQtxXrVrVRMcXL15sv2VhHxLIpVdeeYVzakQ5/d2L0r5PT/JqFAEREAEREAEREIGwCbjj5SQ3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S5mmTZuytZd8LJx9Rh16QQeuly9fXrFixQA1UED5y10fjQpFQAREQAREQAROYALHMX/5CUytIFV/8sknsYnZ/EpsNzY6D4gsJTjsC7LP4yzbymsZoMeQIUMaNWrUs2dPp36KY3EyUYkIiIAIiIAIiIAIiEA4CRCEg6sYi5xtl+ybJJu4a9R4OLssfLIYO9sJFi5c6AxiMcoqjqXwPTRpJAIiIAIiIAIiIAInFwEO9CFSnJOPSEfDLknOQmIX7Mk1xOCjYdsruW5uvvlmrxyRimMJDlE1REAEREAEREAETiwCimM5sZ6XtDUEFMeid4IIiIAIiIAIiIAIiIAIHH8CssuP/zOQBiIgAiIgAiIgAiIgAiIgu1zvAREQAREQAREQAREQARE4/gRklx//ZyANREAEREAEREAEREAEREB2ud4DIiACIiACIiACIiACInD8CXja5RwVe/y1kwYiIAIiIAIiIAIikHcCMmPyzkwtjj8B2eXH/xlIAxEQAREQAREQgfASkF0eXp6SdmwIuJwrxFuZF2cyrVmzhmOZSP+OKocOHTo2CqkXERABERABERABEcgHAWOLY8BE/Pky9kw+5KiJCBwvAi52OaqYtyXCPpcAACAASURBVLJ5T2ORyyg/Xo9H/YqACIiACIiACIROwPItyigPHZpqFh4CLna5Nd3EHDfXhUddaSICIiACIiACIiAC/gSMUS7T3J+S7hZCAi52OVoac5y/8pQXwmcmlURABERABERABHwIWGaMTx3dEoFCSMDdLkdRvacL4dOSSiIgAiIgAiIgAiIgAicrAc98LCfrgDUuERABERABERABERABESiEBGSXF8KHIpVEQAREQAREQAREQASKHAHZ5UXukWvAIiACIiACIiACIiAChZCA7PJC+FCkkgiIgAiIgAiIgAiIQJEjILu8yD1yDVgEREAEREAEREAERKAQEpBdXggfilQSAREQAREQAREQAREocgRklxe5R64Bi4AIiIAIiIAIiIAIFEICsssL4UORSiIgAiIgAiIgAiIgAkWOgOzyIvfINWAREAEREAEREAEREIFCSEB2eSF8KFJJBERABERABERABESgyBGQXV7kHrkGLAIiIAIiIAIiIAIiUAgJyC4vhA9FKomACIiACIiACIiACBQ5ArLLi9wj14BFQAREQAREQAREQAQKIQHZ5YXwoUglERABERABERABERCBIkdAdnmRe+QasAiIgAiIgAiIQMERqP7nq0aNGqeddtptt922cePGgusrr5Kfe+65/v3757WV6h8zArLLjxlqdSQCIiACIiACIlAkCCxatCg5OXnkyJElSpS45ZZbCsmYDx069P3332/YsAHdColKUiOAgOxyvSVEQAREQAREQAREIMwEihcvjtf83//+97x589LS0sIs/U9xyN+7d2/okmfMmFGxYsWzzz7722+/Db2Vah5LArLLjyVt9SUCIiACIiACIlCECGRnZxcrVgwbnTFnZmYS1tKgQYMLLrjA8lhjW48ZM6Znz5516tTp0aMHpvObb77ZpEmTtm3b/vLLL4YUDR9//HGiYk499dQHH3wwIyOD8t69e/O3UaNGlnXuKt/O+uuvv8YoP+ecc7iwyg8cOPDMM8+cfvrpKHbttddS7ixxlTxx4sQzzzyzXr16bdq0+d///kdDZ4m9d12HQkB2eSiUVEcEREAEREAEREAE8kCAoBEiy//1r3+dd955pUuXpuXbb7/NX9znmNT333+/Jeuzzz776KOPli5desUVVwwYMGD9+vWzZs165JFHHn30UVPn5ZdfXr58OWb6uHHjtmzZMnjwYMrHjh3LX8rpxV++EbJ///6ffvrp/PPPx+LHzp4zZ44pf+2112bOnPnVV18tXLgQ659CZ4mr5v/4xz+efvrppKQkYmP69OlDQ2eJ6UJ/QydQrFBtRwhdb9UUAREQAREQAREQgUJIAAe2pdXVV1/93//+Nzo6mpLu3bu/8cYbzZo1I6yladOmq1evJvqcyljYiYmJVMjKyqpbt+706dNr1aqFo7127drUKVmyZMeOHXGi4y+nzpo1a/B5Y8RzTVvscmOUe8m3NMF6fv/990eMGEEJKuF0x03OdefOnbH727VrZ9V0lrhqjonfoUOHm2++OS4uzrR1llgydREigePpL+f9tHbt2hAVVTUREIFCRWD48OF79uwpVCoVfmUErfA/I2koAmEhwL5P/J433XTT1q1bjVGOWDZc4lfG+CFMBW96amqq6atmzZrmAjOdi0qVKvE3MjKSv1jn/N28eXPVqlVNHZrz3WtCWUyJ9ddLvqlA7MrcuXNpzgv/948//ki8ihFuKWBq0l1AiavkoUOHMrSLLroIHz9ec9o6SwI01D+DEghil5vnx1/Cnjp16sRy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qlU1a9Y89qMI4i8/9gqFq8cxSVuIVMmrUU7vHCq0cXfGpR9P//aGTibQJVwqSY4IiIAIiIAIiMDJTYAIFgWxnASP+Hg9xJPQLicWfEta5v8mrXjozCb5eGcQO/5a/9MWbNpF7vN8NFcTERABERABERABERABEcgHgZPQLj/3vWmb9uwb0K7uec3yGRhUMrJ4+1oV80FTTURABERABERABIoyAfnLT46nL3952J7juNvOCJssCRIBERABERABERABERCBY0IgpPMsj4km6kQEREAEREAEREAEREAEii6BkzCOpeg+TI1cBERABERABETguBJQHMtxxR+2zo9XHIv85WF7hBIkAiIgAiIgAiIgAuElkJqaGl6BXtKSk5O9boWr3BrL0fR1NG3DNZCCkyO7vODYSrIIiIAIiIAIiECRI2Bc5l5/r/r/10033fTCCy+sXbvWq6Ypv+uuu/wr5OMuKjhbvfLKK3v37nWWh7HEGsvR9HU0bUMfy/F618ouP17k1a8IiIAIiIAIiECRI8AZ7z///POIESNeffXVxo0bP/nkk6tXr/ahQH2fu1dffbXPXfste01Xme+8807p0qVDlJa/ala/ee3Lrnxe2+ZP1ePVSvHlx4u8+hUBERABERABETjZCBiPrP+oduzYQYVSpUpdcsklERERw4cP/+c//0lJVlbWW2+9tWDBgnr16t15553ly5c3cpDpevehhx7C0sX5/dlnn7lWsNQIqFm8ePHx48d//vnnsbGxAwYMaNGiBTWvvPLKIUOGcDF16tQvvvgCZXr16nX55ZdbQrjYs2fP+++/v2TJkujo6GuvvbZ9+/YUYjTfeuutX331VWZm5mmnnYZA7roWUtmMxeqLXoYOHTpr1izKr7jiiu7duzu7CFDeanvgwIFhw4bNmDGDtp06daJ5ZGQk/V533XVff/01c4wbbrihVatWdv1DvzZ6hl4/XDVD8pcfPHiQpY2dO3cCC4Lh6ltyREAEREAEREAERKBoEsC4ysjI6Nix49KlS40ViB+9QoUK2Klt2rQxpradjPPuG2+8QQXKTTVnBat5QE2627Jly0cffYRt/emnn5pqGOvmAgWeeeaZDz74oGfPngGPhrlEnz59Pvnkk9tuuw2z3mq4YsWK119//e2338Y0/+abbyhHmrPQkmb19d133+3bt4/5AG1PP/10Kji7CFDe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TQhxwe1N2Dl2eWKVsulZ2ZmOM2nDMigOFWqeUJZpQGr6X67usEiWEBEQAREQAREQgcJAgEADe6KSwqCSdMgrAZ4gzzGvrcJS//j0GhbVwyWkatlodnP2bFCZ8HTyf/dqWIVUKuESbpeDD/61/qct2LSLROkFIV8yRUAEREAEREAEji8BUkuzMc8ccHN8NVHv+SZAyhM2Uua7+dE0VBzLKWOXb3lg5MK0zGxyFxKbTqZz4rmPhqnaioAIiIAIiIAIiIAIiEBeCcguzysx1RcBERABERABERABERCB8BNQfHn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+B2LNeAAAM00lEQVSpJIqACIiACIiACIiACIhAXgnILs8rMdUXAREQAREQAREQAREQgfATkF0efqaSKAIiIAIiIAIiIAIiIAJ5JSC7PK/EVF8EREAEREAEREAEREAEwk9Adnn4mUqiCIiACIiACIiACIiACOSVgOzyvBJTfREQAREQAREQAREQAREIPwHZ5eFnKokiIAIiIAIiIAIiIAIikFcCssvzSkz1RUAEREAEREAEREAERCD8BGSXh5+pJIqACIiACIiACIiACIhAXgmcJHZ59f+MXLtjX14HH8b6wxds2LM/+2gE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tK9D3PO7v682ntfG8bFzNux0SvAqt9fEtgvQyinHlIQiLZQ6AfJDV4CG+ZBv786Jzqd34oKWp6ab5lywehBXOjdK2+dF0MvilD0BFSauSr2nW6OW1XjOETiJfZr7KONsVaNczMpth9VL3nWE2A9mrvnoyrarHjlrxI1d7MltfOg5ydh7ZD8D4fLkRx+7/C+73IsPovZmHc5Av2r7YQ2d+h8lK6dASrxQ+7DyueXahQpFQAREQAREQAQKP4EgdvkdXepnZufcOnwuKfYO5BwiooAcHSMWb3rirGauY8MZSQDu+l2BR/x8MS+ZSF+yLM9evzO+dEmTIeSOzg1enbxy/IqtuCc37MoggbeR6VVu77FG+RhShWDfo5WrJlZhKNJCqRPQS+gK0DAf8q3uXNH59H51m1rkC8eyJBz86XFL2fjojEQKGAvzpZcnr+DUIeKwl21NMzHZ1crGTFqVSgmm7eOjF/tA9lHG2eqSljVen7oKW5lIffak2ivMTN5Jp84mXvRcydibY2r3bVLl+QnLq5aNaVz5cGyPFx+iXD6etY6wHzZOsAvZqYYpOUpWrmK9UPuw8rnl2oUKRUAEREAEREAECj+BICEoZFzBefnipKSrh87cmp5JlsPOdSuNvKmLFTUbMEJcof8ds/SC5rmJL+yvCStSnxy7dP+Bg02qxJKGz9zq3iCe7HuPjfoDo7xCqRL9Giewv5BbXuV2gf/qnfjwz4temJg04sbOBFoEdGf/ZyjSQqkT0EXoCoQ4Iq8huKLz6R1DfPverIs+/I1Jy7mJVe/r0chLslV+yak1SIZ48/DZbJbFyH73srZEYz9/3qkPjFz0zoxVdSuWYRqGje4lx0cZZ5ObTq+H973XkMllSkSRKIaUKVadVy5qSTnLIJHFizWIi32kVxMiVXzouZIJ6JFQlms/n8muYqvci88z57T454iFrV74ldD2R3s3nbByq1N5So6SlatML9Q+rHxuuXahQhEQAREQAREQgcJPoNjGjYe91GHRFRfmNws2fn1Dx7BIk5AiReDSj6f3aFD55o51CYz5be32m76cvfSBfkGd/f6IyOaZ+OzoqQN7ONMK+TfUXREQAREQAREQARE4xgSCxLHkVZt5G3dd2/bwSS55bav6RZwAMU4smJAsH7s8sUrZ9KzszBzP/ZchshqTtIVQdRnlIeJSNREQAREQAREQgeNIIEgcS141e+7cU/PaRPVFwBCoWjaafcCcKkpw/LPjk3o1rBJKMhMvemxaIML+f5NWcKCVVx2Vi4AIiIAIiIAIiEDhIRDmOJbCMzBpcsIRGLt8ywMjF6ZlZlcvF0NkPKnuTSr6/A3kzLcmb9qzb0C7ugGnF+VPmlqJgAiIgAiIgAiIQEETkF1e0IQlXwREQAREQAREQAREQASCEwhzfHnwDlVDBERABERABERABERABETAQUB2uQOJCkRABERABERABERABETgmBOQXX7MkatDERABERABERABERABEXAQkF3uQKICERABERABERABERABETjmBGSXH3Pk6lAEREAEREAEREAEREAEHARklzuQqEAEREAEREAEREAEREAEjjkB2eXHHLk6FAEREAEREAEREAEREAEHAdnlDiQqEAEREAEREAEREAEREIFjTkB2+TFHrg5FQAREQAREQAREQAREwEHg/wCT8IC+PCqbBQAAAABJRU5ErkJggg==&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/ul&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;ul&gt;
&lt;li&gt;At the right of the screen, clic on the link : &quot;Want to log in your application&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Copy the line in your console.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;i&gt;For example :&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#ssh 529e2274e0b???b@myapp.rhcloud.com&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Usefull commands&lt;/h4&gt;
help&lt;br /&gt;
tail_all&lt;br /&gt;
ctl_app stop&lt;br /&gt;
ctl_app start&lt;br /&gt;
&lt;br /&gt;
If you want more details, here is usefull links :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;https://www.openshift.com/developers/remote-access#keys&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;https://www.openshift.com/get-started#cli&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Visit your website&lt;/h2&gt;
&amp;nbsp;The access link for your web site is in the openshift website ( Clic on your Application in the Application detail ).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Response time very long &lt;/h3&gt;
I had a problem with very long time to first access to my web site.I found solution on StackOverFlow :&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/23621750/openshift-my-local-gears-often-timeout-and-go-down-which-cause-response-time-ve&quot;&gt;openshift : my local gears often timeout and go down which cause response time very long&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you do not access your application for 24 hours, it will get idled 
(if this is a free acount), and depending on how large your application 
is, it could take awhile to spin back up when you do access it again. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;/h2&gt;
&lt;h2&gt;
To conclude&lt;/h2&gt;
&lt;br /&gt;
Deploy a web site on OpenShift 
cloud was not really diffcult.Just keep in mind that whit free account 
you have to access every 24 hours to your web site. Some people has also
 difficulties with proxy configuration ...&lt;br /&gt;
If you wan to see an example of source code, you can look at my GitHub project example : &lt;a href=&quot;https://github.com/drieu/fjLearning&quot;&gt;https://github.com/drieu/fjLearning&lt;/a&gt;.You can also visit the project on the web at &lt;a href=&quot;http://opendoowap-totalprog.rhcloud.com/&quot;&gt;&lt;cite class=&quot;_Od&quot;&gt;&lt;b&gt;opendoowap&lt;/b&gt;-totalprog.rhcloud.com&lt;/cite&gt;&lt;/a&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;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6429133245241553290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/05/deploy-your-tomcat-grails-website-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6429133245241553290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6429133245241553290'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/05/deploy-your-tomcat-grails-website-on.html' title='Deploy your Tomcat Grails website on OpenShift'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-6910521650964198256</id><published>2014-05-09T07:13:00.002-07:00</published><updated>2014-05-09T07:13:27.263-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><title type='text'>Create an executable jar easily with Gradle and Groovy</title><content type='html'>If you want to create an executable jar easily with Gradle and Groovy, it exist a project example on GitHub : &lt;a href=&quot;https://github.com/bond-/gradle-groovy-jar-example&quot;&gt;https://github.com/bond-/gradle-groovy-jar-example&lt;/a&gt;&lt;br /&gt;
It permits me to save times ! </content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/6910521650964198256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/05/create-executable-jar-easily-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6910521650964198256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/6910521650964198256'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/05/create-executable-jar-easily-with.html' title='Create an executable jar easily with Gradle and Groovy'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-869259756600646788</id><published>2014-05-04T09:26:00.000-07:00</published><updated>2014-05-10T03:57:26.448-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><title type='text'>Firefox Hacks : Extract user information in your computer with Groovy !</title><content type='html'>&lt;br /&gt;
Firefox stores all informations in a directory (In most cases, it is in $HOME/.mozilla directory or in C:\users\MUYSER\AppData\Roaming\Mozilla\Firefox\Profiles\). For example, there is addon list, search history, cookies ... but there is also logins and passwords ! So, if someone gets the contents of this directory, it will have all your life !&lt;br /&gt;
&lt;br /&gt;
In this article, we will explain which information we could retreive and how. You will see it&#39;s simple !&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Source code&lt;/h2&gt;
Source code of this paper is available on GitHub : &lt;a href=&quot;https://github.com/drieu/GFirefoxData&quot;&gt;https://github.com/drieu/GFirefoxData&lt;/a&gt;&lt;br /&gt;
Readme file describes how to build and run the project.&amp;nbsp; &lt;br /&gt;
&lt;h2&gt;
Data stores in Sqlite files&lt;/h2&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
How to use sqlite ?&lt;/h3&gt;
Firefox uses SQLITE to store information. So, we found sqlite files in mozilla directory ( ex : cookies.sqlite ).To get information in theeses files, you need to know few commands.&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; # cd $HOME/.mozilla/???  
 # sqlite3 cookies.sqlite  
 SQLite version 3.8.2 2013-12-06 14:53:30  
 Enter &quot;.help&quot; for instructions  
 Enter SQL statements terminated with a &quot;;&quot;  
 sqlite&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, you can execute sqlite and sql commands. &lt;br /&gt;
Here is some useful commands :&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Help&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .help&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;List all tables&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .tables&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;List fields of a table&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .schema moz_cookies&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Select &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; select * from&amp;nbsp; moz_cookies&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Quit&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .quit&lt;br /&gt;
&lt;br /&gt;
Source code to extract sqlite datas.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Sqlite files list&lt;/h3&gt;
Now, you know how to use sqlite commands, here is a list of sqlite files that you could find in the mozilla profile directory :&lt;br /&gt;
&lt;br /&gt;
cookies.sqlite&lt;br /&gt;
addons.sqlite&lt;br /&gt;
formhistory.sqlite&lt;br /&gt;
content-prefs.sqlite&lt;br /&gt;
healthreport.sqlite&lt;br /&gt;
permissions.sqlite&lt;br /&gt;
places.sqlite&lt;br /&gt;
signons.sqlite&lt;br /&gt;
webappsstore.sqlite&lt;br /&gt;
&lt;br /&gt;
In next section of this article, we will see how programmaticaly, we will retreive these datas.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Get cookies list&lt;/h3&gt;
We need a library to use SQLITE. For this article, we will use sqlite-jdbc ( https://bitbucket.org/xerial/sqlite-jdbc ). You can download jar files &lt;a href=&quot;https://bitbucket.org/xerial/sqlite-jdbc/downloads&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is simple example. You only have to change path to point to your sqlite file :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;     import groovy.sql.Sql 
     def url = &quot;jdbc:sqlite:/home/USER/tmp/.mozilla/firefox/fe31xbna.default/cookies.sqlite&quot; 
     def sql = Sql.newInstance(url, &quot;org.sqlite.JDBC&quot;) 
     sql.eachRow(&quot;select DISTINCT host from moz_cookies&quot;) { 
       println(&quot;host= ${it.host}&quot;) 
     } 
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;
Get all user history&lt;/h3&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;     def sql = Sql.newInstance(url, &quot;org.sqlite.JDBC&quot;)  
     sql.eachRow(&quot;select DISTINCT value from moz_formhistory&quot;) {  
       println(&quot;value= ${it.value}&quot;)  
     }  
     println(&quot;&quot;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
Get addons list &lt;/h3&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;     def sql = Sql.newInstance(url, &quot;org.sqlite.JDBC&quot;)  
     sql.eachRow(&quot;select DISTINCT name from addon&quot;) {  
       println(&quot;name= ${it.name}&quot;)  
     }  
     println(&quot;&quot;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;
See password &lt;/h2&gt;
Master password stored in key3.db file. There is also signons.sqlite that contains encrypt username and password files. &lt;br /&gt;
Here is how to see them :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87TwA4MMz3VFEcT3LV_8okUu9Kda8_sAXZdGeoX3heJp9mlHeJ7F7mixIFkNnMP6BlAlAaynJz0jIGeAPyWYu6l1x5qctOXCH3oDGNJcRnmGnmVKn_B5sTNmB9GzzpNIAF0dSRn0mIn0L/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;sqlite&amp;gt;sqlite3 signons.sqlite  
 sqlite&amp;gt;select hostname,usernameField,passwordField,encryptedUsername,encryptedPassword from moz_logins limit 1;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Get passwords when no master password is set.&amp;nbsp; &lt;/h3&gt;
You only have to go in Menu Edit -&amp;gt; preferences-&amp;gt; Security and you can saw saved passwords. &lt;br /&gt;
An other way to see passwords is to put key3.db and signons.sqlite and cert8.db in a new firefox profile.You will see it really simple :&lt;br /&gt;
&lt;br /&gt;
1. Close firefox &lt;br /&gt;
2. Create a new profile with firefox ( firefox --ProfileManager )&lt;br /&gt;
3. Close firefox &lt;br /&gt;
4. Go in your new profile directory ( $HOME/.mozilla/...)&lt;br /&gt;
5. Replace key3.db, signons.sqlite, cert8.db by yours&lt;br /&gt;
6. Restart firefox&lt;br /&gt;
7. Then go in Menu Edit -&amp;gt; preferences-&amp;gt; Security &lt;br /&gt;
You will see all saved passwords !&lt;br /&gt;
&lt;br /&gt;
So a good advice is to set a master password. But, it is only useful if an other person uses your computer. It can&#39;t show all your password. We will see next that store passwords even if there is a master master password isn&#39;t a good idea.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Get passwords when master password is set.&lt;/h3&gt;
A first manner is to look at this article &lt;a href=&quot;http://www.infond.fr/2010/04/firefox-passwords-management-leaks.html&quot;&gt;http://www.infond.fr/2010/04/firefox-passwords-management-leaks.html&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
A second way ( more easy ) is to use Mozilla tools : http://securityxploded.com/firemaster.php&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
FireMaster.exe -q -b -m 3 -l 10 -c &quot;abcdetps123&quot; &quot;c:\my 
  test\firefox&quot; &lt;/blockquote&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
&lt;h3&gt;
&amp;nbsp;&lt;/h3&gt;
In this paper, we see how to get all firefox datas on your computer. Does that means that firefox is unsecure ? No. you can do the same things with other browser and application.So, you have to keep in mind which datas are on your computer.&lt;br /&gt;
If a person copy firefox directory for hacking purpose, it will have access to all your life !&lt;br /&gt;
A firefox plugin can access to informations.Do you have confidence in your plugins ? &lt;br /&gt;
An other important point to keep in mind datas you show to the internet like cookies.This datas can be used for commercial purpose and also by hacker to know your habits ...&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;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/869259756600646788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/05/firefox-hacks-extract-user-information.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/869259756600646788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/869259756600646788'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/05/firefox-hacks-extract-user-information.html' title='Firefox Hacks : Extract user information in your computer with Groovy !'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-2984786081934946078</id><published>2014-05-04T05:19:00.000-07:00</published><updated>2014-05-04T05:19:06.451-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Groovy"/><title type='text'>gradlew idea : FAILURE: Could not determine which tasks to execute.</title><content type='html'>&lt;br /&gt;
A small tips if you are not very familiar with gradle and gradlew.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;color: red;&quot;&gt;Problem &lt;/span&gt;&lt;/h3&gt;
To idealize my GroovyFx project, I have to use gradlew command :&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;$gralew idea&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
I had the following error message :&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;FAILURE: Could not determine which tasks to execute.&lt;br /&gt;&lt;br /&gt;* What went wrong:&lt;br /&gt;Task &#39;idea&#39; not found in root project &#39;tsecure&#39;.&lt;br /&gt;&lt;br /&gt;* Try:&lt;br /&gt;Run gradlew tasks to get a list of available tasks.&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;
&lt;br /&gt;&lt;/h2&gt;
&lt;h3&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;Solution &lt;/span&gt;&lt;/h3&gt;
&lt;br /&gt;
You only have to add the following line to your&amp;nbsp; build.gradle :&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;apply plugin: &#39;idea&#39;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Then execute :&lt;br /&gt;
&lt;br /&gt;
$gralew idea </content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/2984786081934946078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/05/gradlew-idea-failure-could-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/2984786081934946078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/2984786081934946078'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/05/gradlew-idea-failure-could-not.html' title='gradlew idea : FAILURE: Could not determine which tasks to execute.'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4505340910184805354</id><published>2014-03-08T12:06:00.000-08:00</published><updated>2014-03-08T12:06:25.010-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails : UnknownHostException at startup </title><content type='html'>&lt;br /&gt;
I had the following error when starting Grails project :&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;| Error 2014-03-08 20:54:41,199 [localhost-startStop-1] ERROR [localhost].[/toolprod]&amp;nbsp; - StandardWrapper.Throwable&lt;br /&gt;Message: IO Exception: &quot;java.net.UnknownHostException: blopux: blopux: Nom ou service inconnu&quot; [90028-173]&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
To solve my problem, I had the hostname in /etc/hosts :&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;lang-java prettyprint prettyprinted&quot;&gt;&lt;i&gt;&lt;code&gt;&lt;span class=&quot;lit&quot;&gt;127.0&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;   &lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;blopux        localhost&lt;/span&gt;&lt;/code&gt;&lt;/i&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4505340910184805354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/03/grails-unknownhostexception-at-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4505340910184805354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4505340910184805354'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/03/grails-unknownhostexception-at-startup.html' title='Grails : UnknownHostException at startup '/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-7905815072576760493</id><published>2014-02-16T06:45:00.002-08:00</published><updated>2014-02-16T06:45:48.223-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><title type='text'>firefox plugin</title><content type='html'>&lt;br /&gt;
Recently, I wanted to learn how to make firefox plugin.To do that,&amp;nbsp; I followed the official firefox tutorials: &lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School&quot; target=&quot;_blank&quot;&gt;https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School &lt;/a&gt;&lt;br /&gt;
I was simple and quicly I obtain a result.&lt;br /&gt;
So, if you want to see from curiosity a firefox plugin, you can see my GitHub project : &lt;a href=&quot;https://github.com/drieu/checker&quot;&gt;https://github.com/drieu/checker.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/7905815072576760493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/02/firefox-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/7905815072576760493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/7905815072576760493'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/02/firefox-plugin.html' title='firefox plugin'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-4880247318957972</id><published>2014-01-07T02:37:00.000-08:00</published><updated>2014-01-07T02:37:00.294-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>How to add a sitemap in my Grail war application ?</title><content type='html'>Today, I decided to add a sitemap for my new Grail website.First of all, I generated one by using online sitemap generator. For example, there is the following &lt;a href=&quot;http://www.xml-sitemaps.com./&quot;&gt;&lt;span style=&quot;-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; font-family: &#39;Times New Roman&#39;; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;http://www.xml-sitemaps.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; font-family: &#39;Times New Roman&#39;; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;You have to put your website url and it will produce sitemaps files (xml, zip, and so on). Here is an example of sitemap :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; font-family: &#39;Times New Roman&#39;; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;urlset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- created with Free Online Sitemap Generator www.xml-sitemaps.com --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;url&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;loc&amp;gt;http://opendoowap-totalprog.rhcloud.com/&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;loc&amp;gt;http://opendoowap-totalprog.rhcloud.com/page/training&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;loc&amp;gt;http://opendoowap-totalprog.rhcloud.com/page/about&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;loc&amp;gt;http://opendoowap-totalprog.rhcloud.com/page/under&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;loc&amp;gt;http://opendoowap-totalprog.rhcloud.com/page/website&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;/urlset&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Then, I download the file sitemap.xml and I paste it in the web-app directory of my Grails application.After that, I modified my BuildConfig.groovy like the following :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
grails.war.copyToWebApp = { args -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fileset(dir:&quot;web-app&quot;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;js/**&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;css/**&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;fonts/**&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;images/**&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;WEB-INF/**&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include(name: &quot;sitemap.xml&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/blockquote&gt;
To finish, I run &lt;b&gt;grails war&lt;/b&gt; command and deploy it in Tomcat web container.&lt;br /&gt;
That&#39;s all. Now, your sitemap is available in http://your.app.com/sitemap.xml and you can add for example to google webmaster tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/4880247318957972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/01/how-to-add-sitemap-in-my-grail-war.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4880247318957972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/4880247318957972'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/01/how-to-add-sitemap-in-my-grail-war.html' title='How to add a sitemap in my Grail war application ?'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2326529624603872167.post-1229467346007579214</id><published>2014-01-02T02:01:00.000-08:00</published><updated>2014-01-02T02:01:00.358-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails"/><title type='text'>Grails meta tag and internationalization</title><content type='html'>If you used Grails with internationalization, you knew the use of &lt;b&gt;&amp;lt;g:message&amp;gt; &lt;/b&gt;but how to use it in Meta tag content description ?&lt;div&gt;
Here is how :&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;meta name=&quot;description&quot; content=&quot;${message(code:&#39;index.goal&#39;)}&quot; /&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGTORQo427pGyI4Gvofjs8D8QBs4REKBzZCU3iS7ZY3cqnd4ecIBMO6KNSLnTWMDcujPdY6OLKmwC2hYPOwBGyp-eNCqdCJUp3hwTdzd8rCP06yqqSSI3s5krs8h8IVtJNtNknBctt__2/s1600/Grails.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGTORQo427pGyI4Gvofjs8D8QBs4REKBzZCU3iS7ZY3cqnd4ecIBMO6KNSLnTWMDcujPdY6OLKmwC2hYPOwBGyp-eNCqdCJUp3hwTdzd8rCP06yqqSSI3s5krs8h8IVtJNtNknBctt__2/s1600/Grails.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://totalprogus.blogspot.com/feeds/1229467346007579214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://totalprogus.blogspot.com/2014/01/grails-meta-tag-and-internationalization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/1229467346007579214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2326529624603872167/posts/default/1229467346007579214'/><link rel='alternate' type='text/html' href='http://totalprogus.blogspot.com/2014/01/grails-meta-tag-and-internationalization.html' title='Grails meta tag and internationalization'/><author><name>Damien</name><uri>http://www.blogger.com/profile/06346403714788520249</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGTORQo427pGyI4Gvofjs8D8QBs4REKBzZCU3iS7ZY3cqnd4ecIBMO6KNSLnTWMDcujPdY6OLKmwC2hYPOwBGyp-eNCqdCJUp3hwTdzd8rCP06yqqSSI3s5krs8h8IVtJNtNknBctt__2/s72-c/Grails.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>