<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Eclipse</title>
	<link>http://planeteclipse.org/planet/</link>
	<language>en</language>
	<description>Planet Eclipse - http://planeteclipse.org/planet/</description>

<item>
	<title>Rafael Chaves: Eclipse Modeling Day in Toronto</title>
	<guid isPermaLink="false">http://abstratt.com/blog/?p=162</guid>
	<link>http://abstratt.com/blog/2009/11/20/eclipse-modeling-day-in-toronto/</link>
	<description>&lt;p&gt;Last Wednesday I attended the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Eclipse Modeling Day in Toronto&lt;/a&gt;. Coming all the way from Victoria, I must have been the participant that came from farthest. Except, of course, those folks from SAP AG and Itemis that were presenting. But I was really glad to be there. I finally had the chance to chat and discuss about Eclipse and Modeling face to face with people like Simon Kaegi (server-side OSGi), Kenn Hussey (MDT UML2), Eike Stepper (CDO), Ed Merks and (fellow Brazilian) Marcelo Paternostro (EMF), Lynn Gayowski and Ian Skerret (Eclipse Foundation). It’s weird: I have been part of the Eclipse Modeling community since 2006 (and the larger Eclipse community since 2002), but had never actually met any of those folks before. Also amusing was that even though I worked for IBM Ottawa for quite a few years, my first time at the Toronto Lab was many years later as an ex-IBMer living on the West Coast.&lt;/p&gt;
&lt;p&gt;The presentations I attended were in general very good. I had seen Ed Merks’ opening presentation on the web before, but this time I could ask questions. I got a better understanding of Xtext (great presentation!), CDO, and the Query, Validation and Transaction frameworks, some technologies I am considering adopting in the near future. I had a first time contact with the Papyrus 2.0 vision, which might provide an opportunity for increasing adoption of the TextUML notation by integrating the &lt;a href=&quot;http://abstratt.com/textuml/&quot;&gt;TextUML Toolkit&lt;/a&gt; into a larger modeling environment. And I liked the idea of a discussion panel at the end.&lt;/p&gt;
&lt;p&gt;I had to catch a flight back home that same night, so I could not attend the Eclipse RT Day on the following day nor could I see any of the demos at the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Toronto&quot;&gt;DemoCamp&lt;/a&gt;. Speaking of which, I did manage to stay long enough to have a beer on the Foundation (thanks!), and chat with Christopher Nagy from &lt;a href=&quot;http://www.dexterra.com/&quot;&gt;Dexterra&lt;/a&gt;/Antenna Software, who made a quick ad hoc demo to Ian and myself of their Eclipse/GEF-based tool for authoring multiplatform mobile applications. Very impressive!&lt;/p&gt;
&lt;p&gt;As constructive criticism, I do agree with &lt;a href=&quot;http://eclipse-projects.blogspot.com/2009/11/how-to-improve-eclipse-x-day.html&quot;&gt;Bjorn&lt;/a&gt; that the format could use some tweaking. I sure had to miss some very promising presentations. Maybe with two presentation formats, a longer (for instance, 40-50 mins) and a shorter one (20-25 mins), we wouldn’t need two tracks. I am not sure presenters who came from Europe would have come had they had a shorter slot though. That being said, I was very satisfied with the event overall and am sincerely thankful to IBM Toronto for hosting the event, the Eclipse Foundation for organizing it, all the folks &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day/Session_Abstracts_Toronto&quot;&gt;presenting&lt;/a&gt; and the companies sponsoring them. Thank you very much! As Lawrence &lt;a href=&quot;http://eclipsetacy.blogspot.com/2009/11/eclipse-rt-day-toronto.html&quot;&gt;wrote&lt;/a&gt;, hope we will see more events like this in the future!&lt;/p&gt;</description>
	<pubDate>Sat, 21 Nov 2009 03:32:07 +0000</pubDate>
</item>
<item>
	<title>Birt World: Accessing Spring Beans from the BIRT Designer</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-14521551.post-3462683361680323868</guid>
	<link>http://birtworld.blogspot.com/2009/11/accessing-spring-beans-from-birt.html</link>
	<description>Recently I have described methods that can be used to access Spring Beans from the BIRT Engine.  These examples are intended to be illustrative and not comprehensive.  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2009/11/more-on-birt-and-spring.html&quot;&gt;More on BIRT and Spring&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2009/11/calling-spring-objects-from-birt.html&quot;&gt;Calling Spring Objects from BIRT Expressions and Event Handlers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In both of these examples I used the BIRT engine to retrieve Spring objects within the scripting environment.  In this post I am supplying an example that illustrates how to implement your own menu in the expression builder, so Spring objects can be called within the BIRT Designer.  This will allow you to test your report prior to deployment.&lt;br /&gt;&lt;br /&gt;In this post:&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2008/09/birt-231-adding-functions-to-expression.html&quot;&gt;BIRT 2.3.1 - Adding Functions to the Expression Builder&lt;/a&gt;&lt;br /&gt;I described how to implement the org.eclipse.birt.core.ScriptFunctionService.  The attached example is an implementation of this extension point.  When using this example the expression builder will appear as follows.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_GN1FyT5H8Kg/SwcumA2v_RI/AAAAAAAAAIQ/o0LXyHwFY6Q/s1600/expressionbuilder.PNG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_GN1FyT5H8Kg/SwcumA2v_RI/AAAAAAAAAIQ/o0LXyHwFY6Q/s320/expressionbuilder.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 278px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341108281113874&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice that there is now a SpringFunctions sub-category, which provides one method callBean.  This method takes a bean name and a method name and expects a returned string.  To keep the example simple no arguments are supported and the method must return a string.  The plugin.xml looks like the following:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_GN1FyT5H8Kg/Swcuu7yL_CI/AAAAAAAAAIY/2xUFGCB5rVU/s1600/ScriptFunctionService.PNG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_GN1FyT5H8Kg/Swcuu7yL_CI/AAAAAAAAAIY/2xUFGCB5rVU/s320/ScriptFunctionService.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 238px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341261538622498&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Provided with the example is a deployable J2EE application and the plugin that implements the ScriptFunctionService.  See the readme for details on setting up the example.  Also note that the deployable plugin is also attached in the example.  You will need to add this to your designer and your runtime.  This example works with both the Open Source BIRT designer and the Actuate BIRT designer.&lt;br /&gt;&lt;br /&gt;Also included is an example report with the following output.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_GN1FyT5H8Kg/Swcu57rt_1I/AAAAAAAAAIg/FOh08jmnF8I/s1600/output.PNG&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_GN1FyT5H8Kg/Swcu57rt_1I/AAAAAAAAAIg/FOh08jmnF8I/s320/output.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 128px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341450490052434&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This example is available at &lt;a href=&quot;http://www.birt-exchange.org/devshare/designing-birt-reports/1100-calling-spring-objects-from-the-expression-builder/#description&quot;&gt;Birt-Exchange&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14521551-3462683361680323868?l=birtworld.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Nov 2009 00:09:16 +0000</pubDate>
	<author>noreply@blogger.com (Jason Weathersby)</author>
</item>
<item>
	<title>Chris Aniszczyk: Movember – Day 20</title>
	<guid isPermaLink="false">http://aniszczyk.org/?p=1481</guid>
	<link>http://aniszczyk.org/2009/11/20/movember-day-20/</link>
	<description>&lt;p&gt;I am on day 20 of growing a moustache for &lt;a href=&quot;http://www.movember.com/&quot;&gt;Movember&lt;/a&gt;. I have decided to go against my stylist’s best wishes and help &lt;a href=&quot;http://eclipsesource.com/blogs/2009/10/31/come-on-eclipse-lets-grow-a-mo/&quot;&gt;raise money for prostate cancer research&lt;/a&gt; with my fellow &lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt; committers. We have raised over $2300 dollars so far! This week’s update includes a new &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=295192&quot;&gt;splash screen&lt;/a&gt; for Eclipse (thank you &lt;a href=&quot;http://eclipsesource.com/blogs/author/irbull/&quot;&gt;Ian Bull&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/splash.png&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/splash.png&quot; title=&quot;Movember Eclipse Splash Screen&quot; height=&quot;295&quot; width=&quot;455&quot; alt=&quot;Movember Eclipse Splash Screen&quot; class=&quot;alignnone size-full wp-image-1482&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As for my ’stache, here it is on day 20.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/movember-zx-day20.jpg&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/movember-zx-day20.jpg&quot; title=&quot;movember-zx-day20&quot; height=&quot;52&quot; width=&quot;242&quot; alt=&quot;movember-zx-day20&quot; class=&quot;alignnone size-full wp-image-1485&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Solid progress. Please &lt;a href=&quot;http://us.movember.com/mospace/295712/&quot;&gt;donate&lt;/a&gt;!&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 23:15:22 +0000</pubDate>
</item>
<item>
	<title>Ankur Sharma: source.&lt;library&gt; and output.&lt;library&gt;</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-5914783.post-3941216540037745332</guid>
	<link>http://blog.ankursharma.org/2009/11/source-and-output.html</link>
	<description>&lt;div style=&quot;text-align: justify;&quot;&gt;The source and output properties in build.properties control the folders to be compiled and where to place the resulting output. The &lt;a href=&quot;http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm&quot;&gt;eclipse help&lt;/a&gt; briefly talks about it.&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush: text&quot;&gt;    * source.&amp;lt;library&amp;gt; - lists source folders that will be compiled (e.g. source.xyz.jar=src/, src-ant/). If the library is specified in your plug-in.xml or manifest.mf, the value should match it;&lt;br /&gt;    * output.&amp;lt;library&amp;gt; - lists the output folder receiving the result of the compilation;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Source Folders and Output Folders&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Source and Output folder have already been discussed in &lt;a href=&quot;http://blog.ankursharma.org/2009/10/source-folders-and-srcincludes_11.html&quot;&gt;this&lt;/a&gt; post. Only the source folders gets compiled and the generated class files get stored in the corresponding output folder. A project can have one or more source folder. If a source folder does not have a output folder attached to it explicitly, its output will go to the default output folder. The &lt;code&gt;.classpath&lt;/code&gt; file stores all this information.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;source.. and output..&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The real syntax is source.&amp;lt;library&amp;gt; and output.&amp;lt;library&amp;gt; where &amp;lt;library&amp;gt; is generally the name of the jar. Here the second dot signifies the default library. Any source folder assigned to it gets it output reside in the root when the plug-in is build. The &lt;code&gt;output..&lt;/code&gt; entry tells the PDE Build where to pick the classes for &lt;code&gt;source..&lt;/code&gt; from. &lt;br /&gt;&lt;/div&gt;Typical entries look like this&lt;br /&gt;&lt;pre class=&quot;brush: text&quot;&gt;source.. = src/&lt;br /&gt;output.. = bin/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;When a plug-in with above entries is build the structure of the plug-in jar will look like this&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;org.example.sample_1.0.0&lt;br /&gt;│   plugin.xml&lt;br /&gt;│&lt;br /&gt;├───icons&lt;br /&gt;│       sample.gif&lt;br /&gt;│&lt;br /&gt;├───META-INF&lt;br /&gt;│       MANIFEST.MF&lt;br /&gt;│&lt;br /&gt;└───org&lt;br /&gt;    └───example&lt;br /&gt;        └───sample&lt;br /&gt;            │   Activator.class&lt;br /&gt;            │&lt;br /&gt;            └───actions&lt;br /&gt;                    SampleAction.class&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;More complex plug-ins have more than one source folder. org.eclipse.pde.core is one such plug-in. It is good practice to assign separate output folder for separate source folders. This is not mandatory.&lt;br /&gt;Lets assume &lt;code&gt;src&lt;/code&gt; and &lt;code&gt;src_an&lt;/code&gt; are the two source folders and their corresponding output folders are &lt;code&gt;bin&lt;/code&gt; and &lt;code&gt;bin_ant&lt;/code&gt;. Then a &lt;code&gt;build.properties&lt;/code&gt; like &lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush: text&quot;&gt;source.. = src/&lt;br /&gt;output.. = bin/&lt;br /&gt;source.ant_tasks/anttasks.jar = src_ant/&lt;br /&gt;output.ant_tasks/anttasks.jar = bin_ant/&lt;br /&gt;&lt;/pre&gt;will create a plug-in which will look something like this&lt;br /&gt;&lt;pre&gt;org.example.sample_1.0.0&lt;br /&gt;│   plugin.xml&lt;br /&gt;│&lt;br /&gt;├───ant_tasks&lt;br /&gt;│       anttasks.jar&lt;br /&gt;│&lt;br /&gt;├───icons&lt;br /&gt;│       sample.gif&lt;br /&gt;│&lt;br /&gt;├───META-INF&lt;br /&gt;│       MANIFEST.MF&lt;br /&gt;│&lt;br /&gt;└───org&lt;br /&gt;    └───example&lt;br /&gt;        └───sample&lt;br /&gt;            │   Activator.class&lt;br /&gt;            │&lt;br /&gt;            └───actions&lt;br /&gt;                    SampleAction.class&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The contents of the &lt;code&gt;src_ant&lt;/code&gt; folder will get compiled and jared in to &lt;code&gt;anttasks.jar&lt;/code&gt; inside &lt;code&gt;ant_tasks&lt;/code&gt; folder because of the &lt;code&gt;source.ant_tasks/anttasks.jar = src_ant/&lt;/code&gt; entry.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Classpath vs source/output entries&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The source folder and output folder information is already available in class path then why source/output entries are needed? The classpath entries are used to compile source code. But the PDE Build relies on the source/output entries while building (or exporting) the plug-ins. Suppose a plug-in A refers to a class C in plug-in B. Then while building the plug-in A PDE Build will look into &lt;code&gt;build.properties&lt;/code&gt; of plug-in B to locate the &lt;code&gt;C.class&lt;/code&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Rules of using source. and output. entries&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Every source folder should appear in a source. entry.&lt;/li&gt;&lt;li&gt;A source folder can appear in one and only one source. entry.&lt;/li&gt;&lt;li&gt;The source and output folders are specified as their path relative to the root of the project.&lt;/li&gt;&lt;li&gt;All source folders whose output folder is same should belong to same source. entry.&lt;/li&gt;&lt;li&gt;The corresponding output folders should be mentioned in the corresponding output.entry.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Note that &lt;i&gt;should&lt;/i&gt; in above rules means that rule is a good practice and not an obligation but if not followed the result of PDE Build might be unexpected.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5914783-3941216540037745332?l=blog.ankursharma.org&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 22:22:28 +0000</pubDate>
	<author>noreply@blogger.com (Ankur Sharma)</author>
</item>
<item>
	<title>Jeff McAffer: 20 days of Mommitting</title>
	<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3460</guid>
	<link>http://eclipsesource.com/blogs/2009/11/20/20-days-of-mommitting/</link>
	<description>&lt;p&gt;We’ve reached the 20th of Movember and its time for a progress report from this &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Eclipse Mommitter&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shaved in the ’stache earlier in the week&lt;/li&gt;
&lt;li&gt;Kids just could not stop laughing&lt;/li&gt;
&lt;li&gt;Wife would not look at me or kiss me&lt;/li&gt;
&lt;li&gt;After a week there has been some progress.&lt;/li&gt;
&lt;li&gt;The kids have finally stopped laughing (though now “pull the ’stache is the game of the day)&lt;/li&gt;
&lt;li&gt;Wife will kiss me but still can’t really look at me&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here, judge for yourself.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/IMG_0089_2-300x254.jpg&quot; title=&quot;Day 20 of Movember&quot; height=&quot;254&quot; width=&quot;300&quot; alt=&quot;Day 20 of Movember&quot; class=&quot;aligncenter size-medium wp-image-3461&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Its a little strange to be out in public with the new look. I spent much of the week on the road for the EclipseRT days in Austin and Toronto. Great events with lots of good people around. I particularly enjoyed that there were ample breaks between sessions and lots of good conversations. And it turns out that the whole Movember thing is a good ice-breaker. Even got a donation out of it! Valentin Baciu, another Mommitter of similar moustache design &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;donated&lt;/a&gt; more to the cause. Thanks! The &lt;a href=&quot;https://www.movember.com/ca/donate/your-details/team_id/44681&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Eclipse Mommitter team&lt;/a&gt; is up to $2200 now. Pretty good effort but we could always use more &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;donations&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 21:53:47 +0000</pubDate>
</item>
<item>
	<title>Chris Aniszczyk: Eclipse Project Proposal – Gemini</title>
	<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3457</guid>
	<link>http://eclipsesource.com/blogs/2009/11/20/eclipse-project-proposal-gemini/</link>
	<description>&lt;p&gt;A fan of &lt;a href=&quot;http://www.osgi.org&quot;&gt;OSGi&lt;/a&gt;? &lt;/p&gt;
&lt;p&gt;A fan of all things enterprise?&lt;/p&gt;
&lt;p&gt;Check this project &lt;a href=&quot;http://eclipse.org/proposals/gemini/&quot;&gt;proposal&lt;/a&gt; out at Eclipse…&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
This proposal recommends the creation of a new project called “Enterprise Modules”, nicknamed Gemini, to provide a home for subprojects that integrate existing Java enterprise technologies into module-based platforms, and/or that implement enterprise specifications on module-based platforms. Gemini will be a parent (”container project” as defined by the Eclipse Development Process) for several subprojects (”operating projects” as defined by the Eclipse Development Process) that provide the specific implementations/integrations. Gemini will itself be a subproject of the Eclipse Runtime Project and will strive to leverage functionality of existing projects. We encourage and request additional participation and input from any and all interested parties in the Eclipse community.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The future looks bright for &lt;a href=&quot;http://eclipse.org/rt/&quot;&gt;EclipseRT&lt;/a&gt; and OSGi.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 21:00:39 +0000</pubDate>
</item>
<item>
	<title>Lynn  Gayowski: The Ottawa “Beer &amp; ‘Staches” DemoCamp - Nov. 24</title>
	<guid isPermaLink="false">http://dev.eclipse.org/blogs/lynngo/?p=95</guid>
	<link>http://dev.eclipse.org/blogs/lynngo/2009/11/20/the-ottawa-beer-staches-democamp-nov-24/</link>
	<description>&lt;p&gt;After hosting a lively &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009&quot;&gt;DemoCamp&lt;/a&gt; in Toronto this past Wednesday, it’s time to prepare for the hometown event in Ottawa.  For those that have not signed up yet, we’re meeting Tuesday, November 24 at 7:00 pm.  Join fellow Eclipsers at Pub 101, 101 York St. (York &amp;amp; Dalhousie) for a steady stream of beverages, compliments of the Eclipse Foundation.  To register, just add your name to the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Ottawa&quot;&gt;DemoCamp wiki&lt;/a&gt; or send me a message.&lt;/p&gt;
