<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bonita open source BPM community blog &#187; aurelien.pupier.eclipse</title>
	<atom:link href="http://www.bonitasoft.org/blog/author/aurelien-pupier-eclipse/?feed=rss_eclipse" rel="self" type="application/rss+xml" />
	<link>http://www.bonitasoft.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 24 May 2013 11:36:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Hudson jobs missing after a crash!? Restore them from the ashes</title>
		<link>http://www.bonitasoft.org/blog/eclipse/hudson-jobs-missing-after-a-crash-restore-them-from-the-ashes/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/hudson-jobs-missing-after-a-crash-restore-them-from-the-ashes/#comments</comments>
		<pubDate>Thu, 02 Aug 2012 08:36:23 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=5738</guid>
		<description><![CDATA[This morning, the VM containing the master of our Hudson instance froze. I &#8220;powered it off&#8221; and then restarted&#8230;ah, Hudson restarted and the list of jobs appeared. No, oh no, not all the jobs! Some of them vanished. Noooooo&#8230; Wait, don&#8217;t panic, this blog post provides an explanation of how to raise Hudson jobs from [...]]]></description>
			<content:encoded><![CDATA[<p>This morning, the VM containing the master of our <a href="http://www.eclipse.org/hudson/" target="_blank">Hudson</a> instance froze. I &#8220;powered it off&#8221; and then restarted&#8230;ah, Hudson restarted and the list of jobs appeared. No, oh no, not <em>all the jobs!</em> Some of them vanished. <em>Noooooo&#8230;</em></p>
<p>Wait, don&#8217;t panic, this blog post provides an explanation of how to raise Hudson jobs from their ashes!</p>
<p><a href="http://www.bonitasoft.org/blog/wp-content/uploads/2012/08/restoreALLTHEJOBS.png"><img class="alignnone size-full wp-image-5760" src="http://www.bonitasoft.org/blog/wp-content/uploads/2012/08/restoreALLTHEJOBS.png" alt="" width="200" height="150" /></a></p>
<p><span id="more-5738"></span></p>
<h3>How to find the issue</h3>
<p>On the main Hudson page, go to <em>Manage Hudson &#8211;&gt; System Log &#8211;&gt; All Hudson logs</em></p>
<p>You will find this kind of error:</p>
<blockquote>
<pre>SEVERE: Failed Loading job XXX-JOBNAME-XXX
hudson.util.IOException2: /var/lib/hudson/jobs/XXX-JOBNAME-XXX/nextBuildNumber doesn't contain a number
	at hudson.model.Job.onLoad(Job.java:369)
	at hudson.model.AbstractProject.onLoad(AbstractProject.java:342)
	at hudson.model.BaseBuildableProject.onLoad(BaseBuildableProject.java:102)
	at hudson.model.Items.load(Items.java:117)
	at hudson.model.Hudson$13.run(Hudson.java:2368)
	at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
	at hudson.model.Hudson$4.runTask(Hudson.java:698)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:493)
	at java.lang.Integer.parseInt(Integer.java:514)
	at hudson.model.Job.onLoad(Job.java:366)
	... 12 more</pre>
</blockquote>
<pre>In fact, the file <em>nextBuildNumber </em>mentioned in the stack is empty.</pre>
<h3>How to restore jobs</h3>
<p>It is really simple (but can be really tedious if you have a lot of missing jobs).</p>
<p>Put a number in <em>nextBuildNumber </em>files for each job mentioned in the logs.</p>
<p>Be sure to put a number higher than the last job run.</p>
<h3>Potential improvements</h3>
<p>It would be nice to have the job visible in the job list even if the <em>nextBuildNumber </em>file is corrupted.<br />
Perhaps we could put a warning decorator on this job, and also put an arbitrary value in this file from the UI.</p>
<p>I suppose the files were corrupted because the jobs were running when the VM crashed. So, it seems that this file is empty when a job is running. Could we prevent it from being &#8220;empty&#8221; for too long, and so minimize the opportunity for corruption in the event of a crash?</p>
<h3>Add your 2 cents!</h3>
<p>To continue this discussion, come on over to the Eclipse forum and share your ideas. I opened a <a href="http://www.eclipse.org/forums/index.php/m/899329/#msg_899329" target="_blank">topic</a> just for this <img src='http://www.bonitasoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Note: you might also have issues with fingerprints, but it shouldn&#8217;t be a blocking point. See this <a href="http://www.eclipse.org/forums/index.php/m/899329/#msg_899329" target="_blank">topic </a>on the Eclipse forum for more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/hudson-jobs-missing-after-a-crash-restore-them-from-the-ashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EclipseDay Delft, I will be there!</title>
		<link>http://www.bonitasoft.org/blog/announcement/eclipseday-delft-i-will-be-there/</link>
		<comments>http://www.bonitasoft.org/blog/announcement/eclipseday-delft-i-will-be-there/#comments</comments>
		<pubDate>Wed, 25 Jul 2012 06:46:03 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=5595</guid>
		<description><![CDATA[EclipseDay Delft will be held on 27th September. (As you can guess by the logo, Delft is in the Netherlands). I&#8217;m happy to announce that BonitaSoft - the company I work for - is a sponsor of the event which will be focusing on &#8220;tools and techniques to support the software development process&#8220;. There will be a great line-up including: [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left"><a href="http://wiki.eclipse.org/Eclipse_Day_Delft_2012"><img class="aligncenter size-full wp-image-5608" src="http://www.bonitasoft.org/blog/wp-content/uploads/2012/07/450px-Eclipse-Delft.png" alt="" width="401" height="279" /></a><a href="http://wiki.eclipse.org/Eclipse_Day_Delft_2012" target="_blank">EclipseDay Delft</a> will be held on 27th September. (As you can guess by the logo, Delft is in the Netherlands).</p>
<p style="text-align: left">I&#8217;m happy to announce that <a href="http://www.bonitasoft.com/" target="_blank">BonitaSoft </a>- the company I work for - is a <a href="http://wiki.eclipse.org/Eclipse_Day_Delft_2012#Sponsors" target="_blank">sponsor</a> of the event which will be focusing on <strong>&#8220;tools and techniques to support the software development process</strong>&#8220;.</p>
<p style="text-align: left">There will be a great line-up including:</p>
<p><span id="more-5595"></span></p>
<ul>
<li><span style="text-align: left">an Eclipse Foundation <a href="http://www.eclipse.org/org/foundation/staff.php" target="_blank">Director Ecosystem Europe</a></span></li>
<li><span style="text-align: left">several Eclipse project leaders</span></li>
<li><span style="text-align: left">several Eclipse committers</span></li>
<li><span style="text-align: left">a </span><a href="http://www.google.com/anitaborg/emea/winners.html" target="_blank">Google Anita Borg Recipient 2012 winner</a></li>
</ul>
<p>Please check the <a href="http://wiki.eclipse.org/Eclipse_Day_Delft_2012" target="_blank">official wiki page</a> for the  line-up (to be confirmed) and get the exact list of speakers and subjects.</p>
<p style="text-align: center"><a href="http://wiki.eclipse.org/GMF"><img class="aligncenter" src="http://www.bonitasoft.org/blog/wp-content/uploads/2012/07/gmf_logo.jpg" alt="" width="250" height="108" /></a></p>
<p>Personally, I will be talking about <em><strong>Tools and Methodologies to leverage GMF power</strong></em> using an iterative and generative approach.</p>
<p>The talk will be based on our three years experience in developing Bonita Open Solution Studio, an RCP application with two friendly and highly customized GMF Editors.</p>
<p>We will be looking at the tools and methodologies we currently use to continuously improve, maintain and test our GMF editors.</p>
<p>Even after three years, we are still able to bring innovation to these editors. As a proof of our success, we have been awarded a prize for the <a href="http://www.bonitasoft.org/blog/announcement/bonita-is-the-best-eclipse-based-modeling-application/" target="_blank">&#8220;Best Modeling Application</a>&#8221; in the <a href="http://www.eclipse.org/org/foundation/eclipseawards/" target="_blank">Eclipse Community Award</a> 2011.</p>
<p>I will also talk about the future, which tools and methodologies we plan to use, change, improve and keep.</p>
<p>See you there!</p>
<p>Nota: if unfortunately you can&#8217;t come to EclipseDay Delft and you would like to attend my talk, you can <strong><a href="http://www.eclipsecon.org/europe2012/sessions/tools-and-methodologies-leverage-gmf-power" target="_blank">vote for my submission</a></strong> at <a href="http://www.eclipsecon.org/europe2012/" target="_blank">EclipseCon Europe</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/announcement/eclipseday-delft-i-will-be-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An effective way to fight duplicated libs and version conflicting classes using Memory Analyzer Tool</title>
		<link>http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 15:11:33 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=4175</guid>
		<description><![CDATA[In this blog post I suggest a very effective way to spot duplicated libs/classes in your java application. I found and used this tip during the integration phase on an application server &#8211; which is quite a common use case. This tutorial will be very helpful in the following cases: NoClassDefFoundError:  there are two different [...]]]></description>
			<content:encoded><![CDATA[<p>In this blog post I suggest a very effective way to spot duplicated libs/classes in your java application. I found and used this tip during the integration phase on an application server &#8211; which is quite a common use case.</p>
<p>This tutorial will be very helpful in the following cases:</p>
<ul>
<li><em>NoClassDefFoundError</em>:  there are two different versions of the same class in your classpath.</li>
<li>Integration with unknown huge products (not osgi-ed):  detect multiple libs with the same version, and so reduce memory footprint.</li>
</ul>
<p><span id="more-4175"></span></p>
<div>
<h3>Environment preparation</h3>
<p>The first step to do &#8211; <em>What? You haven&#8217;t already installed it? </em>- is to install the Memory Analyzer Tool (<a href="http://eclipse.org/mat/" target="_blank">MAT</a>). Then you have to acquire  a heap dump of your running application. These steps are explained in one of <a href="http://www.bonitasoft.org/blog/eclipse/acquire-heap-dump-from-mat/" target="_blank">my previous blog post</a>.</p>
<h3>Easy and effective</h3>
<p>Now that you have the heap dump with MAT, you are just <strong>three clicks away</strong> from spotting those annoying duplicated libs and version conflicting classes.</p>
<p>Go to <em>Open Query browser</em>-&gt;<em>Java basics</em>-&gt;<em>Duplicated classes</em>:</p>
<p><a rel="attachment wp-att-4641" href="http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/attachment/dupclass-2/"><img class="aligncenter size-full wp-image-4641" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/dupClass1.png" alt="" width="518" height="226" /></a></p>
<p>And here we are &#8211; you have the list of all duplicated classes with their classloaders:</p>
<p><a rel="attachment wp-att-4646" href="http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/attachment/dupclass2/"><img class="aligncenter size-full wp-image-4646" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/dupClass2.png" alt="" width="625" height="455" /></a></p>
<p>Please notice that the class must be already loaded.</p>
<h3>A last tip</h3>
<p>Since you have made it this far, I will give you another little tip. You can find exactly from which lib the class was loaded using the <em>Inspector view</em>.</p>
<p>For instance, in case the duplicated class was loaded by an <em>URLClassloader</em>, just follow these steps:</p>
<ul>
<li>Select the class;</li>
<li>Go to <em>Inspector </em>view in <em>Attributes </em>tab;</li>
<li>Right-click on  <em>_context</em>;</li>
<li>and finally click <em>go into</em>.</li>
</ul>
</div>
<p><a rel="attachment wp-att-4647" href="http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/attachment/dupclasscontext/"><img class="aligncenter size-full wp-image-4647" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/dupClassContext.png" alt="" width="510" height="340" /></a></p>
<div>
<div>From here look at the attribute <em>_war</em> and you will find from which archive the class was loaded.</div>
<div>﻿<a rel="attachment wp-att-4648" href="http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/attachment/dupclass_war/"><img class="aligncenter size-full wp-image-4648" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/dupClass_war.png" alt="" width="1067" height="375" /></a></div>
<div>Do you have some special tips to use MAT?</div>
<p>Note: this was part of my EclipseCon Europe 2011 <a href="http://www.eclipsecon.org/europe2011/sessions/how-improve-performance-your-eclipse-based-application" target="_blank">talk</a> and one of my <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Grenoble">Eclipse Democamp Grenoble</a> 2011 <a href="http://www.slideshare.net/BonitaSoft/first-steps-with-mat">talk</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/an-effective-way-to-fight-duplicated-libs-and-version-conflicting-classes-using-memory-analyzer-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to run UI tests on hudson.eclipse.org server (on a server without a window manager activated by default)</title>
		<link>http://www.bonitasoft.org/blog/eclipse/how-to-run-ui-tests-on-hudson-eclipse-org-server-on-a-server-without-a-window-manager-activated-by-default/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/how-to-run-ui-tests-on-hudson-eclipse-org-server-on-a-server-without-a-window-manager-activated-by-default/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 13:56:11 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=4336</guid>
		<description><![CDATA[I&#8217;m currently trying to move GMF-Runtime build to Tycho (following GMF-Tooling). I asked for a job on the hudson.eclipse.org server for this new fast and simple build but I encountered an issue. And I found a solution.  The issue GMF is a graphical framework, so there are User Interface tests. Unfortunately,  they failed with the following [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently trying to move <a href="http://wiki.eclipse.org/Graphical_Modeling_Framework" target="_blank">GMF-Runtime</a> build to <a href="http://www.eclipse.org/tycho/" target="_blank">Tycho</a> (following <a href="https://hudson.eclipse.org/hudson/view/Modeling/job/tycho-gmp.gmf.tooling/" target="_blank">GMF-Tooling</a>). I asked for a <a href="https://hudson.eclipse.org/hudson/view/Modeling/job/tycho-gmp.gmf.runtime/" target="_blank">job</a> on the <a href="https://hudson.eclipse.org/hudson" target="_blank">hudson.eclipse.org</a> server for this new fast and simple build but I encountered an issue. And I found a solution. <span id="more-4336"></span></p>
<h3>The issue</h3>
<p>GMF is a graphical framework, so there are User Interface tests. Unfortunately,  they failed with the following error &#8211; which you can find in .log of the workspace/.metadata folder &#8211; when you run any test on the eclipse server:</p>
<div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;height:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]<br />
at org.eclipse.swt.SWT.error(SWT.java:4308)<br />
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:909)<br />
at org.eclipse.swt.widgets.Display.create(Display.java:897)<br />
at org.eclipse.swt.graphics.Device.(Device.java:157)<br />
at org.eclipse.swt.widgets.Display.(Display.java:500)<br />
at org.eclipse.swt.widgets.Display.(Display.java:491)<br />
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:711)<br />
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)<br />
at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:153)<br />
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:95)<br />
at org.eclipse.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31)<br />
at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:114)<br />
at org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37)<br />
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)<br />
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)<br />
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)<br />
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)<br />
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />
at java.lang.reflect.Method.invoke(Method.java:597)<br />
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)<br />
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)<br />
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)<br />
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)</div></div>
</div>
<h3>The solution</h3>
<p>I spent some time on Google and found the solution&#8230; in several chunks. So I put them together to provide the solution here in a single piece:</p>
<p>- Check <em>Run Xvnc during build</em> (and don&#8217;t bother to check <em>take screenshot</em>, it doesn&#8217;t work)</p>
<p style="text-align: left"><a rel="attachment wp-att-4460" href="http://www.bonitasoft.org/blog/eclipse/how-to-run-ui-tests-on-hudson-eclipse-org-server-on-a-server-without-a-window-manager-activated-by-default/attachment/checkxvnc/"><img class="aligncenter size-medium wp-image-4460" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/checkXvnc-300x48.png" alt="" width="300" height="48" /></a>- Add an <em>E</em><em>xecute shell</em> build action before launching your tests with <em>metacity &#8211;replace &#8211;sm-disable &amp;</em> :</p>
<p><a rel="attachment wp-att-4461" href="http://www.bonitasoft.org/blog/eclipse/how-to-run-ui-tests-on-hudson-eclipse-org-server-on-a-server-without-a-window-manager-activated-by-default/attachment/executeshell/"><img class="aligncenter size-medium wp-image-4461" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/12/executeShell-300x89.png" alt="" width="300" height="89" /></a></p>
<p>Simple but it&#8217;s all in one place. Hope it will help you.</p>
<p>And &#8211; talking about help &#8211; any help on understanding why these <a href="https://hudson.eclipse.org/hudson/view/Modeling/job/tycho-gmp.gmf.runtime/lastCompletedBuild/testReport/" target="_self">three GMF tests</a> are still failing is very welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/how-to-run-ui-tests-on-hudson-eclipse-org-server-on-a-server-without-a-window-manager-activated-by-default/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>My EclipseCon Europe 2011 Feedback (Better late than never)</title>
		<link>http://www.bonitasoft.org/blog/eclipse/my-eclipsecon-europe-2011-feedback-better-late-than-never/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/my-eclipsecon-europe-2011-feedback-better-late-than-never/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 15:15:39 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=4427</guid>
		<description><![CDATA[It was my second EclipseCon Europe. And the first difference that I encountered between the two conferences was during my trip from Grenoble to Ludwigsburg. Last year, during the flight, the Swiss airline company offered me chocolates &#8211; this year the German airline gave me a camembert sandwich. (Which would you prefer?) OK, time to [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-4422" href="http://www.bonitasoft.org/blog/eclipse/my-eclipsecon-europe-2011-feedback/attachment/2011-12-01_13-43-06_160/"><img class="aligncenter size-medium wp-image-4422" src="http://www.bonitasoft.org/blog/wp-content/uploads/2011/11/2011-12-01_13-43-06_160-300x168.jpg" alt="" width="300" height="168" /></a></p>
<p>It was my <a href="http://www.bonitasoft.org/blog/eclipse/our-eclipse-summit-europe/">second</a> <a href="http://www.eclipsecon.org/europe2011/">EclipseCon Europe</a>. And the first difference that I encountered between the two conferences was during my trip</p>
<p>from Grenoble to Ludwigsburg. Last year, during the flight, the Swiss airline company offered me chocolates &#8211; this year the German airline gave me a camembert sandwich. (Which would <em>you </em>prefer?) OK, time to talk about #ECE2011 more seriously. I can&#8217;t cover all the great things so here is just a selection.</p>
<p><span id="more-4427"></span></p>
<h3>If it was just this&#8230;</h3>
<p>My favorite talk was the blockbuster &#8220;<a href="http://www.eclipsecon.org/europe2011/sessions/collaborative-modeling-new-deal" target="_blank">Collaborative Modeling: The New Deal</a>&#8220;. Effectively, there was some great stuff that really improves collaborative modeling. It covered all the way from real-time graphical collaborative modeling with <a href="http://wiki.eclipse.org/Dawn" target="_blank">Dawn</a>, to better handling of <a href="http://wiki.eclipse.org/EMF_Compare/GMF_Compare_Markers" target="_blank">conflict resolution</a> for Graphical Modeling Framework, to task focused modeling with <a href="http://wiki.eclipse.org/Mylyn/Modeling_Bridge" target="_blank">Mylyn bridge</a>.</p>
<h3>Tutorial dilemma</h3>
<p>I faced a big dilemma: to choose which tutorial to attend. I would have loved to go to the <a href="http://www.eclipse.org/tycho/" target="_blank">Tycho</a> or <a href="http://eclipse.org/egit/" target="_blank">Git</a> tutorial, but I ultimately decided to attend the <a href="http://www.eclipsecon.org/europe2011/sessions/automated-acceptance-testing-eclipse-applications-jubula" target="_blank">Jubula Tutorial</a> and I have no regrets. The tutorial was really well conducted. About the product itself, my impression is that <a href="http://www.eclipse.org/jubula/" target="_blank">Jubula </a>is powerful but not intuitive. I would appreciate more usable User Interface.</p>
<h3>Modeling Symposium</h3>
<p>This year, the Modeling Symposium was hosted as a BoFs. There was a lot of good stuff presented. I&#8217;m happy about the announcement of the <a href="http://mickaelistria.wordpress.com/2011/08/17/gmf-tooling-is-back-in-the-train/" target="_blank">GMF-Tooling revival</a>. If you want more details on the symposium, I invite you to see <a href="https://twitter.com/#!/mchv" target="_blank">Mariot Chauvin</a>&#8216;s <a href="http://mariot-thoughts.blogspot.com/2011/11/modeling-symposium-eclipsecon-europe.html" target="_blank">blogpost</a>.</p>
<h3>Keynote</h3>
<p>I was very interested in the <a href="http://www.eclipsecon.org/europe2011/sessions/model-based-software-engineering-industry-revolution-evolution-or-smoke" target="_blank">keynote</a> about modeling by <a href="http://ca.linkedin.com/pub/bran-selic/0/5b/a4" target="_blank">Bran Selic</a>. He explained his vision of modeling through eyes that have already seen a lot of material on the subject. I admit that I agree with his vision that modeling is an evolution and a more and more useful concept when going to more and more complex systems.</p>
<h3>My talk</h3>
<p>This talk was in the <a href="http://www.eclipsecon.org/europe2011/program/session-schedule/top-10-sessions">top 10 most scheduled</a> and was quite well attended. The main objective of my talk was to show that there are Eclipse tools that are easy to use to solve performance issues. So, I&#8217;m happy that some of the attendees came to me after the talk and said that they will try to use some tools that I presented. You can find a recording of the talk <a href="http://www.fosslc.org/drupal/content/how-improve-performance-your-eclipse-based-application" target="_blank">here</a> (oops they cut off the beginning). Based on feedback, I proposed a <a href="http://www.eclipsecon.org/2012/sessions/memory-analyzer-tool-easier-it-looks-and-straightforward-solution-spot-those-annoying-commo">talk for EclipseCon 2012</a> focused specifically on the <a href="http://www.eclipse.org/mat/" target="_blank">Memory Analyzer Tool</a>. Comments and <a href="http://www.eclipsecon.org/2012/sessions/memory-analyzer-tool-easier-it-looks-and-straightforward-solution-spot-those-annoying-commo" target="_blank">votes for it</a> are welcome <img src='http://www.bonitasoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I&#8217;m looking forward to next year&#8217;s EclipseCon Europe and also hope to attend my first <a href="http://www.eclipsecon.org/2012/" target="_blank">EclipseCon North America</a> next year too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/my-eclipsecon-europe-2011-feedback-better-late-than-never/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our Eclipse Summit Europe</title>
		<link>http://www.bonitasoft.org/blog/eclipse/our-eclipse-summit-europe/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/our-eclipse-summit-europe/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 15:18:11 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=2436</guid>
		<description><![CDATA[Eclipse Summit Europe (ESE) took place last week. Here&#8217;s some feedback on this great conference I attended with Mickaël Istria. BonitaSoft Presentations I presented the two highly customized GMF-based editors of Bonita Open Solution Studio during the Modeling Symposium (see my presentation below).  The goal of the presentation was to show customization that can be done [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/11/photo.jpg"><img class="aligncenter size-medium wp-image-2458" style="float: right; padding-left: 20px;" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/11/photo-300x224.jpg" alt="" width="300" height="224" /></a>Eclipse Summit Europe (ESE) took place last week. Here&#8217;s some feedback on this great conference I attended with <a href="http://twitter.com/#!/mickaelistria" target="_blank">Mickaël Istria</a>.</p>
<p><strong>BonitaSoft Presentations</strong></p>
<p>I presented the two highly customized <a href="http://www.eclipse.org/modeling/gmp/">GMF</a>-based editors of <a href="http://www.bonitasoft.com/products/BPM__workflow_overview.php" target="_blank">Bonita Open Solution Studio</a> during the <a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;id=1898" target="_blank">Modeling Symposium</a> (see my presentation below).  The goal of the presentation was to show customization that can be done with <a href="http://www.eclipse.org/modeling/gmp/">GMF</a> while keeping agility for development. You can find the slides <a href="http://www.slideshare.net/BonitaSoft/eclipse-summit-europe-modeling-symposium" target="_blank">here</a>. I&#8217;m pretty happy with the results, as I got good feedback and people came to ask more details on how the BonitaSoft Team does this.<span id="more-2436"></span></p>
<p>By the way, we plan to submit a more complete and technical talk for <a href="http://eclipsecon.org/">EclipseCon 2011</a>, in which we will show more about how to &#8220;pimp a GMF editor&#8221; with concrete and practical tips. Please tell us if you want us to include some specific content.</p>
<p>We also presented a <a href="http://www.bonitasoft.com/ressources/poster-eclipse-v4.pdf">poster</a>. It was interesting to meet potential end users of the product, and people that are interested in the Eclipse technologies we are using (and sometimes both at the same time).</p>
<p><strong>People</strong></p>
<p>ESE was a great opportunity to meet a lot of people, contributors, commiters, and end-users. I thank all of them for the excellent exchange of knowledge and know-how.</p>
<p>There were also a few <a href="http://aniszczyk.org/2010/11/04/running-at-eclipse-summit-europe-2010/" target="_blank">good runners</a> who were able to wake up early in the morning. This is a good way to start a conference day.</p>
<p><strong>Talks</strong></p>
<p>There were lots of great talks. I&#8217;ll highlight 2 of them, my favorites.</p>
<p>The first was &#8220;<a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;id=1884" target="_blank">Scale, Share and Store your Models with CDO,</a>&#8221; about the new features of CDO. There was also a demo of <a href="http://wiki.eclipse.org/Getting_Started_with_Dawn" target="_blank">Dawn</a>. This allows real collaborative work with GMF editors using CDO technology. Modifications on a diagram appear in real-time on the diagram of another instance of the editor, or on another instance of a web-based GMF-editor!! It also shows potential conflicts on the diagram in real-time. In a nutshell, this talk was really amazing.</p>
<p>The second is &#8220;<a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;id=1764" target="_blank">Distilling Heap Dumps: a Guide to Using and Extending Memory Analyzer</a>.&#8221; I was already aware of some basic usage of <a href="http://www.eclipse.org/mat/" target="_blank">MAT</a>, but there is so much more that I learned during the talk. For instance, you can use <a href="http://www.eclipse.org/mat/" target="_blank">MAT</a> to observe the Thread or Bundle state. <a href="http://www.eclipse.org/mat/" target="_blank">MAT</a> also provides extension points to add customized queries, customized reports, customized names for better rendering, and more.</p>
<p><strong>Advanced Technologies Experimentation</strong></p>
<p>There were more than a few great experts at the conference. We took advantage of that and did some &#8220;advanced&#8221; experimentation.</p>
<p>With the help of <a href="http://twitter.com/#!/kaitoedter" target="_blank">Kai Töedter</a> and his <a href="http://www.toedter.com/blog/?p=295" target="_blank">blogpost</a>, Mickael set up the CSS styling of e4 in Bonita Studio, our RCP application based on Eclipse 3.6.</p>
<p>Mickaël also began to improve the build of <a href="http://eclipse.org/swtbot">SWTBot</a> project by using <a href="http://www.eclipse.org/tycho/" target="_blank">Tycho.</a> You can follow it via the <a href="http://dev.eclipse.org/mhonarc/lists/swtbot-dev/msg00166.html" target="_blank">mailing list</a>.</p>
<p>On my side, I pair-programmed with <a href="http://mariot-thoughts.blogspot.com/" target="_blank">Mariot Chauvin</a> in order to<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329465" target="_blank"> improve support of SVG figures in the GMF editor</a>. I spotted a memory issue some time ago (using <a href="http://www.eclipse.org/mat/" target="_blank">MAT</a>, btw) and this was a great opportunity to look at it deeper.</p>
<p>We plan to write some blogposts soon about this stuff. So stay tuned <img src='http://www.bonitasoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>And in conclusion&#8230;<br />
</strong></p>
<p>In short, this conference was great. We came back with a lot of contacts and new knowledge. We are also proud to have shared the expertise we have acquired while developing Bonita Studio.</p>
<p>One final piece of advice and personal reminder: don&#8217;t leave the paper wrapping of the SwissAir chocolate in your pocket &#8211; it might earn you an advanced security check!</p>
<div style="width: 425px;">
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/BonitaSoft">BonitaSoft</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/our-eclipse-summit-europe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acquire Heap Dump from MAT (Memory Analyzer Tool)</title>
		<link>http://www.bonitasoft.org/blog/eclipse/acquire-heap-dump-from-mat/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/acquire-heap-dump-from-mat/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 16:00:22 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[MAT]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=1898</guid>
		<description><![CDATA[MAT, which stands for Memory Analyzer Tool, is a fast and feature-rich Java heap analyzer that helps you find memory leaks and reduce memory consumption.

It integrates the release train with helios and comes with great features. I will highlight one of them, which is pretty useful in debug/development mode. I'm talking about the ability to acquire Heap Dump directly from the tool.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclipse.org/mat/" target="_blank">MAT</a>, which stands for Memory Analyzer Tool, is a fast and feature-rich <strong>Java heap analyzer</strong> that helps you find memory leaks and reduce memory consumption.<br />
The project got integrated into the release train with Helios and comes with great features. I will highlight one of them, which is pretty useful in debug/development mode. I&#8217;m talking about the ability to acquire Heap Dump directly inside <a href="http://www.eclipse.org/mat/" target="_blank">MAT</a>.<span id="more-1898"></span></p>
<ol>
<li>Starting the processus requires only two clicks. In the menu, choose &#8220;File-&gt;Acquire Heap Dump&#8230;&#8221;<br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/menu.jpg"><img class="aligncenter size-full wp-image-1899" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/menu.jpg" alt="" width="216" height="92" /></a></li>
<li>The wizard that will guide you prompts. You can see running java processes.<br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/runningProcesses.jpg"><img class="aligncenter size-medium wp-image-1900" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/runningProcesses-300x225.jpg" alt="" width="300" height="225" /></a></li>
<li>Click on <em>Configure&#8230;</em> A new dialog will be displayed. You can specify here which provider to use to make the heap dump.<br />
You will see that two providers are available by default:<br />
- jmap tools (for Hotspot VM for instance)<br />
- an helper IBM VM.<br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/providers.jpg"><img class="aligncenter size-medium wp-image-1901" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/providers-300x191.jpg" alt="" width="300" height="191" /></a></li>
<li>I&#8217;m using an Hotspot VM, so I need to specify only the JDK_HOME of my JDK. (This step is required only the first time.)<br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/arguments.jpg"><img class="aligncenter size-medium wp-image-1902" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/arguments-300x191.jpg" alt="" width="300" height="191" /></a><br />
<em>Be careful: a JDK is required, a JRE is not enough. Are you really the end user that solves my memory issues?</em></li>
<li><em>Apply</em> the configuration of the Heap Dump Provider and click <em>OK</em></li>
<li>Now you&#8217;re back to the first dialog, select the process that you want to analyze.<br />
You will notice at the bottom that a path is automatically generated for the heap dump file. By the way I recommend to choose a folder containing only dumps. MAT generates a lot of other files aside it (for indexation purpose I assume). So if you don&#8217;t want that it pollutes your home folder (which is used by default), you know what you have to do <img src='http://www.bonitasoft.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/specifyFolder.jpg"><img class="aligncenter size-medium wp-image-1904" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/specifyFolder-300x225.jpg" alt="" width="300" height="225" /></a></li>
<li>Click on Finish</li>
<li>Wait for the heap dump to be written to the disk and parsed by MAT. These operations can take some time for huge java heap size.</li>
<li>A new dialog prompts, for a quick overview, keep &#8220;Leak Suspects Report&#8221; checked.<br />
<a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/leakReports.jpg"><img class="aligncenter size-medium wp-image-1903" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/09/leakReports-300x253.jpg" alt="" width="300" height="253" /></a></li>
<li>Click Finish</li>
<li>All right, you have the Heap Dump opened in MAT, ready to be analyzed!</li>
</ol>
<p>In effect, this way requires that the process is still running. It is a debug/development use case. You still need dumps on OutOfMemoryError for production environment. You can find some information on the way to do that on the <a href="http://wiki.eclipse.org/index.php/MemoryAnalyzer#Getting_a_Heap_Dump" target="_blank">MAT wiki</a>.<br />
To learn more things about MAT, I recommend you to follow the<a href="http://live.eclipse.org/node/939" target="_blank"> MAT webinar</a> which happens on September 8th.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/acquire-heap-dump-from-mat/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Moving a RCP application from Galileo to Helios: feedback and tips</title>
		<link>http://www.bonitasoft.org/blog/eclipse/moving-a-rcp-application-from-galileo-to-helios-feedback-and-tips/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/moving-a-rcp-application-from-galileo-to-helios-feedback-and-tips/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 16:13:43 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=1020</guid>
		<description><![CDATA[Helios is here with new features, improvements and bug fixes. In order to take advantage of them, the BonitaSoft Team decided to move Bonita Open Solution, a GMF-based RCP application, from Galileo to Helios. We will share this experience with you.]]></description>
			<content:encoded><![CDATA[<p>In this post I&#8217;m going to share our experience migrating our RCP product <a href="http://www.bonitasoft.com/products/Business_Process_Management_features.php" target="_blank">Bonita Open Solution</a> from an Eclipse 3.5.1 to 3.6.0 based platform. There were some issues but we were successful. I will also offer some tips so you can avoid some mistakes and save migration time.<span id="more-1020"></span></p>
<h3 style="margin-bottom: 12px;">Dynamic Services</h3>
<p>This one was the trickiest to identify and fix because the only way to find it is in a stacktrace with NPE in the log. In fact,  <em>FrameWorkAdminService</em> is launched via Declarative Services in 3.6 and so you need to add <em>org.eclipse.equinox.ds</em> in your plugin-based product definition. And be careful, this plugin is not identified as required. This is the &#8220;<em>drawback of using  Dynamic Services</em>&#8221; (to <a href="http://www.vogella.de/blog/2010/07/12/npe-in-e4/" target="_blank">quote</a> <a href="http://www.vogella.de/blog/" target="_blank">Lars Vogel</a>). This same issue is also problematic with <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318821" target="_blank">e4</a>. You can find the related bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314814" target="_blank">here</a>.</p>
<h3 style="margin-bottom: 12px;">GMF</h3>
<p style="text-align: left;"><strong>The issues</strong></p>
<ul>
<li style="margin-bottom: 12px;"> In order to identify potential issues we tested the migration with RC1 and RC2. There were some API modifications that were out of phase between <a href="http://www.eclipse.org/modeling/gmp/" target="_blank">GMF</a> and <a href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.m2m.qvt-oml" target="_blank">qvtOML</a> with the RC1 and RC2 releases. It took some time to find them and we needed the qvtOML milestones <a href="http://download.eclipse.org/modeling/m2m/qvtoml/updates/milestones/site.xml" target="_blank">update site</a> to make it work.</li>
<li style="margin-bottom: 12px;">On one of our high custom editors, we could no longer reparent (move a figure inside another). Canonical Edit Policies has been improved in order to fix this annoying<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=281014" target="_blank"> bug</a>. For that reason, a new method has appeared in GMF templates to override the <em>refreshSemantic </em>method. So, first, I removed the overridden method &#8212; but the copy/paste didn&#8217;t work after that. The trick is to keep the overridden method and add to the end of this method, not at the beginning, a call to the super method. You can take a look at this <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318585" target="_blank">bug</a> and see our <a href="http://www.bonitasoft.org/websvn/filedetails.php?repname=Bonita+Open+Solution&amp;path=/bonita-studio/trunk/plugins/org.bonitasoft.studio-models/form/GMFTemplates/aspects/diagram/editpolicies/ChildContainerCanonicalEditPolicy.xpt" target="_blank">aspect template</a> for more information.</li>
</ul>
<p style="text-align: left;"><a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/07/refreshSemantic1.jpg"><img class="aligncenter size-large wp-image-1117" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/07/refreshSemantic1-1024x313.jpg" alt="" width="717" height="219" /></a></p>
<p><strong>The advantage</strong></p>
<p>Using providers and <a href="http://www.bonitasoft.org/blog/eclipse/customize-your-gmf-editor-by-customizing-templates/" target="_blank">Aspect templates</a> limits the amount of customized code to check. In fact most of the modifications were done to remove some fixes as they are now in the new release (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=281014" target="_blank">canonical diagram empty after restart</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=288346" target="_blank">save as saving only diagram</a> and others). So moving to Helios simplifies <a href="http://www.bonitasoft.com/products/Business_Process_Management_features.php" target="_blank">Bonita Open Solution</a> code.</p>
<h3 style="margin-bottom: 12px;">Tests</h3>
<p>There is very good news here: <a href="http://wiki.eclipse.org/Eclipse/Testing/JUnit4_Changes">Eclipse is now using JUnit 4</a> by default! Now you can write your plugin tests with JUnit4, and this avoids a lot of struggle trying to get both standard plugins tests and JUnit4/SWTBot tests working together. Both kinds of test can now run without any hack, using the provided JUnit, and the <em>org.eclipse.ant.optional.junit</em> fragment loaded in your product.</p>
<h3 style="margin-bottom: 12px;">Target platform</h3>
<ul>
<li style="margin-bottom: 12px;">Kudos to <a href="http://groovy.codehaus.org/Eclipse+Plugin" target="_blank">greclipse</a> which provides a zipped update site to test on Helios. However upgrading the target platform for greclipse 2.0.2 for Eclipse 3.6 was a little complicated due to a patched <em>org.eclipse.jdt.core</em> (can&#8217;t uninstall on the target platform/conflict with patched jdt.core).</li>
<li style="margin-bottom: 12px;">It seems that BIRT doesn&#8217;t provide an update site to test 2.6 on RC releases. So we kept the 2.5.1 version of BIRT. The good news is that the 2.5.1 version works great with Eclipse 3.6.</li>
<li style="margin-bottom: 12px;">A little tip: use <a href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/p2_director.html" target="_blank">p2 to construct your target platform</a> and <a href="http://www.bonitasoft.org/websvn/filedetails.php?repname=Bonita+Open+Solution&amp;path=/bonita-studio/trunk/releng/org.bonitasoft.studio-platform/buildPlatform.sh" target="_blank">keep all</a> feature names with their repositories. They will be helpful for your next migration.</li>
</ul>
<p>In a nutshell, there are difficulties migrating to Eclipse 3.6 but it is definitely do-able!</p>
<p>I wish you a good migration, hoping that my feedback will help you, and look forward to your tips and feedback from your successful migration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/moving-a-rcp-application-from-galileo-to-helios-feedback-and-tips/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Programmatic hot deploy with Jetty</title>
		<link>http://www.bonitasoft.org/blog/tutorial/programmatic-hot-deploy-with-jetty/</link>
		<comments>http://www.bonitasoft.org/blog/tutorial/programmatic-hot-deploy-with-jetty/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 08:31:53 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=712</guid>
		<description><![CDATA[Hot deployment &#8211; which consists in deploying an application without stopping the application server &#8211; can save a lot of time and of course, avoid interruption of service. You may already know it, but Bonita Open Solution embeds Jetty when it comes to deploying your process-driven application. I tried to programmatically hot deploy an application [...]]]></description>
			<content:encoded><![CDATA[<p>Hot deployment &#8211; which consists in deploying an application without stopping the application server &#8211; can save a lot of time and of course, avoid interruption of service.</p>
<p>You may already know it, but <a href="http://www.bonitasoft.com/products/BPM_download.php" target="_blank">Bonita Open Solution</a> embeds <a href="http://wiki.eclipse.org/Jetty" target="_blank">Jetty</a> when it comes to deploying your process-driven application. I tried to programmatically hot deploy an application with Jetty a few days ago but unfortunately didn&#8217;t find any documentation on how to do this. After a lot of trial and error, I finally did it! I was mainly inspired from the depths of a <a href="http://osdir.com/ml/java.jetty.support/2008-06/msg00011.html" target="_blank">mailing-list archive</a> (BTW when will we have a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309553" target="_blank">Jetty forum</a>?). Here is the results of my research&#8230;</p>
<p><span id="more-712"></span></p>
<p>I found several ways to use hot deployment with Jetty, including:</p>
<p>- <a href="http://docs.codehaus.org/display/JETTY/ContextDeployer" target="_blank">Context deployer</a>. But this requires XML file configuration and replacing a war in a directory&#8230; and then waiting for a scan of the directory!!</p>
<p>- <a href="http://wiki.eclipse.org/Jetty/Feature/Jetty_OSGi#The_OSGi_service_.27org.eclipse.jetty.server.handler.ContextHandler.27" target="_self">OSGI service</a>. This seems to be a great and easy solution but it also seems to be only available for Jetty 7.</p>
<p>And now it&#8217;s high time to show you how to use hot deployment programmatically:</p>
<p><em>Note: As Bonita Open Solution is based on Eclipse 3.5, we are using  Jetty version 6.</em></p>
<ol>
<li>Create the server:
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Server jetty <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Server<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
</li>
<li> Create a handlerCollection with a ContextHandlerCollection in it:
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">HandlerCollection hc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HandlerCollection <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
ContextHandlerCollection contextHandlerCollection <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ContextHandlerCollection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
hc.<span style="color: #006633;">setHandlers</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Handler<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span>contextHandlerCollection<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
jetty.<span style="color: #006633;">setHandler</span><span style="color: #009900;">&#40;</span>hc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
</li>
<li> Start the server:
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">jetty.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
</li>
<li>Hot deploy your web application:
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">WebAppContext warWebappContext <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WebAppContext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//configure it ...</span><br />
contextHandlerCollection.<span style="color: #006633;">addHandler</span><span style="color: #009900;">&#40;</span>warWebappContext<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
warWebappContext.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
</li>
<li>Hot undeploy your application:
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">//get the WebAppContext to undeploy...</span><br />
WebAppContext toUndeploy <span style="color: #339933;">=</span> getWebAppContextToUndeploy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//stop it</span><br />
toUndeploy.<span style="color: #006633;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//and remove it from the handler collection</span><br />
contextHandlerCollection.<span style="color: #006633;">removeHandler</span><span style="color: #009900;">&#40;</span>toUndeploy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
</li>
</ol>
<p>In a nutshell, the trick is to use a HandlerCollection for your WebAppContextHandler.</p>
<p>I hope that this article will help others to hot deploy with Jetty. You&#8217;re welcome to  suggest better ways or to provide links to good documentation on this subject!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/tutorial/programmatic-hot-deploy-with-jetty/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Customize your GMF editor by customizing templates</title>
		<link>http://www.bonitasoft.org/blog/eclipse/customize-your-gmf-editor-by-customizing-templates/</link>
		<comments>http://www.bonitasoft.org/blog/eclipse/customize-your-gmf-editor-by-customizing-templates/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 10:46:25 +0000</pubDate>
		<dc:creator>aurelien.pupier.eclipse</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.bonitasoft.org/blog/?p=388</guid>
		<description><![CDATA[During the development of BOS Studio, which is a technology nominee for Eclipse Community Awards, the BonitaSoft R&#38;D team has customized GMF editors.  I will share what we did and show how to apply it yourself. One way to customize your GMF editor is to modify the XPand templates. GMF provides a convenient way to do it. This post will [...]]]></description>
			<content:encoded><![CDATA[<p>During the development of <a href="http://marketplace.eclipse.org/content/bonita-open-solution" target="_blank">BOS Studio</a>, which is a<a href="http://www.eclipse.org/org/foundation/eclipseawards/technology.php#midcolumn" target="_blank"> technology nominee</a> for <a href="http://www.eclipse.org/org/foundation/eclipseawards/index.php" target="_blank">Eclipse Community Awards</a>, the BonitaSoft R&amp;D team has customized <a href="http://www.eclipse.org/modeling/gmf/" target="_blank">GMF</a> editors.  I will share what we did and show how to apply it yourself.</p>
<p>One way to customize your <a href="http://www.eclipse.org/modeling/gmf/" target="_blank">GMF</a> editor is to modify the <a href="http://wiki.eclipse.org/Xpand" target="_blank">XPand</a> templates. <a href="http://www.eclipse.org/modeling/gmf/" target="_blank">GMF</a> provides a convenient way to do it. This post will explain two ways to take advantage of this method. To illustrate, I will show you how to set a custom SelectionManager in the editor.<span id="more-388"></span></p>
<h3>Import GMF templates and customize them</h3>
<ol>
<li>First, import the base templates used for <a href="http://www.eclipse.org/modeling/gmf/" target="_blank">GMF</a> generation. You can get them from the templates folder in org.eclipse.gmf.codegen plugin. Open plug-in view, right-click on the plugin and import it as source project: <img class="aligncenter size-full wp-image-440" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/importTemplates.jpg" alt="importTemplates" width="630" height="346" /></li>
<li>Now you can see the templates in your workspace: <img class="aligncenter size-full wp-image-441" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/baseTemplatesFolder.jpg" alt="baseTemplatesFolder" width="218" height="405" /></li>
<li>Create a folder which will contain your customized templates: <img class="aligncenter size-full wp-image-442" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/templateDirectory.jpg" alt="templateDirectory" width="226" height="235" /></li>
<li>Find the file that you want to customize. Be sure to use the same hierarchy for your customized templates folder. For instance, take the Editor.xpt file: <a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/editorXPTInBaseTemplates.jpg"><img class="aligncenter size-medium wp-image-454" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/editorXPTInBaseTemplates-174x300.jpg" alt="" width="174" height="300" /></a> and put it in the corresponding folder: <a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/editorXPTInTheRightFolder.jpg"><img class="aligncenter size-full wp-image-455" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/editorXPTInTheRightFolder.jpg" alt="" width="164" height="140" /></a></li>
<li>Customize the template by modifying the DEFINE block that you want. For instance, to add your own SelectionManager, modify the configureGraphicalViewer DEFINE block:
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">«DEFINE configureGraphicalViewer FOR gmfgen::GenEditorView-»<br />
«EXPAND xpt::Common::generatedMemberComment»<br />
protected void configureGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
super.configureGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
«EXPAND xpt::editor::DiagramEditorContextMenuProvider::qualifiedClassName FOR editorGen.diagram» provider =<br />
new «EXPAND xpt::editor::DiagramEditorContextMenuProvider::qualifiedClassName FOR editorGen.diagram»<span style="color: #7a0874; font-weight: bold;">&#40;</span>this, getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.setContextMenu<span style="color: #7a0874; font-weight: bold;">&#40;</span>provider<span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
getSite<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.registerContextMenu<span style="color: #7a0874; font-weight: bold;">&#40;</span>org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU, provider, getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
«REM»Disable multiple selection <span style="color: #000000; font-weight: bold;">for</span> PREVIEW «ENDREM»<br />
getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.setSelectionManager<span style="color: #7a0874; font-weight: bold;">&#40;</span>new org.bonitasoft.studio.common.diagram.tools.BonitaDiagramSelectionManager<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
«ENDDEFINE»</div></td></tr></tbody></table></div>
</li>
<li>For the GMF generator to  use your custom templates, there are <strong>two</strong> attributes to set in the gmfgen file:<br />
- Set <em>Dynamic Templates</em> value to true<br />
- Set <em>Template Directory </em> value with the platform path to the folder which contains your customized templates:</li>
<p><img class="aligncenter size-full wp-image-443" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/gmfgenToUseCustomTemplate.jpg" alt="gmfgenToUseCustomTemplate" width="512" height="369" /></ol>
<h3>And now for the elegant solution</h3>
<p>Ok, now you know how to customize your templates. Let&#8217;s go further &#8211; learn how to customize them more efficiently. You can use <em><a href="http://en.wikipedia.org/wiki/Aspect_(computer_science)" target="_blank">aspects</a></em> to do this. Aspects allow you to override just a part of the template. This avoids duplicate code, is easier to read, more efficient to maintain and easier to upgrade. Yes I, and the <a href="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/photo15.jpg" target="_blank">Bonitasoft R&amp;D team</a>, recommend this way ^^</p>
<ol>
<li>In order to do this, create a folder named “aspects”. Put your customized template into it, again respecting the hierarchy:</li>
<p><img class="aligncenter size-full wp-image-444" src="http://www.bonitasoft.org/blog/wp-content/uploads/2010/02/aspectsFolder.jpg" alt="aspectsFolder" width="291" height="184" /></p>
<li>The customization is not exactly the same. This time, pick up just the DEFINE block that interests you, replace &#8220;DEFINE&#8221; with &#8220;AROUND&#8221; and then modify the contents of this block as above. This way, you have only the modified part of the template in the file. This is much clearer :
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:620px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">«AROUND configureGraphicalViewer FOR gmfgen::GenEditorView-»<br />
«EXPAND xpt::Common::generatedMemberComment»<br />
protected void configureGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
super.configureGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
«EXPAND xpt::editor::DiagramEditorContextMenuProvider::qualifiedClassName FOR editorGen.diagram» provider =<br />
new «EXPAND xpt::editor::DiagramEditorContextMenuProvider::qualifiedClassName FOR editorGen.diagram»<span style="color: #7a0874; font-weight: bold;">&#40;</span>this, getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.setContextMenu<span style="color: #7a0874; font-weight: bold;">&#40;</span>provider<span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
getSite<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.registerContextMenu<span style="color: #7a0874; font-weight: bold;">&#40;</span>org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU, provider, getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
«REM»Disable multiple selection <span style="color: #000000; font-weight: bold;">for</span> PREVIEW «ENDREM»<br />
getDiagramGraphicalViewer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.setSelectionManager<span style="color: #7a0874; font-weight: bold;">&#40;</span>new org.bonitasoft.studio.common.diagram.tools.BonitaDiagramSelectionManager<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
«ENDAROUND»</div></td></tr></tbody></table></div>
<p>If you want more examples, take a look at the templates used for <a href="http://www.bonitasoft.com/products/downloads.php" target="_blank">Bonita Open Solution Studio</a>. They are available on the <a href="http://www.bonitasoft.org/websvn/listing.php?repname=Bonita+Open+Solution&amp;path=/bonita-studio/trunk/plugins/org.bonitasoft.studio-models/#path_bonita-studio_trunk_plugins_org.bonitasoft.studio-models_" target="_blank">svn</a>.<br />
And all your comments are welcome <img src='http://www.bonitasoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.bonitasoft.org/blog/eclipse/customize-your-gmf-editor-by-customizing-templates/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
