INSERT INTO sites(host) VALUES('planeteclipse.org') 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) planeteclipse.org 网站价值¥472,391(不含域名),MYIP.CN网站综合数据统计 - 域名,Alexa,PR,反向链接,关键字
  测网速 网站优化诊断 广告招商QQ3066631932 CodeForge最好的源码站!   手机测速 测速APP

  
                       

网站页面信息

标题:
描述:
关键字:
sponsored links:
连接:
图片:
网站历史:
sponsored links:

网站流量与估价

网站流量:
网站估价:  (注:不包含域名价值,不代表公司价值)

网站排名

Alexa全球排名:
Google Page Rank:
真假PR鉴别:   (提示:若此处显示网站与查询网站不同,则疑为劫持PR)
Sogou Rank:
百度快照日期:

搜索引擎收录

搜索引擎收录情况反向链接
 谷歌Google:
 百度Baidu:
 微软Bing:
 搜搜Soso:
 雅虎Yahoo:
 有道Youdao:
 搜狗Sogou:

服务器信息

Web服务器:
IP地址:    
IP所在地:

域名注册信息

注册人:
Email:
ICANN注册机构:
创建时间:
修改时间:
过期时间:
状态:
Name Server:
Whois Server:

Alexa 排名走势数据

流量统计: 当日 一周平均 三个月平均
排名:
PV:
日独立IP:

网站在各国/地区的排名

国家/地区访问比例

下属子站点被访问比例

Alexa 排名走势图

Alexa Reach走势图

域名 Whois 记录

Who is planeteclipse.org at org.whois-servers.net

NOTICE: Access to .ORG WHOIS information is provided to assist persons in

determining the contents of a domain name registration record in the Public Interest Registry

registry database. The data in this record is provided by Public Interest Registry

for informational purposes only, and Public Interest Registry does not guarantee its

accuracy. This service is intended only for query-based access. You agree

that you will use this data only for lawful purposes and that, under no

circumstances will you use this data to: (a) allow, enable, or otherwise

support the transmission by e-mail, telephone, or facsimile of mass

unsolicited, commercial advertising or solicitations to entities other than

the data recipient's own existing customers; or (b) enable high volume,

automated, electronic processes that send queries or data to the systems of

Registry Operator or any ICANN-Accredited Registrar, except as reasonably

necessary to register domain names or modify existing registrations. All

rights reserved. Public Interest Registry reserves the right to modify these terms at any

time. By submitting this query, you agree to abide by this policy.



Domain ID:
D105873505-LROR

Domain Name:PLANETECLIPSE.ORG

Created On:12-Mar-2005 20:20:48 UTC

Last Updated On:03-Dec-2009 05:06:26 UTC

Expiration Date:12-Mar-2015 20:20:48 UTC

Sponsoring Registrar:GoDaddy.com, Inc. (R91-LROR)

Status:CLIENT DELETE PROHIBITED

Status:CLIENT RENEW PROHIBITED

Status:CLIENT TRANSFER PROHIBITED

Status:CLIENT UPDATE PROHIBITED

Registrant ID:CR31268810

Registrant Name:Eclipse Webmaster

Registrant Organization:eclipse.org

Registrant Street1:102 Centrepointe Drive

Registrant Street2:

Registrant Street3:

Registrant City:Nepean

Registrant State/Province:Ontario

Registrant Postal Code:K2G 6B1

Registrant Country:CA

Registrant Phone:+1.6132249461

Registrant Phone Ext.:

Registrant FAX:

Registrant FAX Ext.:

Registrant Email:webmaster

Admin ID:CR31268812

Admin Name:Eclipse Webmaster

Admin Organization:eclipse.org

Admin Street1:102 Centrepointe Drive

Admin Street2:

Admin Street3:

Admin City:Nepean

Admin State/Province:Ontario

Admin Postal Code:K2G 6B1

Admin Country:CA

Admin Phone:+1.6132249461

Admin Phone Ext.:

Admin FAX:

Admin FAX Ext.:

Admin Email:webmaster

Tech ID:CR31268811

Tech Name:Eclipse Webmaster

Tech Organization:eclipse.org

Tech Street1:102 Centrepointe Drive

Tech Street2:

Tech Street3:

Tech City:Nepean

Tech State/Province:Ontario

Tech Postal Code:K2G 6B1

Tech Country:CA

Tech Phone:+1.6132249461

Tech Phone Ext.:

Tech FAX:

Tech FAX Ext.:

Tech Email:webmaster

Name Server:mag2.magmacom.com

Name Server:mag1.magma.ca

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

Name Server:

DNSSEC:Unsigned

网站缩略图

sponsored links:

网站访问速度测试

国内Ping速度测试      国内TraceRoute路由测试
美国Ping速度测试      美国TraceRoute路由测试

网站关键字指数 (越高越热门)

域名 planeteclipse 其他后缀注册情况   查看更多

后缀 注册时间 到期时间 是否注册
.com
.net
.org
.cn
.com.cn
.asia
.mobi

同类相似网站

查看更多
Alexa标题
15,451,625Planet Ocean - Planet Ocean Communications
0Planet Eclipse Ltd - Paintball Products
666,082Software Delivery and ALM Solution | Pulse Private Label Software Deli
0Auto Accessories | Car Accessories | Mitsubishi Eclipse Body Kits | Mi
488,078Planet Eclipse
506,423NL Planet - Welcome to NL Planet
2,236,865Da-Planet - Da-Planet, the place for Trading Card Games
6,818,066Eclipse Plugins, Bundles and Products - Eclipse Marketplace
163,298Planet Wealth | Planet Wealth
466,840Backpackers Planet - The free information platform of Backpackers-Plan
923,763Hip Planet: Your Portal to the Hip Universe - Hip Planet
575,373Welcome to Planet Caravan Music! Home of the coolest music merchandise
8,906,964奄美皆既日食音楽祭 ECLIPSE 2009 | Total Solar Eclipse Music F
2,734,283■SHOE-PLANET■-NIKE ADIDAS PUMA ナイキ アディダス スニー
11,955Planet F1 | Formula One | News, Standings, Results, Features, Video
623,642Planet X Nibiru - Planet X Video
137,844Eclipse Zone | Community for Eclipse users and developers
587,954Innoopract - Eclipse solutions by Eclipse leaders
189,137Lyrics Planet - The Best Lyrics on the Planet
189,782SF Planet - The Planet of Wireless Accessories
16,272Planet F1 | Formula One | News, Standings, Results, Features, Video
1,410,097Giveaway Gifts Manager Script - the coolest script on the planet ! - W
792,776PLANET | PLANET Home
359,212EasyEclipse | Free, open source, easy-to-use Eclipse distributions and
1,168,278Yoxos - EclipseSource
1,454,036PLANET IC GmbH | Home - PLANET IC GmbH: openCMS, Webagentur, Provider
297,630Planet Waves :: Planet Waves Monthly for January 2009
898,218Planet Smoothie - The Best Tasting Smoothie on the Planet!
0Eclipse Plugin Central :: Eclipse plugins resource center and marketpl
0Planet Eclipse

模拟搜索引擎蜘蛛抓取

Title:Planet Eclipse
Description:he EMF website:
Keywords:Planet, Eclipse
Body:
Planet Eclipse
Planet Eclipse
Planet Eclipse
Planet Eclipse is a window into the world, work and lives of Eclipse hackers and contributors.
Looking for an RSS Newsreader? Try RSSOwl, it is built on Eclipse!
Last updated: March 22, 2011 07:40 AM (UTC)
Maintained by the Planet Eclipse admins.
Powered by:
Your Blog
If you would like your blog added to the feed, please have a look at our guidelines and then open a request in the Eclipse Bugzilla with your feed specific information.
Subscriptions
Abel Muino
Achim Brede
Ahti Kitsik
Alex Blewitt
Alex Radeski
Alexander Nyssen
Ali Burak Kulakli
Andre Oosthuizen
Andrea Zoppello
Andreas Hoegger
Andrei Loskutov
Andrew Eisenberg
Andrew Niefer
Andrew Overholt
Andy Clement
Andy Maleh
Angelo Zerr
Ankur Sharma
Annamalai Chockalingam
Anne Haugommard
Anthony Hunter
Anthony Juckel
Antoine Toulme
Artur Kronenberg
Aurelien Pupier
BJ Hargrave
BPMN Modeler
Baptiste Mesta
Ben Vitale
Benjamin Cabe
Benjamin Muskalla
Benno Baumgartner
Benoit Langlois
Bernd Kolb
Beyhan Veliev
BioClipse
Birt World
Blaise Doughan
Blinki
Bob Balfe
Bob Brodt
Boris Bokowski
Brian Fitzpatrick
Brian Fitzpatrick
Brian de Alwis
Bryan Hunt
Buddhika Laknath
COSMOS
Carlos Sanchez
Carlos Valcarcel
Cedric Brun
Chetan Kumar Kotha
Chris Aniszczyk
Chris Gross
Chris Recoskie
Christian Damus
Christian Meier
Craig Setera
Daniel Ford
Darin Swanson
Dariusz Luksza
Dave Carver
Dave Orme
David Black
David Bosschaert
David Bosschaert
David Green
David Kyle
Deepak Azad
Del Myers
Denis Roy
Donald Ralph
Donald Smith
Doug Clarke
Doug Schaefer
Eclipse Announcements
Eclipse Committer Reps
Eclipse Enthusiasts Poznań
Eclipse Gyrex
Eclipse MAT
Eclipse Riena
Eclipse4SL
EclipseCon
EclipseLink Team
EclipseLive
Ed Burnette
Ed Merks
Egon Willighagen
Eike Stepper
Ekkehard Gentz
Elias Volanakis
Elliott Baron
Emil Crumhorn
Emilien Perico
Epsilon GMT
Erdal Karaca
Eric Rizzo
Erkki Lindpere
Erwin Tenhumberg
Etienne Juliot
Eugene Kuleshov
Eugene Ostroukhov
Fabian Steeg
Felipe Heidrich
Flavio Donze
Florian Lautenbacher
Florian Waibel
Francis Upton
Francisco Gortazar-Bellas
Frank Gerhardt
Frank Turovich
Fred Grott
Freddy Allilaire
Frederic Madiot
Glyn Normington
Gorkem Ercan
Goulwen Le Fur
Greg Wilkins
Gunnar Wagenknecht
Hannes Mueller
Hasan Ceylan
Heiko Behrens
Heiko Seeberger
Hendrik Eeckhaut
Hendy Irawan
Henning Faber
Henrik Lindberg
Herman Lintvelt
Hiroki Kondo (kompiro)
Holger Staudacher
Holger Voormann
Human Centered Web (HCW)
Ian Bull
Ian Bull
Ian Skerrett
Ilya Shinkarenko
Imran Abdul Rahiman
Ismael Juma
Itemis (Kiel)
Ivan Motsch
Ivar Meikas
JDT-UI and Text Team
JFace Data Binding Team
JSDT
Jacek Pospychala
Jae Gangemi
James Blackburn
James Ervin
James Sutherland
Jan Bartel
Jan Kohnlein
Jason van Zyl
Jeff McAffer
Jeff, Paul Simon
Jens Götz
Jens von Pilgrim
Jens von Pilgrim
Jerome Benois
Jesper Møller
Jesse McConnell
Jiang Hu
Jin Mingjian
Jochen Krause
Joern Weigle
John Bito
John Dang
John Graham
Jonas Boner
Jonas Helming
Jonas Helming
Jonathan Musset
Jordi Böhme López
Julius Shaw
Kai Kreuzer
Kai Toedter
Kaloyan Raev
Karl Beecher
Karsten Thoms
Ken Gilmer
Ken Ryall
Kenn Hussey
Kent Beck
Ketan Padegaonkar
Kevin Barnes
Kevin McGuire
Kevin Vu
Kim Horne
Kim Moir
Kiril Mitov
Knut Wannheden
Konstantin Komissarchik
Lars Vogel
Laurent Goubet
Lawrence Mandel
Les Jones
Litrik De Roy
Lucas Bigeardel
Lukasz Milewski
Lynn Gayowski
Maarten Meijer
Madhu Samuel
Manuel Selva
Manuel Woelker
Marcel Bruch
Marcel Gorri
Marcelo Mayworm
Marcelo Paternostro
Mariot Chauvin
Mark Melvin
Mark Phippard
Mark Powell
Markus Knauer
Markus Knauer
Markus Kohler
Markus Kuppe
Markus Scheidgen
Markus Tiede
Markus Voelter
Martin Fluegge
Martin Lippert
Martin Oberhuber
Martin Taal
Marty Jones
Mateusz Matela
Matthias Kempka
Matthias Sohn
Matthias Zimmermann
Maximilian Kögel
Meinte Boersma
Michael Scharf
Michael Spector
Michael Valenta
Michaela Greiler
Michel Parisien
Mickael Istria
Mik Kersten
Mika'l Barbero
Mike Milinkovich
Mike Wilson
Miles Parker
Miles Sabin
Mitch Sonies
Moritz Post
Mukul Gandhi
Mustafa Isik
Naci Dai
Nathan Gervais
Neil Bartlett
Nick Boldt
Nicolas Richeton
Nirav Thaker
Nirmal Sasidharan
Nitin Dahyabhai
Oisín Hurley
Olivier Thomann
Open Healthcare Framework
OpenNTF
Orion
Pascal Rapicault
Patrick Paulin
Paul Bilnoski
Paul Trevithick
Paul Webster
Peter Friese
Peter Kriens
Peter Liu
Philipp Kursawe
Philippe Ombredanne
Philippe Ombredanne
Piotr Maj
Platform Debug Team
Polishin' Eclipse
Prakash G.R.
R uuml;diger Herrmann
RSE World
Radoslaw Urbas
Rafael Chaves
Raja Kannappan
Ralf Ebert
Ralf Sternberg
Ralph Müller
Releng
Remy Suen
Ricco Deutscher
Richard Gronback
Robert Konigsberg
Romain Bioteau
Ron Bermejo
Roy Ganor
SOA Tools Team
Sandro Boehme
Scott Kellicker
Scott Lewis
Scott Lewis
Scott Schram
Sebastian Benz
Sebastian Zarnekow
Sebastien Letelie
Serge Beauchamp
Seva Lapsha
Shaun Smith
Simon Chemouil
Simon Kaegi
Simon Zambrovski
SoC Blog
Stefan Daume
Stefan Dimov
Stefan Leopold
Stefane Fermigier
Steffen Pingel
Stephan Herrmann
Stephan Leicht
Stephane Begaudeau
Stephane Bouchet
Steve Northover
Steve Sfartz
Stéphane Drapeau
Suresh Krishna
Sven Efftinge
Swordfish Team
Tasktop Team
Terry Chen
Thibault Landre
Thomas Derflinger
Thomas Hallgren
Thomas Kratz
Thomas ten Cate
Tianchao Li
Tim Buschtöns
Tom Schindl
Tom Seidel
Tomasz Wesolowski
Tonny Madsen
Toomas Römer
Torkild Ulvøy Resheim
Tristan Faure
Ugo Sangiorgi
Vasanth Dharmaraj
Vincent Hemery
Vincent Zurczak
Vineet Sinha
Vineet Sinha
Virgil Dodson
Vojimir Golem
Wayne Beaton
Webtools News
William Candillon
William Piers
Wim Jongman
Xavier Maysonnave
Yves Yang
Zeb Ford-Reitz
Zoltan Ujhelyi
Welcome to Planet Eclipse
March 22, 2011
Jeff McAffer
RT BoF @ EclipseCon
Interested in using Eclipse and OSGi as a runtime technology?  Already doing that?  Come hang out with like minded folks at the Eclipse RT BoF at EclipseCon on Wednesday evening.  We’re shooting for the early slot (7:30-8:30). Check the BoF sign-up board on the mezzanine level of the Hyatt for room details.  I’ll post a comment here when more details are available.  See you there. p
by jeff at March 22, 2011 06:23 AM
Dariusz Luksza
Eclipse Community Awards 2011
This was a very successful day for EGit team and me at EclipseCon. Its starts from very successful tutorial on EGit by Chris Aniszczyk, Matthias Sohn, Shawn Pearce and Stefan Lay. I think that this was largest simultaneous EGit testing that we ever had . Some bugs ware found during this tutorial and we (as a EGit developer team) get the most important thing … a users’ feedback! and we are looking forward for more opinions and hints from you about EGit ; gt;.  Some of the effects of the EGit tutorial can be seen in ours’ gerrit instance
Few hours after EGit Tutorial the results of Eclipse Community Award 2011 were announced … and guess what? The EGit project won in category ‘Most Innovative New Feature or Project’! This is a great success for me and others EGit developers and it is a huge motivation for continue working and improving EGit
As you might know, I was nominated in ‘Top Contributor’ category, and if you looks carefully on the left hand side picture of ‘Eclipse Community Award’ statue you might notice that there is my name on it … yes I’m a ‘Top Contributor’ in 2011. This whole history with Eclipse Community Awards was a huge surprise for me, starting from nomination, ending on a moment when I was keeping this statue in my hands. I want to thank everyone for voting on EGit project and me in Eclipse Community Awards. Also I want to encourage every Eclipse committer to participate in Google Summer of Code as a menthor … who knows maybe yours feature GSoC student will also be in feature nominated in Eclipse Community Awards … you only need to give him a chance
Apart form that, big thanks to Google and Eclipse Foundation for giving me opportunity to participate in EclipseCon. Without theirs support I can only dream about participating in EclipseCon. Once again, thank Google!, thank Eclipse Foundation!
BTW.  Any one flying Friday morning from San Jose to Dallas (AA1252) ? ; gt;
p
by Dariusz Łuksza at March 22, 2011 05:49 AM
March 21, 2011
Oisín Hurley
Missing in Action from EclipseCon 2011
EclipseCon 2011 started today, with an awesome program of events going on over the week. I’ve attended the previous four instances of the conference, and had the signal honour to have been the Program Chair for EclipseCon 2010. Now, alas, I’ve lapsed. Instead of getting a nice easy job after my release from Progress last year, I’ve foolishly decided to startup a software business with a couple of guys. I hope this adequately explains my somatic non-presence at this years showcase of what’s wonderful in the Eclipse world. For example – if I was in California today, I would not have been able to load the mobile part of our product on the phone of a friend-of-a-friend who just happens to be attending a concert with the CEO of a division of a large cellphone company, with instructions to show it to this CEO and get a meeting for us. But if I was in California today, I would be enjoying beers with lots of people that are much smarter and much more dedicated than me.
It’s always a tradeoff.
***
Now that I have a brand new ‘user’ perspective, and am on the outside looking in, there are a few items within the Eclipse Ecosystem that are particularly interesting.
EGit – I’m using git exclusively now for source code control, and having good support is very important. I think that the real decision-maker on using git all the time are hosting services like Heroku and Nodester adopting git push workflows for application deployment.
DSL-based mobile device project scaffolding – projects like Applause and Applitude, both based on Xtext and mobl, based on Spoofax, can give you a chunk of starting point code to get your mobile application up and running on the cheap. I haven’t taken as much time to study these as I want to – a future blog entry I think.
Orion – when I first saw the Bespin project, which then merged with Ace and is now the development-as-a-service Cloud9 IDE, it failed to stir me. However, when I started doing some node.js project experiments, then the option of being able to edit your JS code through the browser suddenly had more appeal, precisely because now you can edit server code. It will be worth a blog entry in its own right at some point (aside – Mr. Orion, @bokowski, just linked to another one, Akshell, a minute ago)
***
I just realized the other day that the last piece of Java/Eclipse a programming I did was in July 2010. Since then I’ve been in this dual world of the mobile app developer – programming
native code on iOS devices, programming Rails 3 and node.js on the server end of things, pushing data into PostGIS and Redis. I didn’t think I would end up here, but it’s been fun so far As to the future, I’ve refused to plan anything beyond world domination for the moment. But maybe I can get an Orion talk accepted for EclipseCon Europe…
Filed under: conferences, eclipse, java, open source, opinion, self-serving blog twaddle
p
by oisinhurley at March 21, 2011 11:56 PM
Vineet Sinha
Understanding What Others Are Upto!
One of the challenges when working in teams is in keeping up with your fellow developers. Spending a lot of time reading others' code not only means less time getting your own work done but also the gradual deterioration of the code architecture. This is a problem that we have heard over and over again from developers and managers alike.
We have just released additional code and architectural review tools that will help developers easily understand new features that are being built. We are pleased to announce that we will be demoing this functionality at EclipseCon 2011 as part of the Hot New Products Showcase. With this release we not only have a full fledged code review client and server, but also are making it really easy for developers to document the main parts of what is being worked on. Our new features will help developers create and maintain more comprehensive architectural documentation, solving a number of common development issues.
It's important to make sure the quality of your project's code and documentation don't degrade over time. Reviewing the architecture as well as the code itself will ensure a better documented codebase, resulting in easier to understand code and decreased development overhead.
On the other hand, we all know that poorly documented code can increase overhead. Developers are often biased to think that their own code is well documented. Another set of eyes checking the documentation as well as the code can make sure confusing code is documented before it is committed.
Code duplication is one of the main sources of bugs and headaches for developers. Code review can help minimize duplication in new code but finding redundancies in legacy code may be difficult without quality architectural documentation.
Projects with limited or outdated architectural documentation are more susceptible to code erosion since developers may not be clear on what boundaries they are constrained by. Easy access to viewing and creating documentation helps developers be more aware of the effects their code has on other components.
by Seth Rosen at March 21, 2011 10:59 PM
Jonas Helming
What every Eclipse Developer should know about EMF – Part 1
So this is my first post at the new location. As Jochen announced earlier, Maximilian and me are joining EclipseSource in Munich. We are very happy about this and look forward to the collaboration.
Today, we have presented the Tutorial “What every Eclipse Developer should know about EMF” at EclipseCon. I will blog the tutorial here step by step.
So let`s get startet
Abstract
You did not use EMF before? What is EMF anyway? What is all this modeling stuff about? And who is this Ed guy?
This tutorial motivates the use of EMF and explains the basics. We show how to build a very simple data-centric application based on EMF including the UI. We explain how to define a model in EMF and how to generate code from it. We explore the API of the generated code to create, navigate and modify model instances. We demonstrate how to build an UI based on this model. As an example we build an application to manage a bowling league and tournaments.
In the first step of the tutorial we will create the underlying model of our example application.
To follow this tutorial, please use a (fresh) instance of the Eclipse Modeling Tools Helios for your OS.
Later in the tutorial, we will use this example solution: exampleSolution
Authors:
Jonas Helming (Basic Tutorial, EMF CP Ignite), jhelming@eclipsesource.com
Maximilian Kögel (Basic Tutorial, EMFStore Ignite), mkoegel@eclipsesource.com
Markus Herrmannsdörfer (Edapt Ignite)
Eike Stepper (CDO Ignite)
Saurav Sarkar (EMF Query Ignite)
Mariot Chauvin (EEF and GMF Ignites)
Cédric Brun (EMF Compare Ignite)
 
Table of Contents
1     Introduction
2     Example Model
3     Modeling
3.1      Code Generation
3.2      Model refinement
3.3      Why is this better than writing POJOs?
4     EMF API
5     Import Sample Solution
6     AdapterFactories
7     EMF Data-Management
8     EMF UI
9     Additional EMF-based Technologies
 
1        Introduction
For the question “What is EMF” we borrow the description from the EMF website:
“The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor.”
It is noteworthy that EMF has also been a stable standard for many modeling technologies.
We suggest using EMF for any structured data model you have to create in Eclipse, especially if it gets stored, displayed and modified in UIs. The basic EMF workflow is very pragmatic; a model is created defined in the Ecore format. Ecore is basically a sub-set of UML Class diagrams. From an Ecore model, you can generate Java code.
Later in this tutorial we will have two runing instances of Eclipse. In the first instance, the “IDE”, we will define the model and generate code from it. The second instance, the “Runtime”, will be started from the IDE and contain instances of the generated model.
2        Example Model
In this tutorial we will create an example model for managing a bowling league and tournaments. A Leagues contains an arbitrary number of Players. A Tournament consists of an arbitrary number of Matchups. A Matchups always contains of two Games. A Game is a list of frames (the score) and is assigned to a certain Player. Finally a Tournament has a Enumeration determining the type of the Tournament.
In the next step, we will show how to create this model and generate code form it.
3        Modeling
We will create our example model in EMF to generate the entity classes for our application. The first step is to create an empty modeling project in your workspace:
The essential part of the modeling project is the model itself, defined in the format “Ecore”. Please create a new “ecore” file in the model folder in your new modeling project. We will name the file “bowling.ecore”:
Click finish to create the model. It will be opened in the default Ecore editor. This editor allows defining Ecore models in a tree-based view. There are several additional possibilities to define Ecore models, including graphical modeling, textual modeling, Java annotations and import from UML tools. We will stick to the default editor in this tutorial and shortly demonstrate the graphical editor for Ecore.
In the tree of the Ecore editor you can create and delete model elements as well as modify the structure of your model via drag and drop. Properties of model elements can be modified in a second view, which opens up on double-click or right-click = gt; “Open Properties View”.
First, give the root package of your new model a name and an URI. This is used to identify the model later on. Name the package “bowling”, set the Ns Prefix to “org.eclipse.example.bowling” and the Ns URI to “http://org/eclipse/example/bowling.ecore”:
Now, we can define our model elements as children of the root package. Please right click the root package and create a new EClass and name it Player.
From the context menu of an EClass, you can add EAttributes and EReferences to it. Create an EAttribute and open the Property view for it. The properties of an EAttribute define its name, its data-type and other properties, which we will cover later in this tutorial. Add an EAttribute to the Player, name it “name” and assign the EType “EString” (java.lang.string). Repeat this step and add a second EAttribute named “dateOfBirth” of type “EDate”.
EMF models usually build up a structured hierarchy, meaning model element instances, e.g. the Player “Jonas” are contained in a specific container object. This provides a tree-structure, which is useful for navigability and allows for serialization. This tree structure is often referred to as containment tree. In our model, Players are contained in a League. Please note that this also implies that every Player is referenced by exactly one League, thus cannot be part of more than one League. Therefore EMF will automatically take care that a player cannot have more than one league. If you add a player to another league, its reference to the original league vanishes.
Create a second EClass and name it “League”. To identify the League, also create a EString attribute called name. The next step is to create a EReference between League and Player by right-clicking on the League model element. Name the references “players”. Set the EType of the reference to “Player”. As a League can contain an arbitrary number of Players, set the upper bound to “-1”, equivalent to “many”. Finally set the property Containment to “true” determining that the EReference is a containment reference.
After this first model iteration, we can already generate code from it. EMF provides an example editor to create and modify model instances. This allows us, to initially test the created model, before we further refine and add more EAttributes and EReferences in a second iteration to complete the example model.
 
3.1      Code Generation
In this step, we will generate the entities from the Ecore file we have created. Please note that you can regenerate the entities again, if you need to change you model. EMF can deal with simple changes like adding model elements or EAttributes. If you have complex changes, like moving an attribute to another class, you would have to migrate existing instances of the model. This is supported by the EDAPT framework.
To generate entities, we have to create a generator model file first. This file allows configuring properties for the generation, which are not part of the model itself, for example the plugin and subfolder, the source code is generated to. Please create a new generator file in the model folder and select our previously created Ecore as a source model.
In the root node of the generator model, you can set the properties for the code generation. In the tree of the generator model, we can set properties for every generated entity. For the first code generation, we just use the default settings. Based on the generator model, we can now generate the source code. EMF allows generating four different plugins for a defined model:
Model: The model contains all entities, packages and factories to create instances of the model.
Edit: The edit plugin contains providers to display a model in an UI. For example the providers offer a label for every model element, which can be used to display an entity showing an icon and a name.
Editor: The editor plugin is a generated example editor to create and modify instances of a model.
Test: The test plugin contains templates to write tests for a model.
To generate the plugins, right click on the root node of the generator model and select the plugin. For our tutorial, please select “generate all”.
Before we look at the generated code, let’s first start the application and create an entity of our model. Please right click on the model plugin and select “Debug as = gt; Eclipse Application”.
Please create a new empty project and a bowling model. This file will contain a serialized version of our model instance.
Select League to be the model object. This determines the root object of the model instance we are about to create.
The generated editor for model instances works similar to the Ecore editor. Model element instances can be created via a right-click, EAttributes can be modified in the properties view. Please name the League and create two Players. On save, all created instanced are serialized in the XMI file “league.bowling”.
3.2      Model refinement
Let`s switch back to our IDE Eclipse environment, complete the model and regenerate the source code. In this second model iteration we will add different type of EReferences, as well as EEnums and Multi-EAttributes. First please add the following classes to the bowling model:
Tournament
Matchup
Game
These classes model the results of bowling tournaments build up a second tree in our model. Therefore we add containment EReferences from Tournament to Matchup and from Matchup to Game. Following the bowling rules, a Matchup consists of two Games (each from one Player). We model this by setting the upper bound and lower bound of the EReference “games” of the EClass Matchup to “2”.
Furthermore we defined that the EReference between Matchup and Game is bi-directional. That means, the reference can be navigated from both ends. Therefore we have to create a second EReference from Game to Matchup and bind both EReferences. EMF will take care of the bidirectional synchronization. In other words adding a matchup to a game will automatically add the game to the matchup.
Please add a EReference to Game called “matchup” with the EType “Game”. By setting the EOpposite to the EReference “games”, both EReferences are coupled bi-directionally. Note, that the property “Container” will automatically be set to true.
The next step is to add a cross-EReference. In contrast to containment EReferences, cross-referenced model elements do not contain each other. In our model we add a cross EReference from Game to Player named “player”. Let both, container and containment properties “false”. An arbitrary number of games can be assigned to a Player now; the Player is still contained in a League.
As a final mandatory step, we will create an EEnumeration for the type of a tournament. A tournament can be of type “Pro” and “Amateur” in our model. Please create a EEnum by right-clicking on the root bowling model package, just like creating a class. Add two EEnum Literals to this EEnum.
Please add an EAttribute to the EClass Tournament, name it “type” and set the EType to “TournamentType”.
The extended example model contains more EAttributes and EReferences to be added including all basic types and some special cases as the Multi-Integer EAttribute in Game. Depending on your time, please model the following features:
Player
height: EDouble
isProfessional: EBoolean
Game
frames: EInt, UpperBound = 10
After applying complex changes to the model it is always a good idea to validate it, done with a right-click on the model root in the Ecore editor. Let`s do something wrong in the model and set the lower bound of the EAttribute “games” (in Matchup) to 3. As the upper bound is 2, this model doesn`t make too much sense. This will be detected by the model validation, something which is impossible in plain Java Code.
After this model refinement, we will re-generate the code to reflect our changes. Start the runtime Application again and create a second model “tournament”. Add a Matchup and  two Games. To add assign the Games to Players you will have to load the “league” model created before. Select “Load Ressource” from the menu “Bowling Editor” and select the first model file. Now, link the Games to the Players in the properties view.
3.3      Why is this better than writing POJOs?
You might ask, why to use EMF instead of creating the model just writing plain POJOs. Without considering benefits like the generated editor for rapid testing and all additional frameworks available for EMF, let`s look at two very simple and exemplary benefits.
Before we even look at the generated code (we will do that in a minute), let`s consider the amount of code we have just produced. The Eclipse metrics plugin tells us, we have generated over 1000 LOC, while only 150 is part of utility classes. Even very simple code is considered to be worth 1$ per LOC. So we have just earned 1000$ just by clicking some buttons?
In the next part, which I will post this week, we will explore the EMF API of the code we have just generated. You can follow this blog to get notified about new posts. p
by jhelming at March 21, 2011 10:50 PM
Vineet Sinha
From Java to Spring and Beyond – Making Diagrams (and UML) work for developers
One of the strengths of working with Java is the large number of frameworks that are available. These frameworks are great for taking care of the basic tasks involved in building Java based apps. But they often bring about challenges in understanding - whether it is xml files or annotation based configurations, developers needing to work with these frameworks have to see how different parts of the code are connected.
With this in mind we have extended Architexa to not just show code relationships but have also built special support for popular frameworks like Spring and Struts. We are happy to announce that we will be demoing this functionality at EclipseCon 2011 as part of the Hot New Products Showcase.
We are pushing the edge here - so we are making this capability available as an 'early access' version. You can find it by default in all versions of the Architexa Suite. We would really like to hear what you think about it, and invite you to extend your trial of the product as we refine the implementation based on your feedback
In this release we are including early access to a number of frameworks. With Spring we have added support for Dependency Injection and Web Flow. We have also added support for Struts (1 and 2) and Tiles.
Spring Bean classes can be shown in both class and sequence diagrams along with any Property fields they contain. This allows for easy exploration of the hierarchy of beans along with a clearer view of dependency injection.
Struts support enables you to explore the actions defined in xml configurations files; specifically, the dependencies to other actions, jsp pages, and classes all within an easy to understand class diagram.
Tiles support allows you to easily see where different JSPs plug into various web components and how they relate to other java elements in a class diagram.
by Seth Rosen at March 21, 2011 10:49 PM
Sven Efftinge
A rough performance comparison between Xpand and Xtend 2
Xtend 2 is still in an early state. It works quite well, but there are still some issues and we haven't even started measuring and improving performance yet. Although I was pretty sure that Xtend 2 would easily outperform Xpand, I was curious how much.Today, I wrote a small code generator (the traditional domain model to Java Beans stuff) in Xpand and Xtend 2 and compared the execution time with different numbers of model elements, just to get a first impression.Disclaimer: Doing benchmarks is hard and I don't claim that do a fair comparison here, although I tried.The Xpand versionThe Xtend 2 versionGenerating files for 1000 entities (1 file each) containing 20 properties and 5 operations each took (on average exec. the generator 10 times) :Xtend 2 : 663 msXpand : 4254 msIf I remove the actual file writing and only do the in memory string concatenation the result was (again on average exec. the generator 10 times) :Xtend 2 : 247 msXpand : 3302 msSo it seems as if the computation and string concatenation in Xtend2 is roughly 10 times as fast as in Xpand. As we haven't yet profiled Xtend 2, there should be room for improvements. On a side note, I have also implemented the quicksort benchmark you can find here with Xtend 2, and found that the Java version was only twice as fast as Xtend. Compared to Groovy which was 20 times slower than Java it's quite good. It is mostly slower than Java, because we do a lot of conversion between ints and Integer (auto boxing) when using operators, so some special treatment in this area should make that even faster. Anyway, sorting int arrays is not the main focus of Xtend ;-).If you are doing code generation or are interested in it and you are visiting EclipseCon, you should definitely come to our tutorial on Thursday. There is much more to Xtend 2 than just the improved execution performance.And don't be afraid about missing the lunch, attendees get served a delicious, warm, and freshly prepared lunch after the tutorial :-).
by Sven Efftinge (noreply@blogger.com) at March 21, 2011 10:22 PM
Mike Milinkovich
2011 Eclipse Board Election Results
I am pleased to announce the results of the 2011 Eclipse Foundation Board elections.
The elected Committer Member representatives for 2011 will be:
Chris Aniszczyk
Boris Bokowski
Ed Merks
The elected Sustaining Member (e.g. Solution and Enterprise Member) representatives for 2011 will be:
Eric Clayberg (Google)
Hans Kamutzki (MicroDoc)
Mik Kersten (Tasktop)
Please join me in extending a hearty congratulations to the winners!
I would also like to extend a warm “thank you” to the other candidates: Tim Barnes, Weber Canova, John Cunningham and Gunnar Wagenknecht.
In addition, I would like to recognize Adam Lieber (Intalio) for the past service he provided to the Eclipse Foundation as a Director. He has has been excellent representative for our community and will be missed.
Filed under: Foundation p
by Mike Milinkovich at March 21, 2011 10:00 PM
Tom Schindl
EclipseCon2011: Day one and I’m done
Yeah. Day one is over (at least all my presentations are done) and I’m ready to enjoy EclipseCon in the next 3 days because I’ve no more talks this week. I think the talks I’ve delivered today have been received quite well.
Eclipse 4.x RCP Tutorial: Kai will upload our slides later on his blog. We had around 100 attendees and I think most of them liked our tutorial
Single Sourceing for Eclipse 4.x and 3.x: I think I got the message around. The slides can be looked at once more following the link
p
by Tom Schindl at March 21, 2011 09:50 PM
Jochen Krause
Eclipse Modeling in Germany – now at EclipseSource
I am happy to announce that EclipseSource is finally entering the modeling world and would like to introduce Max and Jonas as our new team members in Munich. Both are well known in the modeling community for leading the Eclipse projects,  EMFStore and EMF Client Platform.
With our expansion to Munich we can now better accommodate our customers in southeast Germany, Austria and Switzerland. But beyond the geographic expansion it is a big step for EclipseSource to enter the world of modeling, as we have been hesitant to get involved deeply with the technology over the last decade.
Two things made us change our minds: EMF’s versatility and the availability of a great team. Max and Jonas have proven their EMF expertise with the EMFStore project and in joint projects with EclipseSource.
Now, you no longer need to hesitate to contact us with your Eclipse Modeling questions and challenges. We are looking forward to it. p
by Jochen Krause at March 21, 2011 09:39 PM
Michaela Greiler
Participate @ the Eclipse Testing Survey
As an Eclipser testing matters to you! But when and why do you adopt a given testing approach? How do you test the integration of multiple plug-ins? Please take some minutes and share your experience in the Eclipse Testing Survey. Click here to take survey!What is the study’s aim?This survey aims to shed light on the testing culture within the Eclipse community. The anonymized results of the study will be compiled and made available. How to participate?Please fill in our online survey at www.goo.gl/YHBC2Who are we looking for? We are looking for Eclipse plug-in developers and testers, as well as for developers and testers of Rich Client Platform applications.Who conducts the research?The research is promoted by the Software Engineering Group at the Delft University of Technology. The study is designed by Michaela Greiler and Professor Arie van Deursen.
by Michaela (noreply@blogger.com) at March 21, 2011 06:08 PM
Eike Stepper
CDO Enters the 3rd Dimension
Update: The new room is Ballroom B+C(not D, as in the printed schedule!) EclipseCon is near and I'd like to invite you to attend Martin's and my talk CDO 3D on Monday shortly after lunch time.As you may know or not, CDO is a runtime environment for distributed shared EMF models. Especially for organizations with huge models (e.g. the NASA, banks like the UBS AG, etc.) CDO is indispensible and has become sort of modeling mainstream in the past years.Although I've always invested a lot into cool animated Powerpoint slides and although CDO comes with really new functionality each year, we've recognized a slight tendency of the conference audience to decide for parallel talks about completely new modeling technology, if they were forced to choose one. This fact (and the guy who shouted "next year we get Pixar Studios" after my last EclipseCon talk) has made me think about new ways of presenting a complex distributed technology. That's why this year's talk is titled "CDO 3D".We will have no Powerpoint slides anymore but fully focus on real-time demos of a distributed system with a CDO model repository server and two CDO client applications. The client applications have RCP user interfaces, as well as a self-made scripting console that we will use to demo the API usage of CDO and the immediate influence of local CDO calls on the entire system.In addition we've developed a 3D visualization frontend, that renders the contents and activities in multiple Java virtual machines into a 3D canvas in real-time. We've instrumented these VMs so that the frontend can even visualize the method calls between the Java objects and the network traffic between the VMs. This diagram outlines the basic architecture of our presentation system:If you're still asking yourself "What the hell is he talking about?" watch this short video:(click here for watching a larger video)Of course we'll also talk about some of the cool new features in CDO 4.0 like OCL queries, Blobs and Clobs, cross referencing and referential integrity checks, fail-over cluster and the brand new backend integration with MongoDB. I'm looking forward to see you in Santa Clara!
by Eike Stepper (noreply@blogger.com) at March 21, 2011 04:38 PM
Alex Blewitt
EclipseCon Tutorial Day
Today is the first day of EclipseCon, and the tweets are coming in on the #eclipsecon hashtag. Today's topics are tutorials this morning, followed by tutorialettes later this afternoon. If you're in to OSGi, there's a technical update on OSGi 4.3, and for those that haven't experienced the joys of PDE build, there's a Building Eclipse plugins with Tycho talk which is highly recommended.
Finally, this is likely to be the last EclipseCon conference where there are more CVS and SVN servers than Git. There's really two types of projects at Eclipse at the moment; those who use Git, and those who will use Git. Partially, that's because the tooling wasn't available at the start of the Indigo release train; but also because the switch mid release is a risk for the larger projects. However, once Indigo is out of the door, there will be a mass switchover for most Eclipse projects to join those already moved over onto git.eclipse.org. If you still haven't got used to it yet, go to the Effective Git tutorial from the developer's mouths. If you already know everything there is to know about Git and EGit, then you might want to check out the Enterprise OSGi talk on Aries.
As if that wasn't enough, tonight brings the Eclipse Community Awards Presentation followed by the birds of a feather sessions, some of which are yet to be scheduled – check the boards for more information. p
by AlBlue (noreply@blogger.com) at March 21, 2011 03:52 PM
Ugo Sangiorgi
Eclipse Sketch: Call for Sketches
After some period of inactivity, I’m now (finally) conducting my PhD research on Sketching Recognition here at Louvain Interaction Lab (Belgium), and my goal is to make Eclipse Sketch a repository of my contributions to that field.
At this point, I’m requesting sketches from you out there. If you are engaged on interactive systems development, please consider sending me your sketches by going to:
http://callforsketches.ugosan.org/
Anything you draw during meetings is useful. You probably have sketched diagrams into post-its, pieces of paper even napkins. Scan or photograph and send them over, itwill help a lot.
  p