&lt;p&gt;There will be a demo on EclipseRT by Jeff McAffer and one on OpenSocial Gadgets in Eclipse by Boris Bokoski.  Also, we can still add 2 to 3 more demos if you have something cool to present.&lt;/p&gt;
&lt;p&gt;If any added incentive is needed, at least 3 participants from the &lt;a href=&quot;http://ca.movember.com/mospace/team/&quot;&gt;Eclipse Mommitters&lt;/a&gt; team - Kevin Barnes, Kenn Hussey and Jeff McAffer - will be in attendance and you can check out the spectacular progress of their moustache-growing for charity.  Spoiler alert: By some weird synergy, they all seem to have selected “trucker” style.  Photo ops are sure to abound.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dev.eclipse.org/blogs/lynngo/files/2009/11/team.jpg&quot;&gt;&lt;img width=&quot;300&quot; alt=&quot;&quot; src=&quot;http://dev.eclipse.org/blogs/lynngo/files/2009/11/team-300x90.jpg&quot; class=&quot;aligncenter size-medium wp-image-96&quot; height=&quot;90&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 20:23:29 +0000</pubDate>
</item>
<item>
	<title>Lawrence Mandel: Eclipse RT Day Toronto</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-1593219853242657843.post-4570423038606026877</guid>
	<link>http://eclipsetacy.blogspot.com/2009/11/eclipse-rt-day-toronto.html</link>
	<description>Yesterday was Eclipse RT Day Toronto at the IBM Toronto Lab. For those who missed it, there is quite a lot going on the runtime space. (A number of the presentation slides are available on the &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day#Toronto&quot;&gt;Eclipse RT Day page&lt;/a&gt;.) My interest is currently in server side equinox. I've first started playing with this technology about two years ago and my current product, Rational Insight, recently released v1.0, which includes a server side equinox based component. The runtimes are really coming along nicely and have been stable and usable for some time. For me the big takeaways from the day are:&lt;br /&gt;&lt;br /&gt;1. The required ancillary features, like filter support for server side equinox, security, and provisioning have now been or are currently being addressed.&lt;br /&gt;2. Tool support is growing for Eclipse RT.&lt;br /&gt;&lt;br /&gt;This one day event was really great. The two tracks kept everyone together for most of the day, there was low overhead for me as this was in Toronto (and where I work no less), and there was only a single day commitment, which is much easier on my schedule than a multi-day conference. Thanks to everyone who came down from Ottawa and other places to present and participate. I hope to see more of these events in the future.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1593219853242657843-4570423038606026877?l=eclipsetacy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 19:32:55 +0000</pubDate>
	<author>noreply@blogger.com (Lawrence Mandel)</author>
</item>
<item>
	<title>EclipseLive: Upcoming Event: Reminder - Overview of the Eclipse Development Process for Committers</title>
	<guid isPermaLink="false">http://live.eclipse.org/837 at http://live.eclipse.org</guid>
	<link>http://live.eclipse.org/node/837</link>
	<description>Event Date: November 24, 2009 5:00 pm GMT-8&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;mailto:webinar-committers@eclipse.org?subject=Register me for the committers webinar&quot;&gt;Register Now&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   

&lt;div class=&quot;field field-type-text field-field-author&quot; id=&quot;author&quot;&gt;
  &lt;span class=&quot;field-item&quot;&gt;Wayne Beaton (Eclipse Foundation)&lt;/span&gt;
&lt;/div&gt;

&lt;div class=&quot;resource-icon&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/files/ECLP_webinar.gif&quot; border=&quot;0&quot; /&gt; &lt;/div&gt;  

&lt;div id=&quot;abstract&quot;&gt;
	&lt;span class=&quot;field-label&quot;&gt;Abstract:&lt;/span&gt;  
	&lt;div class=&quot;field field-type-text field-field-author&quot;&gt;
	  &lt;span class=&quot;field-item&quot;&gt;&lt;p&gt;The Eclipse Development Process (EDP) is a process that exists to help you and your project be successful. We start with a discussion of the principles that underlie the EDP and why they are important to you as a committer. We then discuss the various processes that are in place to ensure that principles are maintained. More specifically, this talk discusses how the EDP will help you reach out to your community of users and adopters. It includes heavy discussion of community development, openness, transparency, IP cleanliness and more.&lt;/p&gt;

&lt;p&gt;Total running time will be approximately 1 hour&lt;/p&gt;

&lt;p&gt;9:00 am PST / 12:00 pm EST / 5:00 pm GMT - &lt;a href=&quot;http://www.timeanddate.com/worldclock/fixedtime.html?month=11&amp;amp;day=24&amp;amp;year=2009&amp;amp;hour=17&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=0&quot; target=&quot;&quot;&gt;Convert to other time zones&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks to Adobe for contributing their Adobe Acrobat Connect product to host this webinar.&lt;br /&gt;
&lt;img src=&quot;http://live.eclipse.org/files/images/adobeconnect.jpg&quot; height=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;/span&gt;&lt;br /&gt;
	  &lt;span class=&quot;field-item&quot;&gt;&lt;a href=&quot;http://del.icio.us/post?url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Bookmark this post on del.icio.us.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/delicious.png&quot; alt=&quot;delicious&quot; /&gt; delicious&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Digg this post on digg.com.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/digg.png&quot; alt=&quot;digg&quot; /&gt; digg&lt;/a&gt; | &lt;a href=&quot;http://www.dzone.com/links/add.html?url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Tag this post on DZone.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/dzone.png&quot; alt=&quot;dzone&quot; /&gt; dzone&lt;/a&gt;&lt;/span&gt;
	&lt;/div&gt;
	
&lt;/div&gt;

&lt;div id=&quot;embedded&quot;&gt;
	  &lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 18:44:07 +0000</pubDate>
	<author>lynn.gayowski@eclipse.org (EclipseLive)</author>
</item>
<item>
	<title>Doug Schaefer: Chrome OS, it is what it is</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-16474715.post-4955735196306313291</guid>
	<link>http://cdtdoug.blogspot.com/2009/11/chrome-os-it-is-what-it-is.html</link>
	<description>I guess I got caught up in all the hype over Chrome OS. It's an idea I've bounced around for years as I mucked around learning about embedded Linux. Replace the standard Linux desktop UI with only a browser and throw it on a mobile device. With everything on the web these days, or at least a minimal amount to do something useful, why not?&lt;br /&gt;&lt;br /&gt;But I could never escape the idea that you had to have at least some local applications to do things when disconnected, or to take advantage of the CPU and graphics power using native tools for things like games and multimedia.&lt;br /&gt;&lt;br /&gt;So I downloaded a build of Chrome OS from gdgt.com to give it a try under VirtualBox. And, BTW, you got to love the tech community and how quickly they get activated when something cool comes along. While the release is about a year away, and the build shows it, you do get a sense of what Chrome OS, or Chromium OS which is it's proper name, is.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/Swbfp9JvxTI/AAAAAAAAABw/c_t_MhVmkf4/s1600/2009-11-20_1325.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/Swbfp9JvxTI/AAAAAAAAABw/c_t_MhVmkf4/s400/2009-11-20_1325.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt; You log in with your Google account and, bang, you're in the Chrome browser looking at your Google stuff.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/SwbgPoisR4I/AAAAAAAAAB4/bKpizjhIuZg/s1600/2009-11-20_1326.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/SwbgPoisR4I/AAAAAAAAAB4/bKpizjhIuZg/s400/2009-11-20_1326.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;But it is what it is. There's no application menu, no app market, or anything like that. Everything you do is over the web. I did notice an extensions mechanism, and maybe that's how you take advantage of the native environment, maybe not.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;When I had thought of a Web OS, this summer, my thoughts turned to the Eclipse Run-Time and using that in conjunction with the browser to have local apps written for the Eclipse platform. I would also think you'd want to launch 3D and multimedia content full screen, or something. But that's not what Chromium OS is. It's web or bust.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;So while Chromium OS is interesting, I'm way less excited about it. I think the door is still open for a netbook Linux platform that combines local native apps with the Web experience. Moblin is certainly making strides there for the consumer space. And I've been trying out the GNOME Shell which offers an experience much like Windows 7 for the power users. This story isn't finished yet.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/16474715-4955735196306313291?l=cdtdoug.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 18:43:16 +0000</pubDate>
	<author>noreply@blogger.com (Doug Schaefer)</author>
</item>
<item>
	<title>Bjorn Freeman-Benson: How to Improve Eclipse X Day</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-12783252.post-6886376998106934619</guid>
	<link>http://eclipse-projects.blogspot.com/2009/11/how-to-improve-eclipse-x-day.html</link>
	<description>&lt;div style=&quot;font-size: 70%; font-style: italic;&quot;&gt;Some people thought my previous post was too negative, so I am trying again: same ideas, different wording.&lt;/div&gt;&lt;br /&gt;I attended and spoke at &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Eclipse Modeling Day&lt;/a&gt; in New York. The speakers were all knowledgeable and sincere: my favorite was &quot;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day/Session_Abstracts#Building_DSLs_with_Xtext&quot;&gt;Building DSLs with XText&lt;/a&gt;&quot; by Heiko Behrens of itemis.&lt;br /&gt;&lt;br /&gt;I think these &lt;a href=&quot;http://eclipsesource.com/blogs/2009/11/19/eclipsert-day-austin-2009/&quot;&gt;Eclipse X Days&lt;/a&gt; and &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Paris&quot;&gt;Eclipse Demo Camps&lt;/a&gt; and other smaller, frequent, regional events are the way to go - I think the pendulum is swinging away from expensive centralized annual conferences.&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Along with the shift to local conferences is the shift away from powerpoint bullet presentations: in this era of ubiquitous information, there's no reason to go to a single location to watch presentations. You can &lt;a href=&quot;http://www.youtube.com/watch?v=OiIgYJ6mCZw&amp;amp;feature=related&quot;&gt;watch presentations&lt;/a&gt; at your desk, you can &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;read presentations&lt;/a&gt; on your iphone, ..., there's no shortage of &lt;a href=&quot;http://www.ted.com/&quot;&gt;great information&lt;/a&gt; available. People are going to a live presentation to do something other than what they can do at their computer.&lt;br /&gt;&lt;br /&gt;Thus the sole purpose of gathering people together at a Day or a Camp or a Conference is for &lt;span style=&quot;font-weight: bold;&quot;&gt;people to meet people&lt;/span&gt; and therefore the entire Day/Camp/Conference must be designed for maximal people meeting. Organizing for people meeting means that you wouldn't spread ten talks over two rooms because that splits the (already smallish) crowd into two. Two smaller sub-groups reduces the common experience base and thus reduces the hallway conversations... Etc. It's all about designing an experience for people to meet people.&lt;br /&gt;&lt;br /&gt;Shorter talks, single track, inducements to start conversations, ... that's what makes a great Day.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;font-size: 70%;&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; With the recent price increase and travel and hotel costs, EclipseCon will cost more than $3,000 to attend whereas New Yorkers could attend Modeling Day for $4 in subway fare.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-6886376998106934619?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 16:45:30 +0000</pubDate>
	<author>noreply@blogger.com (Bjorn Freeman-Benson)</author>
</item>
<item>
	<title>Lars Vogel: Poll – Default launch configuration for Eclipse plugin  / RCP development</title>
	<guid isPermaLink="false">http://www.vogella.de/blog/?p=1367</guid>
	<link>http://www.vogella.de/blog/2009/11/20/launch-configuration-consolelog/</link>
	<description>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;Eclipse shows errors during a launch via the log views in both the host and the target system and on the file system. In addition the developer can specify the flag “-consoleLog” in the launch configuration so see potential error messages in the console view. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=284704&quot;&gt;Bug 284704 &lt;/a&gt; had been opened asking if the “-consoleLog” flag could be included by default in a new launch configuration. &lt;/p&gt;
&lt;p&gt;What do you think? If you are a plugin or RCP developer please participate in the following survey:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;a href=&quot;http://www.surveymonkey.com/s.aspx?sm=5xQC1WSw_2bHjlqhjUdTeHRA_3d_3d&quot;&gt; Link to Survey &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;——————————&lt;br /&gt;
Please note that this is my first attempt using SurveyMonkey, I hope this works well. I believe the survey &lt;strong&gt;will close after the first 100 answers&lt;/strong&gt;. If this number has not reached I’m planning to close the survey next week &lt;strong&gt;27. Nov. 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 14:50:12 +0000</pubDate>
</item>
<item>
	<title>Holger Staudacher: Advanced Rich Ajax Platform Theming</title>
	<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3436</guid>
	<link>http://eclipsesource.com/blogs/2009/11/20/advanced-rap-theming/</link>
	<description>&lt;p&gt;As you may read in previous blogs we have adressed the RAP styling. Therefore we presented you the “big blocks” in form of the new &lt;a href=&quot;http://eclipsesource.com/blogs/2009/09/02/new-fancy-rich-ajax-platform-rap-theme/&quot; target=&quot;_blank&quot; title=&quot;RAP designs&quot;&gt;RAP designs&lt;/a&gt;. But there is still a difference between &lt;a href=&quot;http://www.eclipse.org/rap/&quot; target=&quot;_blank&quot; title=&quot;Eclipse RAP&quot;&gt;RAP&lt;/a&gt; and other cool &lt;a href=&quot;http://en.wikipedia.org/wiki/Category:Rich_Internet_application_frameworks&quot; target=&quot;_blank&quot; title=&quot;RIA frameworks&quot;&gt;RIA technologies&lt;/a&gt; i.e. like &lt;a href=&quot;http://www.extjs.com/&quot; target=&quot;_blank&quot; title=&quot;ExtJS&quot;&gt;ExtJS&lt;/a&gt;, &lt;a href=&quot;http://www.adobe.com/products/flex/&quot; target=&quot;_blank&quot; title=&quot;Adobe Flex&quot;&gt;Flex&lt;/a&gt; or &lt;a href=&quot;http://qooxdoo.org/&quot; target=&quot;_blank&quot; title=&quot;qooxdoo&quot;&gt;qooxdoo&lt;/a&gt;. When you take a look at the demos of these frameworks they all come along with cool styled widgets out of the box. Take a look at the screenshots below to see what I mean.&lt;/p&gt;
&lt;div style=&quot;width: 193px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_3437&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/ext_js.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/ext_js.png&quot; title=&quot;ExtJS Combobox&quot; height=&quot;154&quot; width=&quot;183&quot; alt=&quot;ExtJS Combobox&quot; class=&quot;size-full wp-image-3437&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;ExtJS Combobox&lt;/p&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_3438&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/flex.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/flex-300x57.png&quot; title=&quot;Flex buttons&quot; height=&quot;57&quot; width=&quot;300&quot; alt=&quot;Flex buttons&quot; class=&quot;size-medium wp-image-3438&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Flex buttons&lt;/p&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_3439&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/qooxdoo.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/qooxdoo-300x45.png&quot; title=&quot;qooxdoo buttons&quot; height=&quot;45&quot; width=&quot;300&quot; alt=&quot;qooxdoo buttons&quot; class=&quot;size-medium wp-image-3439&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;qooxdoo buttons&lt;/p&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Now lets take a look at the &lt;a href=&quot;http://www.eclipse.org/rap/demos.php&quot; target=&quot;_blank&quot; title=&quot;RAP demos&quot;&gt;RAP widgets&lt;/a&gt; and how they are styled out of the box:&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_3441&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rapOld.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rapOld-300x236.png&quot; title=&quot;RAP default widgets&quot; height=&quot;236&quot; width=&quot;300&quot; alt=&quot;RAP default widgets&quot; class=&quot;size-medium wp-image-3441&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;RAP default widgets&lt;/p&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;As you may see, there is a little difference between the Flex, ExtJS, qooxdoo and the RAP widgets. RAP looks almost like Windows 95. This cannot be the way RAP presents itself to the world because RAP is a modern and cool technology for &lt;a href=&quot;http://www.eclipse.org/rap/introduction.php&quot; target=&quot;_blank&quot; title=&quot;How RAP works&quot;&gt;building full featured RIAs&lt;/a&gt;. For that reason we spent some effort to show you how RAP can look like:&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_3442&quot;&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rapNew.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rapNew-300x255.png&quot; title=&quot;Modern RAP theming&quot; height=&quot;255&quot; width=&quot;300&quot; alt=&quot;Modern RAP theming&quot; class=&quot;size-medium wp-image-3442&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Modern RAP theming&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;From my point of view these widgets have a really fresh look and are fully competitive against all the Flex, ExtJS and qooxdoo widgets. This styling is done via &lt;a href=&quot;http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.rap.help/help/html/advanced/theming.html&quot; target=&quot;_blank&quot; title=&quot;RAP widget theming&quot;&gt;theming&lt;/a&gt; and by using the &lt;a href=&quot;http://www.eclipse.org/rap/noteworthy/news_13M1.php#RWT&quot; target=&quot;_blank&quot; title=&quot;Theming features&quot;&gt;new theming features&lt;/a&gt; like gradients and rounded corners heavily. &lt;strong&gt;We plan to set this theme as the default theme for RAP 1.3&lt;/strong&gt; which will be released within the &lt;a href=&quot;http://wiki.eclipse.org/Helios&quot; target=&quot;_blank&quot; title=&quot;Eclipse Helios&quot;&gt;Helios release train&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But there is no reason to wait. &lt;strong&gt;You can use the theme right now&lt;/strong&gt;. All you have to do is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check out the latest and hottest &lt;a href=&quot;http://eclipsesource.com/blogs/2009/11/16/eclipse-rap-1-3-m3-hits-the-road/&quot;&gt;RAP Milestone&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Edit your branding to use the new themes. Set the theme id to &lt;code&gt;org.eclipse.rap.design.example.business.theme&lt;/code&gt; for the business theme or to &lt;code&gt;org.eclipse.rap.design.example.fancy.theme&lt;/code&gt; for the fancy theme.&lt;/li&gt;
&lt;li&gt;Start your application and enjoy the fresh and modern look of you widgets.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Please note that not all widgets are themed right now, but more than 80% of the widgets have the new look allready. If you have feedback for the theme please let us know by using the &lt;a href=&quot;http://www.eclipse.org/rap/support.php#newsgroup&quot; target=&quot;_blank&quot; title=&quot;RAP Newsgroup&quot;&gt;newsgroup&lt;/a&gt; or by leaving a comment.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 13:08:24 +0000</pubDate>
</item>
<item>
	<title>Eclipse Enthusiasts Poznań: Eclipse Demo Camp in Poznań</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-3691419744299351480.post-7590137065453054295</guid>
	<link>http://eclipser-blog.blogspot.com/2009/11/eclipse-demo-camp-in-poznan.html</link>
	<description>This year Eclipse DemoCamp will be hosted at Poznan University of Technology.&lt;br /&gt;&lt;br /&gt;Please refer to details &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Pozna%C5%84#Lectures&quot;&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check out our special guest!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3691419744299351480-7590137065453054295?l=eclipser-blog.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 09:47:25 +0000</pubDate>
	<author>noreply@blogger.com (Christopher Daniel)</author>
</item>
<item>
	<title>Sven Efftinge: Xtext in the automotive industry</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-7646231212825894582</guid>
	<link>http://blog.efftinge.de/2009/11/xtext-in-automotive-industry.html</link>
	<description>&lt;a href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s1600-h/P90053936.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s400/P90053936.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 267px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5403251799656092482&quot; /&gt;&lt;/a&gt;At this year's &lt;a href=&quot;http://www.blogger.com/www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; there was a &lt;a href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=988&quot;&gt;very nice Xtext-related talk&lt;/a&gt; given by &lt;a href=&quot;https://www.xing.com/profile/Sebastian_Benz5&quot;&gt;Sebastian Benz&lt;/a&gt; who is working at BMW Car IT.&lt;br /&gt;The talk was about how they used &lt;a href=&quot;http://www.xtext.org/&quot;&gt;Xtext&lt;/a&gt; in order to develop a textual syntax and corresponding IDE for the &lt;a href=&quot;http://www.autosar.org/&quot;&gt;AUTOSAR&lt;/a&gt; standard. The name of the project is ARText and it is freely available to all AUTOSAR members as part of the &lt;a href=&quot;http://www.artop.org/&quot;&gt;Artop project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One of the biggest challenges when implementing the AUTOSAR standard is to create scalable solutions. AUTOSAR projects might become very, very big and in order to work with such huge projects the tools need to perform very well. In the modeling world people usually strife for repository-based (i.e. database-based) solutions as soon as projects get really big. However, the folks at BMW Car IT wanted to develop AUTOSAR projects in a traditional text-based manner and given all the good experiences with tools like JDT or IntelliJ, it's clear that text-based IDEs can scale very well.&lt;br /&gt;&lt;br /&gt;In order to implement the language they first had tried the old Xtext version from oAW, which was way too slow. Then, later, when the new &lt;a href=&quot;http://www.eclipse.org/Xtext&quot;&gt;TMF Xtext&lt;/a&gt; came around they gave it another try and saw that the performance had been improved significantly. Sebastian showed the following slide in his talk:&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s1600/performance.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s400/performance.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406107930708779442&quot; /&gt;&lt;/a&gt;After that he explained how they have solved a couple of other problems, such as supporting different releases of the standard or making the language extendable. All the solutions looked very nice, they must have some very skilled people at BMW Car IT.&lt;br /&gt;&lt;br /&gt;He compared working with the state-of-the-art commercial graphical modeling tool (What's the name of it?) and the ARText IDE and found that the use of ARText reduces development time by about 40%.&lt;br /&gt;&lt;br /&gt;In the end there was this nice summary slide I don't want to withhold:&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s1600/summary.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s400/summary.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406108360728174690&quot; /&gt;&lt;/a&gt;It was a very nice talk and of course a pleasure to see that Xtext is used by such smart people in such an interesting environment. And even better it seems that they've had as much fun using Xtext as we had and still have when developing (and using) it. :-)&lt;br /&gt;&lt;br /&gt;Btw.: If you have &lt;a href=&quot;http://blog.efftinge.de/2009/09/xtext-in-wind-energy.html&quot;&gt;other interesting applications&lt;/a&gt; of Xtext or Eclipse Modeling in general, please contact me. (Even if you don't want me to blog about it ;-))&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/24248206-7646231212825894582?l=blog.efftinge.de&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 09:03:54 +0000</pubDate>
	<author>noreply@blogger.com (Sven Efftinge)</author>
</item>
<item>
	<title>Dave Carver: Individuals 149, IBM 132</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-1585332946379204379.post-8663238745444109871</guid>
	<link>http://intellectualcramps.blogspot.com/2009/11/individuals-149-ibm-132.html</link>
	<description>&lt;a href=&quot;http://3.bp.blogspot.com/_KrN73FFeGok/SwXnpD0fb5I/AAAAAAAAAL8/Cvo5WJGlBS0/s1600/CompanyCommitters.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_KrN73FFeGok/SwXnpD0fb5I/AAAAAAAAAL8/Cvo5WJGlBS0/s400/CompanyCommitters.png&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 199px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5405981620314271634&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://dash.eclipse.org/dash/commits/web-app/commit-count-loc.php?sortBy=activecommitters&amp;amp;show=&quot;&gt;Dash Company Committer Stats&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Note: As Nick rightly points out in the comments, Dash is really a suite of related projects to help the community.  The stats shown above are only a small part of that suite.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It looks like for the first time in a while that IBM may not have the most active committers at eclipse.  It looks like the&lt;span style=&quot;font-weight: bold;&quot;&gt; Individuals&lt;/span&gt; will over take them this year.    Unfortunately I can't compare this to prior years numbers as the site is very slow, but it is a good sign that we have so many individuals committing at eclipse.     Personally, I take the &lt;a href=&quot;http://www.eclipse.org/dash&quot;&gt;DASH&lt;/a&gt; stats with a grain of salt.  Mainly because it is very easy to manipulate the total &lt;span style=&quot;font-style: italic;&quot;&gt;Lines of Code&lt;/span&gt; metric.    My own stats for the &lt;a href=&quot;http://www.starstandard.org/&quot;&gt;STAR Organization&lt;/a&gt; are probably over blown.  I know I haven't written that many lines of code.   Most of that has to come from the work with the PsychoPath processor, and creating the necessary test suite based on the W3C test suite for XQuery.   Much of that test suite code though I generated using XSLT and then tweaked as necessary.&lt;br /&gt;&lt;br /&gt;DASH is one of those projects I don't think the community takes advantage of enough. You can use DASH for all sorts of things.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Who is a commiter on what project&lt;/li&gt;&lt;li&gt;Is a person really a committer.&lt;/li&gt;&lt;li&gt;How active of a committer are they from a code stand point.&lt;/li&gt;&lt;li&gt;What projects do they have commit rights to.&lt;/li&gt;&lt;li&gt;What companies are contributing committers.&lt;/li&gt;&lt;li&gt;How active are those committers.&lt;/li&gt;&lt;/ul&gt;All of this is available through DASH.&lt;br /&gt;&lt;br /&gt;Stats and Metrics are interesting, depending on how you sort and play with the numbers, they can either back up your stance, or be used against you.     What does DASH say about you and your company?  Or what can you make it say?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1585332946379204379-8663238745444109871?l=intellectualcramps.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 20 Nov 2009 01:57:49 +0000</pubDate>
	<author>noreply@blogger.com (David Carver)</author>
</item>
<item>
	<title>Scott Lewis: ECF provides some additional REST</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-20358640.post-5881425678804664588</guid>
	<link>http://eclipseecf.blogspot.com/2009/11/ecf-provides-some-additional-rest.html</link>
	<description>ECF was very fortunate to have &lt;a href=&quot;http://wiki.eclipse.org/Google_Summer_of_Code_ECF_Projects_for_2009&quot;&gt;4 Google Summer of Code projects&lt;/a&gt; coming out of the summer of 2009.  All of these innovative codebases will make it into ECF itself...and more importantly we have gained several excellent new committers.  &lt;br /&gt;&lt;br /&gt;Coming out of the GSOC project, we've just finished a major refactoring of the &lt;a href=&quot;http://wiki.eclipse.org/REST_abstraction_for_ECF&quot;&gt;REST API&lt;/a&gt;, to make it simpler, smaller, as well as better integrated with &lt;a href=&quot;http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API&quot;&gt;ECF remote services&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;The integration with ECF remote services is particularly interesting, because it provides both proxy-based/synchronous invocation, as well as full support for asynchronous invocation patterns (i.e. asynchronous-with-listener-callback and &lt;a href=&quot;http://en.wikipedia.org/wiki/Futures_and_promises&quot;&gt;futures&lt;/a&gt;).  With the integration with ECF remote services, the choice of synchronous/asynchronous invocation comes for &lt;span style=&quot;font-weight: bold;&quot;&gt;free&lt;/span&gt; for all REST-based remote services.  See &lt;a href=&quot;http://wiki.eclipse.org/REST_abstraction_for_ECF&quot;&gt;here&lt;/a&gt; to get the REST projects and use the API.  &lt;br /&gt;&lt;br /&gt;We are working on example code, and invite contributions from community members to this effort...so that we can continuously improve/simplify the API through community feedback, as well as get a wide range of example code and documentation from existing and new REST-based services.  See the &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/ecf-dev&quot;&gt;ecf-dev mailing list&lt;/a&gt; for feedback/discussion/coordination.&lt;br /&gt;&lt;br /&gt;The current test code uses the popular Twitter REST API...as an example of using the API to interoperate with non-OSGi, non-Eclipse, perhaps non-Java web service (I don't know/care how the Twitter service is actually implemented...which is what protocol-level interoperability is about).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/20358640-5881425678804664588?l=eclipseecf.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 Nov 2009 18:10:34 +0000</pubDate>
	<author>noreply@blogger.com (Scott Lewis)</author>
</item>
<item>
	<title>Chris Aniszczyk: EclipseRT Day Austin 2009</title>
	<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3425</guid>
	<link>http://eclipsesource.com/blogs/2009/11/19/eclipsert-day-austin-2009/</link>
	<description>&lt;p&gt;A couple days ago, I had the pleasure of attending and speaking at &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day#Austin&quot;&gt;EclipseRT Day&lt;/a&gt; in sunny Austin, Texas. The day started off with Jeff McAffer speaking about building component based applications using OSGi and EclipseRT.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/eclipsertday1-300x225.jpg&quot; title=&quot;EclipseRT Day Austin&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;EclipseRT Day Austin&quot; class=&quot;alignnone size-medium wp-image-3426&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From my point of view, the audience took a liking to the &lt;a href=&quot;http://wiki.eclipse.org/Toast&quot;&gt;Toast&lt;/a&gt; example that Jeff used to describe &lt;a href=&quot;http://www.eclipse.org/rt&quot;&gt;EclipseRT&lt;/a&gt;. There’s something to be said about a consistent example that people can grab the source and build upon themselves.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/Toast_Picture2.png&quot; title=&quot;Toast EclipseRT&quot; height=&quot;386&quot; width=&quot;242&quot; alt=&quot;Toast EclipseRT&quot; class=&quot;alignnone size-full wp-image-3428&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The next talk I attended was by Austin Riddle and Cole Markham from the &lt;a href=&quot;http://tcat.tamu.edu/&quot;&gt;Texas Center for Applied Technology&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/eclipsertday2-300x225.jpg&quot; title=&quot;EclipseRT Day Austin&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;EclipseRT Day Austin&quot; class=&quot;alignnone size-medium wp-image-3427&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was blown away by what these folks were doing with EclipseRT technology. From bio-surveillance tracking, preventing and managing the spread of animal disease to monitoring coastal waters off the United States. On top of that, they created a platform for building simulation and information dashboards using the Eclipse &lt;a href=&quot;http://www.eclipse.org/rap&quot;&gt;Rich Ajax Platform&lt;/a&gt; (RAP). Their story of Eclipse technology usage was oh so familiar. At first, they started as humble Eclipse IDE users. Then they started to create some useful applications on top of Eclipse RCP. Then they started to use other technologies from the Eclipse stack. Then they noticed that they could build a platform for their domain using Eclipse technologies.&lt;/p&gt;
&lt;p&gt;Afterward, I had the opportunity to talk about the Rich Ajax Platform (RAP) and the topic of single-sourcing. It seems people were very receptive about the idea to develop rich and web clients from a single code base. It’s an attractive proposition when you can reuse your existing set of skills and tools to build applications for different runtime environments. There were some concerns about scalability, but the RAP team is actively working on &lt;a href=&quot;http://eclipsesource.com/blogs/2008/10/22/performance-testing-rap-on-the-cloud/&quot;&gt;improving performance issues and making performance results available&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Brett Hackleman from &lt;a href=&quot;http://www.bandxi.com/&quot;&gt;Band XI&lt;/a&gt; presented about how they were leveraging EclipseRT and OSGi in the embedded device world over the course of a dozen projects in the defense, heavy equipment, industrial automation and automotive domains. It’s cool to see OSGi used in the embedded space along with the custom SWT widgets they came up with for their domain.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/bandxi-300x178.png&quot; title=&quot;Custom SWT Widgets&quot; height=&quot;178&quot; width=&quot;300&quot; alt=&quot;Custom SWT Widgets&quot; class=&quot;alignnone size-medium wp-image-3430&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mike Masterson from IBM spoke about how Lotus had to reinvest in their portfolio, including the &lt;em&gt;20-year young&lt;/em&gt; Notes platform. Lotus decided to use EclipseRT as the base of their Notes platform which unified their client strategy and allows them to foster a rich partner ecosystem through the extensibility that EclipseRT provides. Lotus users can easily extend their Notes experience via widgets that &lt;a href=&quot;http://www.ibm.com/developerworks/lotus/library/notes8-widgets/&quot;&gt;developers can write&lt;/a&gt; using EclipseRT technology.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/noteswidgets-300x173.jpg&quot; title=&quot;Notes Widgets&quot; height=&quot;173&quot; width=&quot;300&quot; alt=&quot;Notes Widgets&quot; class=&quot;alignnone size-medium wp-image-3433&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the whole, I thought the event was fantastic. The talks were great and having the opportunity to meet new people that are building on Eclipse technologies is always fun. I can only hope the Eclipse Foundation puts on more events like this in the future. The more opportunity we have for everyone to interact with each other in person within the Eclipse community is a great thing.&lt;/p&gt;</description>
	<pubDate>Thu, 19 Nov 2009 17:57:05 +0000</pubDate>
</item>
<item>
	<title>Chris Aniszczyk: Software Versioning is Ridiculous</title>
	<guid isPermaLink="false">http://aniszczyk.org/?p=1376</guid>
	<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/</link>
	<description>&lt;p&gt;Alright, I have to vent and go on a diatribe as its been awhile.&lt;/p&gt;
&lt;p&gt;I was in the process of updating my iPhone and was greeted with these updates.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/iphone.jpg&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/iphone-200x300.jpg&quot; title=&quot;iPhone Update&quot; height=&quot;300&quot; width=&quot;200&quot; alt=&quot;iPhone Update&quot; class=&quot;alignnone size-medium wp-image-1454&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.34? 1.7f? Why does Apple even bother showing the version number. I don’t even know what version of the software was previously installed. As a user, I only really care if there’s an update and what is included in that update. That’s it.&lt;/p&gt;
&lt;p&gt;The way software engineers treat version numbers is sad. Since the inception of software, we haven’t been able to come up with a reasonable versioning scheme that can be shared across technologies. Even worse, versions really mean nothing. On top of that, we confuse marketing version numbers with internal software version numbers. Here are some examples of what I’ve come across.&lt;/p&gt;
&lt;p&gt;Let’s start with Java. 1.0.3, 1.1.2, 1.4.2, 1.5.0, 1.6.0? Why both with the “1″ in the version number?&lt;/p&gt;
&lt;p&gt;Next up we have is Windows… 3.1, 2000, XP, ME and 7. Awesome.&lt;/p&gt;
&lt;p&gt;I remember when Netscape magically went from version 4 to 6. You know, we didn’t really need a version 5 because IE was already at version 6. We can’t let our competitors out version us.&lt;/p&gt;
&lt;p&gt;In Linux… 2.3, 2.4.0, 2.6.8, 2.6.8.1… it’s cool when you can start adding version segments. Linux also seems to suffer the Java problem where the first digit is meaningless… maybe Linus’ favorite number is 2. On the bright side, the second segment in the version number at least signifies whether the code is considered stable or not. I’ll give bonus points to Linux for that.&lt;/p&gt;
&lt;p&gt;SmallEiffel… -0.87, -0.79, -0.74… nice… software versions that start on the negative scale and apparently count down to zero.&lt;/p&gt;
&lt;p&gt;In areas where modules exist and there’s a goal of reusable components (think OSGi and Maven), there’s a standard version scheme with a recommended policy on how to handle version changes. The only problem is that not everyone follows the scheme given their experience where version numbers mean nothing. It also doesn’t help that version schemes may be different amongst similar component technologies.&lt;/p&gt;
&lt;p&gt;In the end, there really needs to be two types of versions, one for the marketing department and one for the development department. Confusing the two types is bad. It’s good to see that I’m not the only one that feels like this, there’s some funny commentary by Jeff Atwood on &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000793.html&quot;&gt;versioning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Shame on us in the software industry for letting this crap continue.&lt;/p&gt;</description>
	<pubDate>Thu, 19 Nov 2009 17:25:01 +0000</pubDate>
</item>
<item>
	<title>Andrew Eisenberg: Getting AspectJ Pointcut matching timer information in AJDT</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6917071644715743308.post-5371046026962224841</guid>
	<link>http://contraptionsforprogramming.blogspot.com/2009/11/getting-aspectj-pointcut-matching-timer.html</link>
	<description>Andy Clement has just added &lt;a href=&quot;http://andrewclement.blogspot.com/2009/11/aspectj-profiling-pointcut-matching.html&quot;&gt;pointcut match timing information to AspectJ&lt;/a&gt;.   A number of people have been asking to have this included in AJDT, and so I did a little work and made it available in the latest dev builds of AJDT for 3.4 and 3.5.&lt;br /&gt;&lt;br /&gt;Here's how to display timing information:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Select  &lt;em&gt;Verbose&lt;/em&gt; and &lt;em&gt;Pointcut matching timers&lt;/em&gt; from the AspectJ compiler preferences page (this can be either globally from Eclipse preferences or for a specific project from the project properties page):&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037827/&quot; title=&quot;compiler_prefs by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2708/4117037827_2f6e0b64ec_o.gif&quot; alt=&quot;compiler prefs&quot; border=&quot;1&quot; width=&quot;585&quot; height=&quot;231&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the AJDT Event Trace View, ensure that you have &lt;em&gt;Compiler / Task list messages&lt;/em&gt; selected:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037871/&quot; title=&quot;event trace by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2522/4117037871_42ab26bc45_o.png&quot; alt=&quot;event trace&quot; border=&quot;1&quot; width=&quot;665&quot; height=&quot;373&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;And now on every project build (incremental or full), you will see pointcut matching times spit out to the event trace:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037945/&quot; title=&quot;output by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2552/4117037945_51e31b92ae_o.gif&quot; alt=&quot;output&quot; border=&quot;1&quot; width=&quot;1094&quot; height=&quot;441&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!  Questions can be sent to the &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/ajdt-dev&quot;&gt;AJDT developer's mailing list&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6917071644715743308-5371046026962224841?l=contraptionsforprogramming.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 Nov 2009 16:35:26 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Eisenberg)</author>
</item>
<item>
	<title>Bjorn Freeman-Benson: Another Way Not To Do XYZ Day</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-12783252.post-5456379783086885266</guid>
	<link>http://eclipse-projects.blogspot.com/2009/11/another-way-not-to-do-xyz-day.html</link>
	<description>As you know from my previous post, I believe that XYZ Days (or ABC Camps, or PQR Conferences) are all about &lt;span style=&quot;font-weight: bold;&quot;&gt;people meeting people&lt;/span&gt;. So when I received an email advert for the &quot;&lt;a href=&quot;http://en.oreilly.com/gov2fall09&quot;&gt;Gov 2.0 Online Conference&lt;/a&gt;&quot;, I just cringed - it's basically a live webcast with an IRC back channel.&lt;br /&gt;&lt;br /&gt;I understand the desire to eliminate travel costs, but an IRC chat room is not a good way for people to meet. You need something more, something like &lt;a href=&quot;http://www.cisco.com/en/US/netsol/ns669/networking_solutions_solution_segment_home.html&quot;&gt;Telepresence&lt;/a&gt;. I know there have been dozens and dozens of research projects (and some products) over the years towards building a virtual conference room that provides the full range of communication bandwidth (including live video and the ability to drift in and out of conversations)... maybe the time is ripe and the bandwidth is available for a &lt;span style=&quot;font-weight: bold;&quot;&gt;people meeting people&lt;/span&gt; virtual conference technology to finally emerge.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-5456379783086885266?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 Nov 2009 14:00:08 +0000</pubDate>
	<author>noreply@blogger.com (Bjorn Freeman-Benson)</author>
</item>
<item>
	<title>Gorkem Ercan: Help for MIDP friends</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-29853730.post-2675674978664078192</guid>
	<link>http://feedproxy.google.com/~r/Developing/~3/ymFWZNYv224/help-for-midp-friends.html</link>
	<description>eSWT developers usually come from two different backgrounds. Those who are familiar with desktop Java GUIs especially &lt;a href=&quot;http://www.eclipse.org/swt/&quot; target=&quot;_blank&quot;&gt;SWT&lt;/a&gt; that are starting to do mobile development or seasoned &lt;a href=&quot;http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile&quot; target=&quot;_blank&quot;&gt;MIDP&lt;/a&gt; developers who are looking for advanced UI features for their applications. Looking at the questions coming from the later group of developers on forums, a common theme is about how to implement something that they could do with MIDP UI with eSWT. Here is some help for two cases that are asked often.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to fix the screen orientation to landscape or portrait? &lt;/b&gt;This feature is implemented on MIDP UIs using a &lt;a href=&quot;http://www.nokia.com/&quot; target=&quot;_blank&quot;&gt;Nokia&lt;/a&gt; specific Midlet Jad attribute &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-E56C1B89-5BC2-475B-A487-A514D1396D76.html&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;Nokia-MIDlet-App-Orientation&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. &lt;/i&gt;eSWT does not make use of the any of the Jad attributes that are present on the MIDP platform. Instead it provides APIs that enables developers to achieve the same results. This also allows eSWT applications to be easily portable between runtimes. eSWT’s way for achieving fixed screen orientation is using the &lt;a href=&quot;http://library.forum.nokia.com/index.jsp?topic=/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/ercp/swt/mobile/Screen.html&quot; target=&quot;_blank&quot;&gt;Screen&lt;/a&gt; API. Here is a short snippet that fixes the orientation to portrait for all available screens.&lt;br /&gt;
&lt;pre style=&quot;background-color: #fbfbfb; border: 1px solid rgb(206, 206, 206); overflow: auto; padding: 5px; width: 510px;&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;1:     Screen[] screens = MobileDevice.getMobileDevice().getScreens();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;2:     &lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; screens.length; i++) {&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;3:       screens[i].setOrientation(Screen.PORTRAIT);&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;4:     }&lt;/pre&gt;
&lt;/pre&gt;A good thing to remember is some devices may actually plug new screens, for the best results it is a good idea to listen for Screen changes using the listeners from &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/ercp/swt/mobile/MobileDevice.html&quot; target=&quot;_blank&quot;&gt;MobileDevice&lt;/a&gt; APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to put an eSWT application to background?&lt;/b&gt; On mobile platforms that support background applications MIDP developers achieve sending the application to background by removing the current Displayable. Here is an &lt;a href=&quot;http://wiki.forum.nokia.com/index.php/How_to_send_MIDlet_to_background&quot; target=&quot;_blank&quot;&gt;entry&lt;/a&gt; that explains how it is done on MIDP LCDUI. The same can be achieved for eSWT applications by setting the active &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/swt/widgets/Shell.html&quot; target=&quot;_blank&quot;&gt;Shell&lt;/a&gt; to minimized. Here is how. &lt;br /&gt;
&lt;pre style=&quot;background-color: #fbfbfb; border: 1px solid rgb(206, 206, 206); overflow: auto; padding: 5px; width: 510px;&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;1:         Shell activeShell = display.getActiveShell();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;2:         &lt;span style=&quot;color: blue;&quot;&gt;while&lt;/span&gt;(activeShell != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; ){&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;3:           activeShell.setMinimized(&lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;4:           activeShell = display.getActiveShell();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;5:         }&lt;/pre&gt;
&lt;/pre&gt;The example snippet takes into account that you may actually have more than one top-level Shell, which the second one may get active once the currently active one is minimized. &lt;br /&gt;
&lt;br /&gt;
I will try to make more of similar kind of posts in the future. Please do comment if you have any suggestions for content. And of course. I continue to keep an eye on the &lt;a href=&quot;http://discussion.forum.nokia.com/forum/&quot; target=&quot;_blank&quot;&gt;Nokia forums&lt;/a&gt; and &lt;a href=&quot;http://www.eclipse.org/forums/index.php?t=thread&amp;amp;frm_id=33&quot; target=&quot;_blank&quot;&gt;Eclipse discussion boards&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/29853730-2675674978664078192?l=www.gorkem-ercan.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:EtZL8vNkiHE&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?i=ymFWZNYv224:mb6NVwcYc8Q:EtZL8vNkiHE&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:I9og5sOYxJI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?d=I9og5sOYxJI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?i=ymFWZNYv224:mb6NVwcYc8Q:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Developing/~4/ymFWZNYv224&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 19 Nov 2009 10:23:44 +0000</pubDate>
	<author>noreply@blogger.com (gorkem)</author>
</item>
<item>
	<title>Manuel Selva: SWT FileDialog and Windows Hide Extensions For Known File Types</title>
	<guid isPermaLink="false">http://manuelselva.wordpress.com/?p=272</guid>
	<link>http://manuelselva.wordpress.com/2009/11/19/swt-filedialog-and-windows-hide-extensions-for-known-file-types/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This morning we encountered a strange difference while running the following code on two Windows workstations and directly clicking the OK button of the dialog.&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt; FileDialog dialog = new FileDialog(window.getShell(), SWT.SAVE);
 dialog.setText(&quot;Save as...&quot;);
 dialog.setFileName(&quot;C:\\Test\\toSave.test&quot;);
 dialog.setFilterPath(&quot;C:\\Test\\&quot;);
 dialog.setFilterExtensions(new String[]{&quot;*.sav&quot;});
 String path = dialog.open();
 System.out.println(path);
&lt;/pre&gt;
&lt;p&gt;The first workstation printed C:\Test\toSave.test while the second one printed C:\Test\toSave.test&lt;strong&gt;.sav&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;Of course the wanted behaviour is the second one !!!&lt;/p&gt;
&lt;p&gt;After investigations we identified the difference on the workstations causing this “SWT” difference: the first workstation HAS the windows folder option called Hide Extensions For Known File Types checked while the second one HASN’T !!!&lt;/p&gt;
&lt;p&gt;To fix the issue we had to modify the setFileName method call as following:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt; dialog.setFileName(&quot;C:\\Test\\toSave.test.sav&quot;);
&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Conclusion&lt;/span&gt;: Looking back to the initial code, it seems logic to have to set a file name &lt;strong&gt;matching&lt;/strong&gt; the specified filter extensions.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=manuelselva.wordpress.com&amp;amp;blog=2529905&amp;amp;post=272&amp;amp;subd=manuelselva&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 Nov 2009 09:41:42 +0000</pubDate>
</item>
<item>
	<title>Lars Vogel: Fresh (and free) icons for Eclipse applications</title>
	<guid isPermaLink="false">http://www.vogella.de/blog/?p=1371</guid>
	<link>http://www.vogella.de/blog/2009/11/19/icons-eclipse/</link>
	<description>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;I always use the Eclipse icons for my applicatons. Recently one of my users complainted that my icons look “oldisch”….&lt;/p&gt;
&lt;p&gt;I quick call for help via &lt;a href=&quot;http://www.twitter.com/vogella&quot;&gt;twitter&lt;/a&gt; returned the following sites which provide free and fantastic looking icons. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://commons.wikimedia.org/wiki/Crystal_Clear&quot;&gt;http://commons.wikimedia.org/wiki/Crystal_Clear&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.famfamfam.com&quot;&gt;http://www.famfamfam.com &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://iconlet.com&quot;&gt;http://iconlet.com&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.iconfinder.net/browse&quot;&gt;http://www.iconfinder.net/browse&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to everyone for the links. Hope this helps also others to spice up their applications. &lt;img src=&quot;http://www.vogella.de/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;(Disclaimer: Of course these icons are not specific to Eclipse and could be used in other applications as well)&lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</description>
	<pubDate>Thu, 19 Nov 2009 05:17:20 +0000</pubDate>
</item>
<item>
	<title>Wayne Beaton: Get your IP Log in Order</title>
	<guid isPermaLink="false">http://dev.eclipse.org/blogs/wayne/?p=897</guid>
	<link>http://dev.eclipse.org/blogs/wayne/2009/11/18/get-your-ip-log-in-order/</link>
	<description>&lt;p&gt;Having a up-to-date (and correct) IP Log is important for projects and we’re trying to provide as much help as we can to make sure that they’re in order.&lt;/p&gt;
&lt;p&gt;I’ve been working with a couple of projects to help them get their IP Logs in order. In the process, I’ve managed to generalize a “review” script that run queries against the &lt;a href=&quot;https://bugs.eclipse.org/bugs&quot;&gt;Eclipse Bugzilla&lt;/a&gt; instance to help identify bugs and attachments that should potentially be referenced as contributions in a project’s IP Log. I’ve already used this script to identify a couple of contributions that I neglected to record for the &lt;a href=&quot;http://www.eclipse.org/examples&quot;&gt;Examples&lt;/a&gt; and &lt;a href=&quot;http://www.eclipse.org/ide4edu&quot;&gt;Eclipse IDE for Education&lt;/a&gt; (ide4edu) projects.&lt;/p&gt;
&lt;p&gt;The script is currently pretty rough. I haven’t made any linkage to it from any other &lt;a href=&quot;http://www.eclipse.org&quot;&gt;eclipse.org&lt;/a&gt; page, so you have to manually modify the URL to make it work for your project. It could probably also stand to have a little more prose added to better describe what it provides. You can see the results of running the script for &lt;a href=&quot;http://eclipse.org/projects/temporary/iplog_review.php?id=tools.mylyn&quot;&gt;Mylyn&lt;/a&gt;, and &lt;a href=&quot;http://eclipse.org/projects/temporary/iplog_review.php?id=technology.examples&quot;&gt;Examples&lt;/a&gt;. To try other projects, change the &lt;em&gt;id&lt;/em&gt; parameter value to the id of the project (e.g. &lt;em&gt;tools.mylyn&lt;/em&gt;, or &lt;em&gt;technology.examples&lt;/em&gt;). FWIW, it doesn’t work on &lt;em&gt;eclipse.platform&lt;/em&gt; as it requires too much server memory and it bails out. Close to a decade’s worth of bug reports will do that for you.&lt;/p&gt;
&lt;p&gt;Using this script to poke around a bit, I’ve noticed a few projects that still don’t quite get the iplog+ thing. Clearly, I need to do a better job of working with projects to get this right. &lt;/p&gt;
&lt;p&gt;The main benefit of using the Bugzilla &lt;em&gt;iplog&lt;/em&gt; flag is that we can use this information to automatically generate an IP Log for the project. However, the generation process is only as good as the data it’s provided with. Here are a few pointers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only actual &lt;em&gt;code&lt;/em&gt; contributions need to be included in the IP Log. &lt;/li&gt;
&lt;li&gt;Only contributions from non-committers need to be included in the IP Log&lt;/li&gt;
&lt;li&gt;Contributions that come from a developer &lt;em&gt;before&lt;/em&gt; they become a committer do need to be included in the IP Log; the tools are smart enough to handle this time-sensitivity (so committer-provided contributions erroneously flagged as iplog+ are ignored).&lt;/li&gt;
&lt;li&gt;Ideally, &lt;em&gt;attachments&lt;/em&gt; should be flagged as iplog+ rather than bugs (if an attachment is flagged, the bug itself almost certainly should not be). &lt;/li&gt;
&lt;li&gt;A bug might be flagged as iplog+ if the summary or one of the comments contains code that’s been rolled into the project’s source code repository.&lt;/li&gt;
&lt;li&gt;Marking the bug iplog+ means that the summary and every comment are potential contributions that will need to be manually filtered when the IP Log is generated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The page that results from the “review” script is read-only. You can’t actually change the iplog flag’s value from the page. But there are handy links that take you right to where you need to be if you decide that you do need to flag something. Hopefully this makes it easier. &lt;/p&gt;
&lt;p&gt;As always, I invite your feedback. If this page turns out to be useful, I’ll sort out how to better incorporate it into eclipse.org.&lt;/p&gt;</description>
	<pubDate>Wed, 18 Nov 2009 19:44:26 +0000</pubDate>
</item>
<item>
	<title>Mik Kersten: Growing open source ecosystems: the install story</title>
	<guid isPermaLink="false">http://tasktop.com/blog/?p=1236</guid>
	<link>http://tasktop.com/blog/eclipse/growing-open-source-ecosystems-install</link>
	<description>&lt;p&gt;At the Symbian Exchange &amp;amp; Expo conference, I presented a talk called &lt;i&gt;Coordinating contributions: lessons learned growing an OSS community&lt;/i&gt;, sharing my lessons learned from the AspectJ and Eclipse Mylyn communities.  The Symbian Foundation has adopted the EPL, Bugzilla, and an open development model.  What makes the Mylyn project an interesting data point is that with the same infrastructure, it has seen over 800 bug and enhancement reports resolved by patches from a very active contributor community.  That’s around 1/7 of our bugs resolved, and falls within the top two Eclipse projects for total contribution count. While Tasktop Technologies has provided the resources for maintaining, supporting and evolving the Mylyn frameworks, we have managed to create a very permeable and successful ecosystem for contributors. &lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/contribs.png&quot; title=&quot;&quot; height=&quot;375&quot; width=&quot;500&quot; alt=&quot;Modular Platform, Incentive Structure, Collaboration Tools&quot; class=&quot;size-full wp-image-1239&quot; /&gt;&lt;/div&gt;
&lt;p&gt;The talk broke the contribution problem up into three pillars: the modular platform that defines the landscape of interesting contributions, the incentive structure needed to drive contributors, and the collaboration tools that support the open development process.  While responding questions after the presentation, I was struck by how important the extension install story is to the first two pillars.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Open platforms need easy extension install&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you release a cool tool and nobody can find or install it, does it still make a sound?  Not if the sound that you’re after is the roar of broad adoption.  One ingredient of an install story is the dependency management technology, which defines the modularity of extensions.  In Eclipse, this is a solved problem thanks to OSGi and the Equinox P2 provisioning system. &lt;/p&gt;
&lt;p&gt;Another ingredient is incentive structure.  The Eclipse Plug-in Central site provided a web portal for listing extensions, but was disconnected from an install story.  In contrast, consider the success of the market-driven incentives of Apple’s app store.  Or the seamless install process of iPhone apps and Firefox add-ons.  Incredible ecosystem growth can result when install technology, modularity mechanisms, and incentive structure line up.  While Eclipse provides a great generic install and dependency management mechanism, as the number of Mylyn integrations grew, we realized that a limiting factor of adoption was the discovery of integrations and ease of their installation.  In order to continue to support our growth and not overly bias our ecosystem to those extensions that were hosted on Eclipse.org, we needed to streamline Eclipse’s install experience for Mylyn connectors. So we created the &lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29tL2Jsb2cvZWNsaXBzZS9teWx5bi1jb25uZWN0b3ItZGlzY292ZXJ5&quot;&gt;Mylyn Connector Discovery&lt;/a&gt; tool.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/06/connector-discovery-small.png&quot; title=&quot;connector-discovery-small&quot; height=&quot;656&quot; width=&quot;400&quot; alt=&quot;connector-discovery-small&quot; class=&quot;aligncenter size-full wp-image-650&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Generalizing Mylyn Connector Discovery&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Since the release of Connector Discovery release with Eclipse Galileo, the listing has grown and received consistent praise from users and integrators. We’ve since seen many requests to generalize the mechanism to other install use cases ranging from Eclipse Pulsar SDK installs to the exciting new &lt;a target=&quot;&quot;&gt;Eclipse Marketplace&lt;/a&gt; effort.  The &lt;a target=&quot;&quot;&gt;SpringSource Tool Suite&lt;/a&gt; is a great example of how the Discovery UI can be leveraged for targeted extension install.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/sts-extensions.png&quot; title=&quot;&quot; height=&quot;387&quot; width=&quot;452&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1241&quot; /&gt;&lt;/div&gt;
&lt;p&gt;In response to this interest, we have generalized the code and are proposing to move it to the the Equinox P2 project, home of Eclipse install.  For details on that proposal see &lt;a target=&quot;&quot;&gt;Eclipse bug 295273&lt;/a&gt;.  What I hope we see in the Eclipse Helios release time frame is the Discovery mechanism as P2 API for special-purpose install workflows, with extensions for Mylyn Connectors, Eclipse Marketplace and more.  This Discovery install story is additionally relevant to Eclipse Rich Client Platform (RCP) install scenarios, which often need a simplified and tailored install experience.  &lt;/p&gt;
&lt;p&gt;While serving on the Eclipse board of directors, a concern I repeatedly raised was the repeated problems that arose from an incomplete install story.  The great thing about being part of a meritocratic ecosystem like Eclipse, which rewards participation, is the ability to put code and resources where your mouth is.  &lt;/p&gt;
&lt;p&gt;&lt;b&gt;The economics of extension listings&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A tension that surfaces around shared resources is the &lt;a target=&quot;&quot;&gt;Tragedy of the Commons&lt;/a&gt;.  This gets discussed repeatedly in Eclipse, and can happen in vendor neutral open source ecosystems when organizations attempt to derive value from common frameworks and tools without contributing enough back. As a result, those ecosystems tend to be lead by organizations that understand commercial open source enough to act with &lt;a target=&quot;&quot;&gt;enlightened self-interest&lt;/a&gt;.  But with the continually growing number of Mylyn integrations, we also needed to consider companies with a shorter-term outlook.  For example, like other projects, we see the pattern of vendors leveraging our frameworks in ways where they impose a significant support burden on the committers, and not contributing back in terms of patches or resources to help grow those frameworks.  While I believe that an open source project like Mylyn should welcome all integrations, an indefinitely increasing support burden is not scalable and can reduce the time available for innovation.  We need to avoid the Easter Island effect where everyone builds themselves self-serving heads without prioritizing the long-term health of the ecosystem within which they operate (see &lt;a target=&quot;&quot;&gt;Easter Island/Collapse of the Ecosystem&lt;/a&gt;).&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/easter-island.jpg&quot; title=&quot;&quot; height=&quot;300&quot; width=&quot;450&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1250&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Discovery style extension listings provide a great opportunity to encourage meritocracy, one of the driving principles of a vendor-neutral development process like Eclipse’s, and help align the interests of a project with those leveraging on it.  For good references on meritocracy see &lt;a target=&quot;&quot;&gt;Chris Aniszczyk’s recent post&lt;/a&gt;.  In preparation for last June’s release of the Mylyn Connector Discovery, we worked with our community to create &lt;a target=&quot;&quot;&gt;listing criteria&lt;/a&gt; that achieve this balance.  To paraphrase here, committers can vote you into the listing if you contribute enough to the project to offset the additional burden that you impose on the committers.  If you are a vendor and are pulling your weight on the project by growing the frameworks and tools for all integrators to leverage, you can get your own section.  If you have a community-oriented open source integration, committers go an extra mile and offer you UI and API reviews in order to help encourage cross-ecosystem collaborations, which can yield a long-term benefit, as evidenced by our collaborations with Mozilla. The listing criteria are open to feedback and input on &lt;a target=&quot;&quot;&gt;Eclipse bug 279709&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To date, this meritocratic listing approach has worked extremely well for promoting high-quality extensions and contributions.  It has encouraged the growth and adoption of independent efforts such as the Mantis connector, reduced the adoption bias we had of connectors that were hosted on Eclipse.org, and provided a mechanism for promoting the latest round of commercial integrations needed to grow the Mylyn user base.  &lt;/p&gt;
&lt;p&gt;With a generalized Discovery mechanism in place, I hope that we see a similar trend for other special-purpose Eclipse extensions.  For example, the Eclipse Marketplace can use ranking in the Discovery listings for promoting members’ solutions.  Projects like Eclipse Pulsar can make their key contributors’ mobile SDKs trivial to install.  And the next round of innovative Eclipse projects can use this mechanism to help grow their ecosystem of extensions by promoting meritocracy.
&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;
&lt;p class=&quot;smallParagraph&quot;&gt;&lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29t&quot;&gt;&lt;b&gt;Be more productive.&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29tL3Byb2R1Y3RzL2d1YXJhbnRlZS8=&quot;&gt; Guaranteed.&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
 &lt;img width=&quot;1&quot; style=&quot;display: none;&quot; src=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?view=1&amp;amp;post_id=1236&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 18 Nov 2009 19:43:19 +0000</pubDate>
</item>
<item>
	<title>Bob Balfe: Facebook has Easter Eggs!</title>
	<guid isPermaLink="true">http://blog.balfes.net/?p=906</guid>
	<link>http://blog.balfes.net/?p=906</link>
	<description>&lt;p class=&quot;GenericStory_Message&quot;&gt;From my buddy Mark:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&quot;GenericStory_Message&quot;&gt;&lt;em&gt;“Go to any Facebook page and click once in a white area just to get a blank timeline to do this with. Press up arrow, up arrow, down arrow, down arrow, left arrow, right arrow, left arrow, right arrow, B, A, then the Return key. If you left-click or right-click, scroll or push any keyboard key after that, a strange shining set of circular rings will appear on your screen.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://blog.balfes.net/wp-content/uploads/2009/11/fb-eastereggs.jpg&quot;&gt;&lt;img src=&quot;http://blog.balfes.net/wp-content/uploads/2009/11/fb-eastereggs.jpg&quot; title=&quot;fb-eastereggs&quot; height=&quot;349&quot; width=&quot;633&quot; alt=&quot;fb-eastereggs&quot; class=&quot;aligncenter size-full wp-image-907&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p class=&quot;GenericStory_Message&quot;&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;technorati-tags&quot;&gt;technorati tags: &lt;a href=&quot;http://technorati.com/tag/Facebook&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 18 Nov 2009 18:19:37 +0000</pubDate>
</item>
<item>
	<title>Maarten Meijer: Industrial SQL Connector versatility</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-8878360187292205236.post-6785913037209843729</guid>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-versatility.html</link>
	<description>I just created a quick solution for &lt;a href=&quot;https://bugs.eclipse.org/150174&quot;&gt;https://bugs.eclipse.org/150174&lt;/a&gt; Eventum Mylyn connector using the Industrial SQL Mylyn connector  toolkit in under 60 minutes! Screenshots @ bug, details to follow here.&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s1600-h/eventum-repository-validated.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s320/eventum-repository-validated.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 311px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328653710463554&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s1600-h/eventum-repository-entered.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s320/eventum-repository-entered.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 311px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328645477487186&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s1600-h/eventum-form-based-query.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s320/eventum-form-based-query.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 260px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328639856259746&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s1600-h/eventum-tasklist-empty.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s320/eventum-tasklist-empty.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 155px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328657874871266&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A ZIP with basic code is available &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/industrial-eventum-0.1.0.zip&quot;&gt;here&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-6785913037209843729?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 14:01:51 +0000</pubDate>
	<author>noreply@blogger.com (Maarten Meijer)</author>
</item>
<item>
	<title>Maarten Meijer: Industrial SQL Connector and Eventum</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-8878360187292205236.post-6283811247034822539</guid>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum.html</link>
	<description>When looking at the &lt;a href=&quot;http://www.eclipse.org/mylyn/&quot;&gt;Mylyn&lt;/a&gt; connector &lt;a href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;chfieldto=Now&amp;amp;product=Mylyn&amp;amp;query_format=advanced&amp;amp;remaction=&amp;amp;short_desc=%5Bconnector%5D&amp;amp;short_desc_type=anywordssubstr&amp;amp;order=votes%2Cbug_id&quot;&gt;Most Wanted List&lt;/a&gt; you'll see many issue tracker that do not have a dedicated connector to the Mylyn Eclipse Task based UI.&lt;br /&gt;&lt;br /&gt;Many of these are backed by databases to store all the complex relations and workflow. In the next several blogs I'm going to demonstrate how easy it is to connect Mylyn to any database backed issue tracker using the &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/Incubator/Generic_SQL_Connector&quot;&gt;Industrial SQL Connector&lt;/a&gt;.&lt;br /&gt;For the example I will be using &lt;a href=&quot;http://dev.mysql.com/downloads/other/eventum/&quot;&gt;Eventum&lt;/a&gt;, created and used by MySQL, number 4 on the list. It is also OSS, so we can easily get it to play around with.&lt;br /&gt;This will not be a full fledged connector, but a quick start to get the task change notification directly from email into Eclipse as first step in making you &lt;a href=&quot;http://tasktop.com/blog/mylyn/rescue-inbox-from-bug&quot;&gt;more productive&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Install Industrial SQL Connector&lt;/h4&gt;&lt;br /&gt;This connector can be installed from &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/&quot;&gt;http://bugs.industrial-tsi.com/mylyndb/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s1600-h/industrial-install.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s320/industrial-install.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 266px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637472699337570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Download empty MySQL connector Fragment&lt;/h4&gt;&lt;br /&gt;You can download a ready made empty MySQL connector Fragment as described &lt;a href=&quot;http://eclipsophy.blogspot.com/2009/08/connecting-mylyn-to-mysql-database.html#resources&quot;&gt;here&lt;/a&gt; and unzip it and rename some files, so we get this structure:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s1600-h/eventum-fragment.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s320/eventum-fragment.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 301px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378639261972714002&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I want to make this easier but need code from PDE, please vote for &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=288547&quot;&gt;bug 288547: Add a NewFragmentFromTemplateWizard with API to make Fragments from templates&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Install Eventum 2.2&lt;/h4&gt;&lt;br /&gt;Install this on you local machine following instructions provided &lt;a href=&quot;http://forge.mysql.com/wiki/Eventum/&quot;&gt;here&lt;/a&gt;, so you can inspect the database tables, create and test the queries.&lt;br /&gt;Then when you are &lt;em&gt;completely satisfied&lt;/em&gt; that it works, do you change and connect to the production database!&lt;br /&gt;Once the default install is completed use a database inspection tool like phpMyAdmin or soemthing else to familiarize yourself with the database structure. Luckily the Eventum designers used a very consistent naming scheme for TABLES and COLUMNS!&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s1600-h/eventum-database-structure.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s320/eventum-database-structure.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 298px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637464501482706&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Once completed you can log into the system and start creating some initial users, projects and issues.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s1600-h/eventum-list-of-issues.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s320/eventum-list-of-issues.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 250px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637488564936850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s1600-h/eventum-test-issue-1.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s320/eventum-test-issue-1.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 250px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378639284135190850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;While creating a user, a project and a test issue in the web interface, make notes of what backend database tables change and get filled, because the Industrial SQL Connector is all about mapping database tables to task fields. Databases are usually constructed with record ID's for the machine and record names or titles for us, the users. As Mylyn is about making us more productive, we will as a matter of policy retrieve the human-readable formats from the database and map those back into records using &lt;code&gt;JOIN&lt;/code&gt; statements. The preliminary mapping is as follows:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Task Side&lt;/th&gt;&lt;th&gt;Eventum Table&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasks&lt;/td&gt;&lt;td&gt;eventum_issue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Products&lt;/td&gt;&lt;td&gt;eventum_project&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Issue Status&lt;/td&gt;&lt;td&gt;eventum_status, eventum_resolution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Issue Priority&lt;/td&gt;&lt;td&gt;eventum_project_priority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Comments&lt;/td&gt;&lt;td&gt;eventum_issue_history&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;People&lt;/td&gt;&lt;td&gt;eventum_user, eventum_issue_user&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 1 creating extension&lt;/h4&gt;&lt;br /&gt;Open the fragment.xml and create extension &lt;code&gt;org.eclipse.mylyn.industrial.core.persistor&lt;/code&gt; and create a &lt;code&gt;persistor-config&lt;/code&gt;, add an &lt;code&gt;ibatis-config&lt;/code&gt;. Fill in the fields as below:&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s1600-h/eventum-fragment-extension.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s320/eventum-fragment-extension.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 251px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378651950904175826&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 2 retrieving repository elements&lt;/h4&gt;&lt;br /&gt;Edit the file &lt;code&gt;maps/eventum-direct-db/RepositoryMapEventum.xml&lt;/code&gt; as follows.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [19, 23, 27, 33]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;    PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;    &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;    licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;    Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;    http://eclipsophy.blogger.com&lt;br /&gt;   &lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Repository&quot;&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;Legal issue owners and other legal values for fields are taken here&lt;br /&gt;from DISTINCT values in the database. An alternative would be a&lt;br /&gt;SELECT from any table containing legal users.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal issue owners. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalOwners&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT usr_full_name FROM eventum_user&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal products. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalProducts&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT prj_title FROM eventum_project&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal issue status values. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalIssueStatus&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT sta_title FROM eventum_status&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a legal list of priority values.&lt;br /&gt;    Note that in Mylyn these all need to be mapped to one of&lt;br /&gt;    &quot;P1&quot;, &quot;P2&quot;, &quot;P3&quot;, &quot;P4&quot; or &quot;P5&quot;. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalPriority&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT concat('P',pri_rank) FROM eventum_project_priority&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- this query will be executed when pressing the Validate Connection in&lt;br /&gt;the Repository Settings dialog --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;validate&quot; resultClass=&quot;boolean&quot;&amp;gt;SELECT TRUE &amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;!-- this query will be executed when pressing the Validate Connection in&lt;br /&gt;    the Repository Settings dialog --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;authenticate&quot; resultClass=&quot;boolean&quot;&amp;gt;&lt;br /&gt;    SELECT TRUE&lt;br /&gt;&amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;!-- This query will be executed when validation fails and the repository&lt;br /&gt;can be initialized or updated based on version (like local Derby) --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;initialize&quot; resultClass=&quot;string&quot; parameterClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    $value$&lt;br /&gt;&amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will give us a nice prefilled dialog in of the &lt;em&gt;Form Based Query&lt;/em&gt;:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s1600-h/eventum-form-based-query.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s320/eventum-form-based-query.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 260px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378657915482102706&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 3 mapping the task&lt;/h4&gt;&lt;br /&gt;Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and locate the query &lt;code&gt;getForKey&lt;/code&gt;. This query retrieves all mappable issue attributes give an issue ID to use as key.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select id=&quot;getForKey&quot; resultClass=&quot;ibatisTask&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt; iss_id as taskId,&lt;br /&gt; concat('P',pri_rank) AS priority,&lt;br /&gt; usr_full_name AS owner,&lt;br /&gt; iss_summary AS summary,&lt;br /&gt; iss_description as notes,&lt;br /&gt; prj_title AS product,&lt;br /&gt; sta_title AS issueStatus,&lt;br /&gt; iss_created_date AS creationDate,&lt;br /&gt; iss_closed_date AS completionDateDate,&lt;br /&gt; iss_expected_resolution_date AS dueDateDate&lt;br /&gt; FROM eventum_issue&lt;br /&gt;  INNER JOIN eventum_issue_user ON isu_iss_id = iss_id &lt;br /&gt;  INNER JOIN eventum_user ON isu_usr_id = usr_id &lt;br /&gt;  INNER JOIN eventum_project ON iss_prj_id = prj_id &lt;br /&gt;  INNER JOIN eventum_status ON iss_sta_id = sta_id &lt;br /&gt;  INNER JOIN eventum_project_priority ON iss_pri_id = pri_id &lt;br /&gt;        WHERE iss_id LIKE #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;Creating the Connector: step 4 adding dynamic search&lt;/h4&gt;&lt;br /&gt;We also need to edit the statement in &lt;code&gt;searchForKey&lt;/code&gt; for the Form Based Query to make its selection:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, 50,51,52]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;select id=&quot;searchForKey&quot; parameterClass=&quot;ibatisCriteria&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt; SELECT DISTINCT iss_id as taskId FROM eventum_issue&lt;br /&gt; &amp;lt;dynamic&amp;gt; &lt;br /&gt; &amp;lt;isNotEmpty property=&quot;product&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_project  ON iss_prj_id = prj_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;isNotEmpty property=&quot;priority&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_project_priority ON iss_pri_id = pri_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;isNotEmpty property=&quot;issueStatus&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_status  ON iss_sta_id = sta_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;/dynamic&amp;gt;&lt;br /&gt; &amp;lt;dynamic prepend=&quot;WHERE&quot;&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;summary&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_summary LIKE '%$summary$%'&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;creationDateBefore&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_created_date &amp;lt;= #creationDateBefore#&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;creationDateAfter&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_created_date gt;= #creationDateBefore#&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;product&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;product&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    prj_title = #product[]#&amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;priority&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;priority&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    pri_rank = right(#priority[]#,1)&amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;issueStatus&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;issueStatus&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    sta_title = #issueStatus[]# &amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;/dynamic&amp;gt;        &lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using the &lt;code&gt;&amp;lt;dynamic&amp;gt;&lt;/code&gt; tag in the SqlMaps query language, you can specify fully dynamic queries, that will do this:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s1600-h/eventum-form-based-query-dynamic.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s320/eventum-form-based-query-dynamic.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 290px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378675533146037186&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 5 adding comments&lt;/h4&gt;&lt;br /&gt;When we have the basic task and attributes, we will not notice all activity that happens around a task. A Task or Issue usually has some sort of history associated with it, and this can be done by editing the file &lt;code&gt;maps/eventum-direct-db/CommentsMapEventum.xml&lt;/code&gt; as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [21,22,23,24,25,26,27,28, 29,30,31,32]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;!--&lt;br /&gt; groupKey use : when you want Mylyn to concatenate strings in different&lt;br /&gt; records into one comment you can force that to happen by giving these&lt;br /&gt; strings the same groupKey.&lt;br /&gt;&lt;br /&gt; Leaving the the groupKey set to null, will concatenate all records into&lt;br /&gt; one Mylyn comment. This is counterintuitive!!&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;getForKey&quot;  resultClass=&quot;ibatisComment&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt; his_created_date as groupKey,&lt;br /&gt; usr_email as author,&lt;br /&gt; usr_full_name as authorName,&lt;br /&gt; his_created_date as date,&lt;br /&gt; his_summary as text&lt;br /&gt; FROM eventum_issue_history&lt;br /&gt;  INNER JOIN eventum_user ON his_usr_id = usr_id&lt;br /&gt; WHERE his_iss_id = #value#&lt;br /&gt; ORDER BY his_id&lt;br /&gt; &amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;Note the use of &lt;code&gt;groupKey&lt;/code&gt; in the statement. This construct will force all comments from the same date to be listed into one comment. Eventum issue edits result in multiple items being entered into the history using the same timestamp. Using &lt;code&gt;groupKey&lt;/code&gt; allows you to define or alter the grouping of comments. &lt;br /&gt;&lt;h4&gt;Creating the Connector: step 6 adding additional attributes&lt;/h4&gt;&lt;br /&gt;Sometimes we have additional attributes that can be mapped to the Mylyn common attributes listed in &lt;code&gt;TaskAttributeMapper.java&lt;/code&gt;. Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and go to query &lt;code&gt;additionalForKey&lt;/code&gt;.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [20,21,22,23,24,25,26,27,28]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;!--&lt;br /&gt; Keys for TaskData attributes used by Mylyn in the RepositoryTaskData structure&lt;br /&gt;&lt;br /&gt; listed in file /org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskAttributeMapper.java&lt;br /&gt;&lt;br /&gt; There is a problem in ibatis where dot notation fields returned in a Map are parsed as bean properties.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;additionalForKey&quot; resultClass=&quot;java.util.HashMap&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt;  res_title as task_common_resolution,&lt;br /&gt;  usr_full_name as task_common_user_reporter&lt;br /&gt; FROM eventum_issue&lt;br /&gt;  INNER JOIN eventum_resolution ON res_id = iss_res_id &lt;br /&gt;  INNER JOIN eventum_user ON usr_id = iss_usr_id &lt;br /&gt; WHERE iss_id LIKE #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;br /&gt;By following the simple steps outlined above, it is very easy to create a read-only connector to any database backed issue tracker. The Tasks in Mylyn are filled using a direct mapping of database columns to task elements and is not very complicated. Not a single line of Java code was needed! There is a usable UI to queries, and the results are displayed in the Task Editor, allowing a local context to be attached to it.&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s1600-h/eventum-task-in-editor.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s320/eventum-task-in-editor.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 286px; height: 320px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378682841014686994&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Connecting to database is easy when it is on the same LAN, slightly more involved when it is remote. My experience using a SSH tunnels using Putty (under Windows) or similar is that it can make a relatively secure connection easy to setup.&lt;br /&gt;The connector fragment including source project can be downloaded in a ZIP from &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/industrial-eventum-0.2.0.zip&quot;&gt;here&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-6283811247034822539?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 14:01:33 +0000</pubDate>
	<author>noreply@blogger.com (Maarten Meijer)</author>
</item>
<item>
	<title>Maarten Meijer: Industrial SQL connector and Eventum: adding attachments</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-8878360187292205236.post-5124483376104390592</guid>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_15.html</link>
	<description>Last time we covered Eventum task and comments, this time we'll make the attachments show up in Mylyn.&lt;br /&gt;&lt;h4&gt;Eventum attachments&lt;/h4&gt;&lt;br /&gt;We create an attachment in our Eventum test installation and see what happens. Two tables are involved in the handling of attachments: &lt;code&gt;eventum_issue_attachment&lt;/code&gt; containing the meta information like date created and creator, and &lt;code&gt;eventum_issue_attachment_file&lt;/code&gt; containing actual data, filename, mime type and filesize.&lt;br /&gt;&lt;h4&gt;Modifying the repository-config settings&lt;/h4&gt;&lt;br /&gt;We must edit fragment.xml and set the &lt;code&gt;can-get-attachments&lt;/code&gt; property to true.&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s1600-h/project-step23.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s320/project-step23.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 147px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5382062897953108674&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment data query&lt;/h4&gt;&lt;br /&gt;To return the attachment meta-data we must edit CommentsMapEventum.xml and set the  &lt;code&gt;getAttachmentForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;   &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;select id=&quot;getAttachmentForKey&quot;  resultClass=&quot;ibatisAttachment&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- meta data only, return the blob data separately --&amp;gt;&lt;br /&gt;SELECT&lt;br /&gt; usr_email as author,&lt;br /&gt; iaf_filetype as ctype,&lt;br /&gt; iat_created_date as date,&lt;br /&gt; iat_description as description,&lt;br /&gt; iaf_filename as filename,&lt;br /&gt; iaf_id as id,&lt;br /&gt; iaf_filesize as size,&lt;br /&gt; iat_iss_id as taskId,&lt;br /&gt; '' as url&lt;br /&gt;FROM eventum_issue_attachment&lt;br /&gt; INNER JOIN eventum_user ON iat_usr_id = usr_id&lt;br /&gt; INNER JOIN eventum_issue_attachment_file ON iat_id = iaf_iat_id&lt;br /&gt;WHERE iat_iss_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment BLOB query&lt;/h4&gt;&lt;br /&gt;To return the attachment binary BLOB we must edit CommentsMapEventum.xml and set the &lt;code&gt;getAttachmentDataForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,16,17,18,19,20,21]&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;   &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;resultMap id=&quot;attachmentDataMap&quot; class=&quot;ibatisAttachment&quot;&amp;gt;&lt;br /&gt;&amp;lt;result property=&quot;blob&quot; column=&quot;iaf_file&quot; jdbcType=&quot;BLOB&quot; javaType=&quot;[B&quot;/&amp;gt;&lt;br /&gt;&amp;lt;/resultMap&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select id=&quot;getAttachmentDataForKey&quot; resultMap=&quot;attachmentDataMap&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- return the blob data --&amp;gt;&lt;br /&gt;SELECT iaf_file&lt;br /&gt;FROM eventum_issue_attachment_file&lt;br /&gt;WHERE iaf_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;The attachment displays nicely but...&lt;/h4&gt;&lt;br /&gt;We can see the attachments in the Task Editor, an image uploaded using the web interface, but when we right-click we see several actions that do not work.&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s1600-h/project-step24.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s320/project-step24.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 278px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5382062888503965394&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With Browser&lt;/b&gt; will not work, as the Eventum attachments are stored in a database, so they have no web url and cannot be shown in the browser. This is reported under &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=249021&quot;&gt;bug 249021&lt;/a&gt;. This action should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With/Default Editor&lt;/b&gt;This functionality was recently added, but does not take into account the case where no URL is present. This is in the works under &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=220314&quot;&gt;bug 220314&lt;/a&gt; and should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Make Local Copy and Open in Browser&lt;/b&gt; this is Industrial Connector functionality present to remedy the problems above, but is not a really neat solution.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-5124483376104390592?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 14:00:59 +0000</pubDate>
	<author>noreply@blogger.com (Maarten Meijer)</author>
</item>
<item>
	<title>Bjorn Freeman-Benson: How Not To Do XYZ Day</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-12783252.post-6531271498182310613</guid>
	<link>http://eclipse-projects.blogspot.com/2009/11/how-not-to-do-xyz-day.html</link>
	<description>I attend and spoke at &lt;a href=&quot;http://www.eclipse.org/org/press-release/20091002modelingday.php&quot;&gt;Eclipse Modeling Day&lt;/a&gt; in New York on Monday. The speakers were earnest and knowledgeable (my favorite was &quot;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day/Session_Abstracts#Building_DSLs_with_Xtext&quot;&gt;Building DSLs with XText&lt;/a&gt;&quot;), but overall it was underwhelming. It didn't have to be that way, so the engineer in me asks &quot;why was it a dud?&quot;.  The conference organizer in me knows the answer: these  XYZ Days should be all about getting people to talk to each other, but this one was not.&lt;br /&gt;&lt;br /&gt;I've said this before, and here I'm saying it again: people do not attend  XYZ Day to watch presentations. They can watch presentations on the internet (webcasts) or they can download presentations (&lt;a href=&quot;http://www.slideshare.net/search/slideshow?q=eclipse&amp;amp;submit=post&amp;amp;searchfrom=header&quot;&gt;slideshare&lt;/a&gt;) or they can read white papers, or they can ... etc and so on. No, people do not attend  XYZ Day to watch presentations: they attend XYZ  Day to meet other people interested in XYZ; they attend to meet the presenters and ask hard questions that are not answered by the slide decks; they attend to meet other users and pick up usage tips; they attend because the organizers will introduce them to interesting community rock stars; they attend ... &lt;span style=&quot;font-weight: bold;&quot;&gt;to meet other people.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So when you put on an  XYZ Day, you optimize the entire thing for the attendees. Force them to interact in various ways - I can think of a dozen different ways to do this (e.g. my EclipseCons). Force the presenters to cater to the attendees: show a demo, poll the audience, present alternate opinions, ...&lt;br /&gt;&lt;br /&gt;And for gosh sakes don't spread a mere eight talks over two parallel sessions! That splits the crowd, thereby reducing the opportunity for the attendees to talk to each other. And it results in long boring talks instead of short, precise, information-filled talks. And those two factors cause a lack of critical mass to ignite a discussion after the talk in the hallway.&lt;br /&gt;&lt;br /&gt;And... and... I could go on and on but I won't. My point is that  XYZ Days are a great way to continue evangelizing Eclipse technologies and expanding the community. And I think in this post-business-travel world, the community should be thinking about more XYZ Days. But they have to be exciting and interesting and cutting-edge, and they have to be all about &lt;span style=&quot;font-weight: bold;&quot;&gt;people meeting people.&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-6531271498182310613?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 14:00:02 +0000</pubDate>
	<author>noreply@blogger.com (Bjorn Freeman-Benson)</author>
</item>
<item>
	<title>David Bosschaert: Altering OSGi Service Lookups with Service Registry Hooks</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-9210566578097047576.post-3287136601858913109</guid>
	<link>http://coderthoughts.blogspot.com/2009/11/altering-osgi-service-lookups-with.html</link>
	<description>&lt;div lang=&quot;en-GB&quot;&gt;OSGi Services are &lt;i&gt;&lt;b&gt;great&lt;/b&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;. They can solve many problems very elegantly. Take for instance SPI patterns. SPI patterns are used to make implementations pluggable. This type of pattern outside OSGi often comes with a bunch of external configuration (e.g. in META-INF/services) that makes it hard to manage and gives you a once-off chance to choose your implementation that you're stuck with for the rest of the VM lifecycle. OSGi Services provide a much more elegant way to solve this. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;In many cases clients simply want to use some functionality and don't particularly care how that functionality was created. When using OSGi Services the functionality is looked up in the OSGi Service Registry which is a directory of these. Services can be looked up by implemented interface (like a phone book) or by provided attribute (like the yellow pages). How the service got there is not interesting to the client and he's not involved in that. What if the service gets replaced while the client is active? No problem, the OSGi Service Programming model is actually built around this dynamicity. You don't need to stop service consumers when you are replacing or updating the service, they are automatically rebound.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;The Service Registry also provides us with an attribute based selection mechanism which is very nice if there are multiple implementations to choose from. As an example, take a system where every available printer is represented in the Service Registry as a Service that implements the &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;org.acme.Printer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; interface. Each printer will have additional properties registered that help with the selection:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR2s5E6sI/AAAAAAAAARc/2HRdqC9jsnk/s1600/img1.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR2s5E6sI/AAAAAAAAARc/2HRdqC9jsnk/s400/img1.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When looking for a Printer OSGi allows you to use an LDAP-style filter to select the printer you want. So if you want a printer that can do A3 you would use this LDAP filter:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; class=&quot;code-western&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span&gt;(&amp;amp;(objec&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace; font-size: small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;tClass=org.acme.Printer)(paper-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;size=A3))&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;or if you want a printer in a location that starts with 'b' you do this:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; class=&quot;code-western&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span&gt;(&amp;amp;(objectClass=org.acme.Printer)(location=b*))&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;This is all great and you can build your system on this using either plain OSGi code or component frameworks such as OSGi Blueprint or OSGi Declarative Services. However sometimes you may want to tweak the properties at a later date without having to rewrite your system. Assume that in your organisation all of a sudden the office numbering has changed, which would really mean that you'd have to update the 'location' attribute of all the printers. Or maybe you want to add some additional metadata to existing printers that influence the selection process, like their energy rating.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;Service Registry Hooks provide the building blocks that make this possible. &lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;I wrote a little bundle called &lt;i&gt;&lt;b&gt;ServiceJockey&lt;/b&gt;&lt;/i&gt; that uses these to manipulate service registrations and how they are looked up. BTW you can find details at the end of this posting about getting ServiceJockey, which is open source and available freely under the Apache License.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Service Registry Hooks: what are they?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;One of the driving factors for Service Registry Hooks (an OSGi standard introduced in the 4.2 Core specification) was the Remote Services (Distributed OSGi) work done in the OSGi Alliance. One of the things that implementations of the Remote Service spec need to know is what kind of services consumers are looking for so that they can go out to a discovery system to see if it might be available remotely. Eagerly registering all available remote services is clearly not scalable so we need a smarter mechanism to allow for &lt;i&gt;transparent&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt; on demand discovery of remote services. This is what the &lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;ListenerHook &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHook &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;provide us. Together they allow us to find out what service consumers are requesting making us to only look in a remote Discovery system for those that are relevant to the current framework. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Another problem was frequently brought up. What if you have an existing bundle that doesn't know anything about Remote Services? What is the default behaviour? Should all service lookups all of a sudden always include remote services? The Remote Services spec does include a special property that you can add to your filter to influence this (&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace; font-size: small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;service.imported&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;) but you clearly don't want to break up all your existing service consumers to add this extra property to their lookup filters.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;It turned out that there wasn't really a valid answer to that question applicable to all cases. If you're working on a system only using Remote Services for a select set of services it may make sense to default all other services consumers to &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;not&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; use Remote Services. On the other hand, maybe if you're building a Cloud-based infrastructure where services can move freely from one container to another the default behaviour could be that you do allow remote services for just about anything.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Since there isn't really a one-size fits-all here the Service Registry Hooks make it possible to provide a &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;policy&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; for this problem in a separate bundle. You can create &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;EventHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;to influence what services consumers can see. This effectively allows you to add extra conditions to the lookup of service consumers without the need to modify those consumers.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Finally, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;EventHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHooks&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;, together with the a &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;ServiceListener&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;, allow you to proxy Service Registrations, where you provide a second registration of the same object with modified properties, hiding the original.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;The ability to provide an alternate registration on the fly and the possibility to impose extra conditions on existing service consumer lookups is what I built ServiceJockey around.&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR4vKkr7I/AAAAAAAAARk/jBGn1vJTTRs/s1600/img2.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR4vKkr7I/AAAAAAAAARk/jBGn1vJTTRs/s640/img2.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;ServiceJockey doesn't replace the Service Object, it only effectively replaces the registration in the Service Registry plus it can put additional constraints on client lookups. But you could go further. If you wanted to actually replace or shadow the real service object and do some work when somebody uses it (maybe log it or something) you could put an additional object between the consumer and the original service object.&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;Because the Service Registry Hooks effectively modify some basic behaviour of the framework (the visibility of Services) they should really be started early in the Framework lifecycle. You can achieve that by giving them a low start level.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;The Service Registry Hooks are available in Felix 1.8.0 and Equinox 3.5 and newer versions of these.&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;Altering Service Registrations&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;Let's start with a bundle that consumes (uses) a Printer. It isn't interested in which printer, as long as it can print A4:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  BundleContext context = ... &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;// from Activator.start()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  Filter filter = context.createFilter(&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;  &quot;(&amp;amp;(objectClass=org.acme.Printer)(paper-size=A4))&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;);        &lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; ServiceTracker(context, filter, &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; Object addingService(ServiceReference ref) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;// print out some information on the printer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;    // or use the printer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;super&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.addingService(ref);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  }            &lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  };&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.open();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;When I run this it's reporting both printers that I have in my system:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;Printer:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;service.id: 27&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;name: p1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;location: b283&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;capabilities: [Double-sided]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;paper-size: [A3, A4]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;Printer:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;service.id: 28&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;name: p7&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;location: a12&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;So the client has arbitrary access to both of them. Now lets see if you can modify the client behaviour so that it only uses a printer with an Energy Rating &amp;lt; 50.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;But hold on, we don't even know about energy ratings yet! We need to add this information to the Printer registration &lt;b&gt;without changing the bundle(s) that register the Printers.&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; Let's user Service Jockey to do this.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;Service Jockey uses the OSGi Extender Model. This means that it is driven from a data file in a bundle.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;So I've got a bundle (called PrinterJockey) that contains META-INF/sj.xml:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;http://www.coderthoughts.org/schemas/sj/v1.0.0&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)(name=p1))&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;energy-rating&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;75&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/add-property&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)(name=p7))&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;energy-rating&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I will have to tell the Service-Jockey that my bundle contains configuration for it, for that I'm adding a header to the Manifest:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;Service-Jockey&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;: META-INF/sj.xml&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Lets run the Printer Consumer bundle  together with Service Jockey and my 'Printer Jockey' configuration bundle that contains the sj.xml file:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;id    State   Level Bundle&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;0 ACTIVE   0     org.eclipse.osgi_3.5.1.R35x_v20090827&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;1 ACTIVE   1     org.coderthoughts.servicejockey_0.0.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;2 ACTIVE   1     PrinterJockey_1.0.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;3 ACTIVE  10    Printers_1.0.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;In my case the Printers bundle both registers and consumes the Printers, but that's because its a little test bundle. It's not really relevant. Note that the Printers bundle has a higher start level than the Jockey ones and therefore starts later.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;When I run my system again I can see that it's doing some work. Now my client reports these services:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 30&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: b283&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Double-sided]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A3, A4]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 75&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 32&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p7&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: a12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 50&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Aha! I've got my energy rating in there! That's good. Remember that these are alternative registrations. The original ones haven't changed, they're just hidden.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt; Altering Client Side Lookups &lt;/span&gt;&lt;br /&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now I want my client to only use the one that is rated &amp;lt;= 50.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;That's done by adding another rule to the Service Jockey configuration. A rule that adds an extra filter to any matching lookup in a consumer.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;service-jockey&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;xmlns&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;i&gt;&quot;http://www.coderthoughts.org/schemas/sj/v1.0.0&quot;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;restrict-visibility&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;     &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;bsn&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.*&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;bsn&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(energy-rating&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=50)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/restrict-visibility&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;  ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;You can specify a regular expression to say what the Bundle Symbolic Name of the consumer bundle(s) is that the rule applies to. In my case .* matches anything. So it applies to any bundle that has OSGi Service consumers. By the way, there's also a &lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;/span&gt; tag.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span lang=&quot;en-GB&quot; style=&quot;font-size: small;&quot;&gt;You specify to what services the additional filter applies with the &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;tag and you specify the additional filter in &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;. In my case I'm adding the &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;(energy-rating&amp;lt;=50) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;condition to any Printer Service returned to a consumer (the condition looks a bit dodgy because of the XML escaping of the '&amp;lt;' sign - you could use a CDATA section instead...).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Note that the Service Filter applies to any service returned to a service consumer, regardless of the filter used by the client itself looks like.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Let's run the client again:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 32&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p7&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: a12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 50&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Bingo - it only selects the service I wanted it to select. Based on additional properties and criteria listed in my Service Jockey configuration file. I did not have to modify the Printer Service registration bundle or the Consumer bundle...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;Is it overkill?&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Seems like a lot of work for just adding a service property, is there not a lighter way to at least add values to Service Registrations? Well at least that was my initial impression. However looking at the ServiceJockey bundle, it's only 14kb. Besides that there is currently no other way to achieve this...  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt; Service Jockey - ride your service interactions&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I didn't show any of the code to actually use the EventHook and the FindHook. Have a look at the &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey/src/org/coderthoughts/servicejockey/HidingEventHook.java&quot;&gt;HidingEventHook&lt;/a&gt; and &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey/src/org/coderthoughts/servicejockey/HidingFindHook.java&quot;&gt;HidingFindHook&lt;/a&gt; source code for that.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;You can check out the source (Apache License) as an Eclipse Project &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey&quot;&gt;from SVN here&lt;/a&gt;. If you fancy modifying the code, I would recommend you also &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockeyTest&quot;&gt;get the tests project&lt;/a&gt; and add new ones. The test bundle depend on the &lt;a href=&quot;http://code.google.com/p/mockito/&quot;&gt;Mockito bundle&lt;/a&gt; for its mock objects...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I'm sure the Service Jockey isn't perfect, because I only wrote it during an airplane flight so feel free to send patches :)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I also put a &lt;a href=&quot;http://coderthoughts.googlecode.com/files/org.coderthoughts.servicejockey_0.0.1.jar&quot;&gt;binary download of ServiceJockey here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Also in the source tree, Eclipse projects for the &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/Printers&quot;&gt;Printers&lt;/a&gt; and &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/PrinterJockey&quot;&gt;PrinterJockey&lt;/a&gt; example bundles. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/9210566578097047576-3287136601858913109?l=coderthoughts.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 13:58:42 +0000</pubDate>
	<author>david.bosschaert@gmail.com (davidb)</author>
</item>
<item>
	<title>Lars Vogel: Profiling Eclipse RCP applications with Eclipse TPTP</title>
	<guid isPermaLink="false">http://www.vogella.de/blog/?p=1335</guid>
	<link>http://www.vogella.de/blog/2009/11/18/profiling-eclipse-rcp-tptp/</link>
	<description>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;I believe approx. one or two years ago I tried to profile an &lt;a href=&quot;http://www.vogella.de/articles/RichClientPlatform/article.html&quot;&gt;Eclipse RCP application &lt;/a&gt; with the &lt;a href=&quot;http://www.eclipse.org/tptp/&quot;&gt;Eclipse TPTP &lt;/a&gt;project. I believe at this point in time profiling an RCP application with TPTP was not possible. &lt;/p&gt;
&lt;p&gt;I learned from Eugene Chan that the TPTP release which is part of Eclipse Galileo allows to profile Eclipse RCP applications. &lt;/p&gt;
&lt;p&gt;I suggest you give it a try, it is as easy as profiling a standard &lt;img src=&quot;http://www.vogella.de/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  Java application. &lt;/p&gt;
&lt;p&gt;You find an updated description here: &lt;a href=&quot;http://www.vogella.de/articles/EclipseTPTP/article.html&quot;&gt;Eclipse TPTP Tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to Eugene Chan, Paul Slauenwhite and Kathy Chan from the TPTP team for feedback on the article. &lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 04:36:12 +0000</pubDate>
</item>
<item>
	<title>Karsten Thoms: Eclipse DemoCamp November 26th in Frankfurt</title>
	<guid isPermaLink="false">http://kthoms.wordpress.com/?p=103</guid>
	<link>http://kthoms.wordpress.com/2009/11/17/eclipse-democamp-november-26th-in-frankfurt/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Next week, Thursday Nov. 26th, there will be an &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Eclipse DemoCamp in Frankfurt&lt;/a&gt;, starting 05:30 PM until 09:00 PM at Saalbau Gallus. I am happy that my current project schedule allows me being in Frankfurt at this time. There are already over 40 registered attendees, this is quite impressing. There are 6 interesting talks presented at this DemoCamp:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Using &lt;a href=&quot;http://www.eclipse.org/Xtext/&quot;&gt;Eclipse TMF&lt;/a&gt; in a large scale modeling and implementation project&lt;/strong&gt; from &lt;a href=&quot;https://www.xing.com/profile/Nikolai_Busse2&quot;&gt;Dr. Nikolai Busse&lt;/a&gt; (Deutsche Börse Systems AG). The project Nikolai is talking about is the one I am working on most of this year. I already had the opportunity to talk about this project at the &lt;a href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=64&quot;&gt;CodeGeneration 2009&lt;/a&gt; and &lt;a href=&quot;http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=wjax09&amp;amp;id=11245&quot;&gt;W-JAX 09&lt;/a&gt; conference. Nikolai will no doubt give an really interesting talk about an extraordinary project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://code.google.com/p/redview/&quot;&gt;redView&lt;/a&gt; – dynamische Views für Business Applications&lt;/strong&gt; from &lt;a href=&quot;http://ekkescorner.wordpress.com/&quot;&gt;Ekkehard Gentz&lt;/a&gt;. Ekke has created a fascinating project using technologies like EMF, CDO, openArchitectureWare, UML2. Ekke is also a member on the openArchitectureWare team and it is always a pleasure to talk with him. Last time we met was last week at the W-JAX, but unfortunately I had to leave on thursday before his talk. Now I have the chance to see it finally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JPA (&lt;a href=&quot;http://www.eclipse.org/eclipselink/&quot;&gt;EclipseLink&lt;/a&gt;) in OSGI Anwendungen &lt;/strong&gt;from &lt;a href=&quot;https://www.xing.com/profile/Karsten_Voigt3&quot;&gt;Karsten Voigt&lt;/a&gt; (IBM Global Business Services). EclipseLink will be the reference implementation of the JPA 2.0 standard. This framework has already a long history and many experience was put into it. Although Hibernate is most widely spreaded I think that EclipseLink will play a bigger role in the future. EclipseLink has smooth integration with EMF with &lt;a href=&quot;http://www.eclipse.org/modeling/emf/?project=teneo#teneo&quot;&gt;Teneo&lt;/a&gt;, which makes Domain Driven Design with JPA persistence really easy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.stg.tu-darmstadt.de/research/core/&quot;&gt;Eclipse Code Recommenders&lt;/a&gt; – How much can the IDE predict what you will write in the next seconds? &lt;/strong&gt;from &lt;a href=&quot;http://kthoms.wordpress.com/category/software-development/eclipse/feed/&quot;&gt;Marcel Bruch&lt;/a&gt; (TU Darmstadt). Marcel presents his research project where a more intelligent way for producing IDE proposals is developed. Sounds interesting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Das ist hier Usus… &lt;/strong&gt;from &lt;a href=&quot;https://www.xing.com/profile/Leif_Frenzel&quot;&gt;Leif Frenzel&lt;/a&gt; and &lt;a href=&quot;https://www.xing.com/profile/Stefan_Schuerle&quot;&gt;Stefan Schürle&lt;/a&gt; (adrena objects). They will present &lt;a href=&quot;http://code.google.com/p/projectusus/&quot;&gt;projectusus&lt;/a&gt;, which aims to provide Eclipse plugins that derive settings for Eclipse and code quality plugins like Checkstyle and EclEmma. The clue is that the settings try to match automatically what’s a project’s usus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RCP goes Web 2.0 – &lt;a href=&quot;http://www.eclipse.org/rap&quot;&gt;Eclipse Rich Ajax Platform&lt;/a&gt;&lt;/strong&gt; from &lt;a href=&quot;https://www.xing.com/profile/Benjamin_Muskalla&quot;&gt;Benjamin Muskalla&lt;/a&gt; (EclipseSource). Let’s see what RAP has new…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6 talks are really a lot for a DemoCamp. Besides presentations also networking is important at a DemoCamp. Let’s hope there is enough space for talking. Ralph Müller from the Eclipse Foundation will be there (where on the world is he not?), some people from SAP, Heidelberger Services AG, some of my colleagues from &lt;a href=&quot;http://www.itemis.de&quot;&gt;itemis&lt;/a&gt;, and several others. And it will be the first time I meet Attila Bak in person, who I now from the &lt;a href=&quot;http://www.fornax-platform.org&quot;&gt;Fornax Project&lt;/a&gt; since some years already, but until now just via email.&lt;/p&gt;
&lt;p&gt;Maybe I can met YOU also there? Registering is easy, and the event is free of charge. To register, just enter yourself to the DemoCamp’s &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Wiki page&lt;/a&gt;. To edit it, you’ll just need an account there. If you don’t want to open account just for that, just send me a mail and I’ll add you.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://kthoms.files.wordpress.com/2009/11/karsten-email.png&quot;&gt;&lt;img src=&quot;http://kthoms.files.wordpress.com/2009/11/karsten-email.png?w=156&amp;amp;h=15&quot; title=&quot;karsten-email&quot; height=&quot;15&quot; width=&quot;156&quot; alt=&quot;&quot; class=&quot;alignleft size-full wp-image-104&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=kthoms.wordpress.com&amp;amp;blog=6829080&amp;amp;post=103&amp;amp;subd=kthoms&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 17 Nov 2009 21:05:40 +0000</pubDate>
</item>
<item>
	<title>Eclipse4SL: Windows Azure Tools for Eclipse version 1.0 released</title>
	<guid isPermaLink="false">http://www.eclipse4sl.org/blog/?p=181</guid>
	<link>http://www.eclipse4sl.org/blog/windows-azure/windows-azure-tools-for-eclipse-version-10-released/</link>
	<description>&lt;p&gt;Aligning with the general availability of the release candidate of Windows Azure SDK that was unveiled at the Professional Developer Conference today, we are pleased to release version 1.0 of the version 1.0 of the Windows Azure Tools for Eclipse &amp;amp; SDK for Java.&lt;/p&gt;
&lt;p&gt;The Eclipse tooling &amp;amp; SDKs are fully compatible with the new version of Windows Azure that has just been released today. We have also included new features that are described on the Microsoft Interoperability Blog:&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/interoperability/&quot;&gt;http://blogs.msdn.com/interoperability/&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 17 Nov 2009 20:01:33 +0000</pubDate>
</item>
<item>
	<title>Bob Balfe: Randall C. Kennedy: Why I hate Microsoft Office 2010</title>
	<guid isPermaLink="true">http://blog.balfes.net/?p=904</guid>
	<link>http://blog.balfes.net/?p=904</link>
	<description>&lt;p&gt;This &lt;a href=&quot;http://www.infoworld.com/d/windows/why-i-hate-microsoft-office-2010-586?source=IFWNLE_nlt_daily_2009-11-17&quot;&gt;article&lt;/a&gt; is a very interesting read.  “Office 2010 is clunky” - that is not a good start for an evaluation.  Randall continues the &lt;a href=&quot;http://www.infoworld.com/d/windows/why-i-hate-microsoft-office-2010-586?page=0,1&amp;amp;source=IFWNLE_nlt_daily_2009-11-17&quot;&gt;article&lt;/a&gt; with comparisons to Outlook and Office 2007 - makes you wonder if MS did any kind of performance modeling against previous releases? He ends with a brief description of the “Back Stage” feature and how it causes pain because it is not consistent from option to option.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“The idea well has finally run dry in Redmond. Maybe they can borrow a cup or two from their contemporaries down in Cupertino.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;



&lt;p class=&quot;technorati-tags&quot;&gt;technorati tags: &lt;a href=&quot;http://technorati.com/tag/lotus&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;lotus&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Microsoft&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;Microsoft&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 17 Nov 2009 17:46:40 +0000</pubDate>
</item>
<item>
	<title>Eugene Ostroukhov: Release names</title>
	<guid isPermaLink="false">http://eclipseblog.ostroukhovs.com/?p=94</guid>
	<link>http://eclipseblog.ostroukhovs.com/2009/11/17/release-names/</link>
	<description>&lt;p&gt;I wonder if I’m the only one who can’t remember fancy names for Eclipse releases – Europa, Ganymede, Galileo, Helios. I think it’s not really good that there’s no easy way to memorize them (I wonder if they were meant to be in alphabetical order – if not for “Ganymede” and “Galileo”). Eclipse releases annually – so why doesn’t it has name like “Eclipse 2007″?&lt;/p&gt;
&lt;p&gt;So:&lt;/p&gt;
&lt;table width=&quot;50%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;
&lt;th&gt;Platform/JDT/PDE&lt;/th&gt;
&lt;th&gt;CDT&lt;/th&gt;
&lt;th&gt;WTP&lt;/th&gt;
&lt;th&gt;BIRT&lt;/th&gt;
&lt;th&gt;Site&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Callisto&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.eclipse.org/callisto/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Europa&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/europa/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ganymede&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/ganymede/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Galileo&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/galileo/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helios&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/helios/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/ThoughtsAboutEclipseUi/~4/9jdFFuuJjEM&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 17 Nov 2009 15:56:41 +0000</pubDate>
</item>
<item>
	<title>OpenNTF: New Release: File Explorer with Support for Favorites and Comp Apps</title>
	<guid isPermaLink="true">http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XV8RU</guid>
	<link>http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XV8RU</link>
	<description>&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Manfred Lenz has contributed a Lotus
Notes sidebar plugin to &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XGA36&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;OpenNTF&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;.
This plugin is another file explorer with some differences to the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/File%20Navigator&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;File
Navigator&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt; which was implemented
at the same time.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;1. It handles favorites of files and
directories which are handled at Eclipse level (not operating system level)&lt;/font&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;2. It allows to hide certain drives&lt;/font&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;3. It can be used in a composite applications
supporting property broker&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;As always you can install the plugin
via drag and drop from the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/catalogs/a2cat.nsf/topicThread.xsp?action=openDocument&amp;amp;documentId=676A8D3CFB7A888185257671001F58BA&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Apache
catalog&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;. Or download the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/downloadcounter?openagent&amp;amp;project=File%20Explorer&amp;amp;release=1.0.0&amp;amp;unid=2FE6A08FB1FF61AC862576700038C1BC&amp;amp;attachment=File%20Explorer.zip&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;zip
file&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt; directly. &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/852fcfa76eb36baa85256bae00100855/C2D88F8B73E164AA8625767000389240/$File/readme.pdf&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Here&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;
is the documentation.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/6F7748C77C7125E986257671001FEEE7/EntryMoreRichMime/M2?OpenElement&quot; alt=&quot;A picture named M2&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/6F7748C77C7125E986257671001FEEE7/EntryMoreRichMime/M3?OpenElement&quot; alt=&quot;A picture named M3&quot; /&gt;</description>
	<pubDate>Tue, 17 Nov 2009 05:45:18 +0000</pubDate>
</item>
<item>
	<title>Andrew Eisenberg: How type inferencing for Groovy in Eclipse is leading to all sorts of Groovy goodness</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-6917071644715743308.post-3491164495678211552</guid>
	<link>http://contraptionsforprogramming.blogspot.com/2009/11/how-type-inferencing-for-groovy-in.html</link>
	<description>Of all of the recent improvements of Groovy-Eclipse since M1 has been released, the groovy type inferencing engine is the most pervasive and powerful.  This inferencing engine is able to take a groovy file or code snippet and infer the type of any or all of its expressions.  It now forms the core of several of the most prominent features of Groovy-Eclipse.  Everything that I describe here is currently available in the latest snapshot release of Groovy-Eclipse for Eclipse 3.5 and the update site is here:&lt;br /&gt;&lt;pre&gt;http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.5&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this post, I am going to describe how the inferencing engine is currently used in Groovy-Eclipse and then I will dive a deep and describe how it is implemented.  I'll end the post by describing our plans for immediate the future.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What type inferencing is used for&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Underlining statically indeterminate references&lt;/h3&gt;&lt;br /&gt;The Groovy editor now underlines all references that cannot be determined while editing.  This happens in a background thread while you type.  So, the following code (notice the mispelling of asImmutable):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def aList = []&lt;br /&gt;def otherList = aList.asImmutabl()&lt;br /&gt;otherList.asImmutable()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...will appear in the editor like this...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470080/&quot; title=&quot;underline by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2620/4110470080_8a8cf6f7a7_o.gif&quot; alt=&quot;underline&quot; border=&quot;1&quot; width=&quot;243&quot; height=&quot;49&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and when the typo is fixed, the underlines go away...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706667/&quot; title=&quot;nounderline by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;268&quot; alt=&quot;nounderline&quot; src=&quot;http://farm3.static.flickr.com/2695/4109706667_01c1e9bf1b_o.gif&quot; height=&quot;46&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Code is re-analyzed after every keystroke (well, actually, it is after every keystroke that is followed by 500ms of no keystrokes).  The type of every reference in the file is looked up using the inferencing engine.  Every reference that cannot be found is considered to be unknown and will be underlined.&lt;br /&gt;&lt;br /&gt;Of course, Groovy being a dynamic language, not all references can be statically linked to a type (other than Object).  This is especially the case when working with DSLs (such as Grails) that use metaprogramming to add new methods and fields to existing types.  Later, I'll describe our plans for extensibility.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Search&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Inferencing is used for Java Search as well.  Using the search short cut (CTRL-Shift-G or CMD-Shift-G on Mac) or running search from the Java Search dialog, references from and to Groovy code snippets can be located.  However, there are some difficulties here.  Compared to Java, Groovy is quite a bit more flexible in the ways that fields and methods can be referenced.  For example, this field is assigned a closure and referenced as if it were a method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Foo {&lt;br /&gt;  def x = { print it }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;x(&quot;Hello!&quot;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And this method is referenced in a way that is statically indistinguishable from a field:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Foo {&lt;br /&gt;  def x() {  print &quot;Hello!&quot; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;x&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Furthermore, the spread operator and the use of default parameters makes the Java way of determining which method or field is referenced impossible.  So, Groovy search is significantly more liberal than Java search in what it considers a search match.  If a reference corresponds to any field, method, or property in the declaring type (regardless of parameter count and whether it is accessed as a field or method), then the match is considered successful.  This leads to the following scenarios.&lt;br /&gt;&lt;br /&gt;1. Performing search on the field declaration finds field references here:&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706725/&quot; title=&quot;searchForField by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;273&quot; alt=&quot;searchForField&quot; src=&quot;http://farm3.static.flickr.com/2527/4109706725_bfc2bc77e5_o.gif&quot; height=&quot;279&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Performing search on the method declaration finds exactly the same references:&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706789/&quot; title=&quot;searchForMethod by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;270&quot; alt=&quot;searchForMethod&quot; src=&quot;http://farm3.static.flickr.com/2715/4109706789_4c7a968d5e_o.gif&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And, notice that references attached to the wrong type are not considered a match.&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110490950/&quot; title=&quot;searchNoResults by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;227&quot; alt=&quot;searchNoResults&quot; src=&quot;http://farm3.static.flickr.com/2508/4110490950_837049e7e8_o.gif&quot; height=&quot;280&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Content Assist&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Most of the internals of Groovy-Eclipse has been rewritten since the previous 1.5.7 release.  The most recent rewrite is of content assist.  Although the previous version worked (usually), there was always a noticeable lag while waiting for the content assist window to appear.  This previous implementation of content assist used a combination of Java classloading and Groovy AST matching in order to find all completion proposals available at a given location, which was both messy and slow.  Now, we have hooked into the inferencing engine and have completely rewritten proposal generation with extensibility in mind.  And we have made some remarkable improvements in performance.&lt;br /&gt;&lt;br /&gt;Using the following code snippet I performed content assist 5 times under the old implementation and the new and took the average of the last 3 of each:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def x&lt;br /&gt;x.hasProperty(&quot;foo&quot;).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Old implementation&lt;/td&gt;&lt;td&gt;2315 milliseconds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New implementation&lt;/td&gt;&lt;td&gt;8 milliseconds&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;That's right...there is a 3 orders of magnitude speed up under the new implementation, making content assist a much more pleasant feature to use.  But please note that this is just the time for calculation of the proposals and it does not include the time required to actually pop up the window.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Open declaration&lt;/h3&gt;&lt;br /&gt;The implementation of open declaration (or &lt;em&gt;code select&lt;/em&gt; as it is called in JDT because it is a general mechanism to determine what the current selection refers to and is also used for things like calculating hovers) also uses inferencing.  Pressing F3 whenever the selection is any form of &quot;navigateToMe&quot; in the following code, the expected declaration will open:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470268/&quot; title=&quot;navigateBefore by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;253&quot; alt=&quot;navigateBefore&quot; src=&quot;http://farm3.static.flickr.com/2739/4110470268_6b06a89dbb_o.gif&quot; height=&quot;140&quot; /&gt;&lt;/a&gt;  ---&amp;gt; &lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470320/&quot; title=&quot;navigateAfter by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;250&quot; alt=&quot;navigateAfter&quot; src=&quot;http://farm3.static.flickr.com/2606/4110470320_b32544c6ff_o.gif&quot; height=&quot;136&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although Groovy-Eclipse M1 used type inferencing for code select, it was using the inferencing from content assist and was subject to the same mistakes, duplicate answers, and slowness that content assist had.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;How it works&lt;/h2&gt;&lt;br /&gt;The inferencing engine has unified the implementation of several of Groovy-Eclipse's most widely used features.  With this unification, we have been able to significantly reduce the amount of duplicated code, improve performance, and plan for extensibility.&lt;br /&gt;&lt;br /&gt;There are four interacting components of the inferencing engine:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The Abstract Syntax Tree (or AST):&lt;/strong&gt; this is an abstract representation of the syntax of a groovy file expressed hierarchically.  The code to work on can be obtained either from the disk, or it can be the latest in memory.  The AST is generated by the Groovy compiler based on the current state of the editor whenever Eclipse is otherwise idle.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The type inferencing visitor:&lt;/strong&gt; this visitor walks the AST (i.e., uses a visitor pattern to visit every AST node) and delegates to the type lookups and the requestor described below.  A new visitor is created for each call to the inferencing engine.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The type lookups:&lt;/strong&gt; these objects lookup the type information of a particular expression using whatever mechanism they require.  They can store and retrieve information about types in a way that all other lookups can use.  In this way, each lookup can do what it can and coordinate with other lookups where required.  Several default lookups are provided including a simple lookup, an inferencing lookup (that stores information about types via assignment expressions), and a category lookup (that looks up types in Groovy categories).  Type lookups are created from a registry on each call to the inferencing engine.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The requestor:&lt;/strong&gt; this is the object that collects the type information determined by the lookups.  The requestor is general and can be used as a way to store the types of all expressions, lookup the type of a particular expression, or look for expressions with unknown types (just to name a few uses).  The requestor is created by client code and past to the visitor to start the inferencing process.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;The following diagram shows process and how the different pieces work together:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110469952/&quot; title=&quot;arch by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2530/4110469952_45fc615b3b_d.jpg&quot; alt=&quot;arch&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The visitor visits an AST expression node&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The visitor sends this expression to the type lookups.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt; each lookup responds with a type and its confidence in that type (ie, exact, potential, inferred...), or null, if it cannot find a type&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; a lookup may additionally store information in a scope object that is passed around to other lookups so that information can be shared between them&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The result of the lookup is sent to the requestor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The requestor processes the result and may choose to end the visit or continue.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If required, the visitor will continue to visit the rest of the abstract syntax of the Groovy file&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What's next&lt;/h2&gt;&lt;br /&gt;One of the core design goals of the inferencing engine is extensibility.  The inferencing engine must be extensible in two ways.  First, it must be usable to help support new features such as quick fixes and refactoring.  Also, DSLs, (most notably Grails) must be able to extend inferencing with their own type lookups. It should be apparent through the description of the variety of ways that the engine is currently used that it versatile and can become the core implementation of any number of new Groovy-Eclipse features.  As for DSL extensibility, that has not yet been implemented, but the stubs are available.  Other DSLs will need to implement their own type lookup, but there is currently no way for these new lookups to be plugged in.  Fortunately, it will be possible to use Eclipse's plugin architecture here and this will be the subject of my next blog post (after it gets implemented).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6917071644715743308-3491164495678211552?l=contraptionsforprogramming.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 23:46:00 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Eisenberg)</author>
</item>
<item>
	<title>Chris Aniszczyk: The Bookshelf: Building Open Communities</title>
	<guid isPermaLink="false">http://aniszczyk.org/?p=1469</guid>
	<link>http://aniszczyk.org/2009/11/16/the-bookshelf-building-open-communities/</link>
	<description>&lt;p&gt;One of my big interests is building and analyzing communities, especially in the open source space. I’ve learned a lot from my experience in the &lt;a href=&quot;http://www.gentoo.org&quot;&gt;Gentoo&lt;/a&gt; Linux and &lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse&lt;/a&gt; communities and take joy in the experience. There are so many interesting topics within community building from effective communication mechanisms to development processes to governance. I see a future where a lot of software is developed in the open and building a community around that will be vital to the success of that piece of software. As I was writing this post, Microsoft just announced that they are &lt;a href=&quot;http://port25.technet.com/archive/2009/11/16/microsoft-to-open-source-the-net-micro-framework.aspx&quot;&gt;open sourcing the .NET micro framework&lt;/a&gt; and attempting to build a open community around the technology…&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Microsoft is also in the process of forming a community of interested and involved members to help shape the future direction of the product. There will be a core technology team that is composed of Microsoft and external partners, and people will be encouraged to propose projects, which will be vetted before they are accepted…. The site will also support people building extensions that exist alongside the platform rather than being integrated into it…&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You know when Microsoft is releasing stuff under the Apache 2.0 license and attempting to build communities there’s a shift in the industry happening. Good for them!&lt;/p&gt;
&lt;p&gt;Ok, on to the point of this post now. My reading list went empty recently and I needed to fill it with some interesting books. In particular, I was looking for books related to open source and community building. The good news is that I found a couple of interesting books, the bad news is that I wish there were more books on these topics. I’ve been devouring the &lt;a href=&quot;http://www.artofcommunityonline.org/&quot;&gt;Art of Community&lt;/a&gt; book by Jono Bacon (Ubuntu’s Community Manager).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.artofcommunityonline.org/&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/artofcommunity.jpg&quot; title=&quot;Art of Community Cover&quot; height=&quot;240&quot; width=&quot;183&quot; alt=&quot;Art of Community Cover&quot; class=&quot;alignnone size-full wp-image-1471&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s a fascinating book which outlines some of the aspects of community building and share’s many of Jono’s experiences in developing the Ubuntu community. A lot of the things he discusses can be mapped to what is going on within the Eclipse community. Jono’s coverage of the importance of meritocracy and governance pleases me.&lt;/p&gt;
&lt;p&gt;Anyone else have a chance to read the book yet?&lt;/p&gt;
&lt;p&gt;Another book that I’m looking to devour is the &lt;a href=&quot;http://www.forrester.com/Groundswell/book.html&quot;&gt;Groundswell&lt;/a&gt; by a couple of Forrester Research’s analysts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.forrester.com/Groundswell/book.html&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/groundswell.jpg&quot; title=&quot;groundswell&quot; height=&quot;286&quot; width=&quot;245&quot; alt=&quot;groundswell&quot; class=&quot;alignnone size-full wp-image-1470&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’m always a fan of case studies around social technology and how it can impact your business. My favorite recent example is the &lt;a href=&quot;http://mashable.com/2009/07/15/united-breaks-guitars/&quot;&gt;United Breaks Guitars&lt;/a&gt; debacle… how much heartache did that cost United? I’ll let people know what I think of Groundswell when I finish it.&lt;/p&gt;
&lt;p&gt;Anyone else reading anything good around open source of community building lately? Any recommendations?&lt;/p&gt;</description>
	<pubDate>Mon, 16 Nov 2009 21:36:29 +0000</pubDate>
</item>
<item>
	<title>Karsten Thoms: Misleading error message for JavaBeautifier dependencies</title>
	<guid isPermaLink="false">http://kthoms.wordpress.com/?p=99</guid>
	<link>http://kthoms.wordpress.com/2009/11/16/misleading-error-message-for-javabeautifier-dependencies/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;The postprocessor &lt;tt&gt;org.eclipse.xpand2.output.JavaBeautifier&lt;/tt&gt; comes with the plugin &lt;tt&gt;org.eclipse.xpand&lt;/tt&gt;, but needs additional dependencies to work. Under the hood the beautifier leverages JDT, so the dependency to JDT is obvious. Normally the missing plugin dependencies can be easily derived from the error messages, since the package name of some missing class usually maps to the plugin identifier where the class resides. However, you might recognize the error message&lt;br /&gt;
&lt;code&gt;java.lang.NoClassDefFoundError: org/eclipse/jface/text/BadLocationException&lt;/code&gt;&lt;br /&gt;
and think that the class must be in plugin &lt;tt&gt;org.eclipse.jface.text&lt;/tt&gt;. But that’s not true, although there is of course a plugin &lt;tt&gt;org.eclipse.jface.text&lt;/tt&gt;. Actually, class &lt;tt&gt;BadLocationException&lt;/tt&gt; is in the plugin &lt;strong&gt;&lt;tt&gt;org.eclipse.text&lt;/tt&gt;&lt;/strong&gt; and is reexported from the JFace plugin.&lt;/p&gt;
&lt;p&gt;The actual dependencies that have to be added when using the JavaBeautifiers are:&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.jdt.core&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.text&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.core.resources&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=kthoms.wordpress.com&amp;amp;blog=6829080&amp;amp;post=99&amp;amp;subd=kthoms&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 21:34:55 +0000</pubDate>
</item>
<item>
	<title>Martin Lippert: OSGi for Eclipse Developers Webinar</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-2268531304258897056</guid>
	<link>http://martinlippert.blogspot.com/2009/11/osgi-for-eclipse-developers-webinar.html</link>
	<description>Today I gave an &lt;a href=&quot;http://live.eclipse.org/node/819&quot;&gt;Eclipse webinar on &quot;OSGi for Eclipse Developers&quot;&lt;/a&gt; together with Chris Aniszczyk and Bernd Kolb. We talked about various OSGi things that might sound strange and/or unfamiliar to you if you come from the Eclipse way of developing applications. We talked about the relationship of Eclipse and OSGi, dependency management and why you should use Import-Package instead of Require-Bundle, dynamics with OSGi, services vs. extensions, versioning, some compendium services and tooling for OSGi. If you missed the live broadcast, you can &lt;a href=&quot;http://live.eclipse.org/node/819&quot;&gt;watch the entire webinar from here again&lt;/a&gt;.  Enjoy!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/18490491-2268531304258897056?l=martinlippert.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 19:58:00 +0000</pubDate>
	<author>noreply@blogger.com (Martin Lippert)</author>
</item>
<item>
	<title>Andy Clement: AspectJ: How much faster is AspectJ 1.6.7?</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-4252978514266184993.post-4738462156890690686</guid>
	<link>http://andrewclement.blogspot.com/2009/11/aspectj-how-much-faster-is-aspectj-167.html</link>
	<description>In the previous post I talked about the new timing infrastructure that is now in place for determining which pointcuts are proving expensive to match.  Since getting that going I've been actively working on some systems that are load-time weaving aspects and attempting to optimize the matching process.  The system I was working on used many of what I could call 'typical' pointcuts and so as well as performing some general optimizations that will affect any kind of pointcut, I've put in some specific optimizations for these typical/common pointcuts.&lt;br /&gt;&lt;br /&gt;What is a common pointcut?&lt;br /&gt;&lt;br /&gt;I see this all the time: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* Foo.*(..))&lt;/span&gt;'.  An execution pointcut with an exact typename used for the declaring type in execution (Foo in this example).  By exact, I mean no wildcards are used.  AspectJ 1.6.7 supports fast match now if the type name is an exact name ( fast match is discussed in the previous article). The exact name may or may not be fully qualified, but the key thing is if there are no wildcards.  What difference does that make?  Here is a simple aspect:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;aspect SimpleAspect {&lt;br /&gt;before(): execution(* CharSequence+.*e*(..)) {}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Let's weave that into rt.jar (which contains 16,000 or so classes).  The aspect above will actually hit 380 join points in that jar.  The command I'm running:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;ajc -timers -inpath rt.jar SimpleAspect.aj -outjar wovenrt.jar&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;AspectJ1.6.6: 21728ms&lt;br /&gt;AspectJ1.6.7: 11954ms&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Almost 10seconds faster due to optimized matching!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Related to that, I see a lot of users exploiting the ability to recognize join points by their annotations and in execution I see this all the time: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* (@Bar *).*(..))&lt;/span&gt;' - execution of any method in any type annotated by &lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;@Bar&lt;/span&gt;.  For the case of an exact annotation and wildcarded type name (just '*'), fast match will now kick in.  What difference does it make?  Similar kind of improvement:&lt;br /&gt;&lt;br /&gt;AspectJ1.6.6: 21944ms&lt;br /&gt;AspectJ1.6.7: 11417ms&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Of course a pattern like that doesn't actually match anything in rt.jar but that means the numbers here are showing purely the improvement in match speed, because no weaving occurs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;WATCH OUT:&lt;/b&gt;  This close variant does not get fast matched: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* (@Bar *..*).*(..))&lt;/span&gt;' - this variation is choosing types not in the default package that happen to be annotated.  It could be optimized for, but so far I've found all users are happy to switch to '(&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;@Bar *&lt;/span&gt;)' so have not invested time in optimizing this pattern.&lt;br /&gt;&lt;br /&gt;Optimizations have also been made for all pointcuts containing signatures with these characteristics, because I often see them occur in the wild:&lt;br /&gt;- using an ellipsis for method arguments - '* *(..)'&lt;br /&gt;- using a single star for method arguments - '* *(*)'&lt;br /&gt;- specifying no arguments - '* *()'&lt;br /&gt;- specifying void or !void as the return type - 'void *(..)'  '!void *(..)'&lt;br /&gt;- a declaring type of simply one wildcard - '* *(..)'&lt;br /&gt;&lt;br /&gt;&lt;div&gt;How much faster?  For these improvements I created a micro benchmark that attempted to match these patterns a million times against a method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ1.6.6:&lt;br /&gt;Signature pattern [* *(..))] took 1375ms for 1,000,000&lt;br /&gt;Signature pattern [* *(*))] took 949ms for 1,000,000&lt;br /&gt;Signature pattern [* *())] took 908ms for 1,000,000&lt;br /&gt;Signature pattern [!void *(..))] took 1279ms for 1,000,000&lt;br /&gt;Signature pattern [void *(..))] took 1120ms for 1,000,000&lt;br /&gt;Signature pattern [* *a*b*()] took 570ms for 1,000,000&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ1.6.7:&lt;br /&gt;Signature pattern [* *(..))] took 357ms for 1,000,000&lt;br /&gt;Signature pattern [* *(*))] took 293ms for 1,000,000&lt;br /&gt;Signature pattern [* *())] took 285ms for 1,000,000&lt;br /&gt;Signature pattern [!void *(..))] took 364ms for 1,000,000&lt;br /&gt;Signature pattern [void *(..))] took 362ms for 1,000,000&lt;br /&gt;Signature pattern [* *a*b*()] took 309ms for 1,000,000&lt;br /&gt;&lt;br /&gt;Fast match is also now supported for the initialization pointcut too - so that will see similar benefits to execution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beyond these improvements, other general optimizations include:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) avoiding type resolution unless absolutely necessary.  This involves doing more examination of patterns up front to ensure the types really need to be loaded.&lt;/div&gt;&lt;div&gt;2) avoiding repeated type resolution.  Rather than resolving a type, then passing the signature to a downstream method where it needs to be re-resolved, AspectJ will now pass the resolved entity to save that extra resolve call.&lt;/div&gt;&lt;div&gt;3) faster binary weaving for jars.  Changed the algorithm for processing jar entries, it now does far less work with collections.&lt;/div&gt;&lt;div&gt;4) Altered type walking mechanism to be iterator based.  Previously it calculated the entire hierarchy before looking through it and often found the type it was looking for early.  Switching to iterators AspectJ now only explores as far as necessary and if the required type is found early, it walks (and resolves!) no further.&lt;/div&gt;&lt;div&gt;5) Reduced collection usage in the join point creation code.  Join point creation code runs *a lot* so even tiny improvements here manifest as big savings.&lt;/div&gt;&lt;div&gt;6) Moved to an iterator approach when searching for methods - rather than determining them all then searching through.  AspectJ now only searches as far as necessary.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to show these improvements?  I've collected full tracing yourkit profiles and compared them.  This is for a load-time weaving system involving tomcat plus some aspects. Startup time (when not profiled) of the server with these improvements has gone from 9seconds with AspectJ 1.6.6 to 6 seconds with AspectJ 1.6.7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Demonstrating improvements: type resolution&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Type resolution calls all funnel through World.resolve().  Here is the comparison run for 1.6.6 (old) versus 1.6.7 (new):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://3.bp.blogspot.com/_gFXDbWLX580/SwGooCgfGTI/AAAAAAAAEWQ/xEm9OEQl5jU/s1600/worldresolveCalls.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;441,922 less calls to resolve.  Due to a combination of avoiding repeated resolution and just more pointcut analysis so types are not chased down unnecessarily.  To reinforce that AspectJ is really chasing down fewer types, here is a look at the calls to lookupClass() which is how .class files are loaded by the weaver:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://1.bp.blogspot.com/_gFXDbWLX580/SwGo01Ra4rI/AAAAAAAAEWY/Qg_7mvBTX2g/s1600/lookupjavaclass.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3,068 less calls to locate and load class files.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Demonstrating improvements: fast match&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Obviously because fast match is now implemented for more pointcuts, the time spent in fast match has increased:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://3.bp.blogspot.com/_gFXDbWLX580/SwGn-oDNGvI/AAAAAAAAEWI/-87G2n5oX24/s1600/bcelweaverfastmatch.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Up from 2seconds to 12seconds.  But that 10seconds is more than offset by the reduction in time spent in the second stage of matching:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://4.bp.blogspot.com/_gFXDbWLX580/SwGo_yhFKSI/AAAAAAAAEWg/K-Il5SLmnBY/s1600/fullmatching.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That shows a reduction of almost 60seconds in second stage matching due to the improvements in fast matching.  (Remember all these numbers are particularly large because full profiling was done).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So there you have it, what has changed in AspectJ 1.6.7 and why it is faster.  I will practically guarantee that any user of the weaver will see an improvement - but how much improvement will depend upon whether your pointcuts fit the common patterns outlined above.  With the new timer infrastructure I'm hoping it will be much easier to diagnose slow weaving in future and over the next few releases I'm sure more enhancements will be put in place for further common pointcut patterns.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ 1.6.7 dev builds already include the enhancements mentioned above.  The latest AJDT dev builds for Eclipse 3.5 also include this AspectJ, however the ability to switch on timers in AJDT is not possible yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4252978514266184993-4738462156890690686?l=andrewclement.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 19:49:10 +0000</pubDate>
	<author>noreply@blogger.com (Andy Clement)</author>
</item>
<item>
	<title>Wim Jongman: OSGi: GESUNDHEIT!</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-4740251930569090138.post-6304278081418042329</guid>
	<link>http://industrial-tsi-wim.blogspot.com/2009/11/osgi-gesundheit.html</link>
	<description>This blog is about the &lt;a href=&quot;http://neilbartlett.name/blog/2009/11/12/2-day-osgi-training-in-amsterdam-1st-2nd-dec/&quot;&gt;upcoming OSGi course run by Neil Bartlett&lt;/a&gt;. If you are writing moderate to large size Java applications and you have heard about OSGi but are still a little puzzled about what it does: OSGi is the biggest thing that happened to Java this century. Here are three reasons why this is the case:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. OSGi enforces modularity&lt;/div&gt;&lt;div&gt;Making systems modular feels good to every engineer. It is just a logical thing to do when systems grow. We define and design modules in our systems. But once implemented, they cannot be taken out or replaced by a better version because they get entangled so quickly. When coding OSGi style, this will not happen. Why? Read on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. OSGi defines module boundaries&lt;/div&gt;&lt;div&gt;One reason modularity is enforced is because you define a clear entrance point in your modules which is the interface to the rest of your system. No unclear API due to many public classes, but a well defined set of visible classes that were meant to be API. The rest is hidden, public or not public. Why is this handy?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. OSGi helps you manage complexity.&lt;/div&gt;&lt;div&gt;Once you can see your modules as giant blocks of LEGO(tm) (having a clear interface) you can think about what the weak blocks are and how they can be replaced or hardened. Do all your work inside the module but be faithful to the interfaces with the outside world. This is how they build Skyscrapers. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although it sounds to good to be true, true it still is. And even though OSGi sounds like a sneeze, it is all about the GESUNDHEIT of your applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.regonline.com/builder/site/Default.aspx?eventid=772414&quot;&gt;We host an OSGi course in December&lt;/a&gt;. There are a few places left. Neil Bartlett will be your teacher. By the way, Neil did write the book, a free book and the eye opening &lt;a href=&quot;http://neilbartlett.name/blog/osgibook/&quot;&gt;first chapter is right here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apart from the course we will take you on a Amsterdam by Night tour where you will get a good, but not too good, impression of the unique Amsterdam culture. It is about 30 minutes drive from the training location to the center of Amsterdam.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See you there!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4740251930569090138-6304278081418042329?l=industrial-tsi-wim.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 16:10:50 +0000</pubDate>
	<author>noreply@blogger.com (Wim Jongman)</author>
</item>
<item>
	<title>Doug Gaff: My Next Adventure</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-18361809.post-434200439345987255</guid>
	<link>http://douggaff.blogspot.com/2009/11/my-next-adventure.html</link>
	<description>&lt;span&gt;&lt;p&gt;After almost 10 years at EmbeddedSupportTools/WindRiver/Intel, I'm heading off to pursue a new opportunity. I will be joining &lt;a href=&quot;http://www.npr.org/&quot;&gt;National Public Radio&lt;/a&gt; as Director of Technology for &lt;a href=&quot;http://www.publicinteractive.com/&quot;&gt;Public Interactive&lt;/a&gt;. This Boston-based division of NPR is responsible for the web technology platform used by many of the NPR affiliate stations. NPR is a great organization with a great mission, and I'm excited to be joining their team.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For my colleagues in Eclipse who know me as the embedded and mobile guy, the leader of DSDP, the guy who's always on the EclipseCon Program Committee, or one of your friendly Committer Reps, this is clearly &quot;something completely different&quot; as the Monty Python crew would say. In my new role, we will predominantly be users of Eclipse rather than contributors, and as such I will unfortunately be stepping down from my leadership roles in the Eclipse community.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I want to thank Wind River for supporting my work at Eclipse and for investing in the CDT, DSDP, and Platform projects. I also want to thank the many leaders in the Eclipse community and at the Foundation, from whom I've learned a great deal about meritocracy, IP policy, coopetition, copyright, governance, collaboration, and free beer. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Please stay in touch. Follow me on &lt;a href=&quot;http://twitter.com/douggaff&quot;&gt;twitter&lt;/a&gt; or connect on &lt;a href=&quot;http://www.linkedin.com/in/douggaff&quot;&gt;linked in&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/18361809-434200439345987255?l=douggaff.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Nov 2009 14:44:39 +0000</pubDate>
	<author>noreply@blogger.com (Doug Gaff)</author>
</item>
<item>
	<title>OpenNTF: Nice End User Tool Snippets from Detlev Poettgen</title>
	<guid isPermaLink="true">http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XUBYJ</guid>
	<link>http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XUBYJ</link>
	<description>&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Detlev Poettgen and Onur Guengoeren
have released a nice end user tool on &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XGA36&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;OpenNTF&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;
under the Apache license - called &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/catalogs/a2cat.nsf/topicThread.xsp?action=openDocument&amp;amp;documentId=36B6F62ADD70AB0B85257670002E4201&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Snippets&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Lotus Notes users can drag and drop
snippets of texts and attachments from a sidebar panel into Notes documents.
Users can define these snippets themselves or they can use shared snippets.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;The application has been implemented
via an Eclipse plugin that can be installed via drag and drop and a Notes
database which needs to be installed manually.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/2290E20380D3B80F86257670002F2D18/EntryMoreRichMime/M2?OpenElement&quot; alt=&quot;A picture named M2&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/2290E20380D3B80F86257670002F2D18/EntryMoreRichMime/M3?OpenElement&quot; alt=&quot;A picture named M3&quot; /&gt;</description>
	<pubDate>Mon, 16 Nov 2009 08:29:37 +0000</pubDate>
</item>
<item>
	<title>Dave Orme: Speaking at Chicago Area Scala Enthusiasts Meeting</title>
	<guid isPermaLink="true">http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting</guid>
	<link>http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting</link>
	<description>&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

I'll be speaking at the Chicago Area Scala Enthusiasts (CASE) meeting this coming Thursday.  We'll cover the following:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; News from the Scala LiftOff East in Reston Virginia two weeks ago&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I'll talk about using DSLs written in Scala to improve Java projects&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

Although I haven't decided on the final content yet, topics I'm considering in order to illustrate this second point include:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Showing how to use the excellent Specs unit testing DSL (a great way to get Scala into a Java shop)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A “Make”-like DSL I wrote as my first DSL (doesn't nearly everybody?)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Simplifying Java code by evolving Java into a Scala DSL by translating to Scala and then stepwise introducing Scala idioms&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

I'd love to hear about what people what to hear about.  Please comment. &lt;img src=&quot;http://www.coconut-palm-software.com/the_new_visual_editor/lib/images/smileys/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;middle&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
To sign up, please visit: &lt;a href=&quot;http://www.meetup.com/chicagoscala/&quot; class=&quot;urlextern&quot; rel=&quot;nofollow&quot; title=&quot;http://www.meetup.com/chicagoscala/&quot;&gt;http://www.meetup.com/chicagoscala/&lt;/a&gt; before noon, the day of the event.
&lt;/p&gt;

&lt;/div&gt;
&lt;span class=&quot;plugin_feedmod_comments&quot;&gt;
  &lt;a href=&quot;http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting#discussion__section&quot; title=&quot;Read or add comments to this article&quot;&gt;Read or add comments to this article&lt;/a&gt;
&lt;/span&gt;</description>
	<pubDate>Sun, 15 Nov 2009 02:23:32 +0000</pubDate>
</item>
<item>
	<title>Sven Efftinge: Xtext - Tour Dates</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3181933089302874735</guid>
	<link>http://blog.efftinge.de/2009/11/xtext-tour-dates.html</link>
	<description>&lt;p&gt;I just realized that there's an invasion of Xtext presentations and demos about to overrun the world during the next couple of weeks. And all of them are free of charge!&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Country&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;City&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Title&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Presenter&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;France&lt;/td&gt;&lt;td&gt;Paris&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Paris&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Leipzig&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Leipzig&quot;&gt;Demo Camp: Und heute generier' ich&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Alexander Nittka&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.jughh.org/pages/viewpage.action?pageId=4325396&quot;&gt;Java User Group: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sven Efftinge, Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/23&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Berlin&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Berlin&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Peter Friese&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Frankfurt&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Demo Camp: Using Xtext in a large scale modeling and implementation project&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Nicolai Busse&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Stuttgart&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Stuttgart&quot;&gt;Demo Camp: Textual DSLs with Eclipse Xtext (and a little bit code code generation with Xpand)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Markus Völter&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/30&lt;/td&gt;&lt;td&gt;Austria&lt;/td&gt;&lt;td&gt;Vienna&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Vienna&quot;&gt;Demo Camp: Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Michael Clay&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/04&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot;&gt;Demo Camp: Combining graphics and text in model editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Jan Köhnlein&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/10&lt;/td&gt;&lt;td&gt;Italy&lt;/td&gt;&lt;td&gt;Florence&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Florence&quot;&gt;Demo Camp: Xtext, a Textual Modeling Framework &lt;/a&gt;&lt;/td&gt;&lt;td&gt;Francesco Guidieri&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/24248206-3181933089302874735?l=blog.efftinge.de&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 14 Nov 2009 06:31:09 +0000</pubDate>
	<author>noreply@blogger.com (Sven Efftinge)</author>
</item>
<item>
	<title>Birt World: It's Movember</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-14521551.post-518475541905446927</guid>
	<link>http://birtworld.blogspot.com/2009/11/its-movember.html</link>
	<description>Movember, that time of year when the days grow shorter, the weather grows colder and the family gathers today for the holidays.  Of course in my family the kids are looking at me and laughing, and I am getting 'that' look from Gretchen my wife. &lt;br /&gt;&lt;br /&gt;Yes I am growing in a mustache in an effort to change the face of men's health.  To quote my team lead (I am a part of &lt;a href=&quot;http://www.fatcyclist.com/2009/11/04/movember-with-team-fatty/&quot;&gt;Team Fat Cyclist&lt;/a&gt;). &lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;color: #020100; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 16px;&quot; class=&quot;Apple-style-span&quot;&gt;&quot;Movember is the month formerly known as November. During this month, men — manly men — grow mos as a way to call attention to themselves (hey, I’m just being honest here).&lt;span style=&quot;color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style=&quot;color: #020100; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 16px;&quot; class=&quot;Apple-style-span&quot;&gt;Then, when people ask you “Why are you growing a moustache?” — and they will ask you this question — you tell them about the cancers affecting men, and ask them to donate to your Mo donation page (the money will be channeled to the Prostate Cancer Foundation and to LiveStrong).&lt;span style=&quot;color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style=&quot;color: #020100; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 16px;&quot; class=&quot;Apple-style-span&quot;&gt;So really, a mo is kinda like wearing a pink ribbon for breast cancer awareness. But a lot more personal. And harder to remove. And it’s displayed a lot higher.&quot;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: right;&quot;&gt;-The Fat Cyclist (Elden Nelson)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;If you are interested in supporting me and helping to raise money for men's health issues, please visit my &lt;a href=&quot;http://us.movember.com/mospace/422764/&quot;&gt;mo page&lt;/a&gt; and donate. &lt;br /&gt;&lt;br /&gt;If not me, please visit another great team, the &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot;&gt;Eclipse Momitters&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14521551-518475541905446927?l=birtworld.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 14 Nov 2009 04:13:21 +0000</pubDate>
	<author>noreply@blogger.com (Scott Rosenbaum)</author>
</item>
<item>
	<title>Andrei Loskutov: Change happens...</title>
	<guid isPermaLink="true">http://www.jroller.com/andyl/entry/change_happens</guid>
	<link>http://www.jroller.com/andyl/entry/change_happens</link>
	<description>&lt;p&gt;
It's &lt;b&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Friday_the_13th&quot;&gt;Friday the 13th&lt;/a&gt;&lt;/b&gt; and I finally moved my &lt;a href=&quot;http://code.google.com/p/skin4eclipse/source/list&quot;&gt;last plugin&lt;/a&gt; hosted on Google Code to the &lt;b&gt;&lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt;&lt;/b&gt;. This is an amazing (fast) distributed version control system...
&lt;/p&gt;
&lt;p&gt;
Three month ago I had trouble to merge experimental &lt;b&gt;&lt;a href=&quot;http://findbugs.sourceforge.net/&quot;&gt;FindBugs&lt;/a&gt;&lt;/b&gt; branch because of Subversion's silly merge implementation. SVN simply can't handle refactoring and merging on different branches at same time. So I had to decide: do I want to spent hours on resolving this idiotic SVN &quot;tree conflicts&quot; or simply use something, which is faster and does all the merge work for you.
&lt;/p&gt;
&lt;p&gt;
My favorite was &lt;b&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;&lt;/b&gt; (because of &lt;b&gt;&lt;a href=&quot;http://www.eclipse.org/egit/&quot;&gt;Egit&lt;/a&gt;&lt;/b&gt; and the &lt;b&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=4XpnKHJAok8&quot;&gt;famous Linus video&lt;/a&gt;&lt;/b&gt;), but Google Code unfortunately doesn't have plans to move on it, so I've tried &lt;b&gt;&lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt;&lt;/b&gt;. Because I'm an Eclipse guy, I've started to use &lt;b&gt;&lt;a href=&quot;http://bitbucket.org/mercurialeclipse&quot;&gt;MercurialEclipse plugin&lt;/a&gt;&lt;/b&gt;. The developers provided almost &quot;feature complete&quot; plugin for Mercurial, but unfortunately, plugin didn't satisfied my personal software quality criteria. To make my life easier, I've started to fix the issues I found in the plugin and in a short time I was a &lt;b&gt;&lt;a href=&quot;https://www.ohloh.net/p/mercurialeclipse/contributors/65356517384359&quot;&gt;commiter&lt;/a&gt;&lt;/b&gt;. This is another amazing thing about DVCS systems: they allow very easy code exchange in BOTH directions.
&lt;/p&gt;
&lt;p&gt;
Now, three months and hundreds of MercurialEclipse plugin builds later, all of my open source projects are converted to use Mercurial. I do not regret the move from SVN. I have almost no wait times, and the merge is not a nightmare anymore...
&lt;/p&gt;
&lt;p&gt;
Despite the move to the &lt;b&gt;&lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Friday_the_13th&quot;&gt;Friday the 13th&lt;/a&gt;&lt;/b&gt; date, today is important for me for a completely different reason. At same time as I've started to play with DVCS, I've started a new challenging project, and today I've seen it's first heartbeats. Let see how it will evolve. Change happens...
&lt;/p&gt;</description>
	<pubDate>Fri, 13 Nov 2009 22:54:07 +0000</pubDate>
</item>
<item>
	<title>Jeff McAffer: Another Eclipse Mommitter</title>
	<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3371</guid>
	<link>http://eclipsesource.com/blogs/2009/11/13/another-eclipse-momitter/</link>
	<description>&lt;p&gt;Its mid-&lt;a href=&quot;http://movember.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Movember&lt;/a&gt; and things are getting hairy in Eclipse-land. A dedicated team of committers, the &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Eclipse Mommitters&lt;/a&gt;, have banded together to grow moustaches to raise awareness of men’s health issues. Since I’m basically lazy and work at home, it happens that I’ve not shaved for a couple weeks. So, though late to Movember, I am fully prepared to produce a moustache.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/2009/11/10/movember-day-10/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Chris ran a poll&lt;/a&gt; to determine the kind of ’stache he should grow. Great community involvement in setting direction. Keying off that I’m going to try and illustrate the causal connection between contribution and results. This can be applied to any community effort whether its men’s health or Eclipse itself.&lt;/p&gt;
&lt;p&gt;The plan is to grow as much facial hair as possible and allow the highest donor to choose what kind of moustache I should sport for the last week of Movember. As an added bonus, it turns out that that week I will be teaching a course at a customer and presenting at the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Ottawa&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Ottawa Eclipse DemoCamp&lt;/a&gt; so there is some risk here for me…&lt;/p&gt;
&lt;p&gt;The person with the highest cumulative donations on Movember 22nd at 23:59ET (or thereabouts) will be identified in a comment on this blog entry. If it looks particularly dangerous for me, I reserve the right to override the donor with a 2x donation. I will wear the designated moustache for the following week.&lt;/p&gt;
&lt;p&gt;So get out the credit cards and &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;put in your donation now&lt;/a&gt;. You can check out Mo progress first hand next week at one of the &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;EclipseRT days&lt;/a&gt; in Austin or Toronto.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ca.movember.com/uploads/teams/profile/4/44/44681-small.png&quot; title=&quot;Eclipse Momitters&quot; height=&quot;130&quot; width=&quot;130&quot; alt=&quot;44681 small Another Eclipse Mommitter&quot; class=&quot;aligncenter&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 13 Nov 2009 18:39:06 +0000</pubDate>
</item>
<item>
	<title>Tom Schindl: Release QxWT-0.8.2-RC1</title>
	<guid isPermaLink="false">http://tomsondev.bestsolution.at/?p=606</guid>
	<link>http://tomsondev.bestsolution.at/2009/11/13/release-qxwt-0-8-2-rc1/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;h1&gt;QxWT-0.8.2-rc1&lt;/h1&gt;
&lt;p&gt;I happy to announce that a first release candidate of the GWT-Wrapper for the Qooxdoo-Widget-Library can be downloaded from our &lt;a href=&quot;http://www.ufacekit.org/index.php?cat=02_Qooxdoo&amp;amp;page=03_Releases&quot;&gt;project homepage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started working on QxWT because I needed a GWT-Widget library providing me access to advanced controls like tables and trees and is released under a license which makes it possible to get integrated in commercial applications without paying license fees. I know there are other libraries out who already provide such a features but none of them provided me all features I wanted to have – for the record I don’t want to mess around with stores, buy in to a special domain model technology, … ).&lt;/p&gt;
&lt;h2&gt;What is QxWT&lt;/h2&gt;
&lt;p&gt;QxWT is a GWT wrapper for the &lt;a href=&quot;http://qooxdoo.org/&quot;&gt;qooxdoo-JS-Library&lt;/a&gt;. The qooxdoo-library is used for example by the RAP team as the client-side widget library. QxWT follows the qooxdoo-API as much as possible but naturally some constructs available in JavaScript can not get translated the Java 1:1 so some API methods have been adjusted. The biggest difference is that QxWT adopts the GWT-Event-Handler-System instead of wrapping the one of Qooxdoo but then once more provides 99% the same API. &lt;/p&gt;
&lt;p&gt;One of the most important things is that Java-Developers expect to have the API documentation available in their IDE and I’ve worked with many GWT-Libraries who are not providing a good documentation. QxWT will provide full JavaDoc of all API methods when we release the final version of QxWT-0.8.2. In the RC we have documented already 99% of the widget-API but e.g. the Event-API completely lacks JavaDoc.&lt;/p&gt;
&lt;p&gt;The second important thing is that the qooxdoo-JS-Library as well as QxWT are released under EPL which should allow you to easily use in corporate environments as well as in opensource projects.&lt;/p&gt;
&lt;h2&gt;Future plans&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;QxWT&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Release 0.8.2 with the following features:
&lt;ul&gt;
&lt;li&gt;Based upon 0.8.2 release of Qooxdoo&lt;/li&gt;
&lt;li&gt;95% of the Widget-API of qooxdoo&lt;/li&gt;
&lt;li&gt;100% JavaDoced API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Release 0.8.3 with the following features:
&lt;ul&gt;
&lt;li&gt;Based upon 0.8.3 release of Qooxdoo&lt;/li&gt;
&lt;li&gt;Eclipse-Wizard for setting up a QxWT-Project&lt;/li&gt;
&lt;li&gt;Postprocess step to optimize deployment size of Qooxdoo-JS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;UFaceKit for QxWT&lt;/b&gt;&lt;br /&gt;
After the release of QxWT 0.8.3 we are going to provide the following UFaceKit-Implementations&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qx-Databinding&lt;/li&gt;
&lt;li&gt;Qx-Viewers&lt;/li&gt;
&lt;li&gt;Qx-UFaceKit-Implementation&lt;/li&gt;
&lt;li&gt;GWT-Integration for e4 so that you can access workbench-services from GWT-Applications (See the wonderful PDE-Editor written by Boris Bokowski for e4-0.9)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Getting started with QxWT&lt;/h2&gt;
&lt;p&gt;The following should give you a jump start on how to create a QxWT-Application from scratch (I assume you have the Google-Eclipse-Tools installed).&lt;br /&gt;
&lt;b&gt;Setup of a new project&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the latest QxWT release form &lt;a href=&quot;http://www.ufacekit.org/index.php?cat=01_UFaceKit&amp;amp;page=14_Releases&quot;&gt;UFaceKit.org&lt;/a&gt; and unzip it somewhere on your hard drive&lt;/li&gt;
&lt;li&gt;Create a new GWT-Application named “MyFirstQxApp”&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen1.png?w=268&amp;amp;h=300&quot; title=&quot;screen1&quot; height=&quot;300&quot; width=&quot;268&quot; alt=&quot;screen1&quot; class=&quot;aligncenter size-medium wp-image-619&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;Create a directory named “lib” in the “MyFirstQxApp”-Project and copy the qx-jars from the download into it&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen1_5.png?w=300&amp;amp;h=212&quot; title=&quot;screen1_5&quot; height=&quot;212&quot; width=&quot;300&quot; alt=&quot;screen1_5&quot; class=&quot;aligncenter size-medium wp-image-627&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Copy the “class”-Folder from the download into the war-Folder of your project&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen1_6.png?w=300&amp;amp;h=178&quot; title=&quot;screen1_6&quot; height=&quot;178&quot; width=&quot;300&quot; alt=&quot;screen1_6&quot; class=&quot;aligncenter size-medium wp-image-629&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Open the MyFirstQxApp.html and add the following lines directly below the title
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;!--                                           --&amp;gt;
&amp;lt;!-- Any title is fine                         --&amp;gt;
&amp;lt;!--                                           --&amp;gt;
&amp;lt;title&amp;gt;Web Application Starter Project&amp;lt;/title&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  window.qxgwtmodule = &quot;myfirstqxapp&quot;;
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Please note that the “myfirstqxapp” must match the value you have as a “rename-to” in your “$MODULE.gwt.xml”&lt;/p&gt;
&lt;p&gt;Beside that you can delete the HTML-Code in the body-Tag so that it looks like this:&lt;/p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;body&amp;gt;
&amp;lt;!-- OPTIONAL: include this if you want history support --&amp;gt;
 &amp;lt;iframe src=&quot;javascript:''&quot; id=&quot;__gwt_historyFrame&quot; tabIndex='-1' style=&quot;position:absolute;width:0;height:0;border:0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the Qx-jars to your build path&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen2.png?w=300&amp;amp;h=230&quot; title=&quot;screen2&quot; height=&quot;230&quot; width=&quot;300&quot; alt=&quot;screen2&quot; class=&quot;aligncenter size-medium wp-image-635&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;Make your GWT-Module inherit from Qx-Libraries like this:
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE module PUBLIC &quot;-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN&quot; &quot;http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd&quot;&amp;gt;
&amp;lt;module rename-to='myfirstqxapp'&amp;gt;
  &amp;lt;!-- Inherit the core Web Toolkit stuff.                        --&amp;gt;
  &amp;lt;inherits name='com.google.gwt.user.User'/&amp;gt;
  &amp;lt;inherits name=&quot;org.ufacekit.qx.wrapper.QxScript&quot; /&amp;gt;
  &amp;lt;inherits name=&quot;org.ufacekit.qx.QxEngine&quot; /&amp;gt;
&amp;lt;/module&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Open MyFirstQxApp.java remove everything beside the class definition
&lt;pre class=&quot;brush: java;&quot;&gt;package org.ufacekit.qx.my.client;

/**
 * Entry point classes define &amp;lt;code&amp;gt;onModuleLoad()&amp;lt;/code&amp;gt;.
 */
public class MyFirstQxApp {
}
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Your first cup of QxWT&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In GWT every application starts with an entry point and so does a plain Qooxdoo-JS-Application. That’s why QxWT provides you a specialized class which bridges both systems. So the first thing you need to do is to make your GWT-EntryPoint class inherit from &lt;span style=&quot;font-family: Courier;&quot;&gt;org.ufacekit.qx.wrapper.application.QooxdooApp&lt;/span&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;public class MyFirstQxApp extends QooxdooApp {
	@Override
	protected void run(QxAbstractGui application) {
		// TODO Auto-generated method stub
	}
}
&lt;/pre&gt;
&lt;/li&gt;
&lt;p&gt;The run method will by called once both framework start ups are finished and you are ready to create the application.&lt;/p&gt;
&lt;li&gt;The QxAbstractGui is the application scope into which your QxWT-Application is running in currently the only thing it provides you access to is the viewport you can add your UI-Widgets (QxComposite) to. Let’s as a first exercise create a GroupBox somewhere on the screen
&lt;pre class=&quot;brush: java;&quot;&gt;protected void run(QxAbstractGui application) {
  QxGroupBox container = new QxGroupBox();
  container.setContentPadding(16, 16, 16, 16);

  application.getRoot().add(container, QxOption.leftTop(50, 30, &quot;%&quot;));
}
&lt;/pre&gt;
&lt;p&gt;This code creates a groupbox and positions it 50% to the left and 30% to the top of the browser window. As you’ll notice QxWT works different to SWT because you don’t pass the parent of a widget to the constructor but you add the widget later on to the parent together with some layout informations, for swing developers this should be quite familiar.&lt;br /&gt;
Your ui looks like this now:&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen3.png?w=300&amp;amp;h=225&quot; title=&quot;screen3&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;screen3&quot; class=&quot;aligncenter size-medium wp-image-644&quot; /&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;QxWT like every other widget library provides the possibility to layout child-controls using layout managers so the next thing we do is to set a layout manager on the groupbox widget like this:
&lt;pre class=&quot;brush: java;&quot;&gt;QxGridLayout layout = new QxGridLayout(9, 5);
layout.setColumnAlign(0, HAlign.LEFT, VAlign.MIDDLE);
layout.setColumnAlign(1, HAlign.RIGHT, VAlign.MIDDLE);

container.setLayout(layout);
&lt;/pre&gt;
&lt;p&gt;and add 2 children (a label and a text field) like this:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;QxLabel label = new QxLabel(&quot;Greeting&quot;);
container.add(label, QxOption.rowColumn(0, 0));

QxTextField field = new QxTextField();
container.add(field, QxOption.rowColumn(0, 1));
&lt;/pre&gt;
&lt;p&gt;The code should be quite self-explanatory and result in this UI.&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen4.png?w=300&amp;amp;h=225&quot; title=&quot;screen4&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;screen4&quot; class=&quot;aligncenter size-medium wp-image-645&quot; /&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;As a final step let’s add a button which invokes a remote services. So the first step is to add a button like this:
&lt;pre class=&quot;brush: java;&quot;&gt;QxButton button = new QxButton(&quot;Submit&quot;);
container.add(button, QxOption.row(1), QxOption.column(0), QxOption.colSpan(2));
&lt;/pre&gt;
&lt;p&gt;Once more quite self-explanatory beside the fact that the button is spaning 2 columns. The next thing to do is to react on button clicks which could be done in different ways but using a command which is attached to the control is the better one. So the first thing we do is to define a command and connect the button to it&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;QxCommand cmd = new QxCommand(&quot;CTRL+S&quot;);
button.setCommand(cmd);
&lt;/pre&gt;
&lt;p&gt;As you might guess the advantage of a command is that you can attach a keyboard sequence so the command not only gets executed when the user presses the button but also when entering a the keyboard sequence CTRL+S. The last thing we need to do is to attach a listener to the command which gets informed when the command is called. So we are adding an inner-class which looks like this:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;class QxExecuteHandlerImpl implements QxExecuteHandler {
  private QxTextField field;

  public QxExecuteHandlerImpl(QxTextField field) {
    this.field = field;
  }

  public void execute(QxExecuteEvent executeEvent) {
  }
}
&lt;/pre&gt;
&lt;p&gt;and attach it to the command like this:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;cmd.addExecuteHandler(new QxExecuteHandlerImpl(field));
&lt;/pre&gt;
&lt;p&gt;The application should look like this now:&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen52.png?w=300&amp;amp;h=225&quot; title=&quot;screen5&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;screen5&quot; class=&quot;aligncenter size-medium wp-image-651&quot; /&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Next step is to call the remote service which should be quite familiar to people who know GWT already.
&lt;pre class=&quot;brush: java;&quot;&gt;public void execute(QxExecuteEvent executeEvent) {
  GreetingServiceAsync service = GWT.create(GreetingService.class);
  service.greetServer(field.getValue(), new AsyncCallback&amp;lt;String&amp;gt;() {
    public void onFailure(Throwable caught) {}

    public void onSuccess(String result) {}
  });
}
&lt;/pre&gt;
&lt;p&gt;and display the result for example using a QxWindow like this:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;public void onFailure(Throwable caught) {
  QxWindow window = new QxWindow(&quot;Error&quot;);
  window.setLayout(new QxVBoxLayout(10));
  QxAtom atom = new QxAtom(caught.toString(),&quot;/myfirstqxapp/qooxdoo-0.8.2-sdk/framework/source/resource/qx/icon/Oxygen/48/status/dialog-error.png&quot;);
  atom.setRich(true);
  window.add(atom);
  window.center();
  window.open();
}

public void onSuccess(String result) {
  QxWindow window = new QxWindow(&quot;Remote Answer&quot;);
  window.setLayout(new QxVBoxLayout(10));
  QxAtom atom = new QxAtom(result,&quot;/myfirstqxapp/qooxdoo-0.8.2-sdk/framework/source/resource/qx/icon/Oxygen/48/status/dialog-information.png&quot;);
  atom.setRich(true);
  window.add(atom);
  window.center();
  window.open();
}
&lt;/pre&gt;
&lt;p&gt;If you now run your application, enter a text and hit the submit button or as alternative press CTRL+S your application should react like this:&lt;br /&gt;
&lt;img src=&quot;http://tomsondev.files.wordpress.com/2009/11/screen6.png?w=300&amp;amp;h=225&quot; title=&quot;screen6&quot; height=&quot;225&quot; width=&quot;300&quot; alt=&quot;screen6&quot; class=&quot;aligncenter size-medium wp-image-654&quot; /&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here’s the complete application class once more for reference:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt;package org.ufacekit.qx.my.client;

import org.ufacekit.qx.wrapper.application.QooxdooApp;
import org.ufacekit.qx.wrapper.application.QxAbstractGui;
import org.ufacekit.qx.wrapper.event.QxCommand;
import org.ufacekit.qx.wrapper.event.type.gwt.QxExecuteEvent;
import org.ufacekit.qx.wrapper.event.type.gwt.QxExecuteHandler;
import org.ufacekit.qx.wrapper.ui.basic.QxAtom;
import org.ufacekit.qx.wrapper.ui.basic.QxLabel;
import org.ufacekit.qx.wrapper.ui.form.QxButton;
import org.ufacekit.qx.wrapper.ui.form.QxTextField;
import org.ufacekit.qx.wrapper.ui.groupbox.QxGroupBox;
import org.ufacekit.qx.wrapper.ui.layout.QxGridLayout;
import org.ufacekit.qx.wrapper.ui.layout.QxVBoxLayout;
import org.ufacekit.qx.wrapper.ui.layout.QxGridLayout.HAlign;
import org.ufacekit.qx.wrapper.ui.layout.QxGridLayout.VAlign;
import org.ufacekit.qx.wrapper.ui.window.QxWindow;
import org.ufacekit.qx.wrapper.util.gwt.QxOption;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Entry point classes define &amp;lt;code&amp;gt;onModuleLoad()&amp;lt;/code&amp;gt;.
 */
public class MyFirstQxApp extends QooxdooApp {

	class QxExecuteHandlerImpl implements QxExecuteHandler {
		private QxTextField field;

		public QxExecuteHandlerImpl(QxTextField field) {
			this.field = field;
		}

		public void execute(QxExecuteEvent executeEvent) {
			GreetingServiceAsync service = GWT.create(GreetingService.class);
			service.greetServer(field.getValue(), new AsyncCallback&amp;lt;String&amp;gt;() {

				public void onFailure(Throwable caught) {
					QxWindow window = new QxWindow(&quot;Error&quot;);
					window.setLayout(new QxVBoxLayout(10));
					QxAtom atom = new QxAtom(caught.toString(),&quot;/myfirstqxapp/qooxdoo-0.8.2-sdk/framework/source/resource/qx/icon/Oxygen/48/status/dialog-error.png&quot;);
					atom.setRich(true);
					window.add(atom);
					window.center();
					window.open();
				}

				public void onSuccess(String result) {
					QxWindow window = new QxWindow(&quot;Remote Answer&quot;);
					window.setLayout(new QxVBoxLayout(10));
					QxAtom atom = new QxAtom(result,&quot;/myfirstqxapp/qooxdoo-0.8.2-sdk/framework/source/resource/qx/icon/Oxygen/48/status/dialog-information.png&quot;);
					atom.setRich(true);
					window.add(atom);
					window.center();
					window.open();
				}

			});
		}
	}

	@Override
	protected void run(QxAbstractGui application) {
		QxGroupBox container = new QxGroupBox();
		container.setContentPadding(16, 16, 16, 16);

		QxGridLayout layout = new QxGridLayout(9, 5);
		layout.setColumnAlign(0, HAlign.LEFT, VAlign.MIDDLE);
		layout.setColumnAlign(1, HAlign.RIGHT, VAlign.MIDDLE);

		container.setLayout(layout);

		QxLabel label = new QxLabel(&quot;Greeting&quot;);
		container.add(label, QxOption.rowColumn(0, 0));

		QxTextField field = new QxTextField();
		container.add(field, QxOption.rowColumn(0, 1));

		QxButton button = new QxButton(&quot;Submit&quot;);
		container.add(button, QxOption.row(1), QxOption.column(0), QxOption.colSpan(2));

		QxCommand cmd = new QxCommand(&quot;CTRL+S&quot;);
		button.setCommand(cmd);

		cmd.addExecuteHandler(new QxExecuteHandlerImpl(field));

		application.getRoot().add(container, QxOption.leftTop(50, 30, &quot;%&quot;));

	}
}
&lt;/pre&gt;
&lt;p&gt;If you want to learn more of the APIs you can take a look at the demo-Project in our subversion &lt;a href=&quot;https://svn.tomsondev.com/svn/trunk/org.ufacekit.qx.wrapper.demo/&quot;&gt;repository&lt;/a&gt; and naturally you can support my work on this by making a &lt;a href=&quot;http://www.ufacekit.org&quot;&gt;donation&lt;/a&gt; (See paypal button at the left of the page). &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Stay tuned for more news on this and other cool stuff – there are a lot of ideas floating around in my head (some of them even translated into source-code)&lt;/b&gt;&lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/tomsondev.wordpress.com/606/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/tomsondev.wordpress.com/606/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/tomsondev.wordpress.com/606/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/tomsondev.wordpress.com/606/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/tomsondev.wordpress.com/606/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/tomsondev.wordpress.com/606/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/tomsondev.wordpress.com/606/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/tomsondev.wordpress.com/606/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/tomsondev.wordpress.com/606/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/tomsondev.wordpress.com/606/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=tomsondev.bestsolution.at&amp;amp;blog=7995503&amp;amp;post=606&amp;amp;subd=tomsondev&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 17:45:18 +0000</pubDate>
</item>
<item>
	<title>David Green: NSLog Revisited</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-1482979278030787271.post-8516500984762439892</guid>
	<link>http://greensopinion.blogspot.com/2009/11/nslog-revisited.html</link>
	<description>&lt;p&gt;Logging is an essential tool when developing for iPhone.  Keeping things simple and code readable is a major challenge when scattering logging code throughout your application.  A &lt;a href=&quot;http://stackoverflow.com/questions/969130/nslog-tips-and-tricks&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog&quot;&gt;recent&lt;/a&gt; &lt;a href=&quot;http://www.karlkraft.com/index.php/2009/03/23/114/&quot;&gt;posts&lt;/a&gt; on the topic have provided some great solutions, but if you're like me sometimes a dead-simple solution is exactly what you need.&lt;/p&gt;&lt;p&gt;This is what I use:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// in Implementation.m&lt;br /&gt;#define DLog NSLog&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;// I need to log something&lt;br /&gt;DLog(@&quot;something interesting happended: %@&quot;,what)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When I want to disable logging in that file, I simply change the #define as follows:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#define DLog // NSLog&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That's all!&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1482979278030787271-8516500984762439892?l=greensopinion.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 17:27:14 +0000</pubDate>
	<author>noreply@blogger.com (David Green)</author>
</item>
<item>
	<title>Ekkehard Gentz: on the road again (e4 – xtext – cdo – emf – runtime – redview – …)</title>
	<guid isPermaLink="false">http://ekkescorner.wordpress.com/?p=1125</guid>
	<link>http://ekkescorner.wordpress.com/2009/11/13/on-the-road-again/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;eclipse &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009&quot; target=&quot;_blank&quot;&gt;democamps&lt;/a&gt; and &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day&quot; target=&quot;_blank&quot;&gt;modeling days&lt;/a&gt; and &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day&quot; target=&quot;_blank&quot;&gt;runtime days&lt;/a&gt;, so it seems there are many projects “&lt;em&gt;on the road&lt;/em&gt;” again &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;div&gt;
&lt;strong&gt;&lt;a href=&quot;http://www.dailymotion.com/swf/x3r2zp&quot;&gt;Canned Heat – On The Road Again&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;von &lt;a href=&quot;http://www.dailymotion.com/Docteur_BoB&quot;&gt;Docteur_BoB&lt;/a&gt;&lt;/em&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Eclipse E4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;tom schindl with e4 &lt;a href=&quot;http://tomsondev.bestsolution.at/2009/11/11/e4-on-the-road/&quot; target=&quot;_blank&quot;&gt;http://tomsondev.bestsolution.at/2009/11/11/e4-on-the-road/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/06/xtext-logo-color-300.png?w=240&amp;amp;h=71&quot; title=&quot;xtext-logo-color-300&quot; height=&quot;71&quot; width=&quot;240&quot; alt=&quot;xtext-logo-color-300&quot; class=&quot;alignnone size-full wp-image-283&quot; /&gt;&lt;/p&gt;
&lt;p&gt;xtext developers &lt;a href=&quot;http://blog.efftinge.de/2009/11/xtext-tour-dates.html&quot; target=&quot;_blank&quot;&gt;http://blog.efftinge.de/2009/11/xtext-tour-dates.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse_modeling_logo.jpg?w=229&amp;amp;h=154&quot; title=&quot;eclipse_Modeling_logo&quot; height=&quot;154&quot; width=&quot;229&quot; alt=&quot;eclipse_Modeling_logo&quot; class=&quot;alignnone size-full wp-image-1129&quot; /&gt;&lt;/p&gt;
&lt;p&gt;CDO with Eike Stepper at modeling days in Toronto and New York&lt;/p&gt;
&lt;p&gt;Ed Merks at Modeling Days &lt;a href=&quot;http://ed-merks.blogspot.com/2009/11/do-it-better-with-model.html&quot; target=&quot;_blank&quot;&gt;http://ed-merks.blogspot.com/2009/11/do-it-better-with-model.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipsert_logo_small.jpg?w=144&amp;amp;h=144&quot; title=&quot;eclipse runtime rt&quot; height=&quot;144&quot; width=&quot;144&quot; alt=&quot;eclipse runtime rt&quot; class=&quot;alignnone size-full wp-image-1128&quot; /&gt;&lt;/p&gt;
&lt;p&gt;eclipse runtime – Jeff McAffer – &lt;a href=&quot;http://eclipsesource.com/blogs/2009/11/09/eclipsert-days-and-democamps/&quot; target=&quot;_blank&quot;&gt;http://eclipsesource.com/blogs/2009/11/09/eclipsert-days-and-democamps/&lt;/a&gt; and Chris Aniszczyk &lt;a href=&quot;http://eclipsesource.com/blogs/author/zx/&quot; target=&quot;_blank&quot;&gt;http://eclipsesource.com/blogs/author/zx/&lt;/a&gt; around the world&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/07/128x128_rv.png?w=128&amp;amp;h=128&quot; title=&quot;redView (Riena EMF Dynamic Views for Business Applications)&quot; height=&quot;128&quot; width=&quot;128&quot; alt=&quot;redView (Riena EMF Dynamic Views for Business Applications)&quot; class=&quot;alignnone size-full wp-image-547&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and of course also &lt;strong&gt;redView – Riena EMF Dynamic Views&lt;/strong&gt; (not only) for Business Applications is on-tour&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://redview.wordpress.com/&quot; target=&quot;_blank&quot;&gt;http://redview.wordpress.com/&lt;/a&gt; in munich, karlsruhe, frankfurt, vienna, hamburg&lt;/p&gt;
&lt;p&gt;ekke&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
Posted in Eclipse, redview  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ekkescorner.wordpress.com/1125/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/ekkescorner.wordpress.com/1125/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/ekkescorner.wordpress.com/1125/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/ekkescorner.wordpress.com/1125/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/ekkescorner.wordpress.com/1125/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/ekkescorner.wordpress.com/1125/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/ekkescorner.wordpress.com/1125/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/ekkescorner.wordpress.com/1125/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/ekkescorner.wordpress.com/1125/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/ekkescorner.wordpress.com/1125/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=ekkescorner.wordpress.com&amp;amp;blog=7691743&amp;amp;post=1125&amp;amp;subd=ekkescorner&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 17:09:26 +0000</pubDate>
</item>
<item>
	<title>Donald Smith: EclipseCon 2010 Call For Sponsors</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-20309733.post-5063876469999690160</guid>
	<link>http://eclipse-ecosystem.blogspot.com/2009/11/eclipsecon-2010-call-for-sponsors.html</link>
	<description>&lt;a href=&quot;http://4.bp.blogspot.com/_8MeSEOl8aXA/Sv2Hy2admiI/AAAAAAAAAJ8/lAO8GWX5hjs/s1600-h/blogSponsors.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_8MeSEOl8aXA/Sv2Hy2admiI/AAAAAAAAAJ8/lAO8GWX5hjs/s400/blogSponsors.png&quot; alt=&quot;&quot; style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 289px; height: 172px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5403624435584178722&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://eclipse.org/go/EC10_sponsor@bg1&quot;&gt;EclipseCon 2010 Call for Sponsors&lt;/a&gt; is off to a record start.  Google, Instantiations, BSI AG, Genuitec, Froglogic and Purple Scout were all fast off the draw to secure their support - more are in process.  The &lt;a href=&quot;http://eclipse.org/go/EC10_sponsor@bg1&quot;&gt;prospectus is available&lt;/a&gt; - if you're thinking of sponsoring EclipseCon this year as we've &lt;a href=&quot;http://www.eclipsecon.org/2010/sponsorshipmap/&quot;&gt;consolidated the Exhibit area&lt;/a&gt; to be more integrated with the conference and space is definitely limited.&lt;br /&gt;&lt;br /&gt; - Don&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/20309733-5063876469999690160?l=eclipse-ecosystem.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 16:33:14 +0000</pubDate>
	<author>noreply@blogger.com (Donald Smith)</author>
</item>
<item>
	<title>Ekkehard Gentz: [helios] Eclipse 3.6 EPP for Windows 64-bit</title>
	<guid isPermaLink="false">http://ekkescorner.wordpress.com/?p=1115</guid>
	<link>http://ekkescorner.wordpress.com/2009/11/13/helios-eclipse-3-6-epp-for-windows-64-bit/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Today the &lt;a href=&quot;http://www.eclipse.org/epp/download.php&quot; target=&quot;_blank&quot;&gt;EPP Downloads&lt;/a&gt; for Helios (Eclipse 3.6) Milestone 3 are ready to download.&lt;/p&gt;
&lt;p&gt;thanks to the EPP team – this makes it much easier to try out the next Eclipse Helios.&lt;/p&gt;
&lt;p&gt;Since Galileo there are also downloads for MacOSX Cocoa – 64 bit, but there’s no direct download for Windows – 64 bit.&lt;/p&gt;
&lt;p&gt;I’m running Windows 7 Professional 64 bit (under Parallels Desktop 5 on OSX 10.6 Snow Leopard) and I know that there are many other developers also trying to run 64-bit on Windows 7.&lt;/p&gt;
&lt;p&gt;At first be sure that you have the JDK 6 in 64 – bit – if not you can download it from&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse-win-64-6-download-jdk-64.png?w=443&amp;amp;h=278&quot; title=&quot;eclipse-win-64 6 download jdk 64&quot; height=&quot;278&quot; width=&quot;443&quot; alt=&quot;eclipse-win-64 6 download jdk 64&quot; class=&quot;alignnone size-full wp-image-1120&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then it’s easy to use EPP Packages on Windows-7 64 bit:&lt;/p&gt;
&lt;p&gt;1&lt;strong&gt;. Download SDK Windows 64 bit (&lt;/strong&gt;eclipse-SDK-3.6M3-win32-x86_64.zip&lt;strong&gt;) from &lt;/strong&gt;&lt;a href=&quot;http://download.eclipse.org/eclipse/downloads/drops/S-3.6M3-200910301201/index.php&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Install and start as usual&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Add New Software Site for EPP&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;http://download.eclipse.org/technology/epp/packages/helios&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse-win-64-1-updsite-epp.png?w=458&amp;amp;h=156&quot; title=&quot;eclipse-win-64 1 updsite epp&quot; height=&quot;156&quot; width=&quot;458&quot; alt=&quot;eclipse-win-64 1 updsite epp&quot; class=&quot;alignnone size-full wp-image-1116&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Install New Software and select your EPP Package&lt;/strong&gt; (per ex. RCP)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse-win-64-2-install-new-sw-rcp.png?w=575&amp;amp;h=469&quot; title=&quot;eclipse-win-64 2 install new sw rcp&quot; height=&quot;469&quot; width=&quot;575&quot; alt=&quot;eclipse-win-64 2 install new sw rcp&quot; class=&quot;alignnone size-full wp-image-1117&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Next -&amp;gt; Finish -&amp;gt; Restart and you’re done &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Eclipse EPP RCP on Windows 7 -64 bit&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse-win-64-4-epp-rcp.png?w=514&amp;amp;h=410&quot; title=&quot;eclipse-win-64 4 epp rcp&quot; height=&quot;410&quot; width=&quot;514&quot; alt=&quot;eclipse-win-64 4 epp rcp&quot; class=&quot;alignnone size-full wp-image-1118&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If you’re wondering about the Look of Windows 7 – there’s a new option “&lt;em&gt;Use Mac Look&lt;/em&gt;” since &lt;strong&gt;Parallels Desktop 5&lt;/strong&gt; to make your windows look like osx &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ekkescorner.files.wordpress.com/2009/11/eclipse-win-64-5-parallels-maclook.png?w=449&amp;amp;h=257&quot; title=&quot;eclipse-win-64 5 parallels maclook&quot; height=&quot;257&quot; width=&quot;449&quot; alt=&quot;eclipse-win-64 5 parallels maclook&quot; class=&quot;alignnone size-full wp-image-1119&quot; /&gt;&lt;/p&gt;
&lt;p&gt;ekke&lt;/p&gt;
Posted in Eclipse, Helios  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ekkescorner.wordpress.com/1115/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/ekkescorner.wordpress.com/1115/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/ekkescorner.wordpress.com/1115/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/ekkescorner.wordpress.com/1115/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/ekkescorner.wordpress.com/1115/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/ekkescorner.wordpress.com/1115/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/ekkescorner.wordpress.com/1115/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/ekkescorner.wordpress.com/1115/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/ekkescorner.wordpress.com/1115/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/ekkescorner.wordpress.com/1115/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=ekkescorner.wordpress.com&amp;amp;blog=7691743&amp;amp;post=1115&amp;amp;subd=ekkescorner&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 13:48:40 +0000</pubDate>
</item>
<item>
	<title>Jason van Zyl: Maven 3.0-alpha-3 Released!</title>
	<guid isPermaLink="false">http://www.sonatype.com/people/?p=3330</guid>
	<link>http://www.sonatype.com/people/2009/11/maven-30-alpha-3-released/</link>
	<description>&lt;p&gt;For those you &lt;a href=&quot;http://www.sonatype.com/people/2009/11/maven-3x-paving-the-desire-lines-part-one-2/&quot;&gt;following&lt;/a&gt; &lt;a href=&quot;http://www.sonatype.com/people/2009/11/maven-3x-paving-the-desire-lines-part-two/&quot;&gt;along&lt;/a&gt; with our story on improving Maven, you’ll happy to know that we have made a significant step today with the release of &lt;a href=&quot;http://maven.apache.org/download.html&quot;&gt;Maven 3.0-alpha-3&lt;/a&gt;. Though we are marking this as an alpha release, we are largely feature complete for Maven 3.0 and consider this to be the best version of Maven that has ever existed.&lt;/p&gt;

&lt;p&gt;Our primary goals with Maven 3.0 are:&lt;/p&gt;

&lt;p&gt;1) Provide a drop-in replacement for Maven 2.x. You should not have to change your POMs, or rewrite plugins. Your projects should just work.&lt;/p&gt;

&lt;p&gt;2) Provide a more reliable, stable and performant Maven. We have tried to make Maven 3.x faster and we’ve succeeded for any of the projects that we’ve tested. We have a performance framework in place to make sure we don’t regress. We are measuring network I/O, disk I/O, CPU utilization and memory usage. We also have a massive number of integration tests to make sure the behaviour remains consistent and compatible as we progress. We simply aren’t going to go backward at this point.&lt;/p&gt;

&lt;p&gt;3) Synchronize the &lt;a href=&quot;http://m2eclipse.sonatype.org&quot;&gt;M2Eclipse&lt;/a&gt; releases with Maven 3.x so that we can immediately push fixes from Maven 3.x into M2Eclipse. For a long time M2Eclipse was out of sync with Maven trunk and created a great number of problems. We are now completely in sync and within hours of making changes in Maven 3.x they make it into the CI builds of M2Eclipse.&lt;/p&gt;

&lt;p&gt;4) Provide an easy way to embed Maven as a library. I think we’ve really proven this with M2Eclipse but &lt;a href=&quot;http://www.sonatype.com&quot;&gt;Sonatype&lt;/a&gt; has two other efforts taking place. The first is to embed Maven 3.0 into &lt;a href=&quot;https://hudson.dev.java.net&quot;&gt;Hudson&lt;/a&gt; and the second is to embed Maven 3.0 into &lt;a href=&quot;http://nexus.sonatype.org&quot;&gt;Nexus&lt;/a&gt;. The APIs that we are creating not being final is largely why we are still releasing alphas. From a CLI perspective we’re pretty much done, from an embedding perspective we still have some work to do.&lt;/p&gt;

&lt;p&gt;4) Provide a solid base for extensions and reuse. There are three efforts going on here which are pushing the boundaries of Maven 3.x:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://tycho.sonatype.org&quot;&gt;Tycho&lt;/a&gt;: Which is Sonatype’s toolchain for building OSGi bundles and Eclipse plugins &amp;amp; RCP applications. The changes that we made in Maven 3.x to accommodate the embedding of an OSGi runtime (in our case Equinox) was non-trivial. We’ve been working on this for over a year and we have what we believe to be the best hybridization of Maven and OSGi technologies. Maven was stretched, and pushed and pulled to get all of this to work. I believe the current adoption of Tycho by the &lt;a href=&quot;http://www.eclipse.org/tigerstripe/&quot;&gt;Tigerstripe&lt;/a&gt; at &lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse.org&lt;/a&gt; is a sign of things to come. Users want to build OSGi bundles and Eclipse plugins using real OSGi technologies with Maven and we have delivered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Polyglot Maven: This is our attempt to create a great degree of flexibility in the core of Maven 3.x. We provide the ability to easily pull POM information from any data source and allow DSLs access to core functionality in Maven to create new tools using Maven 3.x. The development of Polyglot Maven has sparked a lot of interest and we hope to make public release in the next month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maven Shell: An attempt to provide an embedded form of Maven for typical CLI users. We are planning to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide more intelligent caching implementation to make builds faster. Already we are seeing 100-200% speed increases over using the standard CLI (which itself is already faster then Maven 2.x).&lt;/li&gt;
&lt;li&gt;Integrate a powerful form of the Make-like reactor that is built into Maven 3.x to make working in the shell extremely efficient.&lt;/li&gt;
&lt;li&gt;Integrate an advanced form of Archetype so that we can provide a power scaffolding framework for general application development.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are not forgetting about documentation either. All the work that has been done in Maven 3.x is currently being documented in Maven: The Definitive Guide and we will be complete when Maven 3.0 goes GA. We also have some pretty cool site generation tools that I am using to create a new Maven 3.0 site which is also be ready in time for the final release.&lt;/p&gt;

&lt;p&gt;For now, Benjamin and I are preparing for any feedback from users who want to try the alpha-3 release and we’ll be standing by to apply patches and make fixes for anything that users find — just like we have for the last year. This is part of Sonatype’s ongoing committment to help sustain the Maven ecosystem to provide the support, tooling, and documentation to help get new users and developers involved.&lt;/p&gt;

&lt;p&gt;You can download the Maven 3.0-alpha-3 here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.zip&quot;&gt;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.gz&quot;&gt;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.tar.bz2&quot;&gt;http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-alpha-3-bin.tar.bz2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description>
	<pubDate>Fri, 13 Nov 2009 11:40:21 +0000</pubDate>
</item>
<item>
	<title>Yves Yang: Declarative Data Binding - Part 1</title>
	<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=107</guid>
	<link>http://dev.eclipse.org/blogs/yvesyang/2009/11/13/declarative-data-binding-part-1/</link>
	<description>&lt;h1&gt;Why Data Binding?&lt;/h1&gt;
&lt;p&gt;Data binding is a process that establishes a connection between the application UI and business logic. Since 2006, eclipse has worked on this solution. Here is the purpose of JFace data binding, given in &lt;a href=&quot;http://wiki.eclipse.org/JFace_Data_Binding_Introduction&quot;&gt;JFace Data Binding Introduction&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Developing line of business applications as Eclipse Rich Client Platform applications presents a number of unique challenges. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How does one validate data entry when the number of possible interactions between validation rules rises proportional to the square of the number of data entry fields on an input form? &lt;/li&gt;
&lt;li&gt;How does one avoid coding repetitive, dull, tedious, and error-prone SWT event handlers?&lt;/li&gt;
&lt;li&gt;How can one improve reuse of data-driven user interfaces?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these concerns are improved upon by using JFace Data Binding. &lt;/p&gt;
&lt;p&gt;This component gains the popularity day by day, not only in enterprise applications, but also in eclipse it-self. But in the practice, a lot of users have noticed this solution needs to be improved. There are still some problems which are still an obstacle for a wide adoption:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires a deep knowledge in the implementation of this component&lt;/li&gt;
&lt;li&gt;A lot of codes with poor lisibility&lt;/li&gt;
&lt;li&gt;Hard codes for a specific data model&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;What’s Declarative Data Binding?&lt;/h1&gt;
&lt;p&gt;Declarative Data Binding is an expression of the Data binding concept  in abstract and high level langauge. XWT has developed this concept in two ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pure XML&lt;/li&gt;
&lt;li&gt;XWT Data Binding expression&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, we have a class Person that contains two attributes: First name and last name. We’d like to create a UI presentation for this object:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dev.eclipse.org/blogs/yvesyang/files/2009/11/data-binding-person.png&quot;&gt;&lt;img width=&quot;481&quot; alt=&quot;&quot; src=&quot;http://dev.eclipse.org/blogs/yvesyang/files/2009/11/data-binding-person.png&quot; class=&quot;aligncenter size-full wp-image-109&quot; height=&quot;111&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the declaration in pure XML, &lt;/p&gt;
&lt;pre&gt;&amp;lt;Label Text=&quot;First name:&quot;/&amp;gt;
&amp;lt;Text&amp;gt;
   &amp;lt;Text.text&amp;gt;
     &lt;span class=&quot;style1&quot;&gt;&amp;lt;Binding path=&quot;firstName&quot;&lt;/span&gt;/&amp;gt;
   &amp;lt;/Text.text&amp;gt;
&amp;lt;/Text&amp;gt;
&amp;lt;Label Text=&quot;Last name:&quot;/&amp;gt;
&amp;lt;Text&amp;gt;
   &amp;lt;Text.text&amp;gt;
     &lt;span class=&quot;style1&quot;&gt;&amp;lt;Binding path=&quot;lastName&quot;&lt;/span&gt;/&amp;gt;
   &amp;lt;/Text.text&amp;gt;
&amp;lt;/Text&amp;gt;
&lt;/pre&gt;
&lt;p&gt;And the version in XWT Data Binding expression, which is more compact:&lt;/p&gt;
&lt;pre&gt;&amp;lt;Label Text=&quot;First name:&quot;/&amp;gt;
&amp;lt;Text text=&lt;span class=&quot;style1&quot;&gt;&quot;{Binding Path=FirstName}&quot;&lt;/span&gt;/&amp;gt;
&amp;lt;Label Text=&quot;Last name:&quot;/&amp;gt;
&amp;lt;Text text=&lt;span class=&quot;style1&quot;&gt;&quot;{Binding Path=LastName}&quot;&lt;/span&gt;/&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This solution presents the following benefices:&lt;/p&gt;
&lt;table width=&quot;647&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width=&quot;120&quot;&gt;Data model neutral&lt;/td&gt;
&lt;td width=&quot;511&quot;&gt;The same Data binding expression can be used for any kind of data model like Java Bean, Pojo, Dynamic EMF, XML, Web services, etc. Even it is programming language independent.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Easy to use&lt;/td&gt;
&lt;td&gt;Developers need only to know the basic concept of Data Binding, &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic foundation of visual tools&lt;/td&gt;
&lt;td&gt;It is really straight forward to provide a UI edition in a visual tools like VE. XWT Designer has provided this feature, which allows no software programmers to develop applications.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png&quot;&gt;&lt;img width=&quot;500&quot; alt=&quot;&quot; src=&quot;http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png&quot; class=&quot;aligncenter size-full wp-image-98&quot; height=&quot;394&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 13 Nov 2009 11:34:53 +0000</pubDate>
</item>
<item>
	<title>Martin Lippert: Coming Up: Eclipse Demo Camp in Hamburg at December, 4th</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-1461569032763036665</guid>
	<link>http://martinlippert.blogspot.com/2009/11/coming-up-eclipse-demo-camp-in-hamburg.html</link>
	<description>The &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot;&gt;Eclipse Demo Camp in Hamburg&lt;/a&gt; is coming up on 4th of December (its a Friday) from 6:30pm - 10pm at the stylish EAST hotel (like the past demo camps in Hamburg). And I am pretty impressed about the number of participants: We already have more than 70 people registered for the event. Wow... Maybe one of the reasons is the exciting program we put together... :-)&lt;div&gt;&lt;ul&gt;&lt;li&gt;Tom Schindl will talk about Eclipse e4&lt;/li&gt;&lt;li&gt;Jan Köhnlein talks about building graphical and textual editors for your domain-specific language.&lt;/li&gt;&lt;li&gt;Jochen Krause will showcase Eclipse RAP and how you can build your rich AJAX apps using the Eclipse UI metaphors.&lt;/li&gt;&lt;li&gt;Nils Hartmann and Gerd Wütherich will share some insights into the various ways of how to realize an automated build process for OSGi and Eclipse applications.&lt;/li&gt;&lt;li&gt;And Ekkehard Gentz will show us &quot;redview&quot;, a technology to build dynamic views for enterprise applications based on Riena, EMF and CDO.&lt;/li&gt;&lt;/ul&gt;Thanks to all the speakers who have agreed to join us in Hamburg to give demos on cool technologies - some of them travelling to Hamburg especially for the camp. Thank you all very very very much!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you haven't registered yet, go to the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot;&gt;wiki page&lt;/a&gt; and put your name on the list (if you have no account for the wiki, just create one or send me an email and I will put you on the list). There is no fee or ticket you need to pay for, itemis and it-agile will sponsor the event. Thank you guys for that!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Its a great opportunity to see the technology in action, meet with the guys building that stuff and have a chat. See you at the Demo Camp in Hamburg. Don't miss it! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/18490491-1461569032763036665?l=martinlippert.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 09:49:23 +0000</pubDate>
	<author>noreply@blogger.com (Martin Lippert)</author>
</item>
<item>
	<title>Stephane Bouchet: Do you know the eclipse project summary pages ?</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-2725710657746694091.post-2048652730771126304</guid>
	<link>http://sbouchet-eef.blogspot.com/2009/11/do-you-know-eclipse-project-summary.html</link>
	<description>In Eclipse world, each project has its own page describing some important informations for commiters or developers. &lt;br /&gt;&lt;br /&gt;Take a look to the EMF summary page :&lt;br /&gt;&lt;a href=&quot;http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emf&quot;&gt;http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For EEF, this page is &lt;a href=&quot;http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emf.eef&quot;&gt;this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can find here various links to help you to download the latest builds, download the PSF file, to know who are the commiters, and access to the web and wiki pages.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2725710657746694091-2048652730771126304?l=sbouchet-eef.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Nov 2009 09:22:00 +0000</pubDate>
	<author>noreply@blogger.com (Stéphane Bouchet)</author>
</item>

</channel>
</rss>
