<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Flos Blog</title>
	<atom:link href="https://floriansblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://floriansblog.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 08 Dec 2015 13:14:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='floriansblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>Flos Blog</title>
		<link>https://floriansblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://floriansblog.wordpress.com/osd.xml" title="Flos Blog" />
	<atom:link rel='hub' href='https://floriansblog.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Lunifera&#8217;s 2015 Xmas tree is online</title>
		<link>https://floriansblog.wordpress.com/2015/12/08/luniferas-2015-xmas-tree-is-online/</link>
					<comments>https://floriansblog.wordpress.com/2015/12/08/luniferas-2015-xmas-tree-is-online/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Tue, 08 Dec 2015 13:14:25 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[Vaadin]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1665</guid>

					<description><![CDATA[Xmas time is here again &#8230; and we at Lunifera continue our tradition of decorating our office with a remote-controlled Xmas tree that serves as a prototype for the IoT-related functionality of OS.bee (Open Standards business engineering environment), a modern model-driven software factory for business applications that is about to launch (stay tuned!). This year, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Xmas time is here again &#8230; and we at Lunifera continue our tradition of decorating our office with a remote-controlled Xmas tree that serves as a prototype for the IoT-related functionality of OS.bee (Open Standards business engineering environment), a modern model-driven software factory for business applications that is about to launch (stay tuned!).</p>
<p>This year, we added another cool feature to our tree: snow!</p>
<div data-shortcode="caption" id="attachment_1675" style="width: 910px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-1675" data-attachment-id="1675" data-permalink="https://floriansblog.wordpress.com/2015/12/08/luniferas-2015-xmas-tree-is-online/20151208_125737/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg" data-orig-size="900,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900F&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1449579457&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;800&quot;,&quot;shutter_speed&quot;:&quot;0.058823529411765&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="20151208_125737" data-image-description="" data-image-caption="&lt;p&gt;This year’s tree has an amazing snow effect … and yes, some “flakes” end up on the floor.&lt;/p&gt;
" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=169" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=450" class="alignnone size-full wp-image-1675" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=450" alt="20151208_125737"   srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg 900w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=84&amp;h=150 84w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=169&amp;h=300 169w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg?w=768&amp;h=1365 768w" sizes="(max-width: 900px) 100vw, 900px" /><p id="caption-attachment-1675" class="wp-caption-text">This year’s tree has an amazing snow effect … and yes, some “flakes” end up on the floor.</p></div>
<p>&nbsp;</p>
<p>The tree is equipped with an air blower that pushes tiny styrofoam balls up through the hollow trunk. At the top, the balls are pushed out sideways and snow back down for an extra winter effect.</p>
<p>As in the previous years, we use a <a href="https://vaadin.com/home">Vaadin</a> UI for the Xmas tree controller. Clicking buttons sends <a href="http://mqtt.org/">MQTT</a> messages with the appropriate commands to the Raspberry Pi that performs them in the physical world.</p>
<div data-shortcode="caption" id="attachment_1680" style="width: 1610px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-1680" data-attachment-id="1680" data-permalink="https://floriansblog.wordpress.com/2015/12/08/luniferas-2015-xmas-tree-is-online/20151208_125804/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg" data-orig-size="1600,900" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900F&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1449579484&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;2000&quot;,&quot;shutter_speed&quot;:&quot;0.058823529411765&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="20151208_125804" data-image-description="" data-image-caption="&lt;p&gt;Part of the circuitry we use to perform Xmas tree commands: A Raspberry Pi receives MQTT messages and controls an IR led for the lights, triggers a relay for the air blower, turns on the angel’s motor and makes an Arduino control the star.&lt;/p&gt;
" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=450" class="alignnone size-full wp-image-1680" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=450" alt="20151208_125804"   srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg 1600w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=150&amp;h=84 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=300&amp;h=169 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=768&amp;h=432 768w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=1024&amp;h=576 1024w, https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg?w=1440&amp;h=810 1440w" sizes="(max-width: 1600px) 100vw, 1600px" /><p id="caption-attachment-1680" class="wp-caption-text">Part of the circuitry we use to perform Xmas tree commands: A Raspberry Pi receives MQTT messages and controls an IR led for the lights, triggers a relay for the air blower, turns on the angel’s motor and makes an Arduino control the star.</p></div>
<p>For the video stream, we use another Raspberry Pi running the <a href="http://www.lavrsen.dk/foswiki/bin/view/Motion/WebcamServer">Motion</a> webcam server. Let&#8217;s hope that our bandwidth can take it (and that the suspension of the angel does not jump from it&#8217;s guidance)!</p>
<p>Our tree can be found <a href="http://www.lunifera.com/wp/?page_id=521">here</a> &#8212; Feel free to toy around with it and spread the Xmas spirit <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/12/08/luniferas-2015-xmas-tree-is-online/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125737.jpg" medium="image">
			<media:title type="html">20151208_125737</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/12/20151208_125804.jpg" medium="image">
			<media:title type="html">20151208_125804</media:title>
		</media:content>
	</item>
		<item>
		<title>Using the Vaadin (GWT) SuperDevMode in OSGi Environments</title>
		<link>https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/</link>
					<comments>https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/#comments</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Tue, 07 Jul 2015 12:44:29 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[superdevmode]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1636</guid>

					<description><![CDATA[GWT and Vaadin come with a great feature to debug the client-side widget code in the Chrome browser. Using GWT&#8217;s code server, the Java code will be displayed in the Chrome browser, and you can set your breakpoints and do debugging stuff directly in Chrome. To run the superDevMode some preparations are required: Enable SuperDevMode in widgetset [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>GWT and Vaadin come with a great feature to debug the client-side widget code in the Chrome browser. Using GWT&#8217;s code server, the Java code will be displayed in the Chrome browser, and you can set your breakpoints and do debugging stuff directly in Chrome.</p>
<p>To run the superDevMode some preparations are required:</p>
<ol>
<li>Enable SuperDevMode in widgetset</li>
<li>Compile your widgetset by a Maven build</li>
<li>Download all dependencies required to run the codeserver (another Maven build)</li>
<li>Create a launch config to run the code server</li>
<li>Enhance the classpath of the code server launch config
<ol>
<li>Add all downloaded dependencies to the classpath of the code server launch config</li>
<li>Add local client-side code bundles and their source folders to the classpath</li>
<li>Add the widgetset bundle to the classpath</li>
<li>Ensure that 5.2 and 5.3 are at the beginning of the classpath</li>
</ol>
</li>
<li>Start the code server</li>
<li>Start your OSGi Vaadin Application</li>
<li>Open http://localhost:9876/
<ol>
<li>Bookmark &#8220;Dev Mode on&#8221; and &#8220;Dev Mode off&#8221; in the browser</li>
</ol>
</li>
<li>Open your application in Chrome {URL}/?<span class="s1">superdevmode</span></li>
<li>To reload widgetset in 8) click the &#8220;Dev Mode on&#8221; bookmark</li>
<li>Ensure that Chrome -&gt; Developer tools -&gt; Properties -&gt; Sources -&gt; xyz Sourcemaps are checked</li>
<li>Open the source tab in Chrome and find your java sources there</li>
</ol>
<h3>1 Enable SuperDevMode</h3>
<p>To enable the super dev mode, add the following lines to your widgetset.gwt.xml</p>
<pre class="brush: plain; title: ; notranslate">
&lt;set-configuration-property name=&quot;devModeRedirectEnabled&quot;
		value=&quot;true&quot; /&gt;;

&lt;add-linker name=&quot;xsiframe&quot; /&gt;
</pre>
<h3>2 Compile widgetset</h3>
<p>To compile the widgetset properly, we are using a Maven build.</p>
<p>Create a file called pom-compileWidgetset.xml in your widgetset bundle and configure the pom. Therefore just follow <a href="https://github.com/lunifera/vaaclipse/tree/development/org.semanticsoft.vaaclipse.widgetset.default" target="_blank">Vaaclipse widgetset</a> as a sample.</p>
<p>Following entries in the pom are mandatory:</p>
<ol>
<li>Add all your maven dependencies required to compile the widgetset</li>
<li>Configure the vaadin-maven-plugin to compile the widgetset. The compiled widgetset will be copied to ${basedir}/resources.</li>
</ol>
<p>Run the build with &#8220;mvn clean verify -f pom-compileWidgetset.xml&#8221;</p>
<h3>3 Download all dependencies for the CodeServer</h3>
<p>To run the code server properly, a lot of jar files are required. The simplest method to collect all dependencies and their transitive dependencies is to use another Maven build.</p>
<p>Create a file called pom-superdev.xml in your widgetset bundle and configure the pom. For this pom, just follow <a href="https://github.com/lunifera/vaaclipse/tree/development/org.semanticsoft.vaaclipse.widgetset.default" target="_blank">Vaaclipse widgetset</a> as a sample.</p>
<p>The pom contains all required dependencies and a configuration for the <span class="s1">maven</span>-dependency-<span class="s1">plugin which copies all jar files to a folder under &#8220;</span>${project.build.directory}/superDev-lib&#8221;. Attention: The superDev-lib folder will be removed, if you call &#8220;mvn clean &#8230;&#8221; on the widgetset bundle. So it might be a good idea to create a folder called superDev-lib directly in the widgetset bundles root and copy the jars from<span class="s1">&#8220;</span>${project.build.directory}/superDev-lib&#8221; to this folder manually.</p>
<p>Run the build with &#8220;mvn clean verify -f pom-superdev.xml&#8221;</p>
<h3>4 Create a superDev launch config</h3>
<p>The superDev launch config is a simple java launch config.</p>
<p>Settings:</p>
<ul>
<li>Main class: com.google.gwt.dev.codeserver.CodeServer</li>
<li>Program arguments: &#8220;-logLevel DEBUG org.semanticsoft.vaaclipse.widgetset.DefaultWidgetset&#8221;</li>
<li>VM arguments: &#8220;-Xss8M -Xmx512M -XX:MaxPermSize=512M&#8221;</li>
</ul>
<h3>5 Enhance the classpath of the superDev launch config</h3>
<p>The jar files downloaded under 3) need to be added to the classpath of the launchconfig.</p>
<ul>
<li>Open the launch config, switch to tab &#8220;Classpath&#8221;</li>
<li>Press &#8220;Add JARs&#8221;</li>
<li>Then add all jar files located in /superDev-lib to the classpath.</li>
<li>Then add any &#8220;local client-side bundles&#8221; contained in the workspace</li>
<li>Add the source folder of the &#8220;local client-side bundles&#8221; too</li>
<li>Add the &#8220;widgetset bundle&#8221;</li>
<li>Add the source folder of the &#8220;widgetset bundle&#8221;</li>
<li>Ensure that the &#8220;local client-side bundles&#8221;, the &#8220;widgetset bundle&#8221; and their source folders are at the beginning of the classpath.</li>
</ul>
<p>Follow the launch configs contained in <a href="https://github.com/lunifera/vaaclipse/tree/development/org.semanticsoft.vaaclipse.widgetset.default" target="_blank">Vaaclipse widgetset</a> as a sample.</p>
<p><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png"><img data-attachment-id="1640" data-permalink="https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/superdev-launchconfig/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png" data-orig-size="1098,409" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="superdev-launchconfig" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=450" class="alignnone wp-image-1640 size-large" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=450&#038;h=168" alt="superdev-launchconfig"   srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=660 660w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=150 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=300 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=768 768w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=1024 1024w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png 1098w" sizes="(max-width: 660px) 100vw, 660px" /></a></p>
<h3>6 Run the superDev launch config</h3>
<p>Running the superDev launch config means that the widgetset is compiled.</p>
<p>If the code server could start properly, you will find following lines in the console:</p>
<pre class="brush: plain; title: ; notranslate">
The code server is ready.
Next, visit: http://localhost:9876/
</pre>
<h3>7 Start the application launch config</h3>
<p>Now you need to start you application using a launch config. No special configs are required there.</p>
<h3>8 Open http://localhost:9876/</h3>
<p><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png"><img loading="lazy" data-attachment-id="1645" data-permalink="https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/superdevurl/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png" data-orig-size="1039,491" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="superDevURL" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=450" class="alignnone size-medium wp-image-1645" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=300&#038;h=142" alt="superDevURL" width="300" height="142" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=300 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=600 600w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Just follow the instructions on the website and bookmark the two links.</p>
<h3>9 Open application in superDevMode</h3>
<p>To do this, open {URL}/?<span class="s1">superdevmode in your Chrome browser.</span></p>
<p>The browser will tell you that the widgetset is being recompiled. Afterwards, the application opens.</p>
<h3>10 and 11</h3>
<p>No steps to describe here &#8230;</p>
<h3>12 Open source code in Chrome browser</h3>
<p>Open the developer tools in Chrome. Under the source tab you should find all your client-side Java code.</p>
<p><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png"><img loading="lazy" data-attachment-id="1647" data-permalink="https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/sourcecodeinchrome/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png" data-orig-size="1403,945" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="sourceCodeInChrome" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=450" class="alignnone size-large wp-image-1647" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=450&#038;h=303" alt="sourceCodeInChrome"   srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=660 660w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=1320 1320w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=150 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=300 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=768 768w, https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=1024 1024w" sizes="(max-width: 660px) 100vw, 660px" /></a></p>
<p>You may set breakpoints to the code and do all the debugging stuff &#8212; right in your browser!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/07/07/using-the-vaadin-gwt-superdevmode-in-osgi-environments/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdev-launchconfig.png?w=660" medium="image">
			<media:title type="html">superdev-launchconfig</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/superdevurl.png?w=300" medium="image">
			<media:title type="html">superDevURL</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/07/sourcecodeinchrome.png?w=660" medium="image">
			<media:title type="html">sourceCodeInChrome</media:title>
		</media:content>
	</item>
		<item>
		<title>OSGi and Vaadin &#8211; Using ClassResource</title>
		<link>https://floriansblog.wordpress.com/2015/06/18/osgi-and-vaadin-using-classresource/</link>
					<comments>https://floriansblog.wordpress.com/2015/06/18/osgi-and-vaadin-using-classresource/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Thu, 18 Jun 2015 13:33:24 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[ClassLoader]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[Vienna]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1606</guid>

					<description><![CDATA[Using Vaadin&#8217;s ClassResource in OSGi environments is pretty straightforward. But you have to know a few basics about the OSGi class loader: In OSGi, every bundle has its own classloader. And all resources contained in a certain bundle are loaded by this bundle&#8217;s classloader only. Sample For instance, we try to load an image based on Vaadin&#8217;s ClassResource. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Using Vaadin&#8217;s <em>ClassResource</em> in OSGi environments is pretty straightforward. But you have to know a few basics about the OSGi class loader:</p>
<p>In OSGi, every bundle has its own classloader. And all resources contained in a certain bundle are loaded by this bundle&#8217;s classloader only.</p>
<hr />
<h2 style="text-align:left;">Sample</h2>
<p>For instance, we try to load an image based on Vaadin&#8217;s ClassResource.</p>
<pre class="brush: java; title: ; notranslate">
new Image(&quot;Bundle2 exported&quot;, 
        new ClassResource(org.my.SampleExported.class, 
        &quot;ImageExported.png&quot;))
</pre>
<p style="text-align:left;">The <em>ClassResource</em> internally will call</p>
<pre class="brush: java; title: ; notranslate">
org.my.SampleExported.class.getResourceAsStream(
        &quot;ImageExported.png&quot;)
</pre>
<p style="text-align:left;"> whenever <em>ClassResource#getStream()</em> is called.</p>
<hr />
<h2 style="text-align:left;">The OSGi classloader takes over</h2>
<p style="text-align:left;">After this, the OSGi classloader comes into play. It uses a defined strategy to look for the resource:</p>
<ol>
<li style="text-align:left;">If the package starts with <strong><em>&#8220;java&#8221;</em></strong>, then the request is forwarded to the parent classloader</li>
<li style="text-align:left;">If the package is in the list of <em><strong>&#8220;boot delegation&#8221;</strong></em>, the the request is forwarded to the parent classloader</li>
<li style="text-align:left;">The request is forwarded to <em><strong>&#8220;class loading hooks&#8221;</strong></em></li>
<li style="text-align:left;">The classloader checks whether there is a <em><strong>&#8220;import package&#8221;</strong></em> for <em>&#8220;org.my&#8221;</em>.
<ol>
<li style="text-align:left;">If so, then the resource is loaded from this imported package (meaning that the request is forwarded to a different bundle classloader). If a package could be found, the lookup will terminate.</li>
<li style="text-align:left;">If not, proceed with 5.</li>
</ol>
</li>
<li style="text-align:left;">The classloader checks all <strong><em>&#8220;required bundles&#8221;</em></strong> whether the resource can be found there.</li>
<li style="text-align:left;">The classloader checks the<strong><em> &#8220;local&#8221;</em> </strong>resources contained in the classloaders bundle.</li>
<li style="text-align:left;">The classloader checks the <strong><em>&#8220;fragments classpath&#8221;</em></strong> resources contained in the fragments.</li>
<li style="text-align:left;">The classloader checks for <strong><em>&#8220;dynamic imports&#8221;.</em></strong></li>
</ol>
<hr />
<h2 style="text-align:left;">How not to: Something that will never work</h2>
<p>Assume we have two bundles.</p>
<p>Bundle A &#8211; contains the Vaadin-Servlet, the resource handler and all that stuff required to run Vaadin in OSGi.</p>
<p>Bundle B &#8211; just another bundle. &#8220;Bundle A&#8221; does <strong>not</strong> have a dependency to &#8220;Bundle B&#8221;.</p>
<p>Bundle B contains an image and it should be loaded by a <em>ClassResource</em>. If you prepare a <em>ClassResource</em> for the image contained in &#8220;Bundle B&#8221;, but you do not pass a class contained in &#8220;Bundle B&#8221; to the <em>ClassResource</em>, OSGi is not able to load the image.</p>
<pre class="brush: java; title: ; notranslate">
new Image(&quot;&quot;, 
        new ClassResource(&quot;ImageInBundleB.png&quot;))
</pre>
<p>The reason is that <em>ClassResource</em> internally will use the classloader of the UI class. And this one does not have a dependency to &#8220;Bundle B&#8221;. And so the resource can not be loaded because it is not visible to the classloader.</p>
<hr />
<h2 style="text-align:left;"></h2>
<h2 style="text-align:left;">Using a BundleResource</h2>
<p>I prepared a BundleResource prototype. It is licensed under the Apache License and is available at the <a href="https://github.com/lunifera/lunifera-vaadin-examples/blob/master/org.lunifera.example.vaadin.osgi/org.lunifera.example.vaadin.osgi.bundleresource/src/org/lunifera/example/vaadin/osgi/bundleresource/BundleResource.java" target="_blank">Lunifera github repo</a>.</p>
<pre class="brush: java; title: ; notranslate">
new Image(&quot;&quot;, 
        new BundleResource(theBundle, 
        &quot;resources/ImageInBundleB.png&quot;))
</pre>
<p>The path to the resource is the path relative to the bundle. In this sample, the <em>&#8220;ImageInBundleB.png&#8221;</em> is located in a folder called &#8220;<em>resources&#8221;</em>.</p>
<p>Feel free to use the BundleResource for your own projects.</p>
<hr />
<h2 style="text-align:left;">Debugging</h2>
<p>If a resource could not be found by the &#8220;<em>ClassResource&#8221;</em>, one just has to debug the OSGi classloader. If you are using Equinox, take a look at</p>
<p class="p1"><em>org.eclipse.osgi.internal.loader.BundleLoader</em>. It is responsible to load the resource.</p>
<p class="p1">
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/06/18/osgi-and-vaadin-using-classresource/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<georss:point>48.192394 16.551806</georss:point>
		<geo:lat>48.192394</geo:lat>
		<geo:long>16.551806</geo:long>
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse EMF-Xtext &#8211; how to fix &#8220;feature &#8216;xmi&#8217; not found&#8221;</title>
		<link>https://floriansblog.wordpress.com/2015/06/11/eclipse-emf-xtext-how-to-fix-feature-xmi-not-found/</link>
					<comments>https://floriansblog.wordpress.com/2015/06/11/eclipse-emf-xtext-how-to-fix-feature-xmi-not-found/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Thu, 11 Jun 2015 09:57:03 +0000</pubDate>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[ecore]]></category>
		<category><![CDATA[emf]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[mwe2]]></category>
		<category><![CDATA[Vienna]]></category>
		<category><![CDATA[Xtext]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1598</guid>

					<description><![CDATA[Sometimes strange problems occur out of nowhere when running the MWE2-workflow for an Xtext Grammar. You are getting the exception &#8220;feature &#8216;xmi&#8217; not found&#8221; for ecore.ecore, ecore.genmodel,&#8230; We got bitten by that quite a few times. But there was a simple workaround for it: Create a new workspace with only the DSL based on the grammar in [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Sometimes strange problems occur out of nowhere when running the MWE2-workflow for an Xtext Grammar.</p>
<p>You are getting the exception &#8220;feature &#8216;xmi&#8217; not found&#8221; for ecore.ecore, ecore.genmodel,&#8230; We got bitten by that quite a few times. But there was a simple workaround for it: Create a new workspace with only the DSL based on the grammar in question and run the workflow there, and most probably things will work fine again. However, this didn&#8217;t help in all cases.</p>
<p>Yesterday in particular, even the &#8220;new workspace&#8221; approach did not resolve the problem. So we had to start debugging the MWE2-workflow based on two Xtext grammars. Grammar 1 worked fine, but grammar 2 crashed with the exception above.</p>
<p>After some toil, we could figure out that the properly running MWE2-workflow uses the SAXParser from <em>&#8220;com.sun.org.apache. xerces.internal.parsers.SAXParser&#8221;</em>, whereas the buggy MWE2-workflow somehow uses the <em>&#8220;org.apache.xerces.parsers.SAXParser&#8221;</em>.</p>
<p>With this in mind, it seems that the simplest workaround for that problem is to add the following to the VM arguments in the launch configuration of the MWE2 workflow:</p>
<blockquote><p>-Djavax.xml.parsers.SAXParserFactory=</p>
<p>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</p></blockquote>
<p>This property ensures that the proper SaxParser is used, and the problem does not occur anymore.</p>
<p>Best regards,</p>
<p>Klemens and Florian</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/06/11/eclipse-emf-xtext-how-to-fix-feature-xmi-not-found/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse DemoCamp &#8220;Mars&#8221; Vienna</title>
		<link>https://floriansblog.wordpress.com/2015/05/18/eclipse-democamp-mars-vienna/</link>
					<comments>https://floriansblog.wordpress.com/2015/05/18/eclipse-democamp-mars-vienna/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Mon, 18 May 2015 10:32:26 +0000</pubDate>
				<category><![CDATA[democamps]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[democamp]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[iotvienna]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Vienna]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1590</guid>

					<description><![CDATA[Lunifera GmbH and IoT-Vienna are organizing the Eclipse-DemoCamp &#8220;Mars&#8221; on 19.6 2015. With this event, we want to bring people and companies together to share their knowledge, experience with and about Eclipse. This meeting includes six Talks and a quick intro on the Eclipse Foundation’s role by Benjamin Cabé. Speakers Tom Schindl: Something cool TBD Werner Keil: Energie [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.lunifera.com/" target="_blank">Lunifera GmbH</a> and <a href="http://www.iot-vienna.at/website/doku.php?id=en:start&amp;redirect=1" target="_blank">IoT-Vienna</a> are organizing the Eclipse-<span class="il">DemoCamp</span> &#8220;<span class="il">Mars</span>&#8221; on <strong>19.6 2015</strong>.</p>
<p>With this event, we want to bring people and companies together to share their knowledge, experience with and about Eclipse. This meeting includes six Talks and a quick intro on the Eclipse Foundation’s role by Benjamin Cabé.</p>
<p>Speakers</p>
<ul>
<li>Tom Schindl: Something cool TBD</li>
<li>Werner Keil: Energie Sparen präzise Messwerte bei SmartHome und SmartGrid</li>
<li>Philip Langer: EMF Compare</li>
<li>Benjamin Cabé: IoT Talk</li>
<li>Florian Pirchner: OSGi-IoT-Vaadin</li>
</ul>
<p>We also provide catering, drinks, beer and cakes as usual.</p>
<p><strong>For details please visit <a href="http://edcvienna.org/#home" target="_blank">http://edcvienna.org/#home</a></strong></p>
<p>Hope to see you at the DemoCamp &#8220;Mars&#8221; Vienna&#8230;</p>
<p>Best,<br />
the DemoCamp organizers</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/05/18/eclipse-democamp-mars-vienna/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>
	</item>
		<item>
		<title>IoT: Industry 1.0 meets Business 4.0 &#8212; with Eclipse Paho</title>
		<link>https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/</link>
					<comments>https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Thu, 07 May 2015 14:38:29 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[Iot]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[Vienna]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1575</guid>

					<description><![CDATA[On the 9th of April (the &#8220;Global IoT Day&#8221;), we (Lunifera GmbH) co-organized a free IoT event in Vienna. With over 400 attendees, the Global IoT Day Event was a huge success &#8212; one of the biggest IoT events worldwide! But we not only took part in the organization and hosting of this awesome event: Of course, we [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>On the 9th of April (the &#8220;Global <a href="https://www.google.at/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=3&amp;cad=rja&amp;uact=8&amp;ved=0CDAQFjAC&amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInternet_of_Things&amp;ei=Za4rVY2iFofbaMTCgNgL&amp;usg=AFQjCNGnr9LwqjAVr9VyUI-oSCC4u0nHvg&amp;bvm=bv.90491159,d.d2s">IoT</a> Day&#8221;), we (Lunifera GmbH) co-organized a free IoT event in Vienna. With over 400 attendees, the <a href="http://www.iot-vienna.at/global-iot-day-event/2015/">Global IoT Day Event</a> was a huge success &#8212; one of the biggest IoT events worldwide!</p>
<p>But we not only took part in the organization and hosting of this awesome event: Of course, we just had to do a small demo project and present it &#8212; the Lunifera steam engine.</p>
<p>&#8220;Industry 4.0&#8221; is one of the hottest topics at the moment: The computerization of production processes and the use of connected intelligent devices in production seems to be the future of industrial production. Industry 4.0 will change the way we produce (and use and scrap and recycle) things profoundly. With this “fourth industrial revolution” gaining speed, we at Lunifera GmbH have been toying around with various ideas and concepts of integration between physical world, production and business processes and user interface for some time.</p>
<div>Our newest proof-of-concept project in this area is our steam engine (looking back to &#8220;Industry 1.0&#8221; that brought the use of steam engines): We bought a working toy steam engine, hooked up sensors to it and set up circuitry (using, among others, an Arduino Uno and a Raspberry Pi) that converts the sensor output to binary data. Then we use the Python incarnation of Eclipse Paho in order to transfer the measurement data across any networks so it can be used pretty much anywhere.</div>
<div></div>
<div>
<div data-shortcode="caption" id="attachment_1576" style="width: 460px" class="wp-caption alignnone"><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png"><img aria-describedby="caption-attachment-1576" loading="lazy" data-attachment-id="1576" data-permalink="https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/steamengine/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png" data-orig-size="1000,1087" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="steamengine" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=276" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=450" class="wp-image-1576 size-full" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=450&#038;h=489" alt="steamengine" width="450" height="489" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=450&amp;h=489 450w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=900&amp;h=978 900w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=138&amp;h=150 138w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=276&amp;h=300 276w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png?w=768&amp;h=835 768w" sizes="(max-width: 450px) 100vw, 450px" /></a><p id="caption-attachment-1576" class="wp-caption-text">Our steam engine: Heating the water in the boiler causes the pressure to rise (pressure sensor: top right). The steam is used to turn the wheel in the back (cyan rotation sensor above wheel). The temperature is measured by a PT1000 sensor (left side of boiler).</p></div>
<div data-shortcode="caption" id="attachment_1577" style="width: 460px" class="wp-caption alignnone"><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg"><img aria-describedby="caption-attachment-1577" loading="lazy" data-attachment-id="1577" data-permalink="https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/oszi/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg" data-orig-size="1000,563" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900F&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1426949619&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="oszi" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=450" class="wp-image-1577 size-full" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=450&#038;h=253" alt="oszi" width="450" height="253" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=450&amp;h=253 450w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=900&amp;h=507 900w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=150&amp;h=84 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=300&amp;h=169 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg?w=768&amp;h=432 768w" sizes="(max-width: 450px) 100vw, 450px" /></a><p id="caption-attachment-1577" class="wp-caption-text">The sensors turn the values of physical properties into voltage levels. We read these voltage levels and convert them into binary data.</p></div>
<p>Our next step was to transmit the pressure, temperature and RPM values that we measured from the physical engine to any listeners. According to our experience in the IoT area, the most flexible, reliable and easy-to-use solution for this is <a href="http://mqtt.org">MQTT</a>. Thus, we set up an MQTT broker and two MQTT clients (one client on the Raspberry Pi that gathers and interprets the measurement data, one on the machine with the business application). Using <a href="https://eclipse.org/paho/">Eclipse Paho</a> (the Python version on the Raspberry, the Java version on the PC), it took us about three minutes to set up the desired communication.</p>
<div data-shortcode="caption" id="attachment_1578" style="width: 460px" class="wp-caption alignnone"><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png"><img aria-describedby="caption-attachment-1578" loading="lazy" data-attachment-id="1578" data-permalink="https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/mqtt/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png" data-orig-size="1775,1526" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="mqtt" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=450" class="wp-image-1578 size-full" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=450&#038;h=387" alt="mqtt" width="450" height="387" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=450&amp;h=387 450w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=900&amp;h=774 900w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=150&amp;h=129 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=300&amp;h=258 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png?w=768&amp;h=660 768w" sizes="(max-width: 450px) 100vw, 450px" /></a><p id="caption-attachment-1578" class="wp-caption-text">The push-based communication in our demo project: Sensors S1 to S3 collect data, the Raspberry Pi interprets the values and transmits them to the MQTT broker. Whenever a new value arrives at the broker, it is forwarded to the other client that has registered before.</p></div>
<p>For our demo purposes, we integrated the measurement data into a simple web-based business application: We displayed the data right inside a business app by using <a href="http://vaadin.com">Vaadin</a> UI elements (various charts). In the future, it would be quite easy to integrate the values into additional complex representations such as augmented reality and so on.</p>
<div data-shortcode="caption" id="attachment_1579" style="width: 460px" class="wp-caption alignnone"><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png"><img aria-describedby="caption-attachment-1579" loading="lazy" data-attachment-id="1579" data-permalink="https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/steamengine_ui/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png" data-orig-size="2060,889" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="steamengine_ui" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=450" class="wp-image-1579 size-full" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=450&#038;h=194" alt="steamengine_ui" width="450" height="194" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=450&amp;h=194 450w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=900&amp;h=388 900w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=150&amp;h=65 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=300&amp;h=129 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png?w=768&amp;h=331 768w" sizes="(max-width: 450px) 100vw, 450px" /></a><p id="caption-attachment-1579" class="wp-caption-text">In our simple example, the measurement values are displayed in a web-based demo application. Integration into standard business applications and web pages would be straightforward.</p></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/05/07/iot-industry-1-0-meets-business-4-0-with-eclipse-paho/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine.png" medium="image">
			<media:title type="html">steamengine</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/oszi.jpg" medium="image">
			<media:title type="html">oszi</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/mqtt.png" medium="image">
			<media:title type="html">mqtt</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/steamengine_ui.png" medium="image">
			<media:title type="html">steamengine_ui</media:title>
		</media:content>
	</item>
		<item>
		<title>Vaadin &#038; OSGi: managing the classloader</title>
		<link>https://floriansblog.wordpress.com/2015/04/30/vaadin-osgi-managing-the-classloader/</link>
					<comments>https://floriansblog.wordpress.com/2015/04/30/vaadin-osgi-managing-the-classloader/#comments</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Thu, 30 Apr 2015 11:27:27 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Vienna]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1581</guid>

					<description><![CDATA[If you are using Vaadin with OSGi, you need to be aware of an issue related to http://dev.vaadin.com/ticket/15516: Vaadin changed the classloader that is used to load the UI-class. Before this change, the UI-class was loaded by the classloader of the servlet class. Now the &#8220;context class loader&#8221; is used to load it. So if you define [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If you are using <a href="http://vaadin.com" target="_blank">Vaadin</a> with <a href="http://www.osgi.org/Main/HomePage" target="_blank">OSGi</a>, you need to be aware of an issue related to <a href="http://dev.vaadin.com/ticket/15516" target="_blank">http://dev.vaadin.com/ticket/15516</a>:</p>
<p>Vaadin changed the classloader that is used to load the UI-class. Before this change, the UI-class was loaded by the classloader of the servlet class. Now the &#8220;context class loader&#8221; is used to load it.</p>
<p>So if you define your UI-class in the VaadinServlet by annotation, you will get a ClassNotFoundException.</p>
<p>It is pretty easy to fix that issue. The solution is to define the proper classloader in ServletService. Afterwards the UI-class can be loaded properly again.</p>
<pre class="brush: java; title: ; notranslate">
@SuppressWarnings(&quot;serial&quot;)
@VaadinServletConfiguration(ui = ECViewSampleUI.class, productionMode = false)
public class SimpleVaadinServlet extends VaadinServlet {
	@Override
	protected VaadinServletService createServletService(
			DeploymentConfiguration deploymentConfiguration)
			throws ServiceException {
		// see http://dev.vaadin.com/ticket/15516
		ServletService service = new ServletService(this,
				deploymentConfiguration);
		service.init();
		return service;
	}
}
</pre>
<p>This snippet shows an implementation of VaadinServlet.</p>
<p>It is used to</p>
<ol>
<li>define the UI-class by annotation</li>
<li>create a custom VaadinServletService to define the proper classloader.</li>
</ol>
<p>&nbsp;</p>
<pre class="brush: java; highlight: [9,10,11,12,13,14]; title: ; notranslate">
public class ServletService extends VaadinServletService {

	public ServletService(VaadinServlet servlet,
			DeploymentConfiguration deploymentConfiguration)
			throws ServiceException {
		super(servlet, deploymentConfiguration);
	}

	@Override
	public ClassLoader getClassLoader() {
		// return the bundle classloader
		// see http://dev.vaadin.com/ticket/15516
		return ServletService.class.getClassLoader();
	}
</pre>
<p>The highlighted lines in the ServletService ensure that a proper class loader &#8211; the classloader of the custom ServletService &#8211; is used to load the UI-class.</p>
<p>Things should work properly afterwards &#8230;</p>
<p>&nbsp;</p>
<p>Best,<br />
Florian Pirchner</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/04/30/vaadin-osgi-managing-the-classloader/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse-Databinding for Vaadin</title>
		<link>https://floriansblog.wordpress.com/2015/04/10/eclipse-databinding-for-vaadin/</link>
					<comments>https://floriansblog.wordpress.com/2015/04/10/eclipse-databinding-for-vaadin/#comments</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Fri, 10 Apr 2015 16:13:17 +0000</pubDate>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[databinding]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[Vienna]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1536</guid>

					<description><![CDATA[A while ago we (Lunifera GmbH) have implemented Eclipse-Databinding for Vaadin. Two different databinding approaches that perfectly work together. In this blog i&#8217;d like to talk about the two different ways of databinding and how these worlds can be tided together. Vaadin comes with an integrated databinding capability. Databinding in Vaadin means, that UI elements (components) [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A while ago we (Lunifera GmbH) have implemented Eclipse-Databinding for Vaadin. Two different databinding approaches that perfectly work together.</p>
<p>In this blog i&#8217;d like to talk about the two different ways of databinding and how these worlds can be tided together.</p>
<p>Vaadin comes with an integrated databinding capability. Databinding in Vaadin means, that UI elements (components) are bound to so called containers, items and properties. So the data of components can be abstracted from the component itself. But Vaadin defines no common way to bind these containers, items and properties to each other.</p>
<p>There the eclipse databinding comes into play. Eclipse databinding provides a common way to bind so called &#8220;observable values&#8221; to each other. An &#8220;observale value&#8221; is an abstraction above the &#8220;data related to its source&#8221;. Eclipse databinding comes with an implementation for POJOs, Beans (POJOs with PropertyChangeSupport), SWT-Widgets, JFace-Components, EObjects (Eclipse Modeling Framework &#8211; EMF) and the EMF-Edit-Commands. These implementations allow you to bind &#8220;observable values&#8221; from different domains (one of mentioned implementations) to each other.</p>
<p>In combination Vaadin databinding and Eclipse databinding are working properly together.</p>
<h2>Vaadin Databinding</h2>
<p>Vaadin databinding consists of 3 concepts for different use cases:</p>
<ul>
<li>Property &#8211; An abstraction for a type and value. Used to bind fields like TextField to the property</li>
<li>Item &#8211; A collection of properties. It represents a row in a table. Each property inside the item has a unique propertyID</li>
<li>Container &#8211; A collection of items. It represents a data-table. Each item inside the container has a unique itemID</li>
</ul>
<p>Property, Item and Container are expressed by interface. And Vaadin comes with a lot of proper implementations for different usecases.</p>
<p><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png"><img loading="lazy" data-attachment-id="1543" data-permalink="https://floriansblog.wordpress.com/2015/04/10/eclipse-databinding-for-vaadin/datamodel-sml/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png" data-orig-size="392,312" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="datamodel-sml" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=392" class=" size-medium wp-image-1543 aligncenter" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=300&#038;h=239" alt="datamodel-sml" width="300" height="239" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=300 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=150 150w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png 392w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><em>Image: <a href="https://vaadin.com/book/-/page/datamodel.html">&#8220;Book of Vaadin 8.1&#8221;</a> &#8211; Copyright 2015 Vaadin Ltd [1].</em></p>
<h3>Property</h3>
<pre class="brush: plain; title: ; notranslate">
// Create a property
ObjectProperty property =
    new ObjectProperty(&quot;Florian&quot;, String.class);
        
// Create a text field
TextField nameField = new TextField(&quot;Firstname&quot;);
        
// Bind nameField to data
nameField.setPropertyDataSource(property);
</pre>
<p><em>See also: <a href="https://vaadin.com/book/-/page/datamodel.properties.html">&#8220;Book of Vaadin 8.2.1&#8221;</a></em></p>
<p>As soon as the property is set to the field, you may use the property to read and write values.</p>
<h3>Item</h3>
<p>Dealing with items is really similar to properties.</p>
<pre class="brush: plain; title: ; notranslate">
PropertysetItem item = new PropertysetItem();
item.addItemProperty(&quot;firstName&quot;, new ObjectProperty(&quot;Florian&quot;));
item.addItemProperty(&quot;age&quot;, new ObjectProperty(36));
        
// create a form
Form form = new Form();
form.setItemDataSource(item);
</pre>
<p><em>See also: <a href="https://vaadin.com/book/-/page/datamodel.items.html">&#8220;Book of Vaadin 8.3.1&#8221;</a></em></p>
<p>In this case an item is prepared and set to a form. Forms are special components that show defined properties of the given item.</p>
<p>There are different ways to define items. The example above uses a PropertysetItem which allows you to define all properties manually. But there are also more comfortable way for pojos.</p>
<pre class="brush: plain; title: ; notranslate">
// Create an instance of the bean
Person bean = new Person();
        
// Create a bean item configured for type Person.class
BeanItem&lt;Person&gt; item = new BeanItem&lt;Person&gt;(bean);

// Set the item to the form
Form form = new Form();
form.setItemDataSource(item);
</pre>
<p><em>Sample: <a href="https://vaadin.com/book/-/page/datamodel.items.html">&#8220;Book of Vaadin 8.3.2&#8221;</a></em><br />
To automatically create an item for a bean, that holds each bean-property, you just may use the BeanItem.</p>
<h3>Container</h3>
<pre class="brush: plain; title: ; notranslate">
// set a personContainer to the table
Table table = new Table(&quot;Persons&quot;);
table.setContainerDataSource(personContainer);
</pre>
<p><em>See also: <a href="https://vaadin.com/book/-/page/datamodel.container.html">&#8220;Book of Vaadin 8.5&#8221;</a></em></p>
<p>For containers there is also a generic way to define the container properties (the columns of the container). And also a lot of very useful implementations like the <em>BeanContainer</em> or <em>BeanItemContainer</em>. Based on the <em>JPAContainer</em> you can connect your Vaadin components to JPA really quickly.</p>
<p><em>For details about BeanItemContainer see: <a href="https://vaadin.com/book/-/page/datamodel.container.html">&#8220;Book of Vaadin 8.5.4&#8221;</a></em></p>
<h2>Eclipse Databinding</h2>
<p>The Eclipse databinding follows a more general way and tries to abstract bindings in general.</p>
<p><a href="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png"><img loading="lazy" data-attachment-id="1547" data-permalink="https://floriansblog.wordpress.com/2015/04/10/eclipse-databinding-for-vaadin/unbenannte-zeichnung-1/" data-orig-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png" data-orig-size="611,301" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Unbenannte Zeichnung (1)" data-image-description="" data-image-caption="" data-medium-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=300" data-large-file="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=450" class=" size-medium wp-image-1547 aligncenter" src="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=300&#038;h=148" alt="Unbenannte Zeichnung (1)" width="300" height="148" srcset="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=300 300w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=600 600w, https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a>If you would like to use Eclipse databinding, you have to deal with some concepts.</p>
<ul>
<li>ObservableValue (ObservableList) &#8211; it is defined by an interface and is an abstraction above a data-endpoint.</li>
<li>UpdateValueStrategy &#8211; defines how source-to-target and target-to-source updates will be processed.</li>
<li>Binding &#8211; binds the observable values (or lists) to each other. BindingStrategy can be used.</li>
<li>DatabindingContext &#8211; It is a common state for all contained bindings.</li>
<li>Realm &#8211; It is responsible to synchronize updates with the environment</li>
</ul>
<h3>Observable Values</h3>
<p>Similar to the Vaadin databinding, an obervable value defines the type and value the instance deals with. The observable value knows how to access the underlying &#8220;target-element&#8221;. This &#8220;target-element&#8221; may be anything, as far there is an implementation for it. For now the&#8221;target-element&#8221; may be a pojo, a bean, an EObject, a SWT-widget,&#8230; The observable value will register all required listeners at the &#8220;target-element&#8221; to get notified about changes. If the value of the &#8220;target-element&#8221; is changed, then the &#8220;obervable value&#8221; will notify the Binding, which updates the value at the opposite side of the Binding.</p>
<h3>UpdateValueStrategy</h3>
<p>The UpdateValueStrategy may be used to define how values are updated.They can be defined for &#8220;source-to-target&#8221; and &#8220;target-to-source&#8221; updates. The UpdateValueStrategy is also responsible for data conversion.</p>
<p>It comes with 3 policies:</p>
<ul>
<li>POLICY_NEVER &#8211; Values in the &#8220;observable value&#8221; will never be transferred to the opposite end of the binding.</li>
<li>POLICY_ON_REQUEST &#8211;  Values in the &#8220;observable value&#8221; will only be transferred to the opposite end, if requested by a method call.</li>
<li>POLICY_UPDATE &#8211; If the &#8220;observable value&#8221; becomes notified about changes in the &#8220;target-element&#8221;, then the value will be automatically transferred to the opposite of the binding.</li>
</ul>
<h3 class="p1">ValueBinding</h3>
<p>The ValueBinding connects the Source-ObservableValue to the Target-ObservableValue according the UpdateValueStrategy-Policy. It also offers methods to validate and update model-to-target or target-to-model (Model is a synonym for Source) operations.</p>
<h3 class="p1">DatabindingContext</h3>
<p>The databinding context manages all bindings. Also List- and Set-Bindings. The granularity about the instances of DatabindingContexts depends on the underlying application. In general i would say, that all bindings that should be validated in a common context, should be added to the sames context. If you have different views as part of your system, each view may get its own context. But it depends on you.</p>
<h3 class="p1">Lifecycle</h3>
<p>When you are using Eclipse databinding, you need to be aware about its lifecycle. If a view is closed, a timeout occurs,&#8230; you must ensure, that the databinding context is #disposed(). There is a method for it. Otherwise the Vaadin components will receive value updates, even if the UI is already closed.</p>
<h3 class="p1">Realm</h3>
<p>For instance if you are doing a long running operation as an async operation in a different thread and you expect that the async operation updates your UI properly, you need a way to sync your UI with this thread. In SWT you have to update the UI in the SWT-Ui-Thread. In Vaadin you need to call UI#access(&#8230;).</p>
<p>The realm is specific for each databinding implementation. The source- and the target-observable-values may have their own Realm. So it would be possible to bind a SWT-UI to a Vaadin-UI. I never tried to do so, but i am pretty sure, that it will work properly.</p>
<h2>Eclipse-Databinding for Vaadin</h2>
<p>We have prepared an eclipse databinding implementation for Vaadin. You can find it in this <a href="https://github.com/lunifera/lunifera-runtime-web/tree/development/org.lunifera.runtime.web.vaadin.databinding" target="_blank">github-repo</a>. There is also a P2-Updatesite located here: <a href="http://lun.lunifera.org/downloads/p2/lunifera/luna/" target="_blank">Lunifera-P2-Repo</a>.</p>
<h3>Realm-Activation</h3>
<p>Before you create the DatabindingContext, you need to activate the Realm for VaadinDatabinding.</p>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();
</pre>
<p>Even if you would like to add new Bindings in a different Thread, you need to activate the realm. Otherwise databinding does not know anything about the current UI-instance.</p>
<p>In real projects you won&#8217;t have to call the activation on certain places again and again. So there is a perfect place to do so.</p>
<p>You have to override the <em>VaadinServletService</em> and add following method:</p>
<pre class="brush: plain; title: ; notranslate">
public UI findUI(VaadinRequest request) {
	UI instance = super.findUI(request);

	// activate the realm for the current ui and thread
	VaadinObservables.activateRealm(instance);

	return instance;
}
</pre>
<p>Then every time, Vaadin is looking for the current UI-instance, the realm will be activated automatically.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Examples</h3>
<p>Now lets start with some examples demonstrating how to use the eclipse databinding for Vaadin.</p>
<h4>1 Binding components &#8211;&gt; #value</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();
	
// Create the Vaadin components
TextField sourceField = new TextField();
sourceField.setImmediate(true);
Label targetField = new Label();
	
// Create the observable values
IObservableValue sourceOV = VaadinObservables.observeValue(sourceField);
IObservableValue targetOV = VaadinObservables.observeValue(targetField);

// bind the values to each other
dbc.bindValue(sourceOV, targetOV);
</pre>
<p>This sample binds the value of the textField to the value of the label. If the value of the textField changes, the label is updated.</p>
<h4>2 Binding components &#8211;&gt; #enabledState</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();

// Create the Vaadin components
CheckBox checkbox = new CheckBox();
checkbox.setImmediate(true);
TextField textField = new TextField();
		
// Create the observable values
IObservableValue sourceOV = VaadinObservables.observeValue(checkbox);
// observe the enabled state of the textfield
IObservableValue targetOV = VaadinObservables.observeEnabled(textField);

// bind the values to each other
dbc.bindValue(sourceOV, targetOV);
</pre>
<p>This sample binds the value of the checkBox to the enabled property of the textfield. If the checkbox is checked, then the textField is enabled. Otherwise it is disabled.</p>
<h4>3 Bind components to beans</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();

Person person = new Person();

// Create the text field
TextField textField = new TextField();
textField.setImmediate(true);

// Create the observable values
IObservableValue sourceOV = BeansObservables.observeValue(person, &quot;firstname&quot;);
IObservableValue targetOV = VaadinObservables.observeValue(textField);

// bind the values to each other
dbc.bindValue(sourceOV, targetOV);
</pre>
<p>This sample binds the &#8220;firstname&#8221;-property of the given bean to the value of the text. If the value of the textField or the value of the bean changes, then the change is updated at the opposite site.</p>
<h4>4 Reuse the Vaadin property</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();

Person person = new Person();

// Create the text field
TextField textField = new TextField();
textField.setImmediate(true);
textField.setPropertyDatasource(new ObjectDatasource());

// Create the observable values
IObservableValue sourceOV = BeansObservables.observeValue(person, &quot;firstname&quot;);
textField.setPropertyDataSource(new ObjectProperty&lt;String&gt;(&quot;&quot;, String.class));

// bind the values to each other
dbc.bindValue(sourceOV, targetOV);
</pre>
<p>In this sample, an ObjectProperty was set to the textField. The Vaadin databinding implementation internally tries to get the property datasource before binding. If it is available, then the property will be bound. Otherwise the field itself is bound. So it is your choice whether you want to work with properties or not.</p>
<h4>5 Bind the multiselection of table-1 to the input of table-2</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();

// Create the Vaadin components
Table table1 = new Table();
table1.setMultiSelect(true);
table1.setImmediate(true);
Table table2 = new Table();

// observe the multi selection
IObservableList table1OV = VaadinObservables.observeMultiSelectionAsList(table1, Person.class);
// observe the content
IObservableList table2OV = VaadinObservables.observeContainerItemSetContents(table2, Person.class);
	
// bind the values to each other
dbc.bindList(table1OV, table2OV);
</pre>
<p>This sample binds the multi-selection of table1 to the input of table2. So table2 shows the selected items of table1. Note, that this kind of binding uses ObservableLists.</p>
<p>&nbsp;</p>
<h4>6 Bind a table to a WritableList</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

// Create databinding context
DataBindingContext dbc = new DataBindingContext();

// create a table
Table table = new Table(&quot;Persons&quot;);
layout.addComponent(table);
table.setContainerDataSource(new BeanItemContainer&lt;Person&gt;(
			Person.class));
		
// create a writable list as model
final WritableList model = new WritableList();
		
// observe the table container content
IObservableList tableOV = VaadinObservables
		.observeContainerItemSetContents(table, Person.class);

// bind the lists to each other
dbc.bindList(model, tableOV);

// create a button to add records
Button button = new Button(&quot;Add person&quot;);
layout.addComponent(button);
button.addClickListener(new Button.ClickListener() {
	@Override
	public void buttonClick(ClickEvent event) {
		Person person = new Person();
		person.setName(&quot;My first name&quot;);
		person.setName2(&quot;Another name&quot;);
		person.setAge(43);
		person.setBirthday(new Date());
		model.add(person);
	}
});
</pre>
<p>This sample binds a WriteableList as a model to the container contents. If a Person is added to the model, the table will update it&#8217;s contents.<br />
The Button is used to add new records to the model.</p>
<h4>7 Bind a table to a nested list in a bean or pojo</h4>
<pre class="brush: plain; title: ; notranslate">
// Activate the realm
VaadinObservables.activateRealm(this);

final DataBindingContext dbc = new DataBindingContext();

// create a table
Table table = new Table(&quot;Persons&quot;);
layout.addComponent(table);
table.setContainerDataSource(new BeanItemContainer&lt;Person&gt;(Person.class));

// create the model
final Person father = createPerson(&quot;Father&quot;, 43);
father.addToChildren(createPerson(&quot;Child 1&quot;, 17));
father.addToChildren(createPerson(&quot;Child 2&quot;, 19));

// observe the table container content
IObservableList tableOV = VaadinObservables
		.observeContainerItemSetContents(table, Person.class);
// observe the nested children list
IObservableList childrenOV = BeansObservables.observeList(father,
		&quot;children&quot;, Person.class);

// bind the lists to each other
dbc.bindList(tableOV, childrenOV);

// create a button to add records
Button button = new Button(&quot;Add person&quot;);
layout.addComponent(button);
button.addClickListener(new Button.ClickListener() {
	@Override
	public void buttonClick(Button.ClickEvent event) {
		Person person = new Person();
		person.setName(&quot;Child 3&quot;);
		person.setAge(23);
		father.addToChildren(person);
		// Update the targets
		dbc.updateTargets();
	}
});
</pre>
<p>This sample binds a nested children list located in Person.class as a model to the container contents. The Button is used to add new records to the model.</p>
<p><strong>Attention:</strong> If a person is added to the children list of the bean, the table is not updated automatically. This happens since the PropertyChangeSupport does not really support notifications for changed collections. So you need to call <em>dbc.updateTargets()</em> or <em>binding.updateModelToTarget()</em>.<br />
If you are using the Eclipse Modeling Framework, then also changes in Sets and Lists are automatically transferred to the table, since EMF can deal with notifications for collection changes.</p>
<p><strong>Attention2:</strong> If the person bean does not provide PropertyChangeSupport, then you need to use <em>PojoObservables#observeList</em> to create the model observable.</p>
<h2> Conclusion</h2>
<p>With &#8220;Eclipse Databinding for Vaadin&#8221; can bind Vaadin components to other components, beans, pojos,&#8230; very quickly. The databinding implementation ensures, that values are treated properly. Using &#8220;Eclipse Databinding for Vaadin&#8221; developers can save a lot of lines of code.</p>
<p>See also</p>
<ul>
<li><a href="http://www.vogella.com/tutorials/EclipseDataBinding/article.html" target="_blank">JFace Data Binding &#8211; Tutorial</a> &#8211; by Vogella</li>
<li><a href="https://wiki.eclipse.org/index.php/JFace_Data_Binding" target="_blank">Eclipse Wiki</a> &#8211; JFace databinding</li>
</ul>
<p>The examples in these additional sources may also be used for the &#8220;Eclipse databinding for Vaadin&#8221;. The core concepts are always the same.</p>
<p>[1] <em> Copyright 2015 Vaadin Ltd</em>, licensed under a Creative Commons CC-BY-ND License version 2.0</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/04/10/eclipse-databinding-for-vaadin/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/datamodel-sml.png?w=300" medium="image">
			<media:title type="html">datamodel-sml</media:title>
		</media:content>

		<media:content url="https://floriansblog.wordpress.com/wp-content/uploads/2015/04/unbenannte-zeichnung-1.png?w=300" medium="image">
			<media:title type="html">Unbenannte Zeichnung (1)</media:title>
		</media:content>
	</item>
		<item>
		<title>OSGi, Vaadin and Apache Bean Validation (JSR303)</title>
		<link>https://floriansblog.wordpress.com/2015/03/18/osgi-vaadin-and-apache-bean-validation-jsr303/</link>
					<comments>https://floriansblog.wordpress.com/2015/03/18/osgi-vaadin-and-apache-bean-validation-jsr303/#comments</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Wed, 18 Mar 2015 16:35:12 +0000</pubDate>
				<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[Vaadin]]></category>
		<category><![CDATA[Florian Pirchner]]></category>
		<category><![CDATA[lunifera]]></category>
		<category><![CDATA[OSGi]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1529</guid>

					<description><![CDATA[Today I integrated javax.validation into Vaadin. Vaadin offers built-in support for it. But since I am using OSGi, I had to do it a bit differently. The idea was the following: register an instance of javax.validation.ValidatorFactory as an OSGi service write a Vaadin Validator that will consume this OSGi service And it was pretty fast. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today I integrated javax.validation into Vaadin. Vaadin offers built-in support for it. But since I am using OSGi, I had to do it a bit differently.</p>
<p>The idea was the following:</p>
<ol>
<li>register an instance of javax.validation.ValidatorFactory as an OSGi service</li>
<li>write a Vaadin Validator that will consume this OSGi service</li>
</ol>
<p>And it was pretty fast. It took me about 30 min and I was done:</p>
<h2>javax.validation.ValidatorFactory as an OSGi service</h2>
<p>Therefore I have created a bundle <em>org.lunifera.runtime.jsr303.validation</em>, put in an activator and registered the OSGi service.</p>
<pre class="brush: java; title: ; notranslate">
public class Activator implements BundleActivator {

	private ServiceRegistration&lt;ValidatorFactory&gt; registry;

	@Override
	public void start(BundleContext context) throws Exception {
		// provide the bean validation factory
		ValidatorFactory avf = Validation
				.byProvider(ApacheValidationProvider.class).configure()
				.buildValidatorFactory();

		registry = context.registerService(ValidatorFactory.class, avf, null);
	}

	@Override
	public void stop(BundleContext context) throws Exception {
		if (registry != null) {
			registry.unregister();
			registry = null;
		}
	}

}
</pre>
<h2>Prepare VaadinBeanValidator</h2>
<p>Vaadin comes with a <em>com.vaadin.data.Validator</em> implementation for JSR303 (bean validation) called <em>BeanValidator</em>. Since it is licensed under the Apache License v2, I copied the validator and changed the way how the implementation will get access to the validation factory.</p>
<pre class="brush: java; title: ; notranslate">
// access the OSGi service registry to get an instance of ValidatorFactory
BundleContext context = FrameworkUtil.getBundle(BeanValidationValidator.class)
		.getBundleContext();
ServiceReference&lt;ValidatorFactory&gt; ref = context.getServiceReference(ValidatorFactory.class);
javaxBeanValidatorFactory = context.getService(ref);
</pre>
<p>It was really fast and straightforward to combine Vaadin and OSGi for javax.validation.</p>
<h2>Available by P2</h2>
<p>If you would like to use the org.lunifera.runtime.jsr303.validation bundle, it is available the <a href="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest" target="_blank">Lunifera P2</a>.</p>
<p>The feature is called <em>org.lunifera.runtime.jsr303.validation &#8211; Lunifera runtime: javax.validation ValidationFactory provider</em>. And it is licensed under the EPL Eclipse Public License v1.</p>
<p>So feel free to use it&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/03/18/osgi-vaadin-and-apache-bean-validation-jsr303/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>
	</item>
		<item>
		<title>Hacking OSGi&#8217;s bundle resolving</title>
		<link>https://floriansblog.wordpress.com/2015/02/19/hacking-osgis-bundle-resolving/</link>
					<comments>https://floriansblog.wordpress.com/2015/02/19/hacking-osgis-bundle-resolving/#respond</comments>
		
		<dc:creator><![CDATA[Florian Pirchner]]></dc:creator>
		<pubDate>Thu, 19 Feb 2015 16:32:24 +0000</pubDate>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[EclipsePlanet]]></category>
		<category><![CDATA[OSGi]]></category>
		<guid isPermaLink="false">http://floriansblog.wordpress.com/?p=1524</guid>

					<description><![CDATA[Last week, we ran into troubles when deploying our system via Equinox P2: All of a sudden, our DSLs simply didn&#8217;t work after the installation of the system into a new Eclipse &#8211; the DSL projects didn&#8217;t request the Xtext nature, and Eclipse didn&#8217;t open the appropriate editor without displaying any error message. Big showstopper! A look [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Last week, we ran into troubles when deploying our system via Equinox P2: All of a sudden, our DSLs simply didn&#8217;t work after the installation of the system into a new Eclipse &#8211; the DSL projects didn&#8217;t request the Xtext nature, and Eclipse didn&#8217;t open the appropriate editor without displaying any error message. Big showstopper!</p>
<p>A look in the log revealed the following:</p>
<blockquote>
<pre id="comment_text_0" class="bz_comment_text">org.eclipse.e4.core.di.InjectionException: java.lang.LinkageError: <br>loader constraint violation: when resolving overridden method  <br>"org.eclipse.xtext.xbase.ui.contentassist.XbaseProposalProvider.getProposalFactory <br>(Ljava/lang/String;Lorg/eclipse/xtext/ui/editor/contentassist/ContentAssistContext;) <br>Lcom/google/common/base/Function;" the class loader (instance of  <br>org/eclipse/osgi/internal/loader/EquinoxClassLoader) of the current class,  <br>org/eclipse/xtext/xbase/ui/contentassist/XbaseProposalProvider, and its  <br>superclass loader  (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader),  <br>have different Class objects for the type com/google/common/base/Function  <br>used in the signature ...
</pre>
</blockquote>
<p>So the root of the problem were different versions of Google Guava (that contains com.google.common.base.Function). Of course, OSGi supports running multiple versions of bundles at once &#8211; which we do in our system since Sirius uses Guava 15 and Mylyn uses Guava 18. No problem so far!</p>
<h3>The problem</h3>
<p>The problem arose because Xtext is open to a wide range of Guava versions. Unfortunately, the Xtext bundles were not wired to one Guava version consistently, but randomly to one of the two (depending on the order of resolution). This introduced incompatibilities between Xtext bundles, which prevented the system from working.</p>
<div data-shortcode="caption" id="attachment_572" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.lunifera.com/wp/wp-content/uploads/2015/02/guava_clash.jpg"><img aria-describedby="caption-attachment-572" loading="lazy" class="wp-image-572 size-medium" src="https://i0.wp.com/www.lunifera.com/wp/wp-content/uploads/2015/02/guava_clash-300x212.jpg" alt="Wiring Xtext bundles to different Guava versions prevents Xtext from working." width="300" height="212" /></a><p id="caption-attachment-572" class="wp-caption-text">The problem: Xtext bundles were wired to different Guava versions, causing class loader problems within the Xtext class-space. (Click to enlarge)</p></div>
<h3></h3>
<h3>Searching for a way</h3>
<p>Now what can be done?</p>
<p>One possible solution for this would be employing the OSGi &#8220;uses&#8221;-directive (good explanation <a href="http://spring.io/blog/2008/10/20/understanding-the-osgi-uses-directive/" target="_blank">here</a>): This directive in the bundle headers of multi-bundle projects can ensure that the class space is consistent. The problem with this solution was that we would have had to fork Xtext in order to add the &#8220;uses&#8221;-directives. Since we are not (yet) ready and willing to do that, we reported a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=460001" target="_blank">bug</a> with Xtext. The good news is that the helpful guys over there reduced the likelihood of inconsistent bundle wiring by removing some reexports. The bad news: There is no waterproof solution at hand that will work in any case.</p>
<p>Maybe &#8211; just maybe &#8211; upgrading to Xtext 2.8 might have helped. With our complex system, this would have taken two weeks and forced the same migration on our customer. No good!</p>
<p>&nbsp;</p>
<h3>Breakthrough: Hacking OSGi</h3>
<p>So back to the planning table: What we want is to make sure that all Xtext bundles end up with the same version of Guava. So if we could influence the OSGi resolving process, we&#8217;d be fine! But to do that, the code that influences the resolving process needs to be loaded first &#8211; a chicken and egg problem: Who makes sure that the code that determines bundle resolution order is the first to be fired up?</p>
<p>A closer look at the OSGi specification showed us that there is a mechanism in place already: The Resolver Hook Service makes it possible to influence the resover&#8217;s decisions by writing a system extension to the OSGi framework.</p>
<p>After some research about the details of the Resolver Hook Service, we came up with a system bundle fragment that is called whenever a bundle wants its dependencies resolved. This fragment is given a list of possible candidates for the bundle wiring. Now we can kick out the older versions if a dependency can be resolved by more than one version of a bundle, so only the newest one remains. And voilà: All of Xtext ended up with Guava 18.</p>
<div data-shortcode="caption" id="attachment_573" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.lunifera.com/wp/wp-content/uploads/2015/02/enhanced.png"><img aria-describedby="caption-attachment-573" loading="lazy" class="wp-image-573 size-medium" src="https://i0.wp.com/www.lunifera.com/wp/wp-content/uploads/2015/02/enhanced-300x221.png" alt="The Resolver Hook Service makes it possible to ensure correct bundle wiring." width="300" height="221" /></a><p id="caption-attachment-573" class="wp-caption-text">Our solution: Using the Resolver Hook Service, we can influence the decisions made by the Resolver and control which bundles are used to satisfy dependencies of other bundles. (Click to enlarge)</p></div>
<p>&nbsp;</p>
<h3>Deploying the solution</h3>
<p>We still were faced with one minor problem: OSGi needs to be made aware of the system extension fragment at startup. Locally, this is no problem: One can either add &#8220;osgi.framework.extensions=&#8230;&#8221; to the $ECLIPSE_HOME/configuration/config.ini, to the vm section in the $ECLIPSE_HOME/eclipse.ini or pass it as an argument to the VM (‑Dosgi.framework.extensions=&#8230;).</p>
<p>But how to do this automatically during a P2 installation? Well, as Dennis Hübner put it:</p>
<blockquote><p>p2.inf is your friend</p></blockquote>
<p>Using a p2.inf located next to the feature.xml of the feature containing the bundle fragment, it is easy to update the $ECLIPSE_HOME/configuration/config.ini during the installation process. Yayy, it works!</p>
<p>&nbsp;</p>
<h3>Our code</h3>
<p>The code we came up with is available under the EPL. It can be found in our <a href="https://github.com/lunifera/lunifera-runtime/tree/development" target="_blank">lunifera-runtime</a> repo at Github (development branch, relevant folders: <a id="0d84b05b417cd66cdc4932ffa733ed28-9f16fb2949438288287297db2cd8367792c3fe6c" class="js-directory-link" title="org.lunifera.runtime.systemextension" href="https://github.com/lunifera/lunifera-runtime/tree/development/org.lunifera.runtime.systemextension">org.lunifera.runtime.systemextension</a> and <a id="181da9f27ddb62907cfc1c1c7bc6d1f3-3594fe777c03b056df1344c1dee9906c3f9da794" class="js-directory-link" title="org.lunifera.runtime.feature.resolverhooks" href="https://github.com/lunifera/lunifera-runtime/tree/development/org.lunifera.runtime.feature.resolverhooks">org.lunifera.runtime.feature.resolverhooks</a>).</p>
<p>&nbsp;</p>
<p>Originally posted at <a href="http://www.lunifera.com/wp/?p=571">Lunifera.com</a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://floriansblog.wordpress.com/2015/02/19/hacking-osgis-bundle-resolving/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6d613a68da3f4f83cf4454b6995d6dfbc955f8f86ae0a2460656b17216309328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">florianpi</media:title>
		</media:content>

		<media:content url="http://www.lunifera.com/wp/wp-content/uploads/2015/02/guava_clash-300x212.jpg" medium="image">
			<media:title type="html">Wiring Xtext bundles to different Guava versions prevents Xtext from working.</media:title>
		</media:content>

		<media:content url="http://www.lunifera.com/wp/wp-content/uploads/2015/02/enhanced-300x221.png" medium="image">
			<media:title type="html">The Resolver Hook Service makes it possible to ensure correct bundle wiring.</media:title>
		</media:content>
	</item>
	</channel>
</rss>