by Ugo at March 21, 2011 03:21 PM
Ian Skerrett
Introducing OrionHub
Today at EclipseCon we announced OrionHub, a hosted implementation of the new Orion tools platform.  We want OrionHub to be the place where developers can experiment and discover the features of Orion, without requiring someone to download and install Orion on your own machine.   Right now, the service is a ‘beta’ so we still need to iron out some issues.  More importantly we are deleting files created on OrionHub on a regular basis, so don’t leave anything too important on your account.  We have opened sign-up for OrionHub to the first 5000 developers, so go give it a try now.
You will also noticed we have launched a new Orion home page.   Kudos to Nathan Gervais for creating a pretty sweet looking site.
Finally, for those that are interested some of the notes from the Orion planning meeting are now available on the Orion Wiki.   The day and half meeting was a good success.  We had 25-35 people in attendance from a wide range of companies.   There certainly seems to be a lot of interest in the Orion concept.
 
 
p
by Ian Skerrett at March 21, 2011 03:19 PM
Dave Carver
Turmeric 1.0.0-Beta-RC1 Released
Turmeric 1.0.0 Beta Release Candidate 1 has been released and ready for download.   Turmeric is eBay’s Open Source Sevice Oriented Architecture framework.   Turmeric 0.9.0 Beta was released in January, and 1.0.0 Beta Release Candidate 1 brings some bug fixes as well as enhancements. Some of the new features supported by Turmeric include:
Support for RESTful resource identifiers.   In the past what was called a RESTful was more a combination of URL Query Strings and XML over HTTP.  The new support allows for configuring and creating true RESTful url identifers for the services and operations.
This release provides a more enhanced version of both the Monitoring Console for checking service use, and the Policy Administration application.   Support for Rate Limiting Policies is now completely implemented.    Both Monitoring Console and Policy Administration applications are currently released as Alpha products, but are useful and functional.  What needs improvement are some of the User Interface workflows, look for some more postings about these applications in the coming weeks.
The Eclipse Plugins have had a few bug fixes and usability improvements.  A user can specify what is the preferred version of the runtime to use, and the POMs will be generated with these preferred versions included.  Also if a new Service project is created, and the user is not in the Turmeric SOA Development Perspective they will be switched to that perspective.
Turmeric 1.0.0 Beta Release Candidate 1 is ready for download now.  Also, if you are attending EclipseCon on Tuesday evening, there will be a BOF, and Wednesday Turmeric will be part of the new Product Showcase.   Please stop by, chat, and tell us what you think about the project, and let us know what you want to see from it going forward.
p
by kingargyle at March 21, 2011 03:11 PM
Martin Fluegge
ThreeDeeWorld
Today is the day that Eike and I are going to present CDO quite differently. Since the best way to learn about something is to open it up and look inside, we decided it is time for another style of presentation. Instead of providing a set of power point slides we will visualize the main concepts of CDO in a more illustrative way.
Note that the room changed from Ballroom D to Ballroom BC (14:30).
If you are not satisfied with learning about all the cool and fancy features from the world of CDO, do not miss my talk on Thursday (14:30, Stevens Creek), when I will talk about Dawn and it's latest features and the upcoming plans for Indigo.
Hope to see you in both talks.
Enjoy the EclipseCon :)
March 21, 2011 01:42 PM
Glyn Normington
Incremental OSGi with Virgo, Gemini, and Libra
As I anticipate the start of EclipseCon 2011 later today, I'm reflecting on the current state of the Eclipse Virgo, Gemini, and Libra projects.As I'll be discussing on Tuesday, Virgo evolved out of a relatively mature project whose aim was to make it easy for enterprise applications and enterprise application developers to adopt OSGi. The goal was to make the transition to OSGi incremental. Essentially you can start with a standard WAR file and deploy it to Virgo as-is. Then you can incrementally refactor the WAR file into an application comprising multiple OSGi bundles while continuing to use familiar technologies such as Spring, Hibernate, JPA, etc. We based Virgo on Tomcat suitably embedded into OSGi, again to provide familiarity for enterprise developers as well as systems administrators.In parallel with the evolution of Virgo, the OSGi Alliance Enterprise Expert Group, being discussed on Tuesday, produced a series of enterprise specifications again with the goal of enabling enterprise applications to be migrate straightforwardly to OSGi. The reference implementations of these specifications became today's Eclipse Gemini project:Gemini Blueprint - an OSGi standard dependency injection container which also supports the popular Spring and Spring DM namespacesGemini Web - support for servlets in the form of OSGi standard Web Application Bundles (WABs) or standard WAR filesGemini JPA - support for JPA persistence in OSGiGemini DBAccess - modularised JDBC drivers for use in OSGiGemini Management - JMX management for OSGiGemini Naming - support for JNDI naming in OSGiUntil recently, integrating the Gemini projects into Virgo has been a fairly specialised skill. As we'll see in a workshop on Thursday, things are now really starting to come together and Gemini Blueprint, Gemini Web, and various other Gemini components can now be deployed and used in Virgo. We'll also be touching on how to manage and configure WABs in Virgo as part of a workshop later this morning.So much for the past. What about the future? The primary goal of Virgo 3.0 is better integration with other EclipseRT technologies such as Equinox, Jetty, and p2. This will provide richer function and greater choice for enterprise applications as they migrate to OSGi. We'll be hearing about how Virgo and EclipseRT technologies work together on Wednesday. The recently released third milestone of this release shows the progress towards the goal of better integration with EclipseRT:Virgo now uses Equinox Configuration Admin, Event Admin, and Logging services instead of their Apache equivalents.Virgo has moved to the new framework hooks model for isolation in Equinox which is part of the OSGi 4.3 standard soon to be issued for public review.Virgo now provides two web servers: Virgo Tomcat Server, which continues to be based on Gemini Web, and Virgo Jetty Server. Some exciting technology for modularising the view portion of web applications is also emerging into the Virgo mainstream as we'll hear on Wednesday.p2 support in Virgo is also making good progress although this is currently in prototype form.Development tooling is also entering an exciting new phase which will greatly help applications migrate to enterprise OSGi:The Libra project, which will be presented on Wednesday, is providing development tooling for building WABs and will ship in the Eclipse Indigo release train later this year.The Virgo development tooling has entered the Eclipse IP process and will soon emerge in the Virgo project. Over time, the standards-based features of the Virgo tooling will be factored out and migrated into Libra.OSGi runtime launchers are also being contributed to Libra. I would hope to see a Virgo launcher for Libra emerge so that Libra can start to take over from the Virgo tooling for many aspects of enterprise OSGi application development.If you're attending EclipesCon, come and hear the talks, join in the workshops and BoFs and help to shape incremental OSGi in the Virgo, Gemini, and Libra projects.
by Glyn (glyn.normington@spamprotectiondeletethis.yahoo.co.uk) at March 21, 2011 12:07 PM
Eclipse Announcements
Eclipse Foundation Launches Open Beta of OrionHub
The Eclipse Foundation is pleased to announce that developers may now sign-up for access to a beta version of the OrionHub service, a hosted implementation of Orion. Orion is a new Eclipse initiative to define a platform for building and integrating web development tools. An early release of Orion provides web developers with an editor for JavaScript, HTML and CSS that runs in popular browsers and the ability to easily link with popular web-based tools. The OrionHub service provided by the Eclipse Foundation will allow developers to experiment with Orion and provide feedback to the Orion open source community.
March 21, 2011 12:00 PM
Bob Balfe
Distributed source control with Git
Chris posted a nice tutorial about setting up Git to promote the Effect Git tutorial at EclipseCon this week.
Git is a distributed SCM, which means every developer has a full copy of all history of every revision of the code, making queries against the history very fast and versatile. – EGit
You can check out the Git site and learn about how the source control system can be used in a team atmosphere. I don’t have a lot of experience with Git so it would be interesting if someone could compare it to clearcase, subversion or svc. We use ClearCase at IBM and its pretty powerful for team branches, merging, labels, etc. Git looks like it does most of that but in a different way, with everyone essentially getting local copies of all source and changes. Which is great for searching and history. I know ClearCase is very slow searching history over the network and you only get a subset of features when using remote ClearCase. p
by Bob Balfe at March 21, 2011 09:00 AM
Benjamin Cabe
What is Koneki?
Ahem. Long time no talk on this blog… sorry about that 
I have been spending the last few months working on the definition of what would be the requirement of an Open Source M2M development environment, which has led to the Koneki project proposal. You may have not seen the proposal, so let me use this blog post to explain the purpose of Koneki with more details than in the proposal.
M2M you said?
Yup, M2M. I apologize to Modeling Gurus, but I do not really mean “Model-to-Model”, but rather “Machine-to-Machine“. That is to say, the technologies that allow both wireless and wired systems to communicate with other devices of the same ability.
Let me take the example of a company who sells a home automation solution. This company wants to provide the end-user with a turnkey packaging including a communicating box acting as a gateway between the peripherals (thermostats, light dimmers, alarm system, …) deployed in the house, and a server in charge of centralizing the collected data. The server will then allow both the house owner to remotely monitor is house (e.g. use an iPhone application to turn the heat down), and the solution vendor to manage its fleet in centralized manner (deploy firmware upgrades, collect usage statistics, etc.).
Tooling for M2M development
While it is fairly reasonable to say that half of the time needed to develop an M2M solution is spent solving problems related to the embedded nature of such a development, there are still a few areas that are not covered by nowadays embedded development
Protocols support
M2M solutions usually involve the use of two different kinds of protocols, both of which need to be supported by an M2M-oriented IDE.
Embedded protocols – These are the protocols allowing an M2M module to communicate with the assets it is connected to. In the Home Automation use case, that would be the dimmers, the temperature sensors, and so on, and the protocol would likely be X10. For other use cases, we would have Modbus, Zigbee, or virtually any kind of proprietary communication protocol over Ethernet, RS-232, or whatever.
Supporting these protocols in Eclipse consist in giving developers the ability to interact with the assets independently of their protocols: configure them, access values, send commands, etc. It is also interesting to provide a protocol analyzer (a la Wireshark) allowing to get a human-readable “dump” of all the frames exchanged by the M2M module and its assets.
Client/server protocols – These are the protocols allowing a box to communicate with an M2M Server. The M2M server is in charge of centralizing data (temperature, …) and events (fire alarm, …) sent by all the devices paired with it, as well as to send commands (dim the light, …) to these devices. The M2M server usually exposes Web Services APIs to allow system integrators or end-users to manipulate the data to build their own UIs (web sites, mobile phone applications, …).
There are many M2M use cases where the communication between the box and the server is made using GPRS or 3G connection (Home Automation might not be one of these use cases, because the Internet connectivity is likely provided by an ADSL box…). For these use cases – where we’re speaking of thousand of billboards, solar panels, power meters, … – it is very important to use a dedicated protocol which optimizes the bandwidth usage. Koneki will provide the developer with a way to easily “decode” binary frames into a human-readable form, relying on an extensible mechanism allowing to plug-in support for any protocol.
Since mobile communication costs tend to be quite expensive,  we want to give the developer more visibility on the bandwidth consumption of its application. For example, will it use more bytes to send a temperature value every 5 minute, or instead send 12 acquired values every 1 hour (possibly benefiting from a compression algorithm).
Component model
In order to enhance software reuse across different M2M applications, Koneki will expose a data/event-driven component model allowing to isolate correctly every functionality of the system. The development environment will use the component model to provide the developer with ways to validate the consistency of its application, to generate its documentation, or even use a visual programming approach to design components graphically (a la Google App Inventor)
Simulation
M2M servers usually are hosted solutions (SaaS or PaaS), making it a bit difficult to diagnose communication problems of an M2M embedded application. Koneki will provide an M2M server simulator to give the developer a better understanding of how his M2M box is interacting with the server, how it deals with timeouts, communication errors, etc.
Lua support
Many M2M modules are programmable using the Lua language (very lightweight scripting language). We not only want to improve the support of Lua itself in Eclipse (another Eclipse project may be created as soon as this tooling becomes mature enough), but also improve the integration of vendor-specific stuff such as: packaging of Lua libraries, communication with remote applications using LuaRPC, etc.
Contribution opportunities
If you’ve gone through the Koneki proposal, you’ve seen that Sierra Wireless’ initial seed will be largely Linux oriented, since this is the OS that Sierra modules are running. However, there are many other M2M modules out there, some of them offering a JVM with an OSGi runtime, other are running dedicated RTOS (e.g. Nucleus) exposing C or C++ APIs, etc. And we want Koneki to seamlessly support all theses different flavors of M2M environments.
Kai Kreuzer from openHAB (a very-cool OSGi-based runtime for Home Automation, with Eclipse tooling easing the configuration of the system) has already expressed interest in the project, and we are also looking forward to work with the Itemis guys behind Yakindu (a modeling environment for embedded systems) to come up with a common component model for M2M systems.
Koneki project is in its proposal phase, so please let us know (best way to do so is to use the dedicated Eclipse Forums thread) if you have any interest in it, … the more the merrier!
Learn more
I will be at EclipseCon this week, along with my workmate Gaétan Morice, so please feel free to come ask us further information on Koneki. Also, we will run a “Machine-to-Machine at Eclipse” BoF on Wednesday, 7.30pm (be careful, the room is likely to change). The aim of the BoF will be to discuss not only the requirements for an M2M IDE – which is the scope of Koneki, but, more generally, what a M2M reference environment should be: standard client/server communication protocol(s), programming model, component model, etc.
Oh, and by the way, Koneki is a Maori word meaning “here”, “this place” ; and is  a great metaphor of M2M: you communicate with many remote devices without moving from where you are. p
by Benjamin Cabé at March 21, 2011 06:39 AM
Sven Efftinge
A Guice Modules DSL
Yesterday Sebastian and I were attending GuiceCon. A nice little get-together with the Guice developers and some very smart Guice users. As Guice is key in Xtext's architecture we took the opportunity to show the people what we do with it. The first idea was to just explain how we use Guice, but while we travelled across California last week a better idea came up : We could develop a Guice Modules DSL using Xtext.So we did and we did it from scratch right in front of the audience without any tricks or shortcuts. The good thing was that everyone in the room knew the domain very well, so we didn't need to explain anything about the domain of the language.First I defined the grammar and a first shot on the code generator and then Sebastian added type conformance checks and improved content assist. Today I've spent another two hours on it. The screencast below demos the status quo.Note that there will be an extended tutorial at EclipseCon this Thursday, where you can learn how to create such things yourself in no time. Not to forget the short talk on "What's new in Xtext 2.0", Tuesday 2 pm.Have fun!
by Sven Efftinge (noreply@blogger.com) at March 21, 2011 01:45 AM
March 20, 2011
Pascal Rapicault
2012 Eclipse annual release revealed
The 2012 Eclipse Annual release will be called Juno. This is still pending the approval of the EMO.
by Le ScaL (noreply@blogger.com) at March 20, 2011 11:22 PM
Chris Aniszczyk
EclipseCon 2011 Git Tutorial Preperation
If you’re attending the Effective Git tutorial at EclipseCon 2011, it would be great if you could get an early start by doing the first tutorial exercise.
It would benefit everyone if tutorial attendees took the time to setup as there are nine total exercises to get through. It’s a bit of work to go through the first exercise and setup a Gerrit account. If everyone is setup, we can spend less time on the first exercise and more time on the other exercises. However, if we can’t get through all the exercises, everything is available online for you to finish at your own convenience. We are eventually looking to make this material more consumable and are even considering doing a book.
Anyways, I look forward to spreading the Git love tomorrow afternoon! p
by Chris Aniszczyk at March 20, 2011 07:44 PM
Chris Aniszczyk
EclipseCon 2011 QR Code Game
I heard from the grape vine that some people didn’t know about the QR Code game at EclipseCon! All you need to play is to download a QR code reader for your mobile phone and start scanning!
I highly recommend Red Laser if you don’t have an application already to scan codes. Other than that, please read the rules of the game and start the hunt for codes! p
by Chris Aniszczyk at March 20, 2011 03:24 PM
March 19, 2011
Ian Bull
Why did you close my p2 bug as INVALID?
Have you used p2?  Have you tried to replace plug-in with an updated version, only to find p2  doesn’t find it?  Have you removed an unused plug-in and suddenly Eclipse stopped working?
You’ve probably not only hit these issues, but as a responsible member of the Eclipse community you even filed a  bug about it, thanks.  Why then, did the p2 team close your bug as INVALID?
Join Pascal and I on Tuesday and learn about the 10  most common pitfalls Eclipse developers face when using p2; and more importantly, learn how to avoid them!
p
by Ian Bull at March 19, 2011 08:57 PM
Orion
Orion at EclipseCon
Following on from last week’s successful Orion Summit, the Orion team is presenting a number of talks related to Orion at EclipseCon next week.
Tuesday
Introducing Orion: Embracing the Web for Software Development Tooling – by Boris Bokowski and Simon Kaegi. 14:30 in Ballroom BC.
Thursday
Orion: Components and Services – by Simon Kaegi. 14:00 in Ballroom D.
The Orion Workspace and Server – by John Arthorne. 15:20 in Ballroom D.
We are also expecting to hold an Orion BoF. Keep an eye on the BoF notice board for further details. p
by john at March 19, 2011 08:53 PM
Jeff McAffer
p2 in RCP applications
To date, putting the Equinox p2 provisioning support into an RCP application has been a bit of a chore.  Witness the plethora of blog and mailing list posts detailing problems and how to hack the p2 features and bundles to make them work in RCP scenarios. No more!
Over the past few days the p2 team has been working to address Bug 333810. The bug was originally opened to point out that the org.eclipse.equinox.p2.user.ui feature pulled in too many things for RCP usecases. Indeed it does. It is supposed to. Despite its attractive name, that feature was/is meant for IDE scenarios. Until now, we did not produce a feature specifically for RCP scenarios.
In next week’s integration builds of Equinox and the Eclipse platform there will be a new org.eclipse.equinox.p2.rcp.feature feature. This new feature has all the great p2 function you need to install, update and manage applications without the bitter aftertaste of the extra IDE-specific gorp.
All you have to do is add that feature to your RCP product and away you go.
Read on if  you want a little more detail.
As you may know, p2 is actually a provisioning platform, not a provisioning solution. Over many years of dealing with people provisioning systems, one thing is clear, everyone wants it different. So in p2 we set out to create a platform that has all the pieces-parts you need to create a wide array of provisioning solutions.
We have failed however to make the easy case easy. The goal of this new feature is to do exactly that for typical RCP cases.
The p2 RCP feature yields a UI that is very much like the one seen in the IDE but without support for dropins folders, legacy update sites, repository tools, … and most importantly, with no dependencies on IDE things like Compare and Resources.
This is an easy-to-consume starting point for RCP provisioning solutions.  We fully expect that you will need to customize this. p2 can be customized in various ways. You can add/remove functional bundles as needed, tweak the UI, implement your own Policy class, etc. But these are all things that you only have to do if you want to. The new p2 RCP feature gets you up and running quickly and easily.  Enjoy.
BTW, if you want to know more about p2, its API and its use in RCP apps, check out the following talks at EclipseCon:
Pascal’s talk at EclipseCon on p2 API
Ian and Pascal talking about how to “do p2″
The p2 BoF
Of course, if you want to hear about some of our experiences with teams adopting OSGi, Paul and my talk on 10 (or so) signs you’re doing OSGi wrong. We promise you will laugh and may even learn something. p
by jeff at March 19, 2011 01:19 PM
Bryan Hunt
Introducing eTrack
eTrack is an application that manages tasks. This project is meant to be a comprehensive tutorial that demonstrates the use of several Eclipse technologies, and current best practices for architecture, design, development, testing, build, and deployment.  I would like the architecture to be as open as possible to accommodate different implementations of the various components of the application.  There will, however, be a couple of things set in stone.  The application will be based on OSGi, have a RESTful client / server architecture, and will use HTTP to communicate between client and server.
To get started, the initial implementation will use EMF for the domain model, MongoDB for the backing store, Restlet for the RESTful web services, Jetty for the web container, and simple HTML web pages for the client.  It would also be nice, at some point, to have a GWT client, a SproutCore client, and Mylyn integration.
The project is hosted at EclipseLabs and the place to start is:
http://code.google.com/a/eclipselabs.org/p/etrack/
I would like to use Gerrit for source control, and Tycho and Jenkins for build, but I’m currently not aware of any free hosting for these services.  If I can’t find free hosting, I might consider hosting on my home server and mirroring the source on GitHub for public access.  Issue tracking will initially be done on the EclipseLabs Issues page until we can “eat our own cooking”.
Here is a first attempt at a domain model (I’ve taken a little liberty with the UML notation in that solid diamonds denote containment within the same resource while open diamonds denote cross-document containment):
I hope to start working on the implementation at EclipseCon.  If you are interested in participating, please comment below describing what you would like to work on, or find me at EclipseCon and I’ll be happy to discuss this with you.
p
by Bryan Hunt at March 19, 2011 02:24 AM
Konstantin Komissarchik
State of Sapphire for Spring 2011
It has been a busy five months for the Sapphire team since the project was created in October of 2010. The initial code contribution from Oracle has gone through the Eclipse Foundation’s IP review, we have source in CVS, bugs in Bugzilla and builds running on every commit. Even though the current project team is only staffed by Oracle employees, we make it a point to communicate in the open on the adopter forum and the developer mailing list. Releases Two feature releases and two service releases shipped so far. Version 0.1 The initial stable code contribution from Oracle, but refactored for eclipse.org namespace, build and legal requirements. Version 0.1.1 Some infrastructure work was still ongoing when 0.1 shipped. Version 0.1.1 delivered the binaries in signed form. Version 0.2 Major enhancements, such as a powerful resource abstraction for models, expression language, transient properties, derived properties, new property editors and many more. Despite shipping concurrently with the 0.1 release, version 0.2 represents roughly six months of new feature work that was happening as we were waiting on the project creation process. Version 0.2.1 No major release can happen without at least a few bugs getting through. Adoption You might ask… This technology does look promising, but how do I really know if it is ready for production? Sapphire may be young at Eclipse, but it has been in development since at least 2007 as part of BEA’s and later Oracle’s Eclipse tooling efforts. Oracle Enterprise Pack for Eclipse (OEPE) heavily leverages Sapphire to create a variety of form based user interfaces across the product.  During the transition to Eclipse, we worked quickly to close the feedback loop between the new Sapphire project and its big adopter. To that end, OEPE 11.1.1.7 shipped with Sapphire 0.1.1 and upcoming OEPE 11.1.1.7.1 will ship with Sapphire 0.2.1 release. The tight feedback loop from OEPE has enabled us to quickly stabilize the major new features delivered in the 0.2 release. We are also getting ready to announce a major new endeavor to, in part, promote adoption of Sapphire across Eclipse. In the next few weeks, we will formally propose a project under WTP to use Sapphire to create editors for standard Java EE deployment descriptors. Little Miss Sapphire On February 8th, Sapphire family grew by one with the birth of Little Miss Sapphire or Amelia as she is known when she is not voicing opinions on architectural issues. I am still mastering the art of typing with one hand. My Das Keyboard doesn’t make this easy, but I like a good challenge. Release 0.3 and Indigo The next major Sapphire release is scheduled to go out concurrently with Indigo in June of 2011. We are pushing improvements on two fronts. First, we are adding support for creating diagram editors, defined and wired to the model in a similar way that forms are today. The current diagram parts renderer uses Graphiti, but the application developer will not interact with Graphiti directly, allowing renderer implementation to be changed or swapped out in the future. By the time 0.3 ships, you will be able to create slick three-page editors showing source, form and diagram views on the same data. Bi-directional editing is so yesterday. Welcome to tri-directional editing! Second, we are making a major push on improving the facilities provided by the SDK to make developing with Sapphire even easier. The big new feature is an editor for Sapphire UI definitions (aka sdef files). All the content assist and validation isn’t finished yet, but the editor is already much better than editing XML markup by hand. The editor is, naturally, built using Sapphire. Yesterday, I spent a good portion of the day using the sdef editor from a previous build to work on new editor features for the next build. Extreme dogfooding! Shenxue Zhou Becomes a Committer Shenxue has been involved with Sapphire as a consumer for a long time, but over the last several months, she has progressed to contributor status with her work on the diagram editing support. After a number of high quality patches, we welcomed Shenxue as the first elected committer on the project. EclipseCon 2011 I am going to be giving a 20 minute talk on Sapphire at this year’s EclipseCon. No slides to bore you with. Just a live demo of building a project using Sapphire. If you are at all interested in this technology, come see the demo. It should be entertaining (one way or another). If you cannot make it to the talk, I will be at the conference all four days, so flag me down between sessions or at the bar. Another Sapphire committer, Ling Hao, will also be attending EclipseCon this year. p
by Konstantin Komissarchik (noreply@blogger.com) at March 19, 2011 12:31 AM
March 18, 2011
Holger Voormann
Vex 1.0.0 M6 – Is Less More?
(Based on this Air France ad by Renluc, 1949)
Vex 1.0.0 M6 (an editor for XML with a word processor-like interface) has just come out. The change with the most impact might be the (temporary) removal of the multi-page editor. For a long time the multi-page editor has been marked as experimental because the synchronization between visual and textual editor page was only partially implemented: changes made in the visual editor page were propagated to the textual page, but the visual editor model was not updated after a change in the textual page. We have decided to remove it for now because we prefer quality to half finished features – but maybe also because we wanted to elicit some reactions. Even though Vex is installed, via the Marketplace Client only, about 150 times per month there are only few bug reports and practically no questions in the forum and mailing list.
More than 150 installations per month since DemoCamp Stuttgart, November 2010
The next things to come will be the long-awaited support for namespaces and XML schema, along with a better integration of DITA. So stay tuned!
p
by howlger at March 18, 2011 11:49 PM
Matthias Sohn
Prepare yourself for Git Tutorial at EclipseCon
If you plan to attend the “Effective Git” tutorial at EclipseCon [1] on Monday afternoon you should consider to prepare that by going through the first exercise “Installation and Configuration” [2] before the tutorial starts.
This way you avoid wasting precious tutorial time with installing the prerequisites and you can spend more time on the more interesting exercises [3].
[1] http://www.eclipsecon.org/2011/sessions/?page=sessions amp;i d=2035
[2] https://docs.google.com/document/d/1Uxq59vCcWqK-hPb5CHQcR97A mJehj6Rn0ScTnih2tyU/edit?hl=en#
[3] https://docs.google.com/?tab=mo amp;authuser=0#folders/folde r.0.0B4F_gjXVrHZVMzE5MWNmNjktMDcxMS00NDM3LWI4NDQtYmE1YzZkM2R kY2Rl p
by Matthias at March 18, 2011 10:28 PM
Ken Ryall
Copying Memory
I've been starting to clear some usability issues out of our backlog and ran into one that seemed simple enough but eventually required a little more thought and attention.When debugging native code it's common to want to inspect memory so the Eclipse debug platform offers a standard Memory view. The view can host a number of memory renderings, each offering a different way of viewing a chunk of memory.The "traditional" memory rendering is popular with C/C++ developers because it works much like the memory views in other debuggers and shows a range of memory in both binary and text formats."Traditional" memory rendering from CDTMemory View in Xcode 4Memory view from Visual Studio 2008Memory window from CodeWarrior in 2001 Our developer (I'll call him Tom because that's his real name) wanted to do something that seemed pretty simple: select a hex value, copy it to the clipboard, and then paste it into a variable in the Variables view. But the global "Copy" command wasn't hooked up to the memory rendering so it did nothing. Tom then discovered "Copy to Clipboard" in the context menu.But the "Copy to Clipboard" command copied all of the selected data from the rendering: addresses, binary, and text to the clipboard so it looked like this:0x7FFF5FBFED20  74736574 00676E69 996E019D 3CBE8497 5FBFED40                    testing...n...¾ lt;@í¿_Tom had to paste this into a text editor, then select just the binary/hex part, and finally had something to paste to set the value of his variable. This sort of thing delights some people because they find a work-around and then have another story to inflict on their colleagues, but Tom had real work to do, expected better, and logged a bug. Our team worked on other stuff that seemed more important until last week when I went back to take another look.First I looked to see if the rendering's support for "Copy" could just do the right thing by grabbing the address, the binary data, or the text based on which part had been clicked in last. While that would work in the narrow case it wouldn't leave any indication of what it might do if you have forgotten which area you clicked in last, and the ability to copy all three (addresses, binary, text) would have been lost.There needed to be a more explicit way to say which portion of the data you wanted to copy. So I changed the context menu to provide all four options.This would make life better for Tom but still wouldn't fix the "select the hex data and hit control/command - c" scenario. So it also keeps track of one choice as the default option that is used when fired by the global "Copy" command, which is now hooked up to the rendering. Tom will have to select "Binary" once and then Copy will work the way he expected.
by Ken Ryall (noreply@blogger.com) at March 18, 2011 08:00 PM
Brian de Alwis
Building an Eclipse product with Maven and Tycho
This article is part of a small series describing the use of several new open source components in my company’s new product, Kizby.
Kizby is built using Tycho. There has been quite a bit of buzz about Tycho recently, with several recent blog posts providing worked (and hopefully maintained) examples of using Tycho. And it’s well deserved: our experiences with Tycho have been very positive: the community is responsive, Tycho’s functionality is very capable, and (more importantly) diagnosing build issues is straightforward.
But getting started was a bit bewildering due to having to learn Maven coupled with the vagaries of building Eclipse-based products. And from the questions from newcomers to the Tycho mailing lists, I can see that I was not the only bewildered newcomer. Hence this post.
[For those at EclipseCon, I recommend you attend Monday's tutorial on building with Tycho.]
Background
When we began work in earnest on Kizby, we quickly reached the point where we needed to have a build and deployment process. As PDE/Build, the granddaddy of the various Eclipse build systems, is highlighted in many Eclipse reference books, it seemed a logical choice. The experience of coaxing forth a build from PDE/Build is perhaps the closest that I will ever get to understanding the pain and joy of giving birth.
But after a month or so, we hit a wall with PDE/Build: we wanted to build a set of four related products, whereas PDE/Build was designed to produce a single product. Although I could have jerry-rigged something with make(1) and PDE/Build to repeatedly invoke the build for each of the products, I knew there must be a better way.
And so I surveyed the field and discovered a bewildering set of technologies bearing bewildering acronyms or names. Even restricting consideration to just those tools for building Eclipse-based products still left a headache. p2, I learned, is not a build system. Athena Dash is a set of scripts built around PDE/Build, but is no longer a recommended approach. Buckminister has a whack of documentation but seems oriented towards build-from-the-IDE, whereas I wanted a headless build technology to future-proof myself for continuous integration [aside: Buckminster, I discovered later, can be used headless]. b3 is under development, and currently seems more geared towards manipulating p2 repositories. And there was a (then) newer contender, the Maven-based Tycho.
I had actually come across Tycho before I first embarked on PDE/Build. But my few exposures to Maven (shortly after the new millenium) had left me scarred. Maven projects had strange directory schemes, the seemingly essential pom.xml had little content, and the documentation was opaque (I think you had to understand Maven to understand the documentation). For a tool that was positioned as a do-everything solution that would build, test, assemble, and deploy a system, I couldn’t even figure out how to get started. After some desperate web searches, I figured out the minimum to make a project usable within Eclipse (with the magical mvn eclipse:eclipse), I ran away.
But I was now smarter — and desperate. And fortunately Maven has matured, and there are now some great tutorials and free e-books available. Building using Tycho turned out to be a bit simpler than I expected. And Maven actually does build, test, assemble, and deploy too.
Maven and Tycho
Tycho is actually a set of extensions (unfortunately called “plugins” too) for Maven to build Eclipse/OSGi-based components. Key to using Tycho is to understand Maven. And hence the reason for this blog entry: the existing Tycho docs (which are admittedly a bit minimal) assume prior knowledge of Maven, of which I had little.
A Little Bit About Maven
Maven is often described as being opinionated. You provide a declarative specification of what you want built, and Maven decides how it will happen. For those used to procedural build systems, it requires a bit of an adjustment.
The declarative specification is placed in a file named pom.xml, called the Project Object Model or POM. In Maven, a directory with a pom.xml is called a project. The pom.xml describes the purpose of the project, called the packaging type (e.g., to produce a jar file, or a war file, or a bundle), and includes other information such as the project’s dependencies, etc.
What’s nifty is that a project inherits information, both from its parent project (usually in the parent directory, in which case this project is a subproject), and from Maven’s own super POM. So providing your project conforms to Maven’s opinionated directory layouts, you rarely have to actually write anything beyond some minimal XML boilerplate: the pom.xml only serves to inform Maven of changes from the defaults.
For a project with a jar packaging, Maven automatically knows how to (1) generate any necessary resources, (2) compile the java files in src/main/java, (3) test using the unit tests in src/test/java, (4) jar up the class files, etc. Maven only needs to know a few details such as the project’s name and any dependencies.  And hence my confusion from years ago upon seeing a seemingly near-empty pom.xml file.
More on Projects
With Maven, each project builds some artifact. A project may have many subprojects, typically organized as subdirectories, and each of which contributes to the creation of the project’s artefact. The type of the artifact is described by the POM’s packaging directive (e.g., a Java project is generally a jar or war; an Eclipse plugin with Tycho is eclipse-plugin).
An artifact is identified by a lt;groupId gt;: lt;artifactId gt;: lt;version gt; tuple, called the coordinates, which are provided in the pom.xml. The artifactId is typically taken to correspond to the directory name, and the groupId the logical purpose. In building Kizby, most projects have groupId=ca.mt.kizby and the artifactId is the bundle symbolic id like ca.mt.kizby.core. (Note: there’s actually 2 other coordinates, the packaging and classifier, but they don’t seem to be talked about much.)
Maven actually doesn’t do much on its own, but instead delegates to various plugins (similar in concept, but different from Eclipse plug-ins). These plugins actually do the stuff that you would stick in a make(1) directive or a sequence of Ant tasks. Maven uses the packaging type to determine a set of phases, called a lifecycle, for building and deploying a project of that type, and then calls out to various plugins as it progresses through the different phases. The lifecycle is similar to typical all target found in most Makefiles.
all: clean build zip deploy
And in Maven/Tycho, a make all corresponds to:
$ mvn clean deploy
The compilation and zipping is done as part of the deploy.
For more information on Maven, I highly recommend you look at Sonatype’s free book, Maven By Example.
Back to Tycho
Tycho is actually a set of Maven plugins for compiling, resolving, and provisioning using OSGi. It provides a different set of packaging types for building bundles, features, and tests (e.g., eclipse-plugin, eclipse-feature, eclipse-test-plugin). Whereas the traditional Maven Java plugins pull configuration settings such as dependencies, compiler versions, etc. from the pom.xml, Tycho’s plugins use the information encoded in the OSGi/Eclipse manifests (e.g., META-INF/MANIFEST.MF); the traditional approach is often called pom-first vs Tycho’s manifest-first approach.
Tycho also provides a bridge between Maven coordinates and OSGi identifiers. Tycho usually assumes that the artifactId should be the bundle’s symbolic name. The groupId doesn’t really have an analogue in the OSGi world, so I use it as a logical grouping. The version should match the bundle or feature version, though Maven uses a -SNAPSHOT suffix instead of .qualifier.
So a complete bundle’s pom.xml looks like:
lt;project gt;
lt;parent gt;
lt;groupId gt;ca.mt.kizby lt;/groupId gt;
     lt;artifactId gt;kizby-plugins lt;/artifactId gt;
     lt;version gt;1.0.10 lt;/version gt;
   lt;/parent gt;
lt;artifactId gt;ca.mt.kizby.core lt;/artifactId gt;
   lt;version gt;1.0.10 lt;/version gt;
   lt;packaging gt;eclipse-plugin lt;/packaging gt;
lt;/project gt;
That’s it! Seriously! Remember that a project inherits from its parent, so this bundle will have the same groupId. Features are very similar. Of course you need to provide the parent’s definition, which has some other stuff to define the Tycho plugin versions to be used and repository definitions for resolving bundles (e.g., the p2 repository at http://download.eclipse.org/releases/helios). But that’s pretty straight forward and covered in other tutorials.
Go Forth and Build
At this point, you should hopefully have a very general overview of Maven and should be ready to read a bit from Maven by Example and work through Chris Aniszczyk’s example.
Tricks or Gotchas
There are many questions that come up on the Tycho mailing list, but most are PDE- or p2-related rather than Tycho-related. Unfortunately getting to the position where you know the difference is painful. Here are the things I’ve found out the hard way:
The OSGi resolver and p2 resolver are not the same.
You may receive resolution errors in building that do not occur when running in Eclipse.
Startups are different.
When run from the debugger, plugins are automatically started. They aren’t in a product.
Creating .product.
There are some bugs with the p2 publisher that prevent publishing products on different platforms. There are workarounds.
Deployment.
I don’t yet use Maven to control deployment to servers, and instead use some shell scripts. But there are some nice examples out there though.
I’ve started documenting these on the PDE FAQ; feel free to add your own.
References
The Eclipse Tycho Project: Tycho is now an Eclipse.org project
Maven by Example and Maven: The Complete Reference are two recommended (and free!) e-books from Sonatype.
The PDE FAQ.
Chris Aniszczyk has put together a great working project of Tycho in action.
Erkki Lindpere has put up another worked example.
Tycho Reference Card: presents standard pom.xml clauses for building various OSGi artefacts with Tycho.
The Tycho demo projects also serve as good examples of configuring Tycho.
p
by Brian de Alwis at March 18, 2011 06:45 PM
Marcel Gorri
Post #15 – Sequoyah has moved to Tools project – 18 Mar, 2011 – 13h00 (GMT-3)
As part of the DSDP Restructuring process, Sequoyah has moved to Tools project. Hence, the following items have been affected and updated: SVN repository, Bugzilla, IPLogs and web resources in general (download pages, web site, wiki page, blog). Those changes shouldn’t affect Sequoyah users in any way different than reconfiguring SVN access and using different download pages. If you find any problem, please contact us in our mailing list.
p
by sequoyahproject at March 18, 2011 05:21 PM
Denis Roy
EclipseCon poll results
On Wednesday I asked you a few questions about your EclipseCon experience.. Here are the results:39 this.is.my.first.eclipsecon.ever.its.going.to.be.great---they.say.you.buy.beersWelcome to all the newcomers! Look for me at the bar and I'll buy you a beer *36 please.set.up.a.better.404.page.for.eclipseconPopular option... Ask and you shall receive. Go look...30 ive.been.to.many.eclipsecons---why-have-you-never-bought-me-a-beerSorry if I've missed you... Hopefully I'll do a better job this year *27 ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beersYes, I know who you are... Quite a costly bunch :)25 ive.been.to.a.couple.of.eclipsecons---I-prefer-to-run-than-drink-beerIf running wasn't so early in the morning, I'd likely join you. I'll try this year -- I might actually make it a few feet.Some other responses and comments I've received:webmaster.not.going.this.year.will.miss.the.beersThat's really unfortunate -- there's always EclipseCon Europe, and EclipseCon 2012webmaster.ive.never.been.at.eclipsecon---please-send-beer-to-franceI can't really send beer to France but here's what I can do: to the person who posted this, send me an email to webmaster@eclipse.org. If your IP address matches up to that comment in my Apache log, I'll send you some Eclipse SWAG!webmaster.ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beers----altough-thats-not-entirely-true----well-its-not-true-that-ive-been-to-all-eclipsecons-but-you-guys-always-bought-beersI'm so confused :)webmaster.i'd.buy.you.a.beer.if.i.were.going.but.unfortunately.i'm.not.(sad.smily)webmaster.i.am.not.going.to.make.it--can-you-mail-me-the-beer?It's too bad you can't come ... I hope to see you next year.* Disclaimer: offer valid while supplies last, no rainchecks. On approved credit. Offer subject to change without notice. See newspaper for details. Professional driver on closed course, do not attempt. Viewer discretion is advised. Product may differ from illustration.
by Denis Roy (noreply@blogger.com) at March 18, 2011 05:12 PM
Scott Lewis
ECF enables Thermonuclear War at EclipseCon 2011
How's that for a title? :). ECF committers Mustafa Isik and Sebastian Schmidt are giving this talk at EclipseCon on Monday:INTERSTELLAR THERMONUCLEAR WAR ... with ECFMustafa previously did much of the initiating work on real-time shared editing in ECF as part of his Google Summer of Code project. For Google Summer of Code 2010, Sebastian implemented a Google Wave provider for ECF. Now they are at it again :). Mustafa and Sebastian are using/integrating several great technologies to do innovative and fun things with the Wave protocol for concurrency control in multiplayer games, OSGi servers, remote services, Android clients, ECF's multi-provider APIs, and other exciting technologies.I know from working with Sebastian and Mustafa, as well as working on some of these technologies myself, that it will be a great talk. Please enjoy.
by Scott Lewis (noreply@blogger.com) at March 18, 2011 05:08 PM
Andrew Eisenberg
Groovy-Eclipse and AJDT simultaneous releases
Today, we have just release Groovy-Eclipse 2.1.2 and AJDT 2.1.2. By coincidence, they both have the same version number.Groovy-EclipseWe've made lots of improvements to Groovy-Eclipse including inline renaming support, mark/find occurrences as you type, and type inferencing improvements. You can find all the details at the New and Noteworthy page.The update site for installation on Eclipse 3.6 is here:http://dist.springsource.org/milestone/GRECLIPSE/e3.6/We are also now releasing a Groovy-Eclipse for Eclipse 3.7 (Indigo). The update site is here:http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.7/As always, please raise bug reports and enhancement requests at our Codehaus issue tracker.We expect to release Groovy 1.8 support shortly.AJDTOur enhancements for AJDT have mostly centered around supporting Intertype Inner Types. a new AspectJ language feature. You can read about it at the AJDT New and Noteworthy.An AJDT release for Eclipse 3.7 is available at this update site:download.eclipse.org/tools/ajdt/37/dev/update/Please raise bugs and feature requests at Eclipse's bugzilla.
by Andrew Eisenberg (noreply@blogger.com) at March 18, 2011 04:29 PM
Heiko Behrens
“What is EclipseCon?”
In a few hours from now, I will be on my flight towards this year’s EclipseCon in Santa Clara. Similar to my blitz talk last year, I am going to talk about mobile development based on domain-specific languages. This time, I am really excited that Peter will team up and we were approved for an extended talk (40 minutes) at Ballroom BC to entertain you with fully packed material and several live demos. In addition to the session’s description we will not only produce mobile apps for iPhone, Android and mobile web (Google App Engine). You will experience the model-driven way on yet another platform that was ignored by the official conference apps.
What can we expect from IBM Watson in the future and how is it related to Eclipse? Find out at David Gondek's Keynote at EclipseCon on Tuesday (Eclipse Icon courtesy of Shaun Smith)
 
Beyond the aforementioned talk by Peter and myself
Cross-Platform Mobile Development with Eclipse
Tuesday, 17:00, 40 minutes | Ballroom BC
Peter Friese (itemis AG ), Heiko Behrens (itemis AG )
there are a few other sessions I am looking forward to attend
INTERSTELLAR THERMONUCLEAR WAR … with ECF – Multiplayer Game Development for High-Latency Mobile Networks
Monday, 13:00, 20 minutes | Ballroom D
Mustafa Isik, Sebastian Schmidt
Effective Git
Monday, 15:40, 2 hours | Stevens Creek
Chris Aniszczyk (Red Hat, Inc.), Stefan Lay (SAP AG), Matthias Sohn (SAP AG), Shawn Pearce (Google Inc.)
What’s Cooking in Xtext 2.0
Tuesday, 14:00, 20 minutes | Ballroom A
Jan Köhnlein (itemis AG), Sebastian Zarnekow (itemis AG)
Graphiti and GMF Compared: Revisiting the Graph Editor
Tuesday, 14:30, 40 minutes | Lafayette
Koen Aers
Building a Great Community for Your Open Source Project
Tuesday, 16:30, 20 minutes | Lafayette
Ian Skerrett (Eclipse Foundation)
Codegeneration Goodies
Wednesday, 10:40, 20 minutes | Stevens Creek
Moritz Eysholdt (itemis AG)
JavaScript Debugged
Wednesday, 14:00, 20 minutes | Ballroom BC
Simon Kaegi (IBM)
Pragmatic DSL Design with Xtext, Xbase and Xtend 2
Thursday, 10:30, 2 hours and 30 minutes | Ballroom A
Sven Efftinge (itemis AG), Sebastian Zarnekow (itemis AG), Jan Köhnlein (itemis AG)
Apart from these, there are many other talks worth attending, but listing those eventually would result in a copy of the official program (the program committee did a great job, again). I am expecting interesting conversations and social activities (like last year’s iPhone Mars Rover) to happen, too.
But, my personal highlight is the keynote on Tuesday about IBM Watson by David Gondek:
Keynote – What Is Watson?
Tuesday, 09:00, 1 hour | Ballrooms ABCD
David Gondek (IBM)
Over the last weeks, I watched more than five hours of video material and read countless interviews and articles about Watson. There’s just so much potential in this technology and the whole industry of computer-supported activities. By any chance, users will use computational time from systems like Watson in the not-so-distant future to verify their personal goals, collect evidence, do research or -in case of a keynote- have some fun. If we had the chance to let Watson calculate the question for a clue at EclipseCon, my take would be:
Conferences $500: Started as a User’s Group Meeting in 2002 this anual “family event” became the most recognizable celebration of a community named after the obscuration of a celestial object.
Anyway, I am looking forward to four engaging days in Santa Clara and I am thinking of everyone who could not make it this year like Ekke, Lars, and especially our friends from Japan.
p
by Heiko Behrens at March 18, 2011 04:15 PM
Peter Kriens
Metatypes
Many, many, many years ago I worked a lot with LDAP and the ISO communication standards like X.500 and X.700. Looking at the Metatype specification I am afraid I had some bad influence on that spec. Looking back, I probably would be able to make it a bit simpler today, however, I do believe that it is one of the specifications in the that under-appreciated. Actually, a lot of people have no clue
by Peter Kriens (noreply@blogger.com) at March 18, 2011 03:28 PM
Eclipse Riena
Web Apps are everywhere…
Web Applications are on everybodies mind these days. Whether its the competition in speedtests of the various browser engines or whether its interesting javascript libraries like node.js or jquery. And this web hype is also coming to Eclipse with this very interesting new project Orion.
But what if you have already invested years and years into an RCP application. Now your customer want to switch distribution channel from desktop to web and of course without rewriting everything. You dont have the resources and time to start from scratch again.
If you come to EclipseCon there are two specific talks I’d like to point you at. One is called “Riena/RCP Applications in the Web using RAP“. Its Tuesday 4:00 pm in the Ballroom BC. I talk about Riena/RCP Apps and what it takes to put them into the Web. I talk about the Singleton problem as well as Facades or UI Patterns and their differences between Desktop and Web and singlesourcing.
Right after that is the talk from the RAP project “A look ahead at RAP – News and Vision” and there are more interesting informations about what is coming in RAP.
So I hope to see a lot of you there. There is plenty of space and many interesting topics. p
by Christian Campo at March 18, 2011 02:58 PM
Wayne Beaton
New Leadership for the Technology PMC
I, for one, welcome our new PMC overlords.
I am very pleased to announce a change in the Technology Project Management Committee (PMC). My friend, Gunnar Wagenknecht–a well known figure in the Eclipse community–has relieved me of my duties as the Technology PMC Lead (I will stay on as a PMC Member). Gunnar is a prolific contributor on numerous Eclipse project, and is an Architecture Council mentor for several incubating projects. He has served on the Technology PMC for two years; during his tenure, he has demonstrated detailed understanding of the Eclipse Development Process, and has provided leadership on all levels of project management. I believe that the Technology Project will do well under his leadership.
Please join me in welcoming Gunnar into this new role!
p
by waynebeaton at March 18, 2011 02:46 PM
Benoit Langlois
EMF Generation enriched by the JavaDoc Generation
EGF 0.5.0_M6 is available for Helios and Indigo.This version enriches the EMF Generation with the generation of the Java Doc.Scenario:Select a set of ecore modelsRight-click and [New][Other...][EGF Category][GenerationChain Model][Next]For the Emf Generation of a model, set the JavaDoc parameter to trueThen, at runtime, the JavaDoc is generated during the Emf GenerationPrecondition: Eclipse must be launched with the JDK (and not with the JRE).If you are curious and interested, the JavaDoc generation is realized by an activity workflow: 1) an Ant script is dynamically generated with an EGF pattern, 2) this script is provided to an EGF Ant task which executes it on the fly.A video is available here.Download of EGF: from Amalgam or the EGF Wiki.
by Benoit Langlois (noreply@blogger.com) at March 18, 2011 06:53 AM
Vineet Sinha
Eclipse Tabbed Editor Extended.. Embedding a GEF Editor
Finding the right format for users to edit and view your Eclipse plugin’s data can be tricky. Eclipse provides many different types of editors for modification of its resources. Some examples of these are the Java, Text, JSP, XML, Ant editor etc. It also provides tabbed editors like the Plug In Manifest Editor which can have multiple sub editors as tabs in one editor. A simple example template to extend the tabbed editor when creating a new plug-in, is provided in Eclipse by default. For our project we needed to add a compare editor and a GEF editor as sub editors. This post should help you become more familiar with creating custom tabbed editors in Eclipse.
Editor Input
The example provided in Eclipse uses the same EditorInput for all the sub editors. This allows the same information (from the EditorInput) to be displayed and edited differently in each sub-editor. This works fine when all the editors are closely related and a single EditorInput can take care of all the resources in different tabs. If this is not the case, for any particular editor you can provide a customized EditorInput class which implements the IEditorInput interface.
Adding a GEF editor to the MultiPageEditor is not the hard part. You can simply add a GEF editor in one of the createPage methods in the MultiPageEditor. The interesting part is getting GEF to interact correctly with the UI and user commands. Below are some issues and fixes commonly seen while working with GEF in MultiPageEditors.
Selection Event issues
When embedding a GEF editor the first issue you will face is that the selections will not work properly. This is due to the fact that the selection listeners for the GEF editor are not correctly notified of events because it is nested inside the MultiPageEditor. You can do the following to fix this issue.
by Abhishek Rakshit at March 18, 2011 12:34 AM
March 17, 2011
Tonny Madsen
Testing a Plug-in - an introduction
We all know, we should test our code... and if at all possible, we should write regression tests for the code as well. Just so we can make sure the functionality isn't broken as we add to the code or change the target platform. (And, of cause to make sure that we agree with the customer about the intended functionality of our code, right?)This is even more relevant for Eclipse plug-in development. Especially since the Eclipse platform provides some very fancy - and sometimes complex - interfaces that can perform all sorts of stuff. One area of Eclipse plug-ins that really requires a special focus when testing is the use of configuration files (most notably MANIFEST.MF and plugin.xml) to specify major parts of the functionality. Here your usual junit tests require some refinements...It is not because I just love to test... But the last 25 years as a developer have shown me time and time again that I spend more time doing fun stuff if I write a regression test the first time. As I spend all my time writing Eclipse plug-ins, this means that I have developed a large number of techniques for testing different aspects of a plug-in. Some of these are rather trivial while others have taken me a long time to get right.I have found myself using a lot time on some specific tests... sometimes it is a bit of an intellectual challenge to test something right. This is especially true when you have to fix an odd problem from a customer and want to make sure the problem stay fixed.As a consultant in everything Eclipse, I'm often asked about best practices for testing Eclipse based applications. Not that I can claim to know the best practices, but in the next couple of weeks, I intend to write a series of post about how I test specific aspects of a plug-in. These posts will focus on the main aspects of a plug-in as I see them.MANIFEST.MFUser InterfaceEverything that connects plugin.xml with the rest of the plug-inCommands and HandlersExpressionsSource ProvidersViews and Editors...and the functionality provided by the plug-in itselfConsider these posts my best answer for the best practices.There are still room for improvements in my testing techniques and I hope that any readers will take the time to point me towards other techniques or tricks that might be relevant. Especially if this means, it is easier to test or if we can get a better coverage of potential problems.At EclipseCon...At EclipseCon, I will present some of these techniques in a talk Wednesday just after lunch - though in 20 minutes, we will just have time to touch of the different techniques and not go into any sort of details.
by Tonny Madsen (noreply@blogger.com) at March 17, 2011 11:30 PM
Andy Maleh
Glimmer 0.1.3 Release
Just released a new version of Glimmer (0.1.3):https://rubygems.org/gems/glimmerNew and noteworthy:Made SWT the default DSL to avoid forcing developers to specify the DSL explicitly with the "dsl" method. Sample applications run successfully again as a result.Revised SWT styling support to rely on Ruby symbols instead of Eclipse SWT's bit ORing via the SWT constant DSL as that better matches Ruby's conventions and avoids method name clashing.Added swt_widget and swt_constant methods to String and Symbol to allow easy inflection of SWT Widgets and Constants via strings and symbols.Before/After examples of the new SWT styling syntax:table(SWT::BORDER) = gt; table(:border)text(SWT::PASSWORD | SWT::BORDER) = gt; text(:password, :border)layout_data GridData.new(SWT::FILL, SWT::FILL, true, true) = gt;layout_data GridData.new(:fill.swt_constant, :fill.swt_constant, true, true)Enjoy the release and stay tuned for the next one.
by Annas "Andy" Maleh at March 17, 2011 09:08 PM
Chris Aniszczyk
The State of Git at Eclipse – Early 2011
Next week at EclipseCon 2011, it will be a year after we first presented some rough Git tooling to the eclipse.org community via a tutorial. At the time, the deal was that the tooling was in early stages and needed some love from early adopters to help improve the situation. I’m happy that things have come quite a long way since last year based on Eclipse Marketplace stats and the community contributions the projects have received.
So what’s next? In terms of tooling, we’re getting closer to our 1.0 release (which is planned for the Indigo release). The git tooling at Eclipse is much better these days, if you need help or have questions, please start with the most excellent EGit User Guide. From our user guide, you should tell that we support the majority of the common work flows now. If something is missing, please let us know by filing bugs or contributing.
If you’re an eclipse.org project, please consider starting the process to move your project repository to Git. There are a lot of eclipse.org projects already on Git. You can find great documentation at Eclipsepedia on how to do the move. It’s not that bad, the LinuxTools project has recently migrated to Git and the CDT project has stated that they will start the process after the Indigo release. It would be nice to see the all of the eclipse.org projects have plans to move to Git by the Indigo release.
A portion of the EGit and JGit teams will be at EclipseCon 2011, so please swing by our tutorial and track us down if you have any issues moving to Git or using the tooling. We believe that the tooling is good enough now to meet the majority of eclipse.org committer needs. All of us want to see eclipse.org fully on Git by the end of the year, so let’s work together to make this happen. If people think holding a BOF about moving eclipse.org projects to Git is a good idea, let us know and we can do it. p
by Chris Aniszczyk at March 17, 2011 08:43 PM
Glyn Normington
Virgo 3.0.0.M03 and EclipseCon
Milestone 3 of Virgo 3.0 is available for download. Apart from several bug fixes, this milestone includes a contribution from Tom Watson who is collaborating with the Virgo team to prepare the region digraph for its move to Equinox so that it is available to all Equinox users rather than just Virgo users.We will be using milestone3 in tutorials at next week's EclipseCon. If you're attending, watch out for Virgo committers delivering the following sessions:Building web applications with EclipseRTDonating a mature project to EclipseSnaps, modular amp; dynamic web applications with VirgoVirgo and RT playing togetherHands on with Gemini and Virgo--The new Stars of the Eclipse RT project!Virgo BoF -- to be arranged, keep a look out!Hope to see you there!
by Glyn (glyn.normington@spamprotectiondeletethis.yahoo.co.uk) at March 17, 2011 05:04 PM
Stephan Herrmann
Combination of Concerns
If you are interested in more than two of these …
… you’ll surely enjoy this:
Hands-on introduction to Object Teams
See you at
p
by stephan at March 17, 2011 03:53 PM
Tom Schindl
Equinox, Hibernate and Concurrency
I’ve been hunting a deadlock in an application of a customer we support with our RCP, EMF and OSGi know-how and turned out be a class-loader problem because Hibernate uses Class.forName().
The application is a pure OSGi-Application acting as an Application Server which is used to process database informations in an asynchronous fashion and heavily uses OSGi-DS to wire up the complete application. The problems we’ve been facing only happened at start up where many threads are accessing database informations in a highly concurrent fashion.
The deadlock information from the JVM looked like this:
Found one Java-level deadlock:
=============================
"Thread-23":
waiting to lock monitor 0x18b30eac (object 0x09c93230, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),
which is held by "Thread-17"
"Thread-17":
waiting to lock monitor 0x1977f16c (object 0x09c92fd0, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),
which is held by "Thread-12"
"Thread-12":
waiting to lock monitor 0x18b30eac (object 0x09c93230, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),
which is held by "Thread-17"
where the threads where calling the following methods:
“Thread-23″:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
at org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryImpl.java:825)
at org.hibernate.hql.QuerySplitter.concreteQueries(QuerySplitter.java:123)
at org.hibernate.engine.query.HQLQueryPlan. lt;init gt;(HQLQueryPlan.java:92)
at org.hibernate.engine.query.HQLQueryPlan. lt;init gt;(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
“Thread-17″:
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:468)
- waiting to lock lt;0x09c92fd0 gt; (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.buddy.DependentPolicy.loadClass(DependentPolicy.java:54)
at org.eclipse.osgi.internal.loader.buddy.PolicyHandler.doBuddyClassLoading(PolicyHandler.java:135)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.buddy.DependentPolicy.loadClass(DependentPolicy.java:54)
at org.eclipse.osgi.internal.loader.buddy.PolicyHandler.doBuddyClassLoading(PolicyHandler.java:135)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
at org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryImpl.java:825)
at org.hibernate.hql.QuerySplitter.concreteQueries(QuerySplitter.java:123)
at org.hibernate.engine.query.HQLQueryPlan. lt;init gt;(HQLQueryPlan.java:92)
at org.hibernate.engine.query.HQLQueryPlan. lt;init gt;(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
“Thread-12″:
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:468)
- waiting to lock lt;0x09c93230 gt; (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at com.bizerba.basic.resource.teneo.TeneoHbDataStoreProvider$ChangeInformationInterceptor.afterTransactionBegin(TeneoHbDataStoreProvider.java:148)
at org.hibernate.impl.SessionImpl.afterTransactionBegin(SessionImpl.java:1479)
at org.hibernate.jdbc.JDBCContext.afterTransactionBegin(JDBCContext.java:259)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:107)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
So what did we do to fix the problem once we managed to get to the bottom of it? We asked at the equinox IRC-Channel for help and Tom Watson pointed me to a bug 212262 describing more or less the problem we are seeing. As described in the bug we’ve added jvm options:
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
and ran our test-suite the whole night and could not reproduce the locks since then.
So if you happen to run Hibernate (other libraries who use Class.forName() might have the same problem) inside the Equinox-OSGi-Container (I have no idea if other OSGi-Implementation might face the same problem) and your system is doing many things in a concurrent way you should consider setting those 2 options to avoid deadlocks.
p
by Tom Schindl at March 17, 2011 11:00 AM
Eclipse Riena
EclipseCon HD App for iPad is ready for download (just-in-time-approval)
Hi EclipseCon-visitors,
EclipseCon is just around the corner. Many of you might want to use their iPad to consume the conference program. The good news of today (which really made my day) is that Apple on the last minute approved the App which is now downloadable for free in the Apple iTunes App Store.
You get the whole conference program at your fingertips (with updates). You can search, mark favorites and it works of course also offline. So no matter whether you have an iPad or the brand new iPad2, now is the time to get it.
I have attached a screenshot. After you download and install, play with it. Try the favorites function (their are two ways to look at favorites), click on the talks or the roomnames. Try the search.
I encourage everyone to give feedback about what is good or bad. What function they are missing. I am planning of making that also available for future iterations of EclipseCon conferences.
Looking forward to hear from you, either in the comments or there is a feedback button right in the App.
You find it in iTunes right here: http://itunes.apple.com/app/eclipsecon-2011-hd/id425022966?mt=8#
This blog post shouldnt close without mentioning the mobile apps for the other platforms Android, iPhone, Blackberry. More Infos on the Activities page.
So we have all (“interesting”) platforms covered which I believe makes EclipseCon the first conference to have that, right ? p
by Christian Campo at March 17, 2011 08:32 AM
March 16, 2011
Tom Schindl
e4 – Fundamental Overview on the Eclipse 4 Application Platform
In my last blog post I talked very short about the relation of XWT and the Eclipse 4 Application platform. It looks like many people are mixing things up. In this post I’ll try to give a deeper look into the Eclipse 4 Application Platform which might make even clearer why XWT is not necessarily part of a Eclipse 4 application.
I can only reiterate that the Eclipse 4.0 Application Platform (EAP) is not forcing you in a direction or technology (it even not force you to use SWT though for many applications this might be the natural choice). Let’s look at the big picture at first.
The center of an EAP-Application is the Application Model   is defined using Ecore and holds the complete application state at runtime. One of those runtime informations is the core UI-Structure your custom UI-Code is plugged in at runtime but there are many other none ui types found in like handlers and commands. You can think of the Application Model as the central registry of an EAP Application and because things come and go in a running application the model is dynamic and changes while your application is running (e.g. when switching Perspectives, moving UI-Elements around e.g. detaching an editor)
An interesting fact though is that you also use this very same Application Model at design time which is in complete contrast to Eclipse 3.x where you use the plugin.xml-Model to describe your application. The default format we use to persist the model at design time is XMI which is supported by EMF but in the end the EAP does not really care in which format the Application Model is persisted all it needs when starting up is an in memory instance of the model.
This means the Application Model has 2 different states in can be in:
Designtime state: Used to describe how the running application should look like when started which gets persisted e.g. to an XMI-File
Runtime state: An in memory model loaded e.g. from the designtime state stored which gets processed by EAP and once finished the Eclipse 4 Application UI is presented to the user and after this point a bidirectional relationships between the in memory model and UI-Controls is established
The 2 different states the Application Model can be in is also reflected by the tooling:
Model Editor: Is an filesystem based editor similar to the plugin.xml-Editor and stores the model as an XMI-File
Live Model Viewer/Editor: Is operating on the in memory model of an running EAP Application and because the model is a live model you can not only view informations but also modify them State 1: State 2:
Now let’s go on to see what the EAP does with the model and how it creates the UI out of this abstract information.
As outlined already the Application Model holds UI-Information but what you find in the model are abstract UI-Concepts like Window, Perspective and PartStack but does not talk about concrete widgets to used to implement such a concept in the UI presented to the user. The transformation (we call it rendering) of the model elements into concrete widgets is the responsibility of the Rendering Engine  .
From a very highlevel the process is like this:
The last small thing I’d like to show in this post how the Java-Class referenced in the MPart named my.bundle.a.View looks like:
package my.bundle.a;
public class View {
@Inject
public View(Composite parent) {
// Make up the content displayed in the part
}
}
There are a lot of talks at EclipseCon 2011 and I’m giving a tutorial together with Kai Tödter and Eric Moffatt where you can learn how to write applications using the Eclipse Application Platform.
p
by Tom Schindl at March 16, 2011 10:26 PM
Mariot Chauvin
GSoC 2011 @ Eclipse
This year again, Eclipse applied as a mentoring organization for Google Summer of Code. We already have been started to collect ideas, they could be contributed on the wiki. Do not miss GSoC ! It's a great opportunity to see enhancements or new features added to your favorite projects. If you are a student, you should consider GSoC as an awesome chance to integrate free and open-source communities by doing (not only using), trust a former student. If you don't know how to get involved, have a look to our contribute page and keep an eye on the timeline.Here are some ideas I added :Acceleo has the ability to profile a generation. It creates a model containing the profiling data, and his able to display it. However it would be nice if we could export this model to a gprof file and reuse existing analysis tools such as the view from the linux tools project. Thanks to its discovery UI modeling package users could very easily discover and install modeling components. However we miss an updated reference example to see how to use together all this technologies.EMF Serialization is extensible and Protocol Buffers is an efficient serialization technology so it could be interesting to see how to combine them.
by Mariot Chauvin (noreply@blogger.com) at March 16, 2011 06:20 PM
Denis Roy
Is everyone ready for EclipseCON?
Only five days until the big event begins (well, four days, if you consider the conference to officially kick-off Sunday evening at the bar).If you want to distribute large files (or many files) to fellow attendees, upload your files to download.eclipse.org ASAP, since download.eclipse.org will be mirrored at the conference centre in its entirety -- including Nightly builds.As per the tradition, here's a whacky webmaster poll to scope out the conference newcomers and veterans. Please choose one of the following options -- results will be posted tomorrow:http://eclipsecon.org/webmaster.this.is.my.first.eclipsecon.ever.its.going.to.be.great---they.say.you.buy.beershttp://eclipsecon.org/webmaster.ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beershttp://eclipsecon.org/webmaster.ive.been.to.many.eclipsecons---why-have-you-never-bought-me-a-beerhttp://eclipsecon.org/webmaster.ive.been.to.a.couple.of.eclipsecons---I-prefer-to-run-than-drink-beerhttp://eclipsecon.org/webmaster.please.set.up.a.better.404.page.for.eclipsecon
by Denis Roy (noreply@blogger.com) at March 16, 2011 03:27 PM
Bob Balfe
Webinar: Creating Plugins for Lotus Notes, Sametime, and Symphony
Meeting Agenda:
Community updates – news on the expanded scope of our community!
Community member spotlight
Declan Lynch, Czarnowski Exhibit Services
Stacey Lieder, IBM
Special Topic: Authors will discuss and demo the recently published Redbooks wiki: Creating Plugins for Lotus Notes, Sametime, and Symphony
Speakers: Mikkel Heisterberg (Intravision), Tim Parsons (IBM)
Phone Conference Information:
Tues, March 22nd 10:00 AM EASTERN TIME (US)
North America Toll Free – 888-677-1634
North America Toll – 773-756-0229
Verbal passcode: Lotus Community
Web Conference Information:
Launch this URL to attend online – https://apps.lotuslive.com/meetings/join?id=001-637
Enter your name (please include your company name in parentheses)
Click the ‘Join Meeting’ button p
by Bob Balfe at March 16, 2011 01:04 PM
Jonas Helming
What every Eclipse developer should know about EMF - Tutorial at EclipseCon
We are looking forward to present  the tutorial „What every Eclipse developer should know about EMF“ at EclipseCon next week, Monday 9.00 am. Let us shortly explain how we got to that idea. The starting points for this idea were: Even if modeling is a very active area in the Eclipse community, there are many developers who have no experience with EMF at allMany of those developers complain that it is hard to gain an initial overview about modeling techniques and frameworks. Eclipse is always not only about knowing a specific technology but also knowing about the Ecosystem.So the goal of the tutorial is to tackle both issues and introduce “What every Eclipse developer should know about EMF”. The title is of course inspired by the great talk about dependency injection by Sven Efftinge on Eclipse Summit`10.For the first issue we created a basic EMF tutorial, which covers EMF modeling and gives entry points for the most important topics such as UI programming and data management. The second issue is a little bit harder to resolve. How could we give a good overview about different modeling technologies? There were two great things influencing us. The first was the Model  Symposium at Eclipse Summit, which showed us how many short talks can provide a nice overview of many technologies. The second influence was the Ignite Competition held by the Eclipse Foundation. An Ignite talk consist of 20 slides, switched automatically every 15 seconds and is therefore exactly 5 minutes. This format forces to concentrate on the most important facts instead of going into detail about specific topics. We combined these two ideas and invited Project Leads of modeling projects to introduce their projects with an Ignite talk during the second part of our tutorial. We hope this will provide a good overview of available technologies and therefore cover the second part of “What every Eclipse developer should know about EMF”.We are looking forward to welcome you as participants of this tutorial. As a preparation for the hands-on part, we kindly ask you to have a (fresh) installation of the Eclipse Modeling Edition (Helios).
by UNICASE (noreply@blogger.com) at March 16, 2011 11:18 AM
Frederic Madiot
How to follow Obeo at EclipseOn 2011?
EclipseCon 2011 starts in less than one week from now.This year, Obeo will be well represented with five of us going to Santa-Clara:- Etienne Juliot, Vice-president and co-founder of Obeo, member of the Eclipse Foundation Board - Cédric Brun, CTO of Obeo, member of the Architecture and Planning council, leading several Eclipse/Modeling projects- Mariot Chauvin, committer on Acceleo, GMF and SWTBot- Mikaël Barbero, EMFPath project leader- and me ;-)The program will be very intensive for us, with seven talks to give: What every Eclipse Developer should know about EMF EMFPath: how to use Guava (superset of Google Collections) to efficiently browse EMF models 5M lines of code to migrate True story of a successful business model based on Eclipse Mylyn meets Intent : Documentation made fun and useful Spy On Your Models Stop the Architecture Erosion of Eclipse And Open Source ProjectsWe are also in competion with five Eclipse Community Awards finalists:Laurent Goubet (Acceleo committer) for Top Committer Cedric Brun for Top Newcomer Evangelist Modeling Amalgamation (lead by Cédric) for Most Open ProjectEEF (lead by Goulwen Le Fur) for Most Innovative New Feature or Eclipse ProjectObeoDesigner for Best Modeling ToolHowever, we don't forget the most important thing at EclipseCon: sharing ideas (and beers) with other Eclipse fans!
by Fred Madiot (noreply@blogger.com) at March 16, 2011 10:34 AM
March 15, 2011
Pascal Rapicault
Naming Indigo +1, final vote
It is now time to vote on the name of the 2012 release. The poll will stay open until Sunday night and we will reveal the winning name at EclipseCon.http://www.eclipse.org/indigo/planning/poll2012name.php
by Le ScaL (noreply@blogger.com) at March 15, 2011 06:32 PM
Bob Balfe
Is Eclipse 4 a game changer? It may be…
If you are not aware, Eclipse 4 is well under way. You may also see a huge push for web based user interfaces in rich clients – ie. applications based on the Rich Client Platform. This shouldn’t be new to the Lotus or Eclipse community because you have probably seen many projects posted on OpenNTF that have 100% web based UI’s (ie. user interfaces that are written almost entirely in HTML and JavaScript). The Attachment Viewer is one of them.
One part of the FAQ is a key point I am attempting to address here:
We decided this fundamental approach was a failure, and are instead focusing on the opposite approach: designing and writing applications for the browser and then also running them in a desktop environment. Applications designed for the more limited browser environment tend to behave quite well when run in a browser widget in a traditional desktop application. — link
I think you will see more and more web based support as Eclipse matures. These “widgets” will be available in both RCP and Web based applications. Check out the Open Social Specification 2.0 and specifically the Gadget and container API’s being presented. They will allow even further integration of web based Open Social Gadgets with rich client applications. p
by Bob Balfe at March 15, 2011 04:09 PM
Stephane Bouchet
Eclipse 3.7M6 and releng stories
hi,just a short warning for all releng people using the latest eclipse 3.7 milestones.due to a wrong tag in the platform, using the regular composite repository is not recommended until bug 340016 is fixed.to be clear, if you use a href="http://download.eclipse.org/eclipse/updates/3.7milestones"http://download.eclipse.org/eclipse/updates/3.7milestonesa span style="font-size: small;"repository and have some troubles, use instead the M6 repository, located here spana href="http://download.eclipse.org/eclipse/updates/3.7milestones/S-3.7M6-201103101119"http://download.eclipse.org/eclipse/updates/3.7milestones/S-3.7M6-201103101119a
by Stéphane Bouchet (noreply@blogger.com) at March 15, 2011 03:03 PM
Bryan Hunt
Mongo EMF
If you have worked with the Eclipse Modeling Framework (EMF), then you already know how easy it is to create domain models.  If you haven’t, then I highly recommend giving it a try.  I develop all of my domain models using EMF.  EMF has built-in support for persisting models to files in XMI, XML, and binary format.  The persistence API is highly extensible, and I’ve recently been working with Ed Merks on some code that persists EMF models to MongoDB.  The project is called mongo-emf and is hosted on EclipseLabs. Version 0.3.1 is being used in a real application and is fairly stable.  This version supports all of the basic CRUD functions along with a basic query language for finding objects.  This blog post will cover the CRUD functions while Ed Merks will have a blog post soon on using the query model.
One feature that I hope you will find attractive is that there are no annotations or XML configuration files required.
If you are attending EclipseCon 2011, I will be giving a talk titled Hardware Developer’s Workbench: a Case Study in which I will discuss how we are using this technology in our application.
Quickstart
Here’s an example on how easy it is to insert an object into MongoDB using EMF.
ResourceSet resourceSet = new ResourceSetImpl();
EList uriHandlers = resourceSet.getURIConverter().getURIHandlers();
uriHandlers.add(0, new MongoDBURIHandlerImpl());
Person user = ModelFactory.eINSTANCE.createMyObject()
user.setName("Test User");
user.setEmail("test@example.org");
Resource resource = resourceSet.createResource(URI.createURI("mongo://localhost/app/users/"));
resource.getContents().add(user);
try
{
resource.save(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Let’s look at the code above in detail.  Line 1 is the normal way you create an EMF ResourceSet.  Lines 2 and 3 hook the MongoDB URI handler that interfaces EMF to MongoDB to the ResourceSet. Lines 5 – 7 set up the model instance. Line 9 creates the EMF resource using a URI that has a specific pattern explained below.  Line 10 simply adds the model instance to the EMF Resource.  Line 14 saves and inserts the model instance to MongoDB.
By adding just two additional lines of code and using a mongo URI, you are able to utilize the full power of EMF with your objects persisted in MongoDB.
Mongo EMF URIs
All EMF resources are identified by a URI.  The URI you use when persisting models to MongoDB must have the form:
mongo:// lt;host gt;/ lt;database gt;/ lt;collection gt;/ lt;id gt;
host is the hostname of the server running MongoDB (the port may be specified if not default)
database is the name of the MongoDB database to use
collection is the name of the MongoDB collection
id is the unique identifier of the object in MongoDB (optional on create / insert)
The URI path must have exactly three segments. Anything else will cause an IOException on a load() or save().
Create
When inserting a new object into MongoDB, the id segment of the URI is optional and typically the empty string.  By default, MongoDB assigns a unique ID to an object when it is inserted into the database. In this mode, the URI of the EMF resource is automatically updated to include the MongoDB generated ID value.  Going back to the example in the Quickstart, the resource URI will be similar to mongo://localhost/app/users/4d6dc268b03b0db29961472c after the call to save() on line 14.
It is also possible for the client to generate the ID and persist the object to MongoDB using that ID.  The ID can be any string value that is unique within the MongoDB collection.  The quickstart example above would be modified as follows:
Resource resource = resourceSet.createResource(URI.createURI("mongo://localhost/app/users/1"));
resource.getContents().add(user);
try
{
resource.save(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Retrieve
To retrieve an object from MongoDB, you load an EMF Resource using the unique URI for the object.
ResourceSet resourceSet = new ResourceSetImpl();
EList uriHandlers = resourceSet.getURIConverter().getURIHandlers();
uriHandlers.add(0, new MongoDBURIHandlerImpl());
Resource resource = resourceSet.getResource(URI.createURI("mongo://localhost/app/users/4d6dc268b03b0db29961472c"), true);
Person user = (Person) resource.getContents().get(0);
Update
To update an object in MongoDB, you simply save the Resource containing the object.
user.setEmail("mongo-emf@example.org);
try
{
user.eResource().save(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Delete
To delete an object in MongoDB, you call delete() on the Resource containing the object.
try
{
user.eResource().delete(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Collections
A collection of objects may be stored (contained) within a parent object, or stored as individual objects in a MongoDB collection. For objects that are contained as part of a parent object, when you operate on (load, save) the parent object, you operate on (load, save) the entire collection. When a collection is stored as individual objects in a MongoDB collection, each object is contained its own EMF Resource and must be managed individually by the client. If you allow MongoDB to generate the object ID, you may bulk insert a collection of objects in a single save() call. The resource is modified to contain a single Result result object with a proxy to each of the inserted objects. You may iterate over the proxies to load each object into its own Resource. Here is an example of bulk insert:
ResourceSet resourceSet = new ResourceSetImpl();
EList uriHandlers = resourceSet.getURIConverter().getURIHandlers();
uriHandlers.add(0, new MongoDBURIHandlerImpl());
Resource resource = resourceSet.createResource(URI.createURI("mongo://localhost/app/users/"));
for(int i = 0; i lt; 10; i++)
{
Person user = ModelFactory.eINSTANCE.createMyObject()
user.setName("User " + 1);
user.setEmail("user" + i + "@example.org");
resource.getContents().add(user);
}
try
{
resource.save(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Result result = resource.getContents().get(0);
for(EObject eObject : result.getValues()
{
Person user = (Person) eObject;
System.out.println("Person " + user.getName() + " has URI: " + user.eResource.getURI());
}
EMF References
The way in which EMF references are persisted in MongoDB depends on the settings you specified when you created your EMF Ecore and Generator models. Two Ecore settings that affect persistence are: Containment, and Resolve Proxies. The Generator setting that affects persistence is: Containment Proxies. There are three types of references to consider: non-containment, containment, and bi-directional cross-document containment.
Non-containment References
A non-containment reference is modeled by setting Containment = false in the Ecore model. A non-containment reference can be to any other object in the database, a file, or on some other server. The target object may be contained by the referencing object, or could be in some other resource. Non-containment references are always persisted as a proxy. If the target object is in a separate resource from the referencing object, the target object must be persisted, on creation, before the object with the reference so that the proxy URI contains the ID of the target object.
Containment References
A containment reference is modeled by setting Containment = true in the Ecore model. A containment reference is persisted as a nested object in the same MongoDB document as the referencing object if Resolve Proxies = false in the Ecore model or Containment Proxies = false in the Generator model. If Resolve Proxies = true in the Ecore model and Containment Proxies = true in the Generator model, the reference will be persisted as a proxy if the target object is contained in its own Resource (cross-document containment). If the target object is not contained in its own Resource, it will be persisted as a nested object of the referencing object.
Bi-directional Cross-document Containment References
Bi-directional cross-document containment references need special consideration when it comes to saving the objects. For the proxies to be properly persisted, three calls to save() must be made on creation. One of the two objects must be saved twice. The other object must be saved once between the two saves to the other object. For example, consider a bi-directional reference between a Person and an Address, the code to save the two objects would be as follows:
user.setAddress(address);
try
{
address.save(null);
user.save(null);
address.save(null);
}
catch(IOException e)
{
e.printStackTrace();
}
Modeling Restrictions
There is one minor restriction that you must follow when creating your EMF Ecore model. The following keys are reserved for internal use and may not be used as attribute or reference names:
_id
_eId
_eClass
_timeStamp
_eProxyURI
Mongo EMF Project Bundles
The project consists of several core bundles, an example project, a JUnit test bundle, and a JUnit test utility bundle.
org.eclipselabs.emf.query – this bundle contains the model query support
org.eclipselabs.mongo – this bundle contains an IMongoDB OSGi service that provides basic connectivity to a MongoDB database
org.eclipselabs.mongo.emf – this bundle contains the MongoDBURIHandlerImpl that provides EMF persistence to MongoDB
org.eclipselabs.mongo.freemarker – this bundle contains support for persisting FreeMarker templates in MongoDB
org.eclipselabs.mongo.emf.examples – this bundle contains a simple example using MongoDBURIHandlerImpl
org.eclipselabs.mongo.emf.junit – this bundle contains the JUnit tests for the core bundles
org.eclipselabs.mongo.junit – this bundle contains utilities for users developing their own JUnit tests
Unit Testing
The org.eclipselabs.mongo.junit bundle contains two useful classes that can make writing your unit tests easier.
MongoDatabase
This class is a JUnit @Rule that will clear your MongoDB database after each test. The rule requires the BundleContext and the name of the database to be passed as parameters to its constructor. Here is an example on how to use that rule:
@Rule
public MongoDatabase database = new MongoDatabase(Activator.getInstance().getContext(), "junit");
MongoUtil
This utility class contains functions for creating a ResourceSet, getting one or more objects from the database, getting the ID of an object, registering the IMongoDB service with OSGi, and comparing two EObjects. This class has extensive JavaDoc comments that explain the usage of each function.
Launch Configurations
Your launch configuration must include the following bundles and their dependencies:
org.eclipselabs.emf.query
org.eclipselabs.mongo
org.eclipselabs.mongo.emf
org.eclipse.equinox.ds (or equivalent)
The org.eclipselabs.mongo bundle uses OSGi declarative services to register the IMongoDB service. This service is used by MongoDBURIHandlerImpl to connect to MongoDB.
References
Eclipse Modeling Framework
MongoDB
EclipseLabs mongo-emf project
p
by Bryan Hunt at March 15, 2011 02:00 PM
Manuel Selva
Unit Testing RCP Applications
Include Unit tests launching and stop in case of failure in a continuous integration process is a MUST. In the case of an Eclipse RCP application continuous environment process (based on ANT and PDE build scripts) set up we have to decide “how to install and launch unit tests“.
Solution: After building the RCP product, install the product using P2 director command line in the Eclipse SDK that has been used to build the product with a specific configuration. Then just launch the PDE unit test application as following:
lt;java dir="./plugins" classname="org.eclipse.equinox.launcher.Main" fork="yes" classpathref="equinox.launcher.class.path" maxmemory="512m" gt;
lt;arg line="-application org.eclipse.pde.junit.runtime.uitestapplication -port ${port} -testpluginname ${plugin} -classnames ${classes} ${config}" / gt;
lt;/java gt;
This solution is great but has a main drawback: We are not running the unit tests in the “final” environment but in an SDK environment that has been enhanced with our RCP product.  A better solution to my eye will be to enhance the RCP product with the few plugins required by PDE unit test application in order to be closest to the final environment when launching the tests.
I’am investigating on that ….. next episode coming soon !
Note: feel free to comment this post to bring your point of view and experiences about RCP unit testing.
p
by Manuel at March 15, 2011 07:25 AM
Heiko Behrens
Google Android Emulator Skins for Nexus S and Nexus One
When I was producing the screencast for Peter’s blog post about the EclipseCon App, I had a hard time to bring the Android App in shape. As any Android developer will know Google’s Android Emulator comes with a set of loveless default looks you are ashamed of each time you compare them with their sexy iPhone counterpart. Fortunately and contrary to the latter, the Android emulator offers support for skins to overcome this grievance and so I decided to build a set of high-quality Android Skins for Samsung Nexus S and HTC Nexus One including reflection overlays.
This package contains a set of four different skins including overlays for a glare effect.
Thanks to the great work of Alexander Gillis, I was able to create these skins with their native screen resolution at a superb image quality. They offer a glow effect when hovering over the hardware buttons, render a subtile drop shadow on both orientations and come with smooth corners on every edge. However, the outstanding feature of this set of skins is the fitting overlay image that can be put on top of the actual emulator screen. It’s based on the Android Emulator’s mostly unknown support for “onions”. That is a feature other mobile simulators, especially the iPhone simulator, do not provide (although tools like simfinger offer a great workaround).
These skins come with a glare effect above the actual screen, highlighted hardware buttons, smooth corners and a subtile drop shadow.
I produced these skins especially to record screencasts and to take high quality screenshots of running Android applications with respect to the actual screen resolution of the devices and their physical proportions. Therefore, these skins come at a relatively large size in pixels that might exceed your average 1600×1200 display. Nevertheless, you can still run them on smaller screens by passing the scale option to the Emulator on startup or by specifying the scale options with “Scale display to real size” on the dialog “launch options”.
# scale emulator to half of its actual size
-scale 0.5
To activate the glare overlay you have to specify an “onion” by passing another command line option to the Android Emulator (sorry, there’s no dialog to do this). Each skin has its own “overlay.png” to seamlessly continue the reflection visible on the body. Be sure to pass the full path to the appropriate graphic along with 100% opacity.
# activate the glare overlay
-onion-alpha 100 -onion lt;absolutePathToSkin gt;/overlay.png
Each included hardware.ini contains an example of these arguments. If you are familiar with Android Emulator skins, go ahead and download the archive or fork them on GitHub. The clueless remainder of the Android developers should follow these briefly outlined installation steps.
Installing the Emulator Skins
An Android Emulator skin basically is a folder consisting of files for graphics and configuration. Once installed, skins are named after their folder names. Let’s start and download the ZIP archive containing the skins. After extracting the archive you will find a set of different folders corresponding to (fictitious) device names, e.g. “NEXUS-S” . Each of these folders is what’s called a skin.
Locate the “platforms” folder of your Android SDK. Each platform has its own set of skins you can find at “ lt;AndroidSDK gt;/platforms/ lt;platform gt;/skins”. Assuming you are developing against the Google API of Android 2.1, the proper platform would be 7. If unsure, have a look at your AVD manager. Extract the desired skin into the platform’s skins folder, e.g.
~/dev/android-sdk-mac_86/platforms/android-7/skins/NEXUS-S
c:\android-sdk-windows\platforms\android-9\skins\NEXUS-S
Now, restart the AVD manager so it is aware of the new skin and create a new virtual device based on one of your freshly installed skins.
Create a new AVD with one of the freshly installed skins.
You can use this AVD similar to any other virtual device, but as written before, these skins are quite large. If you want to reduce the size of the emulator window, be sure to explicitly pass a scaling factor. Yes, you can do this with a graphical dialog from within the AVD Manager but doing so will thwart your whole development process later on. Instead, I will show you how to configure your Eclipse run configuration since this will be needed for the glare effect anyway.
Change your Eclipse run configuration to scale your emulator window and activate the glare effect.
In Eclipse, go to your run configuration and open the tab “Target”.  Choose “Automatic” for the option “Deployment Target Selection Mode” and select your new virtual device. Also, in the field “Additional Emulator Command Line Options” at the bottom pass these values (where lt;absolutePathToSkin gt; had been changed accordingly):
-scale 0.5 -onion-alpha 100 -onion lt;absolutePathToSkin gt;/overlay.png
Hit “Run” and watch the console output on startup. The Emulator will tell you if it cannot find the onion file. If everything went right, you should see your Android application within a beautiful Emulator window by now.
Have fun!
Links
Download Android Emulator skins for Nexus S and Nexus One
Fork the skin set on GitHub
More beautiful graphics by Alexander Gillis on DeviantArt
p
by Heiko Behrens at March 15, 2011 07:13 AM
Dave Orme
The OSGi Building Block Pattern: An Invitation
Have you ever wondered why it seems so hard to come up the OSGi or RCP learning curve? Or, if you're already an OSGi expert, why beginners seem to have so much trouble “getting it”?
I believe one reason is that there is an impedance mismatch between the way OSGi applications are built and the way the Eclipse IDE works. More importantly, I believe that understanding this impedance mismatch illuminates a very fundamental architectural pattern in OSGi development that I call the OSGi Building Block pattern.
In this blog article, I will discuss the OSGi Building Block pattern in the abstract.
Next week at EclipseCon, Patrick Paulin and I will deliver real code showing how to leverage this pattern to make Eclipse RCP and server-side OSGi application development much easier (Architecture Patterns and Code Templates for Enterprise RCP Applications).
What is the OSGi/Eclipse Impedance Mismatch?
Consider this thought:
Eclipse works in terms of projects and dependencies. But no single project can fully define a production-quality OSGi application.
Why?
Let's use Eclipse RCP as an example:
An RCP developer might first use the “RCP Application with a View” wizard to create her initial RCP application. This wizard generates a single project defining a single OSGi Bundle.
Then the average beginner clicks the “Run” button to launch the platform and to see the wizard's result.
But in order to deploy the application, an RCP developer must create at least the following extra artifact(s):
A Product configuration
and normally for an enterprise-class project:
A Feature definition (for her bundle)
A releng project to drive either Maven/Tycho or PDEBuild.
And there is nowhere that I am aware that documents all of these steps in one place. So a beginning RCP developer may flounder for months before he realizes what the minimal ingredients are in a production-ready Eclipse RCP application.
What are the minimal OSGi/RCP ingredients?
For a Feature-based RCP product, the minimal building-block for a production-quality application can be represented by the following quad:
(Bundle+, Feature+, Product, Releng)
[The trailing plus sign signifies “one or more”, just like in a grammar.]
In other words, for production purposes, the *minimal* RCP application is:
One or more Bundles
Contained in one or more Features
In a Product configuration
Built by some sort of release engineering project (e.g.: Maven/Tycho or PDEBuild)
But Eclipse provides no wizards to create all of these things at once. Eclipse provides no refactorings to keep all of these things in sync as they change over time.
The Eclipse RCP wizard and the Eclipse IDE want us to think in projects. But OSGi wants us to think in terms of deployable bundles. Eclipse requires the OSGi (RCP, server-side) developer to keep this entire model in his head, and to manage it manually.
(I think I mentioned that we will deliver simple code illustrating all of this next week? )
What about other OSGi uses?
Wait! There's more!
The same principle applies for server-side OSGi, just with different names for the parts! For example, Virgo has the following minimal building-block:
(Bundle+, Plan+, ContainerConfig, Releng)
(Okay, I know you can deploy bundles to a WAR, but my understanding is that Plan files are the “new and approved” way to work with Virgo.)
And an OSGi bundle, deployed via P2 is the following minimal set of things:
(Bundle+, Feature+, P2RepoProject, Releng)
Viewing OSGi this way has helped me think about RCP applications much more clearly, because the number of distinct concepts I have to keep track of suddenly just went to 4.
It has also helped me understand how to design my builds in a modular way, because as Nick Boldt blogged, a build's target platform can be composed of multiple P2 repositories, which can be the result of prior builds. In other words, my build can consume its own output.
General form of the OSGi Building Block Pattern
I call this OSGi quad the “OSGi Building Block” pattern because it comes up frequently in one form or another in nearly all flavors of OSGi software development. The general form can be described as:
(Bundle+, Packaging+, Deployment, Release engineering)
I believe there are two powerful ramifications to this:
Having standard names for things helps us to talk and reason about them. Understanding the OSGi Building Block pattern is the key to making OSGi (in all its forms) simple and easy.
Direct tool support for the OSGi Building Block pattern: Maven archetypes, IDE wizards, and IDE refactorings would all be beneficial. Ultimately, these things will help to drive OSGi's TCO down and drive OSGi as an enterprise standard.
Invitation to the community
Following this second point, I would like to issue the following challenge and invitation to the OSGi community:
When things represent the same idea, let's try to standardize the terms we use to describe them. For example, I propose that we use the term “Packaging” to describe the singular concept represented by both a Plan and a Feature. But as the experts, does that make sense to you?
Since developers deal with OSGi applications in terms of repeating instances of this minimal quad, let's give them IDE tooling to let them deal with each instance of this quad as a discrete unit.
Invitation to BoF
To facilitate these discussions, I would like to invite all of the OSGi stakeholders to a BoF session this coming week at EclipseCon.
I think that OSGi's future is bright, and I think that by driving concrete plans to improve developers' lives using the OSGi Building Block pattern, we can help.
(And one final plug for Patrick and my session next week:)
If you're wondering why and how this makes OSGi development simple, come to our tutorial next week at EclipseCon: Architecture Patterns and Code Templates for Enterprise RCP Applications. Next week Patrick Paulin and I will make all of these abstract ideas concrete with real code you can take with you and use as the basis for your next project.
Read or add comments to this article
by djo at March 15, 2011 03:15 AM
Pascal Rapicault
p2 at EclipseCon 2011
This year again, there will be plenty of opportunity to learn and discuss p2 at EclipseCon. There are four talks: * p2, your savior or your achilles heel? Everything an Eclipse team needs to know about p2 * Discovering the p2 API's * Updates in the micro space * Raising the Eclipse Provisioning to the Clouds One BOF: * Fireside chat on p2 And a lot of p2 committers and enthusiasts ready to
by Le ScaL (noreply@blogger.com) at March 15, 2011 03:03 AM
Kim Moir
SDK code coverage with JaCoCo
Today, I had to pleasure of closing  bug 241254 which has been open for over two years.  It was a request to run a code coverage tool against the SDK during the build.We used JaCoCo which is an EPL licensed code coverage library brought to you by the same team that created EclEmma.  Why did we chose JaCoCo?Help from JaCoCo committers. At EclipseCon 2010, Marc Hoffman (JaCoCo committer) indicated to Olivier Thomann that he was interested in helping us to implement JaCoCo in our build.   Performance.  Other code coverage tools made the JUnit tests take significantly longer.  Our tests take long enough to finish as it is!  Olivier tested JaCoCo and found that it only took the JDT core tests about 2% longer to complete with JaCoCo enabled. Our 68,000 JUnit tests take about seven hours to run in parallel on three platforms.  The JDT Core tests comprise 37,000 of these tests, thus we estimated the impact of running  JaCoCo during the build would only increase the test run by about eight minutes.Classes are instrumented on the fly and and remain untouched after the code coverage data is generated.  Other code coverage tools require you to instrument the classes for code coverage. Given the huge code base of the SDK, this didn't seem like a feasible alternative. JaCoCo reports look awesome.How did we implement JaCoCo in the build?Olivier tested an earlier version of JaCoCo and worked with the JaCoCo committers to address some issues.  Once these issues were resolved, we opened IPZilla bugs to consumed JaCoCo as part of the Indigo release.The Eclipse SDK JUnit tests are run with the assistance of a project called org.eclipse.test.    An Ant script called libary.xml is used to invoke the test suites for each test bundle.  We added the JaCoCo agent and Ant jars to a new library directory of this project.These jars are then added to the extraVMargs property when the tests are run. The libary.xml also specifies the output directory of the coverage data (*.exec files).  When the tests are run, corresponding exec files are created for each test bundle.We modified the test.xml that is used to run all the tests suites to generate a code coverage report upon completion of the JUnit tests. All the *.exec files are merged into a single file.  A coverage report for each bundle in the SDK is run.  (excluding Orbit and doc bundles as well as fragments). The Ant for the report generation looks like this:One problem that we encountered was that that JaCoCo report task was running out of heap space when the source files were passed to it as as zipfileset instead of a fileset.  This problem occurred especially when attempting to generate source reports for large bundles such as jdt.core. We overcame this problem by unzipping the source bundles into a temporary location and passing the fileset.In addition to code coverage percentages, the report generates html of the source files that highlights the code coverage within the code itself.  For example:All this information consumes about 1GB per build.  (Sorry Denis and Matt).  Thus I have only enabled it for our weekly integration builds, and the data will not be sent to the mirrors.The code coverage reports  for 3.7M6 are now available. Check out your favourite Eclipse SDK bundle!References JaCoCo project JaCoCo mission and design goalsJaCoco Ant tasksBug 241254 - run code coverage tool during buildMarc Hoffmans's JaCoCo talk at Eclipse Summit Europe 2010
by Kim Moir (noreply@blogger.com) at March 15, 2011 02:05 AM
Del Myers
Tracing Web Apps Using Diver
Diver is a tool designed to help Java Developers understand how unfamiliar, or long-forgotten, software works. It lets developers easily trace the actions of Java Software and analyze it using an advanced Sequence Diagram View and some workbench filters that help focus on the software artifacts associated with particular features of the software.With more and more applications moving to the Web, I've been asked a number of times, "Can Diver trace web apps?" I've always told people that it is possible to do, but I haven't given detailed instructions on how to do it. This post will hopefully remedy that.First, a few notes. The version of Diver used to illustrate the points in this post is 0.3.1. It isn't an official release yet because there is still some testing to be done. I've had to do some tweaking to Diver, though, to make tracing web apps a little easier. So, you can get your copy of Diver 0.3.1 by pointing p2 to http://diver.svn.sourceforge.net/svnroot/diver/Development. Another thing: Diver only traces Java, not JavaScript. So, Diver can't be used to help get at any JavaScript errors that are running in the browser. It can, however, trace Java apps that have been deployed on a Java-enabled web server such as Jetty, Tomcat, or JBoss. That includes code invoked from JSPs. In this post, I'll be using JBoss 5.0.1GA. There is no particular reason for that. I've used Diver to trace applications deployed in Jetty as well.Install And Deploy Your Web AppThe focus of this post is on tracing web apps, not on setting up web servers. So, I assume that you have your server ready to go. It's probably best, though, that you run on a small test server on your localhost rather than on a deployment machine. That just keeps things compact and easier to manage.Diver works best if you have the source code for that app. It isn't strictly necessary, but it makes the tools that Diver offers a lot more powerful. At the very least, you have to be able to deploy your app into your own web server. You can just build and deploy your web app the way you normally would. For example, in JBoss, this would typically involve copying a WAR file into the jboss_root/server/server_name/deploy directory. When you are tracing your app, Diver will actually be tracing the copy that has been deployed on your server, not the version that is in your workspace. So, after you make any changes to your code, be sure to rebuild and redeploy before running your trace. Then, Diver will be able to match the calls to various methods/classes in the deployed WAR to those classes in your workspace, making it a lot easier to find things.Preparing for LaunchWhen tracing a Java Web App, what we are really doing is capturing specific events that happen inside a Java web server instance. So, the application we will be tracing is the Java Web Server. Ideally, Diver would be able to interact with the Eclipse Web Tools Platform so that you could just fire up a trace of a web server launch. Unfortunately, I haven't gotten that far yet. Fortunately, though, programs like JBoss are really just Java applications, so we can use the Java Application Trace functionality of Diver to grab a trace, but it will take a little set up first.The Diver Java Application Trace is just an extension of the JDT Java Application Launch. The JDT requires that the applications it launches are visible in the workspace, so Diver requires the same. That doesn't mean, though, that you have to have all of the JBoss source to get started. You can launch directly from your installed JBoss instance. To get JBoss to run, you just need to make the right jar files visible. This is how you do that.I suggest that you make the appropriate jars visible in their own project. You could, possibly, create dependencies to JBoss or Jetty, or what-have-you, in your web app's project, but that could cause build problems or runtime errors if your web app needs its jars to be isolated from the server. I just create a small Java Project called JBoss:Once the project is created, you need to make the JBoss launch jar visible. To do that, just select the JBoss project in the Package Explorer or the Navigator and choose File gt;Properties  lt;Alt+Enter gt; from the menu. Jump over to the Libraries tab of the Java Build Path settings page, and select Add External Jars:The jar that you are looking for is run.jar. It's just the JBoss launcher. On my computer, it is found in C:\jboss-5.0.1.GA\bin:That's all that you need for preparation. Now, we can get onto the launch.Setting Up The TraceNow that the JBoss launcher is visible to Eclipse, we can get onto running it to gather a trace of our web app.  Open up your Run or Debug Configurations dialog, and create a new Java Application Trace. In the Main  tab, set the Project to the one we created earlier. The Main class that we will use is just org.jboss.Main. Simple enough:Your web server will likely require a number of arguments to be passed both into the program and into the VM. Go to the Arguments tab. JBoss requires the following arguments:Program Arguments:-c lt;server gt; where  lt;server gt; is the name of the configured server that you deployed your web app into. I typically just use default one supplied by JBoss, so my program arguments are -c default.VM Arguments:-Xshare:off -Dprogram.name=run.bat -server -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xms128m -Xmx512m  -XX:MaxPermSize=256m-Xshare:off is a Sun/Oracle specific VM argument that is there for Diver's sake. It tells the VM that this launch will not share its classes with anyone (the Java VM allows different processes to share the same loaded classes unless this flag is set). If you aren't using the Sun/Oracle VM, get rid of this argument. The other ones are there for JBoss. The really important ones (I think) are -Dprogram.name=run.bat (or run.sh if you are running on Linux) and -server. You can set the heap and Perm Gen sizes according to your liking.Working Directory:/jboss_home/bin. On my computer, this is just C:\jboss-5.0.1.GA\bin. This has to be set so that JBoss can know where it is running from and resolve all of its own resources.If you are wondering how I discovered what all of these arguments should be, I did it by inspecting the run.bat script that is used to launch JBoss. The script just sets a bunch of default variables, and I used those. Another thing that you should be aware of is that you need to have your JAVA_HOME environment variable set to a valid JDK. A normal JRE might work, but (depending on the version of your server) it may not be able to compile JSPs unless you have the JDK. I'm sure you already knew that, but I'm just throwing it out there for good measure.Tweaking The TraceThat is all you technically need to do to get started. Now, you can just select the Run button and start gathering information like you normally would with Diver (see the Diver documentation). But there are a few things that you can do to tweak the trace and make sure it is efficient. Web apps can be slow as it is. Tracing them introduces i/o overhead that we would like to minimize. Go over to the Java Trace tab of your configuration, and set it up to look something like this:First of all, you are likely only interested in the things that your web-app is doing, so I suggest selecting the Set Filter Manually option, and adding only the packages that are a part of your web app to the Inclusion Filters area. By Default, Diver will analyze the trace and only watch for methods defined in the project that is named in the Main tab of the launch configuration. In this launch, there is nothing but the JBoss launching jar, so the analysis would end up being mostly useless unless you set the filters manually.I also suggest making sure Pause On Start and Apply Filters at Runtime are checked. Pause On Start is the default, and it just means that none of the start-up process of the program will be traced. You can define what actually gets recorded in real-time using the Eclipse Debug View as described in the Diver documentation.Older versions of Diver (0.2 and earlier) recorded absolutely every method call, and "rejected" data based on the defined filters during a separate analysis step. Since version 3.0, Diver allows you to reject that data before it gets stored, which can speed up your traces and your analysis by many, many times. Make sure Apply Filters at Runtime is checked to enable this speed up.Get GoingThere you go, that is all you need to get a trace of a web app using Diver. Now, you can record and compare traces to focus in on specific bugs or features in your app and use Diver's sequence diagram to analyze what is going on. The Diver documenation, and the video tutorials tell you how to do all that fun stuff:There is just one more small bit of housekeeping that you might want to be aware of. Launching a web server in this way doesn't give you a clean, interactive way to shut it down. You can always just use the "Stop" button in the Debug View to force it to quit, but that could leave your server in an undefined state. I suggest opening up a console, and using your web server's shutdown command. For JBoss, all you have to do is type shutdown -S.That's all for now. If you are out at EclipseCon, make sure to come to my talk where I'll be presenting Diver and how it helps users of Eclipse understand their software. Happy coding!
by Del (noreply@blogger.com) at March 15, 2011 12:54 AM
March 14, 2011
Scott Lewis
ECF 3.5 - Remote Services Admin
ECF 3.5 was just released. One of the 3.5 New and Noteworthy for the 3.5 release is a complete implementation of the OSGi enterprise standard known as Remote Services Admin (chapter 122 in the enterprise spec).First: What are OSGi Remote Services?OSGi remote services defines a simple, standard API...using normal OSGi services...for exposing services for remote access. ECF has supported the OSGi Remote Services specification for more than a year...and it's been hardened through community usage, bug reporting, and feedback.What is RSA?RSA is an enterprise management agent for OSGi Remote Services. As of ECF 3.5), we fully support the RSA specification, which allows very fine-grained control, management, and security for enterprise remote services. Specifically, it's possible for the both the remote service discovery and distribution to be customized or extended as dictated by the (enterprise) use case...without resorting to non-standard API.Why ECF's Implementation?ECF's implementation has a number of unique technical attributes, including transport independence through multi-provider architecture, support for asynchronous remote services, support for Felix and other OSGi frameworks, small code size, and open, community-based development process.
by Scott Lewis (noreply@blogger.com) at March 14, 2011 08:25 PM
Ian Skerrett
New Orion Logo
The Orion developer team is making great progress on implementing the vision of Orion.  They have just announced the latest M6 release, check out the new and noteworthy.
One thing you will notice is the shiny new Orion logo.  Yiying Lu, creator of the famous Twitter ‘Fail Whale’ graphic, designed the logo for us.  She even created our very own version of the ‘fail whale’.   However, I have been told you will never see it, so I posted a link here.  You might also see it on some t-shirts at EclipseCon.  :-)
p
by Ian Skerrett at March 14, 2011 07:36 PM
Orion
Orion 0.2 M6 – New and Noteworthy
The Orion development team has been busy! Here are some of the more noteworthy things available in milestone build M6 (March 11, 2011) which is now available for download. Eclipse committers can also use M6 on the hosted demo server at orion.eclipse.org (see instructions).
New visual styling and organization
The Orion pages have received a visual facelift that more clearly organizes the tasks available on a page. The top of the header organizes primary navigation links, global commands, and user information. The dark bar at the bottom of the header provides page-specific interactions. Where possible, pages include breadcrumb navigation in the header. Local actions are still included adjacent to items when appropriate.
Move and copy folders and files
You can now move and copy files in the navigator. Select the files and use the page-level menu to choose a move or copy target. You can move a file or folder to any folder in your “Favorites” or to other folders on the page. (Future support will include drag and drop and more extensive target selection).
Site launching support
The new Sites page allows you to create sites for testing an application developed with Orion. From the Sites page you can create, edit, delete, or launch web sites for testing. Sites will be launched either as a sub-domain of the orion server, or an alternate IP address when running the server locally.
Click on a site to edit it. This brings up a page that allows you to configure what folders and files from your workspace will appear on the site. Typically you will select a folder in your workspace containing an index.html file, and mount that at the root of the site (“/”).
Client side plugins
Orion now includes a JavaScript plugin architecture, allowing extensions to be added within the Orion client without installing them on the server. Plugins can originate from any web page. A small initial set of extension points is available for customizing the client.
Client preference API
A client side preference API has been introducing for storing settings. Preferences are cached in browser local storage, and synchronized in the background with a preference store on the Orion server. This allows preference access to be fast, but still enables settings to follow a user across different browsers or computers. Client side plugins are now persisted in this new preference store, meaning your installed plugins will stay with you when you switch browsers.
Extension point for navigator commands
A new extension point, fileCommands, allows plug-ins to contribute commands to the navigator. A plug-in can specify how many and what types of files it can work with. The command will be contributed in the navigator item menus. See sampleCommandsPlugin.html for an example.
Customize editor tab size
New API has been added to the Orion editor to allow the displayed size of tabs to be customized.
Git status
Orion now has a page showing Git status for any folder in a git repository. To see it, use the action in the file navigator toolbar.
On the left side of the page you can stage changes,
unstage them all,
and commit with the given message.
Note, that the page will show all changes in the repository which the selected folder is associated with.
Git diff
The Git status page also offers two ways of reviewing changes. An inline (unified) compare viewer can be opened by clicking on a file in the Unstaged/Staged area.
To see the changes side by side you can click the button next to the file. The compare viewer will open in a new window/tab.
Deletions are highlighted with red, added lines with green and changed lines with yellow.
User profile view
By choosing Profile in the user menu you can navigate to the User Profile page. This page provides basic information such as your login, name and last login date. You can use this page to update your user profile, change your password, or delete your account.
Last login date
Your last login date is now recorded. You can see this information on the User Profile page, or when hovering over your login name in the Orion header.
Manage users view
A user with administrator rights can manage users one the Manage Users page. This page allows you to view all users, and to create, delete, or update user accounts.
Anonymous read access
The Orion server can now be configured to allow anonymous read access to all files. This makes it easy for you to share links with friends and colleagues, or to interoperate with other tools on the web. See the Server administration guide for further details.
Git projects by default
By default, all projects on Orion are now Git repositories. You can use Git purely as a local history, or use command line tools to push and pull data from your Orion projects to remote Git clones. See the Server administration guide for details on how to enable this feature for your server.
Configurable project layouts
In previous milestones, projects on the Orion server were all stored in a single folder. This layout is fine for a single user, but on a multi-user system this makes it difficult to enforce access control and disk space policies on a per-user basis. The layout of projects on the server can now be configured via the orion.file.layout server configuration propery. See the Server administration guide for further details. p
by john at March 14, 2011 06:58 PM
Mickael Istria
Pimp your Intro !
What is the first thing you see when you start an RCP product? The splash screen.
What is the second thing you see when you start an Eclipse RCP product? The intro page. This page is the first interaction that the user has with your product. It deserves real effort to ensure that your users feel comfortable when opening the product. Also, you can leverage this page to add dynamic content, that can be used, for example, for direct communication between your company and your users. Then it can become a tool for both user-friendliness and marketing, with a relatively low effort. It’s worth it!
In this post we will describe how we leverage the intro page extensibility and API to develop a more ergonomic and marketing-friendly intro page. Everything you will read here can be found or taken directly from the Eclipse Help contents, but I’ll try to explain it more practically.
The intro page can also be defined using SWT, but in this post we will focus only on using (X)HTML to define intro pages, since it is more appropriate to the use case of “out-sourcing” the intro page to design or marketing.
What can you expect from your (X)HTML intro page
While using (X)HTML, you can also use JavaScript. Although most Java developers are not fond of JavaScript, we must admit that it is a very powerful language when it comes to playing with the content of a web page. JavaScript makes your page dynamic, and is something that most web-oriented people can tweak to create nice effects on your page (feedback, images in a carousel, powerful widgets…).
You also can expect 2-way communication between your intro page and your application:
That means that you’ll be able to trigger actions in your application from your intro page, for instance to create a new file, or open a wizard, or anything your application can do.
And you can also populate your page with data coming from your application. A use-case we chose for Bonita Studio is to show the “Recently opened” files on the intro page. This requires the page to look at the files in the workspace and show the ones last modified. We also use it to show the content of some RSS streams.
With all this stuff, you can create a highly dynamic page well integrated into your application! Here is a video of what we’ve got for the current release of Bonita Open Solution – 5.4.1:
Here is the recipe:
Define an intro for your product
This step is just about overriding the default Eclipse intro page for your product and defining contents for the intro. Since we want the intro page to be easily maintained by the design and marketing teams, we chose to use XHTML to define it. XHTML is much more accessible than Java and SWT for them . In this post, we will only focus only on using HTML or XHTML, skipping SWT.
In one of your plugin.xml files (for instance in the plugin that contains your html page), add:
lt;extension
        point="org.eclipse.ui.intro" gt;
      lt;!-- Declare intro page -- gt;  
      lt;intro
           class="org.eclipse.ui.intro.config.CustomizableIntroPart"
           icon="icons/bonitasoft-icon-16-16-transparent.png"
           id="org.bonitasoft.studio.application.intro"
           label="%openWelcomePage_label" gt;
      lt;/intro gt;
      lt;!-- bind it to your product -- gt;
      lt;introProductBinding
           introId="org.bonitasoft.studio.application.intro"
           productId="org.bonitasoft.studio.product" gt;
      lt;/introProductBinding gt;
    lt;/extension gt;
    lt;extension
        point="org.eclipse.ui.intro.config" gt;
      lt;!-- Define its content -- gt;
      lt;config
           content="content/introContent.xml"
           id="org.bonitasoft.studio.application.configId"
           introId="org.bonitasoft.studio.application.intro" gt;
          lt;presentation
              home-page-id="root" gt;
            lt;implementation
                 kind="html"
                 os="win32,linux,macosx" gt;
            lt;/implementation gt;
          lt;/presentation gt;
      lt;/config gt;
    lt;/extension gt;
This means that for org.bonitasoft.studio.product, you’ll show the intro as defined in content/introContent.xml, starting from the page with id root, in html mode (you can use swt if you want).
As you can see, this extension binds an introContent.xml file to your product. Now, add it to your bundle, along with the html file of the page. Note that the page that will be displayed as intro is the one with id root:
Intro plugin tree, and introContent.xml
Contents of the file
XHTML or HTML
In your introContent.xml, you have 2 ways to reference the file you want to show, depending on the attribute you use to locate the page in the page element of introContent.xml:
url=”myPage.html”
With a url, you will be able to show any HTML or JavaScript you want. Everything will be simply displayed in a web browser. You’ll be able to call some of your application code by clicking links. (See “Links to actions in your application”), however you won’t be able to add contents to that page at runtime depending on your application state. This method is preferable when you don’t need to fill the page with data from your application, since it provides full support for JavaScript.
content=”myPage.html”
The content of your HTML must be valid XHTML. Thus your file can have the same content as any HTML file, except that it has to start with the XHTML header ( lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd” gt; lt;html xmlns=”http://www.w3.org/1999/xhtml” gt;) and all your tags must be closed. If you are generally using Java, you probably often edit XML, then nothing shocking here. (By the way, I do not understand why XHTML is not the de facto standard nowadays…)
Your file must conform to the W3C specification. The W3C validator is very helpful while debugging it.
lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" gt;
lt;html xmlns="http://www.w3.org/1999/xhtml" gt;
lt;head gt;
    lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" / gt;
    lt;title gt;Welcome to Bonita Studio lt;/title gt;
    lt;link href="css/style.css" rel="stylesheet" type="text/css" / gt;
lt;script type="text/javascript" gt;
function setClass(elementId,cssclass)
{
    var e = document.getElementById(elementId);
    if(e != null)
    {
        e.className = cssclass;
        return true;
    }
    return false;
}
...
lt;/script gt;
lt;/head gt;
lt;body onload="initCarrousel();" class="body_custom" gt;
lt;div id="template-gen" gt;
lt;div id="containerCenter" gt;
lt;div id="left" class="left" gt;
lt;div id="col-top" class="col-top" gt;
lt;h1 gt; lt;img src="images/design.png" width="200" height="60" alt="" / gt; lt;/h1 gt;
lt;/div gt;
lt;div id="col-mid" class="col-mid" gt;
lt;div id="col-mid-bg" class="col-mid-bg" gt;
lt;div id="actions" gt;
lt;ul gt;
...
lt;/ul gt;
lt;/div gt;
lt;/div gt;
lt;/div gt;
...
lt;/div gt;
lt;/div gt;
...
lt;/div gt;
lt;/div gt;
lt;/body gt;
Since your XHTML intro page will be displayed in the internal Browser of Eclipse, there is obviously support for JavaScript! Except if you use contentProviders in your page, you have to use the content XML attribute in your introConent.xml instead of the url attribute, and there is currently a limitation for JavaScript support that is reported on bug 332416, that makes impossible to execute JS code that contains “ lt;” or “ amp;”, and possibly others.
However, only the content mode allows you to use contentProviders.
Links to actions in your application
This is well described in the Eclipse help, and is pretty easy to set up. For each action you want to call from your intro page, implement your action as a class that extends IIntroAction. Then, whenever the internal intro web browser reaches the URL http://org.eclipse.ui.intro/runAction?pluginId=org.bonitasoft.studio.intro amp;amp;class=org.bonitasoft.studio.intro.actions.NewProcessAction, the NewProcessAction will be executed.
Then simply add links from your HTML page to your actions:
lt;!-- Simple anchor -- gt;
lt;a href="http://org.eclipse.ui.intro/runAction?pluginId=org.bonitasoft.studio.intro amp;amp;amp;class=org.bonitasoft.studio.intro.actions.NewProcessAction" gt;click me lt;/a gt;
lt;!-- JavaScript-- gt;
lt;div onclick="location.href='http://org.eclipse.ui.intro/runAction?pluginId=org.bonitasoft.studio.intro amp;amp;amp;class=org.bonitasoft.studio.intro.actions.NewProcessAction'" gt;click me lt;/div gt;
Content depending on your application state (contentProvider)
This only works when you reference your page using the content attribute, in your introConfig.xml. The official documentation is here.
The key is to create a class that implements IIntroXHTMLContentProvider. With XHTML, it is generally more comfortable to implement the createContent(String id, Element parent) method. Here is the content provider we use for internationalization of messages in our intro page:
/**
* Copyright (C) 2010 BonitaSoft S.A.
* BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2.0 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see amp;lt;http://www.gnu.org/licenses/ amp;gt;.
*/
package org.bonitasoft.studio.intro.content;
import java.io.PrintWriter;
import org.bonitasoft.studio.intro.Messages;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.intro.config.IIntroContentProviderSite;
import org.eclipse.ui.intro.config.IIntroXHTMLContentProvider;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
/**
* @author Mickael Istria
*
*/
public class I18NContentProvider implements IIntroXHTMLContentProvider {
/* (non-Javadoc)
* @see org.eclipse.ui.intro.config.IIntroContentProvider#init(org.eclipse.ui.intro.config.IIntroContentProviderSite)
*/
public void init(IIntroContentProviderSite site) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.intro.config.IIntroContentProvider#createContent(java.lang.String, java.io.PrintWriter)
*/
public void createContent(String id, PrintWriter out) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.intro.config.IIntroContentProvider#createContent(java.lang.String, org.eclipse.swt.widgets.Composite, org.eclipse.ui.forms.widgets.FormToolkit)
*/
public void createContent(String id, Composite parent, FormToolkit toolkit) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.intro.config.IIntroContentProvider#dispose()
*/
public void dispose() {
}
/* (non-Javadoc)
* @see org.eclipse.ui.intro.config.IIntroXHTMLContentProvider#createContent(java.lang.String, org.w3c.dom.Element)
*/
public void createContent(String id, Element parent) {
Document dom = parent.getOwnerDocument();
Text text = dom.createTextNode(Messages.getMessage(id));
parent.appendChild(text);
}
}
And then, we can include a message from our NLS messages class in the XHTML page using:
lt;contentProvider id="myMessageKey" pluginId="org.bonitasoft.studio.intro" class="org.bonitasoft.studio.intro.content.I18NContentProvider"/ gt;
Examples
All this stuff, and much more, can be found in our SVN repo. You’ll hopefully find some clues and ideas if you’re stuck p
by mickael.istria.eclipse at March 14, 2011 03:25 PM
Kai Toedter
e4 RCP and Styling @ EclipseCon
There are only a few days left until EclipseCon! If you are interested in Eclipse 4.x RCP development and CSS styling (4.x and 3.x), don’t miss our tutorials
Developing Rich Clients with Eclipse 4.x RCP, and
Style It! The Eclipse 4 Styling Tutorial
The screen shot below shows our beloved RCP Mail demo with a bit of CSS styling.
Have Fun!
Kai
Follow me on Twitter
Share this on del.icio.us
Share this on Facebook
Tweet This!
Get Shareaholic
p
by Kai Tödter at March 14, 2011 03:20 PM
Marcel Gorri
Post #14 – Helios SR2 Released – 14 Mar, 2011 – 13h00 (GMT-3)
As part of the DSDP Restructuring process, Sequoyah has moved to Tools project. Hence, the following items have been affected and updated: SVN repository, Bugzilla, IPLogs and web resources in general (download pages, web site, wiki page, blog). Those changes shouldn’t affect Sequoyah users in any way different than reconfiguring SVN access and using different download pages. If you find any problem, please contact us in our mailing list.
(Posted by Marcel Gorri)
p
by sequoyahproject at March 14, 2011 02:01 PM
Jens von Pilgrim
Implement toString with Xtext's Serializer
Xtext uses EMF to generate the model API of the abstract syntax tree (or graph) of a DSL. For all implementation classes, the toString() method is generated. For a simple model element, this default implementation returns a string looking similar to this:
my.dsl.impl.SomeElement@67cee792 (attr1: SomeValue)
Well, this is not too bad. However this looks completely different to my DSL syntax, which may look like this:
SomeValue {
The content;
}
Especially for debugging and logging, I prefer that DSL like output. Since Xtext does not only generates a parser for reading such a text, but also a seralizer for creating the text from a model, I was wondering if that mechanism could be used for the toString method as well. (Actually, Henrik Lindberg pointed out the serializer class -- thank you, Henrik!)
In the following, I describe how to do that. Actually, this is a little bit tricky, and it will cover several aspects of Xtext and the generation process:
use the generated serializer for formatting a single model element
tweak the generation process in order to add a new method
define the body of the newly added method
We will do that by adding a post processor Xtend file, which adds a new operation to the DSL model elements. The body of the operation is then added using ecore annotations. But first, we will write a static helper class implementing the toString method using the serializer.
Use the serializerXtext provides a serializer class, which is usually used for writing a model to an Xtext resource. The Serializer class (in org.eclipse.xtext.parsetree.reconstr) provides a method serialize(EObject obj), which returns a String---this is exactly what we need. This class requires a parse tree constructor, a formatter and a concrete syntax validator. Thanks to google Guice, we do not have to bother about these things. Xtext generates everything required to create a nicley configured serializer for us. What we need is the Guice injector for creating the serializer:
Injector injector = Guice.createInjector(new my.dsl.MyDslRuntimeModule());
Serializer serializer = injector.getInstance(Serializer.class);
Now we could simply call the serialize method for a model element (which is to be an element of the DSL):
String s = serializer.serialize(eobj);
Since this may throws an exception (when the eobj cannot be successfully serialized, e.g., due to missing values), we encapsulate this call in a try-catch block. Also, we create a helper class, providing a static method. We also use a static instance of the serializer.
Since this helper class is only to be used by the toString methods in our generated implementation, we put it into the same package.
package my.dsl.impl;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parsetree.reconstr.Serializer;
import com.google.inject.Guice;
public class ToString {
private static Serializer SERIALIZER = null;
private static Serializer getSerializer() {
if (SERIALIZER == null) { // lazy creation
SERIALIZER = Guice.createInjector(new my.dsl.MyDslRuntimeModule())
.getInstance(Serializer.class);
}
return SERIALIZER;
}
public static String valueOf(EObject eobj) {
if (eobj==null) {
return "null";
}
try {
return getSerializer().serialize(eobj);
} catch (Exception ex) { // fall back:
return eobj.getClass().getSimpleName()+'@'+eobj.hashCode();
}
}
}
Post processingNow we have to implement the toString() method of our model classes accordingly. That is, instead of the default EMF toString method, we want to call our static helper method for producing the String.
A generic solution, which can not only be applied for adding the toString method but for all kind of operations, is to use a post processor extension (written in Xtend) to add new operations to the generated ecore model. The overall mechanism is described in the Xtext documentation. We have to write an Xtend extension matching a specific naming convention: lt;name of DSL gt;PostProcessor.ext. In our exampel that would be MyDslPostProcessor.
The easy thing is to add a new operation to each classifier:
import ecore;
import xtext;
process(GeneratedMetamodel this) :
this.ePackage.eClassifiers.addToStringOperation();
create EOperation addToStringOperation(EClassifier c):
... define operation ... - gt;
((EClass)c).eOperations.add(this);
For defining the operation, we need:
the return type of the operation
the body of the operation
The return type is an EString (which will result in a simple Java String). In EMF, we have to set the type via EOperation.setEType(EClassifier). That is, we need the classifier of EString. With Java, this would be no problem: EcorePackage.eINSTANCE.getEString().
Unfortunately, we cannot directly access static fields from Xtend. At least, I do not know how that works. Fortunately, we can substitute EcorePackage.eINSTANCE with calling a static method of EcorePackageImpl. This static method can then be defined as a JAVA extension in Xtend:
EPackage ecorePackage():
JAVA org.eclipse.emf.ecore.impl.EcorePackageImpl.init();
Note that we return an EPackage instead of the EcorePackage. I assume this is necesssary because we use the EMF metamodel contributor and EcorePackage is not available then. We can now set the EString classifier as return type of the operation: setEType(ecorePackage().getEClassifier("EString"))
Now, we need the body of the operation. Ecore does not directly support the definition of a body, that is there is no field in EOperation for setting the body. Fortunately, we can exploit annotations for defining the body. The default EMF generator templates look for annotations marked with the source value "http://www.eclipse.org/emf/2002/GenModel". The key of the annotation must be "body", and the value of the annotation is then used as the body of the operation. In the body, we simply call our static helper method for producing the DSL-like string representation.
The complete post processor extensions looks as follows:
codeimport ecore;
import xtext;
process(GeneratedMetamodel this) :
this.ePackage.eClassifiers.addToStringOperation();
EPackage ecorePackage():
JAVA org.eclipse.emf.ecore.impl.EcorePackageImpl.init();
create EOperation addToStringOperation(EClassifier c):
setName("toString") - gt;
setEType(ecorePackage().getEClassifier("EString")) - gt;
eAnnotations.add(addBodyAnnotation(
'if (eIsProxy()) return super.toString(); return ToString.valueOf(this);')) - gt;
((EClass)c).eOperations.add(this);
create EAnnotation addBodyAnnotation(EOperation op, String strBody):
setSource("http://www.eclipse.org/emf/2002/GenModel") - gt;
createBody(strBody) - gt;
op.eAnnotations.add(this);
create EStringToStringMapEntry createBody(EAnnotation annotation, String strBody):
setKey("body")- gt;
setValue(strBody) - gt;
annotation.details.add(this);code
If you (re-) run the GenerateMyDSL workflow, the EMF toString() implementations are replaced by our new version. You can test it in a simple stand alone application (do not forget to call doSetup in order to configure the injector):
public static void main(String[] args) {
MyDslStandaloneSetup.doSetup();
MyElement = MyDslFactory.eINSTANCE.createElement();
e.setAttr1("Test");
e.setAttr2("Type");
System.out.println(e.toString());
}
Closing remarks
You probably do not want to really replace all toString methods with the serializer output, as this would create rather long output in case of container elements. In that case, you can add the new operation only to selected classifiers, or use the (generated) Switch-class to further customize the output.
Although the solutions looks straight forward, it took me some time to solve some hidden problems and get around others:
How to create the serializer using the injector -- and how to create the injector in the first place
How to access a static Java method from Xtend without too much overhead. Would be great if static fields could be accessed from Xtend directly.
How to use the post processor with the JavaBeans metamodel contributor. If I switch to the JavaBeans metamodel, my extension didn't get called anymore.
I'm still wondering where "EStringToStringMapEntry" is defined. I "copied" that piece of code from a snippet I wrote a couple of months ago, and I have forgotten how I found that solution in the first place.
Sorry, but I have to say it: The Xtend version 1.0.1 editor is crap (e.g., error markers of solved problems do not always get removed). But I've heard there should be a better one available in version 2 ;-)
by Jens v.P. (noreply@blogger.com) at March 14, 2011 01:15 PM
Eclipse Announcements
EclipseCon Starts in Less Than 1 Week: Register Today
EclipseCon 2011 starts in 1 week on March 21 in Santa Clara, CA. Make sure you register in advanced to take advantage of the best prices.
March 14, 2011 12:50 PM
Andrei Loskutov
My new full time project
[Update: first iteration after 11 months: we can walk]
p
by Andrei Loskutov at March 14, 2011 07:35 AM
Ken Gilmer
New steb release: 0.5.0
Shell to Linux Bridge has a new feature and a tweak.  The tweak is no log output for socket errors.  I often run multiple instances of eclipse and don’t want to sort through these messages when I’m looking for something else.  The feature is a “project mode” in which, an Eclipse project is generated for a given directory.  This can be handy for evaluating a new package, or simply browsing some source files that are not apart of a formal, language-oriented project in your workspace.  With my netcat-based client, I type from the terminal:
$ steb -p /tmp/myproject
And steb picks this up, creates a new general project named “myproject”, and recursively adds all child files and folders.  Be careful when removing these projects from Eclipse, if you elect to have Eclipse delete the files…that’s exactly what it will do!
As always the updatesite is: http://angelshare.org/org.steb.updatesite
The steb client shell script is available at: http://angelshare.org/org.steb.updatesite/steb
p
by kengilmer at March 14, 2011 05:25 AM
March 13, 2011
Stephan Herrmann
Null annotations: prototyping without the pain
So, I’ve been working on annotations @NonNull and @Nullable so that the Eclipse Java compiler can statically detect your NullPointerExceptions already during compile time (see also bug 186342).
By now it’s clear this new feature will not be shipped as part of Eclipse 3.7, but that needn’t stop you from trying it, as I have uploaded the thing as an OT/Equinox plugin.
Behind the scenes: Object Teams
Today’s post shall focus on how I built that plugin using Object Teams, because it greatly shows three advantages of this technology:
easier maintenance
easier deployment
easier development
Before I go into details, let me express a warm invitation to our EclipseCon tutorial on Thursday morning. We’ll be happy to guide your first steps in using OT/J for your most modular, most flexible and best maintainable code.
Maintenance without the pain
It was suggested that I should create a CVS branch for the null annotation support. This is a natural choice, of course. I chose differently, because I’m tired of double maintenance, I don’t want to spend my time applying patches from one branch to the other and mending merge conflicts. So I avoid it wherever possible. You don’t think this kind of compiler enhancement can be developed outside the HEAD stream of the compiler without incurring double maintenance? Yes it can. With OT/J we have the tight integration that is needed for implementing the feature while keeping the sources well separated.
The code for the annotation support even lives in a different source repository, but the runtime effect is the same as if all this already were an integral part of the JDT/Core. Maybe I should say, that for this particular task the integration using OT/J causes a somewhat noticable performance penalty. The compiler does an awful lot of work and hooking into this busy machine comes at a price. So yes, at the end of the day this should be re-integrated into the JDT/Core. But for the time being the OT/J solution well serves its purpose (and in most other situations you won’t even notice any impact on performance plus we already have further performance improvements in the OT/J runtime in our development pipeline).
Independent deployment
Had I created a branch, the only way to get this to you early adopters would have been via a patch feature. I do have some routine in deploying patch features but they have one big drawback: they create a tight dependency to the exact version of the feature which you are patching. That means, if you have the habit of always updating to the latest I-build of Eclipse I would have to provide a new patch feature for each individual I-build released at Eclipse!
Not so for OT/Equinox plug-ins: in this particular case I have a lower bound: the JDT/Core must be from a build ≥ 20110226. Other than that the same OT/J-based plug-in seemlessly integrates with any Eclipse build. You may wonder, how can I be so sure. There could be changes in the JDT/Core that could break the integration. Theoretically: yes. Actually, as a JDT/Core committer I’ll be the first to know about those changes. But most importantly: from many years’ experience of using this technology I know such breakage is very seldom and should a problem occur it can be fixed in the blink of an eye.
As a special treat the OT/J-based plug-in can even be enabled/disabled dynamically at runtime. The OT/Equinox runtime ships with the following introspection view:
Simply unchecking the second item dynamically disables all annotation based null analysis, consistently.
Enjoyable development
The Java compiler is a complex beast. And it’s not exactly small. Over 5 Mbytes of source spread over 323 classes in 13 packages. The central package of these (ast) comprising no less than 109 classes. To add insult to injury: each line of this code could easily get you puzzling for a day or two. It ain’t easy.
If you are a wizard of the patches feel free to look at the latest patch from the bug. Does that look like s.t. you’d like to work on? Not after you’ve seen how nice amp; clean things can be, I suppose.
First level: overview
Instead of unfolding the package explorer until it shows all relevant classes (at what time the scrollbar will probably be too small to grasp) a quick look into the outline suffices to see everything relevant:
Here we see one top-level class, actually a team class. The class encapsulates a number of role classes containing the actual implementation.
Navigation to the details
Each of those role classes is bound to an existing class of the compiler, like:
span style="color: #7F0055; font-weight: bold;"protectedspan span style="color: #7F0055; font-weight: bold;"classspan MessageSend span style="color: #7F0055; font-weight: bold;"playedByspan MessageSend span style="color: #000000;"{span ...
(Don’t worry about identical names, already from the syntax it is clear that the left identifier MessageSend denotes a role class in the current team, whereas the second MessageSend refers to an existing base class imported from some other package).
Ctrl-click on the right-hand class name takes you to that base class (the packages containing those base classes are indicated in the above screenshot). This way the team serves as the single point of reference from which each affected location in the base code can be reached with a single mouse click - no matter how widely scattered those locations are.
When drilling down into details a typical roles looks like this:
The 3 top items are  ”callout” method bindings providing access to fields or methods of the base object. The bottom item is a regular method implementing the new analysis for this particular AST node, and the item above it defines a  ”callin” binding which causes the new method to be executed after each execution of the corresponding base method.
Locality of new information flows
Since all these roles define almost normal classes and objects, additional state can easily be introduced as fields in role classes. In fact some relevant information flows of the implementation make use of role fields for passing analysis results directly from one role to another, i.e., the new analysis mostly happens by interaction among the roles of this team.
Selective views, e.g., on inheritance structures
As a final example consider the inheritance hierarchy of class Statement: In the original this is a rather large tree:
Way too large actually to be fully unfolded in a single screenshot. But for the implementation at hand most of these
classes are irrelevant. So at the role layer we’re happy to work with this reduced view:
This view is not obtained by any filtering in the IDE, but that’s indeed the real full inheritance tree of the role class Statement. This is just one little example of how OT/J supports the implementation of selective views. As a result, when developing the annotation based null analysis, the code immediately provides a focused view of everything that is relevant, where relevance is directly defined by design intention.
A tale from the real world
I hope I could give an impression of a real world application of OT/J. I couldn’t think of a nicer structure for a feature of this complexity based on an existing code base of this size and complexity. Its actually fun to work with such powerful concepts.
Did I already say? Don’t miss our EclipseCon tutorial
Hands-on introduction to Object Teams
See you at
p
by stephan at March 13, 2011 11:20 PM
Scott Lewis
ECF 3.5
ECF 3.5 has just been released.New and NoteworthyFull implementation of OSGi Remote Services Admin (RSA). Chapter 122 from the OSGi enterprise specXML-RPC remote servicesECF on FelixDocumentation Project for community-contributed documentation
by Scott Lewis (noreply@blogger.com) at March 13, 2011 11:11 PM
Roy Ganor
Easter Egg for Zend/PHP Developers
One among many new interesting Zend Server 5.1 features is an open "RESTful Web API that allows automation of the management and deployment of Zend Server and Zend Server Cluster Manager, and integration with other Zend or 3rd party software". It basically provides an easy way to control your deployment of Web Servers remotely and set it up correctly for your application when you scale up and down. For example one can remotely configure new Web application server, reset or even build a fully functional cluster by utilizing this new open API.Since most of the configuration and deployment tools these days have a Java-based plugins mechanism (such as Jenkins / Eclipse) I thought it would be cool if there will be a way to extend these tools with some of the new Web API features. I am proud to introduce Zend WebAPI project that is hosted in Google Code. Zend Web API SDK for Java provides a Java API for Zend Server infrastructure services, making it even easier for developers to build applications that tap into the scalable, and reliable Zend Server product.You can find a getting started page that explains how to work with this library. This tutorial is based on the following steps:1. Signing up for Zend Web API Services2. Getting your Zend Web API Security Credentials3. View Your Zend Web API Security Credentials4. Using the Zend Web API SDK for Java5. To run a sample you can use this code:span style="color: #3f5fbf;"/**spanbr /span style="color: #3f5fbf;" spanspan style="color: #7f9fbf; font-weight: bold;"*spanspan style="color: #3f5fbf;" Create the credential objectspanbr /span style="color: #3f5fbf;" */spanbr /WebApiCredentials credentials = new BasicCredentials(KEY_NAME, SECRET_KEY)span style="color: #808030;";spanbr /br /span style="color: #3f5fbf;"/**spanbr /span style="color: #3f5fbf;" spanspan style="color: #7f9fbf; font-weight: bold;"*spanspan style="color: #3f5fbf;" Creates the Web API client objectspanbr /span style="color: #3f5fbf;" */spanbr /span style="color: #800000; font-weight: bold;"finalspan WebApiClient webApiClient = new WebApiClient(credentials, HOST)span style="color: #808030;";spanbr /br /span style="color: #3f5fbf;"/**spanbr /span style="color: #3f5fbf;" spanspan style="color: #7f9fbf; font-weight: bold;"*spanspan style="color: #3f5fbf;" Retrieve system infospanbr /span style="color: #3f5fbf;" */spanbr /SystemInfo systemInfo = webApiClient.getSystemInfo()span style="color: #808030;";spanbr /br /span style="color: #3f5fbf;"/**spanbr /span style="color: #3f5fbf;" spanspan style="color: #7f9fbf; font-weight: bold;"*spanspan style="color: #3f5fbf;" Print license info from retrieved system infospanbr /span style="color: #3f5fbf;" */spanbr /System.out.println("License order number:" + systemInfo.getLicenseInfo().getOrderNumber())span style="color: #808030;";spanbr /I am really anxious to see what tools we will built on top of these open API that can make a difference in the world of high availability demand from the market.Thanks to Shahar Evron (@shevron) who has guided me through the API aspects!If you find this useful I would be happy to get some feedback and even new contribution!As an example for utilizing this library I created an Eclipse plugin that is used as a "remote controller" for your Zend Server
by Roy Ganor (ganoro@gmail.com) at March 13, 2011 05:11 PM
Max Rydahl Andersen
Demostración básica
Puesto que JBPM5 es un producto en construcción, la demostración es muy básica, pero nos muestra los componentes esenciales. Requisitos previos Se requiere tener instalados (copiados) jdk 1.5+ y ant 1.7+ (configuradas las variables JAVA_HOME y ANT_HOME, con las respectivas rutas a las carpetas bin en donde se encuentran los ejecutables) Los enlaces son:http://www.oracle.com/technetwork/java/javase/downloads/index.htmlhttp://ant.apache.org Descarga Para facilitarnos el trabajo se cuenta con un archivo para instalación que hay que descargar en esta dirección: http://sourceforge.net/projects/jbpm/files/jBPM%205/jbpm-5.0-Final/jbpm-5.0.0-installer-full.zip/download Este archivo hay que descomprimir en una carpeta o directorio. Este archivo no incluye algunas aplicaciones como Eclipse y el servidor de aplicaciones de Jboss, por lo que el momento de instalar el demo, es necesario contar con una conexion a Internet para que descargue estos archivos. En caso de tenerlos ya descargados es necesario copiarlos en la carpeta de instalación bajo la carpeta o directorio lib. Los archivos que se incluyen en el instalador son:  designer-1.0.0.047-SNAPSHOT-jboss.war drools-5.2.0.M1-eclipse-all.zip drools-5.2.0.M1-guvnor.war jbpm-5.0.0-bin.zip jbpm-5.0.0-eclipse-all.zip jbpm-5.0.0-gwt-console.zip readme.txt los que se descargan en la instalacion de la demostración:  slf4j-jdk14-1.5.11.jar birt-runtime-2_3_2_2.zip eclipse-jee-helios-win32.zip GEF-SDK-3.6.1.zip jboss-5.1.0.GA.zip ademas para la demostración se descarga otro archivo h2.jar que se ubica en la carpeta de instalacion bajo db/driver Instalación y ejecución Para instalar se debe ejecutar la instrucción:    ant install.demoPara ejecutar la demostración:    ant start.demo Esta instrucción última arranca el motor de flujos, el servidor de objetos Guvnor (que incluye el diseñador Oryx), la consola de monitoreo y la herramienta para desarrollo Eclipse con los aditamentos para diseñar flujos JBPM. En eclipse se abre el ejemplo básico de esta forma:Podemos ejecutar la clase ProcessTest y el resultado se mostrará en la consola como una tarea personal. Tambien podemos ejecutar una instancia del flujo utilizando la consola y el resultado se mostrará de esta manera: En el caso de la demostración no se esta utilizando el servidor de objetos Guvnor, que lo utilizaremos cuando instalemos los flujos que desarrollemos. Para facilitar la comprensión de las herramientas que integran JBPM5 existen los enlaces a las pantallas de ejecución:Eclipse: http://people.redhat.com/kverlaen/install-eclipse-jbpm.swfConsola: http://people.redhat.com/kverlaen/install-gwt-console-jbpm.swfGuvnor: http://people.redhat.com/kverlaen/install-guvnor-jbpm.swf Finalmente para terminar la ejecución del demo debemos ejecutar la instrucción:    ant stop.demo
by fabianpc (do-not-reply@jboss.com) at March 13, 2011 01:31 PM
March 12, 2011
Robert Konigsberg
Workspace Mechanic 0.0.6 released to the testing update site
I think enough progress has been made on the Workspace Mechanic for Eclipse to give an update. Most of this you already know if you subscribe to the mailing list.There is now an update site for stable releases and one for testing releases.The Workspace Mechanic for Eclipse no longer depends on org.mortbay for JSON parsing. It also no longer depends on Mylyn because it has its own popup.Tasks may be specified by URL. Actually, it's slightly more complicated than that, but you can read all about it in the design document, which will eventually be turned in to proper documentation. Prettier icons.I've published tests for the project, and added many more in the last month. Lots of issues closed - too many to mention.I saved the most exciting thing for last. Michael Pellaton is giving a talk at EclipseCon which mentions the Workspace Mechanic for Eclipse, as well as his project: Eclipse Team Etceteras. If you're at EclipseCon, check it out.Please try it out by installing it from the testing repository, and be sure to provide feedback!Update: 11:07PM I've updated it to 0.0.7, adding relative URI task paths and supporting LASTMOD preference tasks supplied by URI.
by Robert Konigsberg (noreply@blogger.com) at March 12, 2011 04:07 AM
March 11, 2011
Jan Kohnlein
Did I mention EclipseCon?
I just realized that I haven't blogged on this year's EclipseCon yet. Time to do that. You might have guessed it:As a committer to several Eclipse projects, I am really looking forward to meeting "the family". It's always been big fun and I guess it will be the same this year. But the main reason for going there is of course:Together with Sebastian I will give a talk on What's cooking in Xtext 2.0 on Tuesday at 2pm. We're eager to show you all the new features of Xtext we've been working on during the last months, especially the expression language library Xbase and the code generation langauge Xtend.You should not miss our tutorial Pragmatic DSL Design with Xtext, Xbase and Xtend 2 on Thursday at 10:30am. Sven will join us to give you a walk through tutorial on a modern way of creating DSLs. We just had another rehearsal on this one and I promise you it will be a real burner. All of that wouldn't have been possible without the support from the company we're working for: itemis. Into the bargain we're bronze sponsors for this years conference.It is great to work for a company that really lives open source.
by Jan Köhnlein (noreply@blogger.com) at March 11, 2011 03:52 PM
Mariot Chauvin
Graphical modeling @ EclipseCon 2011
If your read this blog entry, you probably already heard about EMF, but you may still wondering how modeling and all this meta stuffs could help you in your daily developer work.If you are in this case, then you have to attend to the EMF tutorial for at the next EclipseCon. In the first part you will have time to discover the basics of EMF on a case sudy. In the second part you will have an overview of additional powerful technologies, such as EEF and GMF, 2 projects I will present related to being able to create and modify a model in a graphical manner.EEF is a tool which enables one to generate sexy properties, but not only. It's a framework, which could be use to generate several kinds of user interface to edit your model.It has been designed to be compatible with validation and transaction existing EMF components. Let's have a look to to see how you could easily generate an eclipse form editor in one click from your metamodel.Even EEF if is a quite young project, it is already used in the industry and arouses interest with frequent questions on the newsgroup.By the way EEF has been nominated and is finalist for the eclipse community award 2001 in the most innovative project category.GMF is a project dedicated to the creation of diagram editors. It is split in 2 components, the runtime and the tooling.The runtime connects GEF and EMF. It plugs your EMF model as the model in the GEF model-view-controler architecture and provides a diagram metamodel.The tooling enables you to generate an editor based on the runtime.The runtime has been designed for extensibility, you could extend it or redefine some parts very simply.The tooling uses code templates, that you could extend to generate custom code. This enables you to keep your GMF models and the generated code always synchronized.That's all for this EEF and GMF preview, if you want to know more, come to the tutorial !
by Mariot Chauvin (noreply@blogger.com) at March 11, 2011 03:36 PM
Donald Ralph
Welcome Inspire Technologies GmbH to the Eclipse Foundation
Inspire Technologies GmbH has just joined the Eclipse Foundation as a Solution Member.The company's offices are located in the beautiful black-forest town St. Georgen in Germany. The company develops and sells Business Process Management (BPM) Software. The centrepiece is the product suite BPM inspire which enables pragmatic implementation of enterprise wide business process management solution. BPM inspire supports Partner amp; Customers as a holistic Business Process Management-Platform with the modelling, implementing, executing and monitoring business processes. Inspire Technologies GmbH believes that using BPM inspire will help to avoid delays, deviations and breaks in implementing complex business processes. Users can benefit from linking various IT applications and locations, and embed their documents and data streams in the requirements of the business processes. We appreciate Inspire Technology's membership and look forward to many joint activities in the growing market of BPM solutions.
by Ralph Mueller (noreply@blogger.com) at March 11, 2011 01:00 PM
Holger Voormann
Fresh Splash
The world is moving on fast. Today, applications are Web 2.0, Android or iOS Apps. Only stone-age minded software developers like me still create desktop applications. In contrast to apps and Web applications, desktop applications take some time to start up and show a splash screen, an artwork created with love to fill the time with anticipating an application that serves only you on a real computer.
Last week I newly created a splash screen for an RCP application. Since the last release main parts had been changed under the hood, and the new splash screen was supposed to make the user aware of the new technology. The splash screen was quickly done but I continued designing splash screen backgrounds. I tried – only for fun – different filters of GIMP and combining different layers. In the end I had created 14 splash screen templates:
Feel free to use them to refresh the look of your RCP application also.
PS: To avoid manually updating a version number on the splash screen, you can either implement a Splash Handler or integrate my simple Ant task DrawString in your build process.
p
by howlger at March 11, 2011 05:17 AM
March 10, 2011
Dave Carver
Turmeric Eclipse Plugin Refactoring
One of the items we are going to be addressing in the next several weeks, are some underlying code refactorings for the the Turmeric SOA Eclipse Plugins.   Right now support for the Maven Standard directory structures when creating a new project is non-existent.   Prior to open sourcing the project, the plugins only supported and knew how to deal with eBay’s legacy data structure.   Unfortunately, there are a LOT of hard coded assumptions on where things are to be created.
Legacy also has its own build system instead of leveraging the Maven build system.  So there is some special logic added to the turmeric-maven-plugin to avoid being run in Eclipse when generating code.   This will be corrected as we move forward.   The goal is to fix several design issues, improve the overall ability for adopters to add their own layouts and locations, as well as just make things a better user experience.
If you have been using the plugins, and have been kicking Turmeric’s tires, please do provide us some feed back on the forum.   We have also created a Wiki page in which we will be capturing the refactoring and design requirements.   We plan to have this ready before Turmeric 1.0.0 is released.
p
by kingargyle at March 10, 2011 03:56 PM
Jonas Helming
New Logos for EMFStore and EMF Client Platform
...long story short: we are proud to present the new logos for the EMFStore and the EMF Client Platform:EMFStoreEMF Client Platform
by UNICASE (noreply@blogger.com) at March 10, 2011 02:58 PM
Eclipse Riena
Riena: Fighting listeners with annotations
It is a common pattern to observe object state changes with listeners. We find it everywhere: SWT, Swing, .. , and also in Riena.
Within the controllers in Riena you have to create code that reacts on several events, e.g. you need to perform some special actions when a ridget looses its focus or triggers an action.
To do this you have to implement a listener which is typically an anonymous class and register it with the ridget. This happens usually in your configureRidgets() in the controller.
Typically it looks like this:
final IActionRidget buttonReset = getRidget("buttonReset");
buttonReset.addListener(new IActionListener() {
public void callback() {
carConfig.reset();
compositeCarModel.updateFromModel();
compositeCarExtras.updateFromModel();
compositeCarWarranty.updateFromModel();
compositeCarPlates.updateFromModel();
}
});
Yes, it is feasible! Yes, everyone is used to do it this way! But life can be a little bit easier.
Annotations to the rescue!
To achieve the above you just need to create a method in your controller:
@OnActionCallback(ridgetId = "buttonReset")
public void onReset() {
carConfig.reset();
compositeCarModel.updateFromModel();
compositeCarExtras.updateFromModel();
compositeCarWarranty.updateFromModel();
compositeCarPlates.updateFromModel();
}
The ridgetId parameter in the annotation links to the eavesdropped ridget.
Of course you still may need to retrieve the ridget in your configureRidgets(), .e.g. to set some text.
Currently Riena supports these annotations that react on ridget events.
OnActionCallback
OnDoubleClick
OnFocusGained
OnFocusLost
OnPropertyChange
OnSelectionChange
But there is still more!
Riena now supports also annotations for methods to react on life cycle events within your controller (it has to be a INavigationNodeController controller).
If you were used to write it like this (within the configureRidgets())
getNavigationNode().addListener(new SubModuleNodeListener() {
@Override
public void activated(final ISubModuleNode source) {
updateAllRidgetsFromModel();
}
});
it can now become
@OnNavigationNodeEvent(event = Event.ACTIVATED)
public void activated() {
updateAllRidgetsFromModel();
}
The event parameter in the annotation denotes the corresponding event method in the ISimpleNavigationNodeListener interface. Each of the event methods has its corresponding Event enum constant.
The annotated methods may either have no parameters or the same parameters as the corresponding event method from the listener interface.
Well, that’s it!
Soon available with Riena 3.0.0.M6 p
by Stefan Liebig at March 10, 2011 02:41 PM
Paul Webster
A working state from a p2 update
In one of our recent build/update cycles we made a change that was source compatible but not binary compatible.  In this case (there are no errors anywhere) it's easy to miss that you need to tag the consuming bundle as well.The build ran fine, but the previous build's consuming bundle was used when creating the update site (since we didn't tag that bundle, the qualifier did not change).When an unsuspecting co-worker updated to the latest build, his system would no longer start at all with a number of java.lang.NoSuchMethodErrors.So how do you fix your install, given that you can't even bring up the workbench?  As it turns out, p2 can help you.  The SDK profile saves its state on each installation change.  You can usually find this information in:bash-4.1$ ls eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profilebr /1299467192263.profile.gz  1299499722731.profile.gz  1299761082054.profile.gzbr /1299467192395.profile.gz  1299499723473.profile.gz  1299761705917.profile.gzbr /1299467285942.profile.gz  1299499764937.profile.gz  state.propertiesbr /1299467287251.profile.gz  1299500329056.profile.gzThen you just need to pick the last stable version of your installation, and you can revert your install and restart your system. eclipse/eclipse -noSplash \br /-application org.eclipse.equinox.p2.director \br /-repository file:$(pwd)/eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile \br /-profile SDKProfile \br /-revert 1299499722731br /Obviously you'll need to use a different eclipse install and the necessary -destination arguments if the corrupt bundle is *in* the director part of your install's p2 framework :-)The director won't run this command without specifying a -repository, but it's not important which one you use so I used the installations own SDKProfile repository.For more director information see p2 director.
by paulweb515 (noreply@blogger.com) at March 10, 2011 01:08 PM
Donald Smith
EclipseCon QR-CodeBreakers Game
The fun diversion game at EclipseCon this year is EclipseCon QR-CodeBreakers. Grab a QR Code Scanner for your favorite mobile device before the conference to make sure you're ready to play.Once again there will be some great prizes for those playing along including an XBOX 360 courtesy of Microsoft, and Droid Pro (Global capable) courtesy of Motorola and a bevy of Amazon Gift Certificates courtesy of the Eclipse Foundation.Full details of the game can be found on the EclipseCon website. Not sure what you're looking for? Here's a sample QR-Code, how many can you find at EclipseCon?- Don
by Donald Smith (noreply@blogger.com) at March 10, 2011 01:05 AM
March 09, 2011
Gorkem Ercan
MTJ release 1.1.2 is available
Together with the rest of the Eclipse Helios SR2 release, MTJ project has also made its 1.1.2 release available. Unlike most Eclipse projects MTJ project introduces new features on SR releases as well. You can find the information on the new features in the new amp; noteworthy page. Equally important to the features is the list of the bugs that were fixed in this release.Please note that MTJ project recently had a project move. As part of the move, the URL for its web site has been changed to http://www.eclipse.org/mtj the changes have also affected the update sites and the download sites and the /dsdp/ has been removed from them. Project team has updated the website and all the references that we are aware of, however if you notice that some link has been missed and is still pointing to the old URLs please report them.
by gorkem (noreply@blogger.com) at March 09, 2011 01:35 PM
Stephane Bouchet
How to enhance an eclipse component ?
Hi,Today, i will not talk about EEF.I am using for a while the b3 aggregator component, which is very powerfull to aggregate p2 repositories in a single place. It could even be used in headless mode, so you can produce an aggregated update site inside a continuous server !So i was wondering if i can use it as a mirror application, because i love the editor and its features. i tried to mirror swtbot repository along with helios and eclipse update sites.Unfortunately, it produce only a repository with the last version of the artifacts, so i asked into the b3 newsgroup forum if such a way to do is possible.I searched a bit before posting my question and found several peoples asking for the same problem, and having few answers.I know that Thomas Hallgren ( b3 co-lead ) is replying very quickly into these forums ( not as quickly as ed, though :D ) so i created a feature request into bugzilla, because it was clearlynot a feature b3 supports yet.This morning i was a little surprised to see some comments and propositions to my initial request, sign of an awaiting feature of the community.The interesting thing with such an open source community is that initialy b3 is not intended to do mirroring but build, and ability to propose new features is always possible.Open source make me happy some times :)Thanks thomas and b3 team to be responsive !
by Stéphane Bouchet (noreply@blogger.com) at March 09, 2011 10:59 AM
Ed Merks
The Universe is Unfair
Fairness is a highly subjective thing. It's not simply about everyone being treated equal, it's about everyone being treated in a way that's proportional to need, merit, or some combination of the two. The universe is objectively blind to need and merit. It rains fortune and misfortune on the guilty and the innocent with equal abandon. Given that the universe is unfair, we must intervene to rectify the situation and be prepared that when we do, it will be, as Dave points out, contentious.So it is with divvying out the Friends of Eclipse funds. Scott suggests we give up. Just kidding; I'm distorting his words by taking them out of context. What's life without a bit of humor? He actually suggests we give up centralized control. Fortunately he doesn't mean we should have a vote each and every time. We all know how contentious voting can be and how easily one can stack the vote with all your best friends. It's more likely to resemble a popularity contest than anything else.Concretely, in 339239, Scott suggests that the individuals donating the money should make the decision. I'm not completely sure what this would entail. I think the suggestion is that the donor delegates the spending decision to a specific project's leadership, sort of like ear marking it, perhaps via a huge drop-down list of all projects. That certainly sounds very fair, at least to the donor.Let's consider though just for a moment if donor earmarking is likely to be fair in the grand scheme of things. I hope the Aardvark project, being early in the list of choices, doesn't get most of the donations! I hope projects with poor documentation, builds, and testing get some money to help fix that. I hope projects that are used in the many other projects, but aren't apparent in the user interface, get lots of donations. In fact, I hope it's not just a few sexy projects that get the lion's share of the money. Simply put, I hope the donors will be fair. I doubt it though. I fear it will just be a case of the rich getting richer. Personally, I'd rather have people I trust to do what's fair making the decisions.
by Ed Merks (noreply@blogger.com) at March 09, 2011 12:34 AM
March 08, 2011
BioClipse
Bioclipse meets OpenTox
Barry Hardy wrote a very nice post about when he encountered the Tamboti Tree, a very toxic tree, and his experience when using Bioclipse and OpenTox to assess its toxicity. Read the full article and watch the movie here: http://barryhardy.blogs.com/theferryman/2011/03/the-tamboti-tree-use-case-bioclipse-meets-opentox.html
by Ola Spjuth (noreply@blogger.com) at March 08, 2011 10:24 PM
Boris Bokowski
Don't forget to vote!
If you are an Eclipse committer, please take a few minutes of your scarce time to vote in the Eclipse Board elections. There are only three days left, voting ends on Friday March 11th at 3pm Eastern time!
If you are an individual (not employed by a member company) committer: Please click here, and sign and send the membership agreement to the Eclipse Foundation. This will enable you to vote in the upcoming board member elections. There is no cost, and as an added bonus, the Eclipse Foundation is now sending really nice thank-you e-mails to those individual committers who become members.
Why should you do that? Let me try to explain with a diagram:
(thanks, diagrammr!)
Here is the same information in text form, copied from the election process web page:
Each Committer Member gets one vote. Note that committers who are employees of Member companies have all the rights and privileges (including voting) of a Committer Member.
Individual committers must join the Eclipse Foundation as Committer Members by signing the Membership Agreement in order to be allowed to vote.
All committers who are employees of a single company have their votes collapsed into a single vote in the committer elections.
That's right: every vote from an individual committer member (someone who signed the individual membership agreement) is worth exactly the same as the votes from all EclipseSource committers combined, or all Oracle committers combined, or all itemis committers combined, ... you get the idea.
That seems a little bit weird, but it sort of makes sense considering the situation back when the rules were made: IBM had way more Eclipse committers than everybody else, and there was a risk that they would determine the committer representatives, who then could be seen as voting in favour of IBM - leading to an imbalance at the board of directors. So when you think about it, the rules ensure that the committer representatives election is truly independent of any potential company interests.
So, to repeat, if you are an individual (not employed by a member company) committer: Please click here, and sign and send the membership agreement to the Eclipse Foundation. It's free (of charge), it will enable you to vote in the upcoming board member elections, and as an added bonus, the Eclipse Foundation is now sending really nice thank-you e-mails to those individual committers who become members.
More votes mean more weight for the committer representatives on the Eclipse Board of Directors. And if you are an individual committer, your vote weighs a lot.
Thank you!
by Boris Bokowski (noreply@blogger.com) at March 08, 2011 09:09 PM
Dave Carver
Clean Code irk
Say you have something like the following in your code:
boolean typeFolding = false;
/**
* Gets the status of type folding.
*/
public boolean getTypeFolding() {
return this.typeFolding;
}
/**
* Sets the status of type folding.
* @param typeFolding true or false if type folding should be enabled or not.
*/
public void setTypeFolding(boolean typeFolding) {
this.typeFolding = typeFolding;
}
The above is pretty basic and is probably used even in your own code. While the above works, a more meaningful API could be something like the following.
boolean typeFolding = false;
/**
* Enable type folding.
*/
public void enableTypeFolding() {
this.typeFolding = true;
}
/**
*Disable type folding.
*/
public void disableTypeFolding() {
this.typeFolding = false;
}
/**
* Is type folding currently enabled
*/
public boolean isTypeFoldingEnabled() {
return this.typeFolding;
}
Yes the two are equivalent in functionality, but the big difference comes when you try to use the API and have to maintain code that uses it.
if (getTypeFolding()) {
// Do something that turns it off
setTypeFolding(false);
else
// Do something that turns it on
setTypeFolding(true);
Compared to the following:
if (isTypeFoldingEnabled())
disableTypeFolding();
else
enableTypeFolding();
The later is pretty straight forward to read, the former while it works, leaves a lot open to interpretation and reliance on JavaDoc to tell you the intent.
What prompted this post was some similar getter and setter code I ran across in the Turmeric Eclipse Plugins.
p
by kingargyle at March 08, 2011 08:04 PM
Brian de Alwis
Expert vs n00b: Effective Java searches in Eclipse
I reviewed a paper a while back that described how a set of Java developers used the search tools in Eclipse to explore a code base.  Having performed a number of studies involving very smart developers in addition to being a proficient Eclipse developer myself, I surmised that the developers were not very proficient users of Eclipse.  What made them ineffective — and more important, how can a developer become more proficient?
In this study, the developers were asked answer questions that required finding elements within the source code for a system that corresponded to domain concepts.
The biggest clue for me as to their inexperience was that all the developers used the File Search and Java Search dialogs exclusively.  Some apparently used only the File Search! I was so surprised that I contacted the paper authors to confirm (i) that it was not an imposed restriction, and (ii) that their traces hadn’t lumped the use of the search dialogs with other search mechanisms (they were separate). Although these dialogs are useful for grep-style searches, such as for finding a message property, they are nowhere near as quick to use as the shortcut-driven searches like Open Declaration (F3) and References gt; Workspace (CtrlShiftG). And no expert developer would only use the File Search dialog!
Further confirmation came from a breakdown of what the developers were searching for. Many of the searches involved searches to map domain concepts to classes and interfaces. No proficient developer would use the Java Search dialog to find a class; they would instead use the Open Type dialog. The Open Type dialog is reactive, providing immediate feedback; the Java Search would take at least 10 ten times as long.
Understanding the expertise of participants is essential for drawing conclusions and making recommendations. In this case, I suggested that the authors make recommendations about improving instruction for new or inexperienced developers.
So what indicators correlate with expertise?
From my observations, one mark of expertise is inversely correlated to mouse use: the more mouse usage, the more a n00b. Experts seek out the functions that can be performed at the speed of thought. Dialogs and mouse pointing are interruptions.
Another sign of expertise is knowing and tailoring advanced options. One of the first actions I take with a new Eclipse installation is to disable the “Show Approximate Matches” search option: when I do a references search, I want to see exactly the callers to that method. Why would I want thousands of potential matches cluttering the view? If I wanted ineactness, then I would use the Java Search dialog!
[In fact, I never use the JDT searches any more: I use my own tool, Ferret, that provides far more focussed queries. I've let it slide though, and its PDE searches are a bit broken in 3.7. I'll try to fix those.]
Ducky Sherwood had some interesting findings finding that experienced developers exhibit more breadth-first-search behaviours when navigating in code vs the depth-first-searches seen in novices.
What signs can you think of that distinguish novice from expert?
[Update: the paper in question is: J Starke, C Luce, J Sillito (2009). Searching and Skimming: An Exploratory Study. In Proc Intl Conf Software Maintenance (ICSM).]
p
by Brian de Alwis at March 08, 2011 07:39 PM
EclipseLive
Moving Software Development to the Web with Eclipse Orion
Boris Bokowski (IBM)
 
Abstract:
Eclipse is working on new web-based development tooling called Orion. Orion is a browser-based open tool integration platform which is entirely focused on developing for the web, in the web. The project is currently in the early stages of development, with a code editor, file and folder navigation and Git integration already created, and a debugger in the works.
For Orion to make sense as a way to develop software, it needs to get browser-based tools like bug tracking, build monitoring, code change reviewing and documentation readers to work together. Orion will be something that works well with existing tools out there on the web. Ideally, you'd want something similar to the tight integration you typically get from a classic IDE, but without building another IDE. The design has been based on well-proven web architectures - using hyperlinks to navigate between different tools and resources, making data accessible in a RESTful way, and using web technologies like HTTP, JSON, OAuth, OpenID and others. There will be continuing work to find ways to integrate tools that have been built into coherent workflows that solve real world web developer problems.
Join members from the Orion team to see demos, learn about the future direction of the project and find out ways you can contribute.
Total running time will be approximately 1 hour
9:00 am PST / 12:00 pm EST / 5:00 pm UTC / 6:00 pm CET - Convert to other time zones
Thanks to Adobe for contributing their Adobe Acrobat Connect product to host this webinar.
delicious | digg | dzone
by EclipseLive (lynn.gayowski@eclipse.org) at March 08, 2011 03:59 PM
Deepak Azad
JDT at EclipseCon 2011
Raksha Vasisht and I will be speaking at EclipseCon 2011 in Santa Clara. We have the following 2 talksWhat's new in JDT Monday, March 21 14:00 - 14:20, Stevens CreekJDT - Tips and Tricks Tuesday, March 22 14:00 - 14:20, Stevens Creek We are also organizing a BofEclipse - Tips and TricksWednesday, March 23 19:30, SonomaSee you soon at EclipseCon !
by Deepak Azad (noreply@blogger.com) at March 08, 2011 03:57 PM
Created and maintained by the Planet Eclipse Admins.
Hosted by the Eclipse Foundation (Privacy Policy, Terms of Use).

数据更新时间

正在更新   

常用工具

桌面软件: MyIP网站信息状态条  WebShot网页快照  SiteMapMaker网站地图生成 
网站信息: Alexa排名查询  PageRank查询/真假PR鉴别/PR劫持检测  外链检查  搜索引擎收录  搜索引擎反向链接  域名注册查询 
网页编辑: 颜色代码选择器  Html特殊符号 
网站调试: 蜘蛛抓取模拟  网站Header信息  网页源代码查看 
代码转换: 火星文查询  繁体/简体转换  Html/js代码转换  Html/UBB代码转换 
友情连接: CodeForge免费源码 CodeForge.com PCFans IT资讯 Ngnix Lighttpd GPhone中国    更多... (PR<5自动转内页)
网站地图: 1 2 3 4 5 6 7 8 9 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 250 300 350 400 450 500
免责声明 | 联系我们 | 交换友情链接 | 广告位招商QQ: 1967659002
© 2009 MyIP.cn Dev by MYIP Elapsed:85.787ms 黑ICP备09072263号